Skip to content

Commit 1e7bc8c

Browse files
authored
Merge pull request #14 from nicopizar00/docs/decouple-punch-build-from-caveman
docs(ai.governance): decouple Punch Build from Caveman/cavecrew
2 parents 1838ea7 + 88e7d2c commit 1e7bc8c

60 files changed

Lines changed: 2176 additions & 1603 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/commands/build.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ the canonical Copilot asset — do not re-author or paraphrase it:
99
- Prompt: `.github/prompts/punch-build.prompt.md`
1010
- Dispatcher: `.github/agents/punch-builder.agent.md` → delegates (depth-1) to
1111
`punch-runtime-engineer` or `punch-performance-test-engineer`
12-
- Caveman: `ultra` (governance) / `wenyan` (execution sub-agents); canon:
13-
`.github/skills/punch-build-caveman/SKILL.md`
1412

1513
Requires an approved Plan task ID with allowed/read-only/forbidden paths. Follow
1614
that prompt exactly. Input: $ARGUMENTS

.claude/commands/document.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ obeying the canonical Copilot asset — do not re-author or paraphrase it:
99
- Prompt: `.github/prompts/punch-document.prompt.md`
1010
- Persona + scope: `.github/agents/punch-ai-governance.agent.md` (admin over
1111
`.github/` + all `docs/`)
12-
- Caveman: `full` for wave working comms (diagnose / classify / plan); `lite` for
13-
persisted docs and reports; Wenyan forbidden in docs. Emojis / ASCII emoticons
14-
allowed in docs. Canon: `.github/skills/punch-build-caveman/SKILL.md`
1512
- Map with the **Global Graphify repository track** (`/graphify .` then
1613
`--update`); evidence only, never canonical.
1714

.claude/commands/init.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ the canonical Copilot asset — do not re-author or paraphrase it:
88
- Prompt: `.github/prompts/punch-init.prompt.md`
99
- Persona + scope: `.github/agents/punch-ai-governance.agent.md` (**enforced**
1010
complete admin over `.github/` + `docs/`; only this agent runs Init)
11-
- Caveman: `lite` (canon: `.github/skills/punch-build-caveman/SKILL.md`)
1211

1312
Runs a read-only sweep of the GitHub Copilot asset set (prompts, agents, skills,
1413
instructions + the AI-Ingest Caveman/cavecrew vendor skills), reports

.claude/commands/plan.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ the canonical Copilot asset — do not re-author or paraphrase it:
88

99
- Prompt: `.github/prompts/punch-plan.prompt.md`
1010
- Persona + scope: `.github/agents/punch-planner.agent.md`
11-
- Caveman: `full` (canon: `.github/skills/punch-build-caveman/SKILL.md`)
1211

1312
Follow that prompt exactly. Input: $ARGUMENTS

.claude/commands/review.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ the canonical Copilot asset — do not re-author or paraphrase it:
88

99
- Prompt: `.github/prompts/punch-review.prompt.md`
1010
- Persona + scope: `.github/agents/punch-reviewer.agent.md`
11-
- Caveman: `full` (canon: `.github/skills/punch-build-caveman/SKILL.md`)
1211

1312
Read-only critique; no product edits. Follow that prompt exactly. Input: $ARGUMENTS

.claude/commands/ship.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ the canonical Copilot asset — do not re-author or paraphrase it:
88

99
- Prompt: `.github/prompts/punch-ship.prompt.md`
1010
- Persona + scope: `.github/agents/punch-reviewer.agent.md`
11-
- Caveman: `full` (canon: `.github/skills/punch-build-caveman/SKILL.md`)
1211

1312
Mechanical only (git/gh). Never merges, tags, or pushes to `main` — a human
1413
approves the merge. Follow that prompt exactly. Input: $ARGUMENTS

.claude/commands/spec.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,5 @@ the canonical Copilot asset — do not re-author or paraphrase it:
88

99
- Prompt: `.github/prompts/punch-spec.prompt.md`
1010
- Persona + scope: `.github/agents/punch-architect-readonly.agent.md`
11-
- Caveman: `lite` (canon: `.github/skills/punch-build-caveman/SKILL.md`)
1211

1312
Follow that prompt exactly. Input: $ARGUMENTS

.claude/commands/test.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ loading and obeying the canonical Copilot asset — do not re-author or paraphra
88

99
- Prompt: `.github/prompts/punch-test.prompt.md`
1010
- Persona + scope: `.github/agents/punch-test-engineer.agent.md`
11-
- Caveman: `ultra` (governance) / `wenyan` (execution); canon:
12-
`.github/skills/punch-build-caveman/SKILL.md`
1311

1412
Runs via `./bin/punch` only — never host k6 or raw docker. Follow that prompt
1513
exactly. Input: $ARGUMENTS

