@fro.bot/systematic 3.1.0 → 3.2.1

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/HARNESSES.md CHANGED
@@ -2,19 +2,19 @@
2
2
 
3
3
  This is the evidence registry for Systematic's harness-portability work. **Every tool or mechanism named here is backed by an in-repo path with line numbers, installed or cloned source, or an authoritative URL.** If the supplied research did not verify a capability, it is explicitly marked **UNVERIFIED**; absence of evidence is not evidence of absence.
4
4
 
5
- **Tiers.** Tier 1 means Systematic ships a controlled adapter: OpenCode and Pi. Tier 2 means the harness is documented for portability but has no Systematic adapter: Claude Code, Codex CLI, Gemini CLI, and GitHub Copilot.
5
+ **Tiers.** Tier 1 means Systematic ships a controlled adapter: OpenCode, Pi, and Claude Code. Tier 2 means the harness is documented for portability but has no Systematic adapter: Codex CLI, Gemini CLI, and GitHub Copilot.
6
6
 
7
7
  ## Capability matrix
8
8
 
9
- The four capability rows use the vocabulary in the [OpenCode profile](skills/using-systematic/references/opencode-profile.md#L3-L8) and [Pi profile](skills/using-systematic/references/pi-profile.md#L3-L8).
9
+ The four capability rows use the vocabulary in the [OpenCode profile](skills/using-systematic/references/opencode-profile.md#L3-L8), [Pi profile](skills/using-systematic/references/pi-profile.md#L3-L8), and [Claude Code profile](skills/using-systematic/references/claude-code-profile.md#L5-L10).
10
10
 
11
- | Capability | OpenCode (Tier 1) | Pi (Tier 1) | Claude Code (Tier 2) | Codex CLI (Tier 2) | Gemini CLI (Tier 2) | GitHub Copilot (Tier 2) |
11
+ | Capability | OpenCode (Tier 1) | Pi (Tier 1) | Claude Code (Tier 1) | Codex CLI (Tier 2) | Gemini CLI (Tier 2) | GitHub Copilot (Tier 2) |
12
12
  |---|---|---|---|---|---|---|
13
- | Subagent delegation | `task`, including `subagent_type`, resume, and background execution [OC-1] | `systematic_delegate({agent, task})`; sequential, capped at 20 turns [PI-1] | `context: fork` for skills; `subagent_type` is **UNVERIFIED** [CC-1] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | Built-in/custom agents [GH-1][GH-2] |
13
+ | Subagent delegation | `task`, including `subagent_type`, resume, and background execution [OC-1] | `systematic_delegate({agent, task})`; sequential, capped at 20 turns [PI-1] | Name-based subagent dispatch (invoke a subagent by name in the prompt text); `context: fork` for skill-scoped forks; plugin agents ship in `agents/` [CC-1][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | Built-in/custom agents [GH-1][GH-2] |
14
14
  | Blocking user interaction | `question` [OC-2] | No native blocking tool; numbered-chat fallback [PI-2] | `AskUserQuestion` [CC-2] | `request_user_input`; blocking and root-thread-only [CX-1][CX-2] | `ask_user`; pauses until answers [GE-1][GE-2] | No dedicated tool name verified; plan-mode clarification and `--no-ask-user` are documented [GH-3][GH-4] |
15
15
  | Task tracking | `todowrite` [OC-3] | No native mechanism; visible list fallback [PI-2] | `TodoWrite` is deprecated/disabled by default; `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate` replace it [CC-3][CC-4] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | No `TodoWrite` equivalent verified; cloud-agent tasks/sessions API is documented [GH-5] |
16
- | Skill loading | Skills become commands and `systematic_skill` is registered [OC-4][OC-5] | `systematic_skill` adapter and Pi-native activation [PI-3][PI-4] | Skill tool, `SKILL.md`, and `.claude/skills/` [CC-5][CC-6] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | `SKILL.md` skills [GH-6] |
17
- | Skills-file support | `SKILL.md` is loaded by the Systematic skill path [OC-4] | `pi.skills` ships `./skills`, including `SKILL.md` discovery [PI-4][PI-5] | `SKILL.md` and `.claude/skills/` [CC-5][CC-6] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | `SKILL.md` [GH-6] |
16
+ | Skill loading | Skills become commands and `systematic_skill` is registered [OC-4][OC-5] | `systematic_skill` adapter and Pi-native activation [PI-3][PI-4] | Native Skill tool with `SKILL.md` discovery (`~/.claude/skills/`, `.claude/skills/`, plugin `skills/`); Systematic ships no `systematic_skill` tool on Claude Code [CC-5][CC-6][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | `SKILL.md` skills [GH-6] |
17
+ | Skills-file support | `SKILL.md` is loaded by the Systematic skill path [OC-4] | `pi.skills` ships `./skills`, including `SKILL.md` discovery [PI-4][PI-5] | `SKILL.md` and `.claude/skills/`; the plugin bundle is built and identifier-translated in CI from `skills/`, never committed [CC-5][CC-6][CC-9] | **UNVERIFIED** [U] | **UNVERIFIED** [U] | `SKILL.md` [GH-6] |
18
18
 
19
19
  `[U]` means the capability was not checked in the supplied research pack. It is not a claim that the capability does not exist.
20
20
 
@@ -32,9 +32,13 @@ The package manifest exposes the extension and skills at `package.json:17-23`, w
32
32
 
33
33
  Pi does not consume `disabled_skills` or Systematic's OpenCode configuration, and its skill loading has no OpenCode-style permission gate `docs/src/content/docs/guides/pi-harness.mdx:39-47` [PI-6]. Those are deliberate honesty boundaries, not implied parity.
34
34
 
35
- ## Claude Code — Tier 2 documented portability target
35
+ ## Claude Code — Tier 1 shipped adapter
36
36
 
37
- Claude Code documents `AskUserQuestion` [CC-2], current task tracking through `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate`, and the deprecated `TodoWrite` [CC-3][CC-4]. Its skill model includes the skill tool, `SKILL.md`, `~/.claude/skills/`, and `.claude/skills/` [CC-5][CC-6]. Skills may run with `context: fork`; a public-docs verification of a `subagent_type` parameter was not found, so that name remains **UNVERIFIED** [CC-1]. Systematic ships no Claude Code adapter or profile.
37
+ Claude Code's profile records name-based subagent dispatch, `AskUserQuestion`, task tracking through `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate`, and native Skill/`SKILL.md` discovery [CC-P]. Systematic builds a self-contained plugin bundle in CI from `skills/` and `agents/` via `scripts/build-claude-code-plugin.ts`: it flattens agent personas, composes an output style from the using-systematic body plus the Claude Code profile, emits a declarative `SessionStart` hook, and translates every internal identifier (`ce:<name>`, `systematic:<category>:<name>`) into Claude Code's plugin-namespaced form (`systematic:<skill-dir>`, `systematic:<agent-stem>`), gated by an integrity check that fails the build on any leftover source-namespace or unresolved bare reference [CC-9]. The bundle is never committed to `main` — `claude-code/` is gitignored build staging — and CI publishes the built output to the orphan `claude-code-plugin` branch on every push to `main` [CC-11]. Users install it through the marketplace catalog checked into `main` at `.claude-plugin/marketplace.json`, which points the `systematic` plugin entry at the `claude-code-plugin` branch ref [CC-12]: `claude plugin marketplace add marcusrbrown/systematic` then `claude plugin install systematic@systematic`. The plugin has no version field; it is versioned by the source commit SHA baked into each publish commit.
38
+
39
+ Delegation is name-based: a prompt invokes a subagent by name (for example, "Use the systematic-implementer subagent to …") and Claude Code resolves it against the plugin's `agents/` directory; skills may additionally run scoped subagent forks via `context: fork` [CC-1]. `AskUserQuestion` is the blocking-interaction tool [CC-2]. `TodoWrite` is deprecated and disabled by default; `TaskCreate`/`TaskGet`/`TaskList`/`TaskUpdate` are the current task-tracking tools [CC-3][CC-4]. Skills are discovered natively from `SKILL.md` under `~/.claude/skills/`, `.claude/skills/`, and the plugin's own `skills/` directory through the built-in Skill tool; Systematic registers no `systematic_skill` tool on Claude Code, unlike its OpenCode and Pi adapters [CC-5][CC-6][CC-9].
40
+
41
+ Behavioral enforcement rides a plugin output style (`force-for-plugin: true`), which is the documented plugin-native channel that modifies the system prompt directly and auto-applies when the plugin is enabled. The `SessionStart` hook carries declarative session state only (a static skill/agent count and catalog) — imperative hook content is refused as prompt injection, so the hook does not attempt to inject behavioral instructions. Workflow content ships as native skills; agents ship as native subagents. Integration coverage lives in `tests/integration/claude-code.test.ts` [CC-10].
38
42
 
39
43
  ## Codex CLI — Tier 2 documented portability target
40
44
 
@@ -50,9 +54,9 @@ Copilot documents built-in agents and custom-agent invocation [GH-1][GH-2]. Its
50
54
 
51
55
  ## Similarities and differences
52
56
 
53
- `SKILL.md` is the clearest cross-harness convergence: it is documented for Claude Code and Copilot, consumed by OpenCode's Systematic skill path, and shipped through Systematic-on-Pi [OC-4][PI-4][CC-5][GH-6]. `AGENTS.md` is also converging as an instruction-file convention: this repository uses it (`AGENTS.md:1-7`), and Copilot documents it [GH-7][GH-8].
57
+ `SKILL.md` is the clearest cross-harness convergence: it is documented for Claude Code and Copilot, consumed by OpenCode's Systematic skill path, and shipped through Systematic's adapters for both Pi and Claude Code [OC-4][PI-4][CC-5][CC-9][GH-6]. `AGENTS.md` is also converging as an instruction-file convention: this repository uses it (`AGENTS.md:1-7`), and Copilot documents it [GH-7][GH-8].
54
58
 
55
- Delegation semantics diverge materially: OpenCode supports parallel/background dispatch [OC-1], Pi's adapter is sequential-only [PI-1], Claude's `context: fork` is skill-scoped [CC-1], and the remaining Tier 2 delegation claims are **UNVERIFIED**. Blocking input likewise ranges from native tools (`question`, `request_user_input`, `ask_user`, `AskUserQuestion`) to Pi's numbered-chat fallback and Copilot's plan-mode clarification [OC-2][PI-2][CC-2][CX-1][GE-1][GH-3].
59
+ Delegation semantics diverge materially: OpenCode supports parallel/background dispatch [OC-1], Pi's adapter is sequential-only [PI-1], Claude Code dispatches subagents by name and additionally supports skill-scoped `context: fork` [CC-1], and the remaining Tier 2 delegation claims are **UNVERIFIED**. Blocking input likewise ranges from native tools (`question`, `request_user_input`, `ask_user`, `AskUserQuestion`) to Pi's numbered-chat fallback and Copilot's plan-mode clarification [OC-2][PI-2][CC-2][CX-1][GE-1][GH-3].
56
60
 
57
61
  ## Maintenance
58
62
 
@@ -77,12 +81,17 @@ Migrated-skill discipline is enforced by the [content-integrity gate](scripts/co
77
81
  - **PI-4** — `package.json:17-23`; `tests/unit/package-exports.test.ts:42-66,241-267`.
78
82
  - **PI-5** — `tests/integration/pi.test.ts:349-388`; installed Pi source `node_modules/@earendil-works/pi-coding-agent/dist/config.js:396-398`.
79
83
  - **PI-6** — `docs/src/content/docs/guides/pi-harness.mdx:39-47`.
80
- - **CC-1** — [Claude Code skills](https://code.claude.com/docs/en/skills) (`context: fork`); public-docs `subagent_type` verification is **UNVERIFIED**.
84
+ - **CC-P** — [Claude Code profile](skills/using-systematic/references/claude-code-profile.md#L5-L10).
85
+ - **CC-1** — [Claude Code skills](https://code.claude.com/docs/en/skills) (`context: fork`); name-based subagent dispatch verified via `claude-code/agents/` and the plugin's invocation convention [CC-9].
81
86
  - **CC-2** — [Claude Code tools reference](https://code.claude.com/docs/en/tools-reference).
82
87
  - **CC-3** — [Claude Code tools reference](https://code.claude.com/docs/en/tools-reference).
83
88
  - **CC-4** — [Claude Code todo tracking](https://code.claude.com/docs/en/agent-sdk/todo-tracking.md).
84
89
  - **CC-5** — [Claude Code skills](https://code.claude.com/docs/en/skills).
85
90
  - **CC-6** — [Claude Code Agent SDK skills](https://code.claude.com/docs/en/agent-sdk/skills.md).
91
+ - **CC-9** — `scripts/build-claude-code-plugin.ts:5-27,253-291,345-379` (builder, identifier translation, integrity gate); `.gitignore` (`claude-code/` gitignored build staging).
92
+ - **CC-10** — `tests/integration/claude-code.test.ts`.
93
+ - **CC-11** — `.github/workflows/main.yaml:263-338` (`publish-claude-code-plugin` job: builds, guards required artifacts, publishes to the orphan `claude-code-plugin` branch on push to `main`).
94
+ - **CC-12** — `.claude-plugin/marketplace.json:1-18` (marketplace catalog; `systematic` plugin entry sourced from the `claude-code-plugin` branch ref).
86
95
  - **CX-1** — [Codex request_user_input definition](https://github.com/openai/codex/blob/35aaa5d9/codex-rs/tools/src/request_user_input_tool.rs).
87
96
  - **CX-2** — [Codex request_user_input handler](https://github.com/openai/codex/blob/d47b755a/codex-rs/core/src/tools/handlers/request_user_input.rs).
88
97
  - **GE-1** — [Gemini ask-user documentation](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/ask-user.md).
package/README.md CHANGED
@@ -36,7 +36,7 @@ Systematic is an [OpenCode](https://opencode.ai/) plugin — and, from v3, a [Pi
36
36
  **OpenCode plugin** — full integration (slash commands, `systematic_skill` tool, agent registration):
37
37
 
38
38
  ```json
39
- { "plugins": ["@fro.bot/systematic@latest"] }
39
+ { "plugin": ["@fro.bot/systematic@latest"] }
40
40
  ```
41
41
 
42
42
  Add that to `~/.config/opencode/opencode.json` and restart OpenCode.
package/dist/index.js CHANGED
@@ -240,7 +240,7 @@ ${profileBlock}`;
240
240
  return `<SYSTEMATIC_WORKFLOWS>
241
241
  You have access to structured engineering workflows via the Systematic plugin.
242
242
 
243
- **IMPORTANT: The using-systematic skill content is included below. It is ALREADY LOADED - you are currently following it. Do NOT use the systematic_skill tool to load "using-systematic" again - that would be redundant.**
243
+ **IMPORTANT: The using-systematic skill content is included below. It is ALREADY LOADED - you are currently following it. Do not load "using-systematic" again - that would be redundant.**
244
244
 
245
245
  ${content}
246
246
 
package/dist/pi.js CHANGED
@@ -3158,7 +3158,7 @@ ${profileBlock}`;
3158
3158
  return `<SYSTEMATIC_WORKFLOWS>
3159
3159
  You have access to structured engineering workflows via the Systematic plugin.
3160
3160
 
3161
- **IMPORTANT: The using-systematic skill content is included below. It is ALREADY LOADED - you are currently following it. Do NOT use the systematic_skill tool to load "using-systematic" again - that would be redundant.**
3161
+ **IMPORTANT: The using-systematic skill content is included below. It is ALREADY LOADED - you are currently following it. Do not load "using-systematic" again - that would be redundant.**
3162
3162
 
3163
3163
  ${content}
3164
3164
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fro.bot/systematic",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Structured engineering workflows for OpenCode",
5
5
  "type": "module",
6
6
  "homepage": "https://fro.bot/systematic",
@@ -52,6 +52,7 @@
52
52
  "registry:build": "bun scripts/build-registry.ts",
53
53
  "registry:drift": "bun scripts/generate-registry.ts --check",
54
54
  "registry:validate": "bun scripts/build-registry.ts --validate-only",
55
+ "claude-code:build": "bun scripts/build-claude-code-plugin.ts",
55
56
  "prepublishOnly": "bun run build && bun run schema:generate"
56
57
  },
57
58
  "keywords": [
@@ -87,10 +88,10 @@
87
88
  }
88
89
  },
89
90
  "devDependencies": {
90
- "@biomejs/biome": "2.5.3",
91
- "@earendil-works/pi-coding-agent": "0.80.6",
92
- "@opencode-ai/plugin": "1.18.0",
93
- "@opencode-ai/sdk": "1.18.0",
91
+ "@biomejs/biome": "2.5.4",
92
+ "@earendil-works/pi-coding-agent": "0.80.7",
93
+ "@opencode-ai/plugin": "1.18.2",
94
+ "@opencode-ai/sdk": "1.18.2",
94
95
  "@semantic-release/exec": "7.1.0",
95
96
  "@types/bun": "latest",
96
97
  "@types/js-yaml": "4.0.9",
@@ -110,6 +111,9 @@
110
111
  "jsonc-parser": "^3.3.0",
111
112
  "zod": "4.4.3"
112
113
  },
114
+ "overrides": {
115
+ "@earendil-works/pi-ai": "0.80.7"
116
+ },
113
117
  "publishConfig": {
114
118
  "access": "public",
115
119
  "provenance": true
@@ -245,7 +245,7 @@ Fall back to a numbered list in chat only when no blocking tool exists or the ca
245
245
  If the user response indicates they're in the wrong skill or want a different workflow (e.g., "this is too small, just ce:work it" or "this needs more thought, let me brainstorm differently"):
246
246
 
247
247
  - Stop ce-brainstorm
248
- - Suggest the alternative skill the user appears to want (e.g., `ce:work`, `ce:debug`)
248
+ - Suggest the alternative skill the user appears to want (e.g., `ce:work`)
249
249
  - Offer to load it in-session
250
250
  - Do not push back or argue — the user's redirect signal is the deliberate choice
251
251
 
@@ -140,7 +140,7 @@ If the bootstrap uncovers major unresolved product questions:
140
140
 
141
141
  If the bootstrap reveals that a different workflow would serve the user better:
142
142
 
143
- - **Symptom without a root cause** (user describes broken behavior but hasn't identified why) — announce that investigation is needed before planning and load the `ce:debug` skill. A plan requires a known problem to solve; debugging identifies what that problem is. Announce the routing clearly: "This needs investigation before planning — switching to ce:debug to find the root cause."
143
+ - **Symptom without a root cause** (user describes broken behavior but hasn't identified why) — announce that investigation is needed before planning: a plan requires a known problem to solve, so the root cause must be identified first. Announce the routing clearly: "This needs investigation before planning — identify the root cause first, then return to planning."
144
144
  - **Clear task ready to execute** (known root cause, obvious fix, no architectural decisions) — suggest `ce:work` as a faster alternative alongside continuing with planning. The user decides.
145
145
 
146
146
  #### 0.5 Classify Outstanding Questions Before Planning
@@ -171,7 +171,7 @@ If depth is unclear, ask one targeted question and then continue.
171
171
 
172
172
  Surface call-outs to the user — the specific forks in scope or approach where user input materially changes the plan — so scope can be corrected **before Phase 1 research is spent**. Sub-agent dispatch (systematic:research:repo-research-analyst, systematic:research:learnings-researcher, etc.) is the expensive next step this phase guards against wasted effort on.
173
173
 
174
- Fires **only in solo invocation** — when Phase 0.2 found no upstream brainstorm doc AND Phase 0.4 stayed in ce:plan (did not route to ce:debug, ce:work, or universal-planning) AND Phase 0.5 cleared (no unresolved blockers) AND not on Phase 0.1 fast paths (resume normal, deepen-intent). Each guard is an explicit conditional. Skip Phase 0.7 entirely when any guard fails — brainstorm-sourced invocations defer to Phase 5.1.5 instead.
174
+ Fires **only in solo invocation** — when Phase 0.2 found no upstream brainstorm doc AND Phase 0.4 stayed in ce:plan (did not route to ce:work or universal-planning) AND Phase 0.5 cleared (no unresolved blockers) AND not on Phase 0.1 fast paths (resume normal, deepen-intent). Each guard is an explicit conditional. Skip Phase 0.7 entirely when any guard fails — brainstorm-sourced invocations defer to Phase 5.1.5 instead.
175
175
 
176
176
  **Read `references/synthesis-summary.md` before composing the scoping synthesis.** It carries the affirmability test, keep-test criteria, detail test, summary shape budgets, granularity rules, anti-patterns, revision-vs-confirmation discipline, doc-shape routing, soft-cut behavior, self-redirect support, the worked PII compression example, and full headless-mode routing — all required for a well-shaped synthesis.
177
177
 
@@ -226,8 +226,8 @@ Prepare a concise planning context summary (a paragraph or two) to pass as input
226
226
 
227
227
  Run these agents in parallel:
228
228
 
229
- - task systematic:research:repo-research-analyst(Scope: technology, architecture, patterns. {planning context summary})
230
- - task systematic:research:learnings-researcher(planning context summary)
229
+ - Dispatch `systematic:research:repo-research-analyst` — scope: technology, architecture, patterns; pass the planning context summary.
230
+ - Dispatch `systematic:research:learnings-researcher` — pass the planning context summary.
231
231
  Collect:
232
232
  - Technology stack and versions (used in section 1.2 to make sharper external research decisions)
233
233
  - Architectural patterns and conventions to follow
@@ -295,8 +295,8 @@ Announce the decision briefly before continuing. Examples:
295
295
 
296
296
  If Step 1.2 indicates external research is useful, run these agents in parallel:
297
297
 
298
- - task systematic:research:best-practices-researcher(planning context summary)
299
- - task systematic:research:framework-docs-researcher(planning context summary)
298
+ - Dispatch `systematic:research:best-practices-researcher` — pass the planning context summary.
299
+ - Dispatch `systematic:research:framework-docs-researcher` — pass the planning context summary.
300
300
 
301
301
  #### 1.4 Consolidate Research
302
302
 
@@ -324,7 +324,7 @@ This ensures flow analysis (Phase 1.5) runs and the confidence check (Phase 5.3)
324
324
 
325
325
  For **Standard** or **Deep** plans, or when user flow completeness is still unclear, run:
326
326
 
327
- - task systematic:workflow:spec-flow-analyzer(planning context summary, research findings)
327
+ - Dispatch `systematic:workflow:spec-flow-analyzer` — pass the planning context summary and research findings.
328
328
 
329
329
  Use the output to:
330
330
  - Identify missing edge cases, state transitions, or handoff gaps
@@ -218,7 +218,7 @@ What survived: three real forks where another reasonable agent might choose diff
218
218
 
219
219
  Fires only when:
220
220
  - Phase 0.2 found no upstream brainstorm doc
221
- - AND Phase 0.4 stayed in ce:plan (did not route to ce:debug, ce:work, or universal-planning)
221
+ - AND Phase 0.4 stayed in ce:plan (did not route to ce:work or universal-planning)
222
222
  - AND Phase 0.5 cleared (no unresolved blockers)
223
223
  - AND not on Phase 0.1 fast paths (resume normal, deepen-intent)
224
224
 
@@ -361,7 +361,7 @@ This restores the audit visibility the original design intended (un-validated be
361
361
 
362
362
  If the user response indicates they're in the wrong skill or want a different workflow:
363
363
 
364
- - **Solo variant**: common redirects include "this is bigger than I thought — let me brainstorm first" (suggest `ce:brainstorm`), "this is just a fix, no plan needed" (suggest `ce:work`), or "I need to investigate first" (suggest `ce:debug`).
364
+ - **Solo variant**: common redirects include "this is bigger than I thought — let me brainstorm first" (suggest `ce:brainstorm`), "this is just a fix, no plan needed" (suggest `ce:work`), or "I need to investigate first" (route to root-cause investigation before planning).
365
365
  - **Brainstorm-sourced variant**: less common, but possible — "actually this scope is wrong, take it back to brainstorm" (suggest `ce:brainstorm` to revise the upstream doc).
366
366
 
367
367
  In either case: stop ce:plan, suggest the alternative skill, offer to load it in-session. Don't push back or argue — the user's redirect signal is the deliberate choice.
@@ -697,7 +697,7 @@ After presenting findings and verdict (Stage 6), route the next steps by mode. R
697
697
  - residual actionable work
698
698
  - advisory-only outputs
699
699
  Per-agent full-detail JSON files (`{reviewer_name}.json`) are already present in this directory from Stage 4 dispatch.
700
- - Also write `metadata.json` alongside the findings so downstream skills (e.g., `ce:polish-beta`) can verify the artifact matches the current branch and HEAD. Minimum fields:
700
+ - Also write `metadata.json` alongside the findings so downstream skills can verify the artifact matches the current branch and HEAD. Minimum fields:
701
701
  ```json
702
702
  {
703
703
  "run_id": "<run-id>",
@@ -42,7 +42,7 @@ digraph skill_flow {
42
42
  "Already brainstormed?" [shape=diamond];
43
43
  "Invoke brainstorming skill" [shape=box];
44
44
  "Might any skill apply?" [shape=diamond];
45
- "Invoke `systematic_skill` tool" [shape=box];
45
+ "Invoke the relevant skill via the active harness's skill-loading mechanism" [shape=box];
46
46
  "Announce: 'Using [skill] to [purpose]'" [shape=box];
47
47
  "Has checklist?" [shape=diamond];
48
48
  "Create todo per item" [shape=box];
@@ -55,9 +55,9 @@ digraph skill_flow {
55
55
  "Invoke brainstorming skill" -> "Might any skill apply?";
56
56
 
57
57
  "User message received" -> "Might any skill apply?";
58
- "Might any skill apply?" -> "Invoke `systematic_skill` tool" [label="yes, even 1%"];
58
+ "Might any skill apply?" -> "Invoke the relevant skill via the active harness's skill-loading mechanism" [label="yes, even 1%"];
59
59
  "Might any skill apply?" -> "Respond (including clarifications)" [label="definitely not"];
60
- "Invoke `systematic_skill` tool" -> "Announce: 'Using [skill] to [purpose]'";
60
+ "Invoke the relevant skill via the active harness's skill-loading mechanism" -> "Announce: 'Using [skill] to [purpose]'";
61
61
  "Announce: 'Using [skill] to [purpose]'" -> "Has checklist?";
62
62
  "Has checklist?" -> "Create todo per item" [label="yes"];
63
63
  "Has checklist?" -> "Follow skill exactly" [label="no"];
@@ -110,6 +110,6 @@ Instructions say WHAT, not HOW. "Add X" or "Fix Y" doesn't mean skip workflows.
110
110
 
111
111
  The four capabilities are subagent delegation, blocking user interaction, task tracking, and skill loading.
112
112
 
113
- The bootstrap inlines the active harness profile naming the exact mechanisms—consult it. See `references/opencode-profile.md` and `references/pi-profile.md`.
113
+ The bootstrap inlines the active harness profile naming the exact mechanisms for this session—consult it.
114
114
 
115
115
  When a mechanism is unavailable, present numbered options in chat and wait for questions, maintain a visible list for task tracking, and dispatch delegation sequentially or do the work inline.
@@ -0,0 +1,37 @@
1
+ # Claude Code Capability Profile
2
+
3
+ | Capability | Mechanism | Status | Fallback |
4
+ |---|---|---|---|
5
+ | Subagent delegation | Name-based subagent dispatch; plugin agents ship in `agents/`; `context: fork` for skill-scoped forks | supported | Dispatch in the foreground, serially or in small batches |
6
+ | Blocking user interaction | `AskUserQuestion` tool | supported | Present numbered options in chat and wait |
7
+ | Task tracking | `TaskCreate` / `TaskGet` / `TaskList` / `TaskUpdate` (`TodoWrite` is deprecated and disabled by default) | supported | Maintain a visible task list in responses |
8
+ | Skill loading | Native Skill tool with `SKILL.md` discovery (`~/.claude/skills/`, `.claude/skills/`, plugin `skills/`); Systematic ships no `systematic_skill` tool on Claude Code | supported | Read the skill instructions listed by the active harness |
9
+
10
+ Behavioral enforcement on Claude Code rides a plugin output style (force-for-plugin); a declarative `SessionStart` hook carries state only, since imperative hook content is refused as prompt injection.
11
+
12
+ ## Invocation examples
13
+
14
+ ### Subagent delegation
15
+
16
+ ```text
17
+ Use the systematic-implementer subagent to implement the auth module and return the changed files.
18
+ ```
19
+
20
+ ### Blocking user interaction
21
+
22
+ ```typescript
23
+ AskUserQuestion({
24
+ questions: [{ question: "Which deployment target should I use?", header: "Deployment target",
25
+ options: [{ label: "Staging", description: "Deploy to staging" }] }],
26
+ })
27
+ ```
28
+
29
+ ### Task tracking
30
+
31
+ ```typescript
32
+ TaskCreate({ content: "Run validation", status: "pending", priority: "high" })
33
+ ```
34
+
35
+ ### Skill loading
36
+
37
+ Skills are discovered natively from `SKILL.md` files under `~/.claude/skills/`, `.claude/skills/`, and plugin `skills/` directories; invoke them with the built-in Skill tool using the skill name.