codebyplan 1.13.51 → 1.13.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js
CHANGED
package/package.json
CHANGED
|
@@ -157,5 +157,6 @@ Checks: name matches directory, frontmatter parses, no invalid fields, arg-hint
|
|
|
157
157
|
- Rendered `SKILL.md` content enters the conversation once when invoked and stays until compaction — write standing instructions, not one-time steps
|
|
158
158
|
- Preloaded subagent skills cannot have `disable-model-invocation: true`
|
|
159
159
|
- `context: fork` is only meaningful when the skill body contains an actionable task; otherwise the subagent receives guidelines with no prompt
|
|
160
|
+
- `context: fork` ALSO disqualifies fan-out / spawn-then-route / inline-by-design / consumed-inline skills — they run in the main context for a reason; see [reference/fork-eligibility.md](reference/fork-eligibility.md) for the eligibility test + the CBP classification of which skills may fork and which must stay inline
|
|
160
161
|
- Descriptions front-load key use case: `description` + `when_to_use` cap at 1,536 chars in the skill listing
|
|
161
162
|
- `paths:` scoping applies when Claude reads files matching the globs, not on every tool use
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# `context: fork` Eligibility — when to fork a skill, and when not to
|
|
2
|
+
|
|
3
|
+
`context: fork` runs the **entire SKILL.md body in a forked subagent** — it inherits the
|
|
4
|
+
parent conversation and, per the runtime, **runs in the background by default**. It is
|
|
5
|
+
isolation for a *whole skill*, not a way to delegate one sub-step. A forked body therefore
|
|
6
|
+
cannot drive the main pipeline: it can't `AskUserQuestion`, can't auto-trigger another
|
|
7
|
+
skill, and can't run an inline-fallback that the orchestrator depends on.
|
|
8
|
+
|
|
9
|
+
So forking only helps a narrow shape of skill. The canonical eligible example is
|
|
10
|
+
[examples/fork-skill.md](../examples/fork-skill.md): a single self-contained analytical task
|
|
11
|
+
that reads, reasons, and returns a summary — nothing else.
|
|
12
|
+
|
|
13
|
+
## Eligibility test
|
|
14
|
+
|
|
15
|
+
A skill is **fork-eligible** only when ALL hold:
|
|
16
|
+
|
|
17
|
+
1. Its whole body is **one** self-contained analytical/generative task (read → reason → return).
|
|
18
|
+
2. It is **non-interactive** — no `AskUserQuestion`, no user decision gates.
|
|
19
|
+
3. It does **not route** — no auto-trigger of another skill, no close-out directive that must
|
|
20
|
+
fire in the main context.
|
|
21
|
+
4. It does **not fan out** — it does not spawn multiple subagents and coordinate them.
|
|
22
|
+
5. It has **no inline-fallback** contract the orchestrator relies on.
|
|
23
|
+
|
|
24
|
+
Fail any one → the skill stays **inline** (main context). Inline skills still get clean
|
|
25
|
+
context isolation the right way: by delegating their heavy step to a dedicated **agent**
|
|
26
|
+
(e.g. `cbp-task-check`, `cbp-improve-round`, `cbp-round-executor`). The agent is the
|
|
27
|
+
isolation boundary; the skill stays in the main thread to orchestrate, route, and interact.
|
|
28
|
+
|
|
29
|
+
## When NOT to use `context: fork` (the disqualifying patterns)
|
|
30
|
+
|
|
31
|
+
| Pattern | Why it can't fork | Example skills |
|
|
32
|
+
|---------|-------------------|----------------|
|
|
33
|
+
| **fan-out** | spawns multiple agents in parallel and coordinates them | `cbp-round-execute`, `cbp-checkpoint-check`, `cbp-map-architecture`, `cbp-refresh-arch-map` |
|
|
34
|
+
| **spawn-then-route** | spawns one agent, then `AskUserQuestion` / auto-triggers the next skill / runs inline-fallback | `cbp-task-check`, `cbp-standalone-task-check`, `cbp-round-start`, `cbp-round-end`, `cbp-checkpoint-plan` |
|
|
35
|
+
| **inline-by-design** | interactive Q&A or stepwise writes that must stay in the main context | `cbp-task-create`, `cbp-task-complete`, `cbp-round-update`, `cbp-merge-main` |
|
|
36
|
+
| **consumed-inline** | invoked *by* an agent (e.g. round-executor) and applies fixes synchronously into that context | `cbp-frontend-design`, `cbp-frontend-ui`, `cbp-frontend-ux` |
|
|
37
|
+
| **doc-ref-only** | mentions subagents/fork only as documentation; runs inline authoring | the `cbp-build-cc-*` authoring skills, `cbp-supabase-migrate` |
|
|
38
|
+
|
|
39
|
+
## CHK-220 audit — classification matrix
|
|
40
|
+
|
|
41
|
+
Every skill whose `SKILL.md` touches the subagent/fork boundary — by spawning a subagent, by
|
|
42
|
+
being invoked inline by an agent, or by documenting the feature — was classified against the
|
|
43
|
+
eligibility test. **Result: 0 of 25 are fork-eligible** — none were migrated, because every
|
|
44
|
+
one either already isolates heavy work in a dedicated agent (the correct boundary) or depends
|
|
45
|
+
on inline orchestration/interaction that a background fork would break.
|
|
46
|
+
|
|
47
|
+
| Skill | Pattern | Fork-eligible |
|
|
48
|
+
|-------|---------|:---:|
|
|
49
|
+
| cbp-round-execute | fan-out | no |
|
|
50
|
+
| cbp-checkpoint-check | fan-out | no |
|
|
51
|
+
| cbp-map-architecture | fan-out | no |
|
|
52
|
+
| cbp-refresh-arch-map | fan-out | no |
|
|
53
|
+
| cbp-round-start | spawn-then-route | no |
|
|
54
|
+
| cbp-round-end | spawn-then-route | no |
|
|
55
|
+
| cbp-task-check | spawn-then-route | no |
|
|
56
|
+
| cbp-standalone-task-check | spawn-then-route | no |
|
|
57
|
+
| cbp-checkpoint-plan | spawn-then-route | no |
|
|
58
|
+
| cbp-round-update | inline-by-design | no |
|
|
59
|
+
| cbp-task-create | inline-by-design | no |
|
|
60
|
+
| cbp-standalone-task-create | inline-by-design | no |
|
|
61
|
+
| cbp-task-complete | inline-by-design | no |
|
|
62
|
+
| cbp-standalone-task-complete | inline-by-design | no |
|
|
63
|
+
| cbp-merge-main | inline-by-design | no |
|
|
64
|
+
| cbp-task-testing | inline-by-design | no |
|
|
65
|
+
| cbp-standalone-task-testing | inline-by-design | no |
|
|
66
|
+
| cbp-frontend-design | consumed-inline | no |
|
|
67
|
+
| cbp-frontend-ui | consumed-inline | no |
|
|
68
|
+
| cbp-frontend-ux | consumed-inline | no |
|
|
69
|
+
| cbp-supabase-migrate | doc-ref-only | no |
|
|
70
|
+
| cbp-build-cc-skill | doc-ref-only | no |
|
|
71
|
+
| cbp-build-cc-agent | doc-ref-only | no |
|
|
72
|
+
| cbp-build-cc-settings | doc-ref-only | no |
|
|
73
|
+
| cbp-build-cc-mode | doc-ref-only | no |
|
|
74
|
+
|
|
75
|
+
If a **new** skill is authored that passes the eligibility test above, fork it: add
|
|
76
|
+
`context: fork` + `agent: <Explore|Plan|general-purpose|custom>` (use `--fork` in
|
|
77
|
+
`/cbp-build-cc-skill`). Do not retrofit fork onto any skill in the table — their inline
|
|
78
|
+
shape is load-bearing.
|
|
@@ -20,6 +20,10 @@ Source: official Claude Code skills spec. All fields are optional; `description`
|
|
|
20
20
|
| `paths` | Globs that auto-load the skill when matching files are in play |
|
|
21
21
|
| `shell` | `bash` (default) or `powershell` for `!`-commands |
|
|
22
22
|
|
|
23
|
+
> `context: fork` / `agent` are right for only a narrow shape of skill — a single
|
|
24
|
+
> non-interactive analytical body. See [fork-eligibility.md](fork-eligibility.md) for the
|
|
25
|
+
> eligibility test and the CBP classification of which skills may fork (and which must stay inline).
|
|
26
|
+
|
|
23
27
|
## Character budget
|
|
24
28
|
|
|
25
29
|
Combined `description` + `when_to_use` truncates at **1,536 characters** in the skill listing. Front-load the key use case.
|