.claude/skills/guard/SKILL.md

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,24 @@ When a lifecycle / governance / documentation request arrives in Claude Code:
2828
2. **Load + obey** that `.github/prompts/punch-*.prompt.md`, adopting the persona,
2929
scope, and guards of its declared `.github/agents/*.agent.md`, and activating
3030
the skills that prompt names.
31-
3. **Apply the Caveman canon** (`.github/skills/punch-build-caveman/SKILL.md`) and
32-
the runtime guards (`docs/ai/agent-guards.md`) exactly as Copilot would.
31+
3. **Apply the runtime guards** (`docs/ai/agent-guards.md`) exactly as Copilot would.
3332
4. **Report** back; for delegated work, sub-agent reports stay `wenyan`-compatible
3433
with evidence verbatim.
3534

3635
## Wiring map (Claude Code command → canonical Copilot asset)
3736

3837
The `.claude/commands/*` wraps are **thin pointers**; this table is the contract.
3938

40-
| Claude command | Canonical prompt | Persona (agent) | Caveman level |
41-
|---|---|---|---|
42-
| `/spec` | `.github/prompts/punch-spec.prompt.md` | `punch-architect-readonly` | `lite` |
43-
| `/plan` | `.github/prompts/punch-plan.prompt.md` | `punch-planner` | `full` |
44-
| `/build` | `.github/prompts/punch-build.prompt.md` | `punch-builder` → engineer | `full` (sub: `wenyan-lite`) |
45-
| `/test` | `.github/prompts/punch-test.prompt.md` | `punch-test-engineer` | `ultra` (sub: `wenyan`) |
46-
| `/review` | `.github/prompts/punch-review.prompt.md` | `punch-reviewer` | `full` |
47-
| `/ship` | `.github/prompts/punch-ship.prompt.md` | `punch-reviewer` | `full` |
48-
| `/document` | `.github/prompts/punch-document.prompt.md` | `punch-ai-governance` | `lite` persisted (`full` working) |
49-
| `/init` | `.github/prompts/punch-init.prompt.md` | `punch-ai-governance` (enforced) | `lite` |
39+
| Claude command | Canonical prompt | Persona (agent) |
40+
|---|---|---|
41+
| `/spec` | `.github/prompts/punch-spec.prompt.md` | `punch-architect-readonly` |
42+
| `/plan` | `.github/prompts/punch-plan.prompt.md` | `punch-planner` |
43+
| `/build` | `.github/prompts/punch-build.prompt.md` | `punch-builder` → engineer |
44+
| `/test` | `.github/prompts/punch-test.prompt.md` | `punch-test-engineer` |
45+
| `/review` | `.github/prompts/punch-review.prompt.md` | `punch-reviewer` |
46+
| `/ship` | `.github/prompts/punch-ship.prompt.md` | `punch-reviewer` |
47+
| `/document` | `.github/prompts/punch-document.prompt.md` | `punch-ai-governance` |
48+
| `/init` | `.github/prompts/punch-init.prompt.md` | `punch-ai-governance` (enforced) |
5049

5150
`@punch-ai-governance` audits are reachable the same way — load the prompt/agent
5251
and obey it; a dedicated command wrap is optional.
@@ -61,8 +60,6 @@ exactly two cases:
6160
- **B — human-facing output would be in `wenyan`** (wenyan is sub-agent-only;
6261
leaking it to a human is a violation — stop, don't emit it).
6362

64-
Do not hard-overwrite the global caveman config to handle either case.
65-
6663
## No-break rules (preserve Copilot First)
6764

6865
- **`.github/` is read-authoritative.** Guard and the `.claude/commands/*` wraps
@@ -76,7 +73,6 @@ Do not hard-overwrite the global caveman config to handle either case.
7673
Claude Code here.
7774
- **Respect agent boundaries.** Adopt the target agent's allowed/read-only/
7875
forbidden scope, tool surface, depth-1 delegation, and approval-before-write.
79-
Caveman is output style only — it never widens tools or access.
8076
- **Governance owns this bridge.** `punch-ai-governance` (which holds admin over
8177
`.github/` and `docs/`) maintains the wiring map; changes to it are a governance
8278
edit. Claude Code never edits `.github/` to "make reuse work" without that.

.github/.ai-upstream/README.md

Lines changed: 33 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
# `.github/.ai-upstream/`required vendor skill manifest
1+
# `.github/.ai-upstream/`optional vendor skill manifest
22

3-
Staging + provenance for the **vendor** skills Punch reuses **as-is** for VS Code
4-
GitHub Copilot. Punch does **not** fork these — install them, keep them verbatim.
5-
This README (the manifest) is tracked; the installed vendor skill folders are
6-
gitignored (see `.gitignore`).
3+
Staging + provenance for **optional vendor** skills Punch may reuse **as-is** for
4+
VS Code GitHub Copilot. Neither is a Punch prerequisite — Punch runs the full
5+
lifecycle without them. Punch does **not** fork these — if installed, keep them
6+
verbatim. This README (the manifest) is tracked; the installed vendor skill
7+
folders are gitignored (see `.gitignore`).
78

8-
> **User manual action required.** Punch cannot run the network installer for you.
9-
> Install only the assets listed below, scoped to GitHub Copilot.
9+
> **User manual action, optional.** Punch cannot run the network installer for
10+
> you, and does not require you to. If you want these capabilities, install
11+
> only the assets listed below, scoped to GitHub Copilot.
1012
11-
## Required by Punch (install these only)
13+
## Optional capabilities (install only if you want them)
1214

13-
| Asset | Why Punch needs it |
15+
| Asset | What it adds |
1416
|---|---|
15-
| `caveman` | Concise assistant-prose comms (per-phase voice; canon in [`punch-build-caveman`](../skills/punch-build-caveman/SKILL.md)) |
16-
| `cavecrew` | Bounded leaf workers spawned by a phase **coordinator** (`punch-builder` / `punch-reviewer` / `punch-test-engineer`) at depth-1, with caveman-compressed output. Punch's Copilot adaptation are the `.github/agents/punch-cavecrew-*.agent.md` personas (vendor skill defines no Copilot `tools`) |
17+
| `caveman` | Concise assistant-prose comms, VS Code GitHub Copilot Chat only; default `lite` rule lives in [`copilot-instructions.md`](../copilot-instructions.md) |
18+
| `cavecrew` | Bounded read-only leaf workers spawned by an explicitly authorized non-Build phase **coordinator** (`punch-code-reviewer` / `punch-test-engineer` / `punch-security-auditor`) at depth-1, with caveman-compressed output. Punch's Copilot adaptation is the `.github/agents/punch-cavecrew-{investigator,reviewer}.agent.md` personas (vendor skill defines no Copilot `tools`). Build never spawns cavecrew |
1719

1820
The installer places both in the Copilot skills dir (`.agents/skills/caveman/`,
19-
`.agents/skills/cavecrew/`). Keep an optional verbatim provenance snapshot under
20-
`.github/.ai-upstream/<skill>/` for drift diffing (untracked).
21+
`.agents/skills/cavecrew/`) — it has no notion of `.github/skills/`. Immediately
22+
after install, relocate `caveman` only: move `.agents/skills/caveman/` to
23+
`.github/skills/caveman/` (the Copilot project-skill location Punch registers)
24+
and add `user-invocable: true` + `disable-model-invocation: true` to its
25+
frontmatter — no other change to the upstream body. Leave `cavecrew` at its
26+
installer-default location; it is not relocated. Keep an optional verbatim
27+
provenance snapshot under `.github/.ai-upstream/<skill>/` for drift diffing
28+
(untracked).
2129

2230
**Do not install** the rest of the upstream pack (`caveman-compress` ships host
2331
Python scripts vs Punch Docker-First; `caveman-commit`/`-help`/`-review`/`-stats`
@@ -40,21 +48,19 @@ any such artifacts if the installer created them.
4048

4149
## Sub-agent setting
4250

43-
cavecrew is spawned **either** by an engineer (nested: `punch-builder` → engineer
44-
→ cavecrew) **or** directly by a phase coordinator (`punch-builder` /
45-
`punch-reviewer` / `punch-test-engineer` → cavecrew). The nested path needs
46-
`chat.subagents.allowInvocationsFromSubagents: true` in VS Code settings (lazy
47-
default); `/punch-init` warns when off. Markdown cannot set it. Depth is
48-
**roster-bounded**, not setting-bounded: cavecrew workers carry no `agents:`, so
49-
they never spawn a further level (max chain `builder → engineer → cavecrew`). A
50-
worker inherits its spawner's scope — by **lineage** when an engineer spawns it,
51-
by **injected brief** when a coordinator does (VS Code custom agents have no
52-
skills field) — and its `tools` are a subset of that spawner. Canon:
53-
[`agent-guards.md`](../../docs/ai/agent-guards.md).
51+
cavecrew is spawned directly by an explicitly authorized non-Build phase
52+
coordinator (`punch-code-reviewer` / `punch-test-engineer` /
53+
`punch-security-auditor` → cavecrew). Build never spawns it — no nested path,
54+
no `chat.subagents.allowInvocationsFromSubagents` dependency. Depth is
55+
**roster-bounded**: cavecrew workers carry no `agents:`, so they never spawn a
56+
further level. A worker inherits its coordinator's scope by **injected brief**
57+
(VS Code custom agents have no skills field), and its `tools` are a subset of
58+
that coordinator. Canon: [`agent-guards.md`](../../docs/ai/agent-guards.md).
5459

5560
## Rules
5661

57-
- **Keep vendor files verbatim.** Punch's adaptation lives in
58-
`.github/skills/punch-build-caveman/`, never here.
59-
- `punch-ai-governance` excludes installed vendor folders from naming /
62+
- **Keep vendor files verbatim.** The one-time `caveman` relocate step (above)
63+
adds only two frontmatter fields — no other hand-edit, ever.
64+
- `punch-ai-governance` excludes installed/relocated vendor folders
65+
(`.agents/skills/cavecrew/`, `.github/skills/caveman/`) from naming /
6066
duplication / stale-asset checks.

0 commit comments

Comments
 (0)