diff --git a/docs/conventions/native-references/CHANGELOG.md b/docs/conventions/native-references/CHANGELOG.md index 34ac1ea9d1..938ce5e6fd 100644 --- a/docs/conventions/native-references/CHANGELOG.md +++ b/docs/conventions/native-references/CHANGELOG.md @@ -6,6 +6,15 @@ major change; additive guidance is minor; clarification is a patch. The doc ship unnumbered, which this file reads as **1.0**; the entry below is the first recorded change and lands the changelog the README said would arrive with it. +## [3.2.1] - 2026-09-29 + +Patch: clarification. + +- **The Adopters table lists the Boundary sections recorded against Claude Code 2.1.284**, across + source-control, claude-config, verification, implementation, debugging, discovery, claude-ops, + context-budget, session-flow, planning, and prototype. A stray blank line that split the table in + two is removed. + ## [3.2.0] - 2026-09-29 Minor: additive guidance. diff --git a/docs/conventions/native-references/README.md b/docs/conventions/native-references/README.md index ea88619e3c..05eac06775 100644 --- a/docs/conventions/native-references/README.md +++ b/docs/conventions/native-references/README.md @@ -209,8 +209,7 @@ Classified per `melodic-software/standards` `conventions/engineering/enforceabil |---|---| | `/claude-ops:audit-install-state` | `## Boundary` section for the bundled `doctor` skill (verdict `complementary`); no description phrase | | `/review:quality-gate`, `/review:fanout` | The organic Boundary pattern this doc generalizes; adopts the phrasing rules on next touch | - -| `/claude-config:audit-instructions` | `## Boundary` section for the bundled `claude-api` skill's `prompt-audit` subcommand (verdict `complementary`, composite posture), four-part detail in the skill's own reference file; no description phrase | +| `/claude-config:audit-instructions` | `## Boundary` section for the bundled `claude-api` skill's `prompt-audit` subcommand (verdict `complementary`, composite posture), four-part detail in the skill's own reference file; no description phrase. A second `## Boundary` section for the bundled `doctor` skill's `prompt-audit` (integration `suggest`) | | `/evals:methodology` | `## Boundary` section for the bundled `claude-api` skill's `hillclimb` and `build-eval` subcommands (verdict `complementary`); detail in the skill's eval-design reference | | `/playbooks:fable-5` | `## Boundary` section for the bundled `claude-api` skill as the live-facts and cost-audit surface its chapters defer to (verdict `complementary`); detail in the pack's prompt-caching reference chapter | | `/review:code-review`, `/review:security-review` | Description phrase + `## Boundary` section for the bundled `code-review` skill and the plugin-backed built-in `security-review` command (verdict `complementary`, CI lane versus session pass); four-part detail in each skill's `reference/` file | @@ -218,7 +217,14 @@ Classified per `melodic-software/standards` `conventions/engineering/enforceabil | `/testing:run-e2e` | description phrase, `## Boundary` section and `## Native step` for the bundled `run` skill (verdict `complementary`, integration `wrap`; a look versus evidenced verification); detail in the skill's context file | | `/claude-ops:audit-performance`, `/claude-ops:audit-skill-visibility` | `## Boundary` sections for the bundled `doctor` skill (and `/skill-doctor` for the second), verdict `complementary`; the second also carries the description phrase for `/skill-doctor`; detail in each skill's `reference/` file | | `/visualization:visualize` | Description phrase + `## Boundary` section for the bundled `design` skill (verdict `complementary`, user-run canvas versus a chosen form and medium); detail in the catalog spoke | -| `/prototype:explore-directions` | Description phrase + `## Boundary` section for the bundled `design` skill (verdict `complementary`, user-run canvas versus throwaway mockup); detail in the skill's `reference/` file | +| `/prototype:explore-directions` | Description phrase + `## Boundary` section for the bundled `design` skill (verdict `complementary`, user-run canvas versus throwaway mockup), and a second `## Boundary` section for the marketplace `playground` plugin; detail in the skill's `reference/` files | +| `/source-control:commit`, `/source-control:pull-request` | `## Boundary` sections for the bundled `commit` and `pr` skills and `/commit-push-pr` (integration `route`), and `/autofix-pr` (`suggest`); verdict `complementary`, detail in each skill's `reference/` file; no description phrase | +| `/claude-config:draft-auto-mode-rules`, `/claude-config:audit-permission-state`, `/claude-config:audit` | `## Boundary` sections for `/auto-mode-setup` (`suggest`), the bundled `fewer-permission-prompts` skill (`route`) with `/permissions` (`suggest`), and the bundled `update-config` skill (`route`); verdict `complementary`; no description phrase | +| `/verification:confirm`, `/implementation:implement-dispatch`, `/debugging:debug` | `## Boundary` sections for the model-disabled bundled `verify`, `batch`, and `debug` skills (integration `suggest`, verdict `complementary`); no description phrase | +| `/discovery:research-deep` | `## Boundary` section for the bundled `deep-research` workflow (integration `suggest`, verdict `complementary`); no description phrase | +| `/claude-ops:observability`, `/context-budget:audit` | `## Boundary` sections for the bundled `explain-usage` skill (integration `route`, verdict `complementary`); no description phrase | +| `/session-flow:orient`, `/session-flow:continue-in-background`, `/session-flow:retro` | `## Boundary` sections for `/recap`, for `/subtask`, `/fork` and `/background`, and for `/insights` (integration `suggest`, verdict `complementary`); no description phrase | +| `/planning:draft-goal-condition`, `/planning:plan` | `## Boundary` sections for `/goal` and `/plan` (integration `suggest`, verdict `complementary`); no description phrase | Applying **description phrases** fleet-wide is a reserved, separately gated sweep: one plugin per unit, each running apply, verify, PR, close, never a single fleet-wide edit, because each phrase diff --git a/docs/native-surfaces.md b/docs/native-surfaces.md index d40223a3d4..dd8bbe690d 100644 --- a/docs/native-surfaces.md +++ b/docs/native-surfaces.md @@ -17,20 +17,94 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen | Lane | Rows | Baked | Integration | Verdicts | |---|---|---|---|---| -| Built-in CLI commands | 5 | 5 | route 1, suggest 4 | complementary 5 | -| Bundled skills | 13 | 12 | route 8, suggest 3, wrap 2 | complementary 12, defer 1 | -| Bundled workflows | 0 | 0 | none | none | +| Built-in CLI commands | 17 | 16 | route 3, suggest 14 | complementary 16, defer 1 | +| Bundled skills | 25 | 22 | route 16, suggest 7, wrap 2 | complementary 22, defer 3 | +| Bundled workflows | 1 | 1 | suggest 1 | complementary 1 | | Plugin-backed built-ins | 1 | 1 | route 1 | complementary 1 | | Session-provided skills (observation-only) | 1 | 0 | route 1 | defer 1 | | First-party marketplace plugins | 2 | 2 | route 2 | complementary 2 | ## Built-in CLI commands +### `auto-mode-setup` → `claude-config:draft-auto-mode-rules` + +- **Verdict:** `complementary`: The native command drafts and saves autoMode.environment entries (plus optional rule tweaks); ours interviews for full allow/deny classifier rules and prints only, never writing settings. Reserved for the person to run, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `auto-mode-setup` (built-in command; markers: hidden, gated, model-invocation-disabled) +- **Our component:** `claude-config:draft-auto-mode-rules` (skill) +- **Evidence:** + - `auto-mode-setup` present in the extraction as builtin-command + - markers: hidden, gated, model-invocation-disabled + - native description: Teach auto mode about your environment, plus optional rule tweaks + - argument hint: [--request-id ] (--wizard posture=… scope=… depth=… --propose | --expect-sha256 <64-hex> --apply-file ) + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`) + - detect: origin discovered, score 0.6585, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/auto-mode-setup`, changes its argument contract or what it writes, un-hides it, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `autofix-pr` → `source-control:pull-request` + +- **Verdict:** `complementary`: The native command runs a cloud session that monitors the current PR and autofixes it; ours monitors locally. Reserved for the person to run, so ours suggests it during monitor as an alternative or addition. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `autofix-pr` (built-in command; markers: hidden, gated, model-invocation-disabled) +- **Our component:** `source-control:pull-request` (skill) +- **Evidence:** + - `autofix-pr` present in the extraction as builtin-command + - markers: hidden, gated, model-invocation-disabled + - native description: Monitor and autofix any issues with the current PR + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin discovered, score 0.4125, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/autofix-pr`, un-hides it, changes its gating, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `background` → `session-flow:continue-in-background` + +- **Verdict:** `complementary`: The built-in command sends this session itself to the background and frees the terminal; ours starts a fresh detached session from a save-point. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `background` (built-in command; markers: gated, model-invocation-disabled) +- **Our component:** `session-flow:continue-in-background` (skill) +- **Evidence:** + - `background` present in the extraction as builtin-command + - markers: gated, model-invocation-disabled + - aliases: bg + - native description: Send this session to the background and free the terminal + - argument hint: [prompt] + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin discovered, score 0.7755, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/background` or its `bg` alias, changes its gating, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `commit-push-pr` → `source-control:pull-request` + +- **Verdict:** `complementary`: The built-in command commits, pushes, and opens a PR in one prompt; ours owns the whole lifecycle and this repo's PR contract. Different scope, same object. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `commit-push-pr` (built-in command; markers: none) +- **Our component:** `source-control:pull-request` (skill) +- **Evidence:** + - `commit-push-pr` present in the extraction as builtin-command + - native description: Commit, push, and open a PR + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable (command type `prompt`) + - detect: origin discovered, score 0.4092, invocable_by model+user, recommended integration route + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/commit-push-pr`, changes its command type or invocability, or the commands reference starts documenting it (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `export` → `session-flow:clean-stop` - **Verdict:** `complementary`: No component duplicates /export and none may invoke it: /export is a non-prompt command type the Skill tool never lists, and the command is confirmed unavailable headless. clean-stop, handoff (prompt-only path), and retro instead suggest that the user run it at session-end moments, because transcripts are retention-swept and the conversation otherwise has no durable artifact. The native surface does the exporting; the skills only name the moment and a destination convention (/exports/). Verdict recorded per the user-approved export-session-flow Brief (PR #3355). - **Integration:** `suggest` -- **Native surface:** `export` (built-in command; markers: none) +- **Native surface:** `export` (built-in command; markers: model-invocation-disabled) - **Our component:** `session-flow:clean-stop` (skill) - **Evidence:** - probed on the live v2.1.241 binary 2026-08-24: `claude --bare -p "/export "` returned `/export isn't available in this environment.` and wrote no file, so the command is an interactive-terminal surface @@ -46,7 +120,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Verdict:** `complementary`: No component duplicates /export and none may invoke it: /export is a non-prompt command type the Skill tool never lists, and the command is confirmed unavailable headless. clean-stop, handoff (prompt-only path), and retro instead suggest that the user run it at session-end moments, because transcripts are retention-swept and the conversation otherwise has no durable artifact. The native surface does the exporting; the skills only name the moment and a destination convention (/exports/). Verdict recorded per the user-approved export-session-flow Brief (PR #3355). - **Integration:** `suggest` -- **Native surface:** `export` (built-in command; markers: none) +- **Native surface:** `export` (built-in command; markers: model-invocation-disabled) - **Our component:** `session-flow:handoff` (skill) - **Evidence:** - probed on the live v2.1.241 binary 2026-08-24: `claude --bare -p "/export "` returned `/export isn't available in this environment.` and wrote no file, so the command is an interactive-terminal surface @@ -63,7 +137,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Verdict:** `complementary`: No component duplicates /export and none may invoke it: /export is a non-prompt command type the Skill tool never lists, and the command is confirmed unavailable headless. clean-stop, handoff (prompt-only path), and retro instead suggest that the user run it at session-end moments, because transcripts are retention-swept and the conversation otherwise has no durable artifact. The native surface does the exporting; the skills only name the moment and a destination convention (/exports/). Verdict recorded per the user-approved export-session-flow Brief (PR #3355). - **Integration:** `suggest` -- **Native surface:** `export` (built-in command; markers: none) +- **Native surface:** `export` (built-in command; markers: model-invocation-disabled) - **Our component:** `session-flow:retro` (skill) - **Evidence:** - probed on the live v2.1.241 binary 2026-08-24: `claude --bare -p "/export "` returned `/export isn't available in this environment.` and wrote no file, so the command is an interactive-terminal surface @@ -76,6 +150,118 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Recheck trigger:** a Claude Code release note or docs change adds an /export format/redaction flag, a headless or programmatic form, or an official conversation-sharing surface; any of these reopens whether suggestion-only is still the right integration shape (verified 2026-08-24) - **Baked:** description phrase no · Boundary section no · Native step no · suggest sentence yes +### `fork` → `session-flow:continue-in-background` + +- **Verdict:** `complementary`: The built-in command spawns a background agent that inherits the full conversation; ours hands off through a durable save-point and a detached session. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `fork` (built-in command; markers: gated, model-invocation-disabled) +- **Our component:** `session-flow:continue-in-background` (skill) +- **Evidence:** + - `fork` present in the extraction as builtin-command + - markers: gated, model-invocation-disabled + - native description: Spawn a background agent that inherits the full conversation + - argument hint: + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin seeded, score 0.0611, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/fork` (the changelog records a 2.1.77 rename to `/branch` that the 2.1.284 registration does not show), changes its gating, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `goal` → `planning:draft-goal-condition` + +- **Verdict:** `complementary`: Ours drafts the completion condition the native command runs; the person sets it with `/goal`. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `goal` (built-in command; markers: model-invocation-disabled) +- **Our component:** `planning:draft-goal-condition` (skill) +- **Evidence:** + - `goal` present in the extraction as builtin-command + - markers: model-invocation-disabled + - native description: Set a goal Claude checks before stopping + - argument hint: [ | clear] + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin discovered, score 0.8063, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/goal`, changes its condition contract or length limit, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `insights` → `session-flow:retro` + +- **Verdict:** `complementary`: The built-in command generates a report analyzing the person's Claude Code sessions; ours runs a structured retrospective of one session and codifies learnings durably. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `insights` (built-in command; markers: model-invocation-disabled) +- **Our component:** `session-flow:retro` (skill) +- **Evidence:** + - `insights` present in the extraction as builtin-command + - markers: model-invocation-disabled + - native description: Generate a report analyzing your Claude Code sessions + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `prompt`) + - detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.0105) + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/insights`, changes its report scope, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `pause-memory` → `claude-memory:stateless` + +- **Verdict:** `defer`: Deferred: a hidden, gated command that pauses auto memory for one session; ours inspects and disables auto memory persistently. Hidden and undocumented, so not ruled on. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `pause-memory` (built-in command; markers: hidden, gated, model-invocation-disabled) +- **Our component:** `claude-memory:stateless` (skill) +- **Evidence:** + - `pause-memory` present in the extraction as builtin-command + - markers: hidden, gated, model-invocation-disabled + - aliases: memory-pause, toggle-memory + - native description: Pause automemory for this session + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`) + - detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.1724) + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release un-hides or ungates `/pause-memory` (aliases `memory-pause`, `toggle-memory`), or the commands reference documents it (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section no · Native step no · suggest sentence no + +### `permissions` → `claude-config:audit-permission-state` + +- **Verdict:** `complementary`: The built-in command is the interactive viewer and editor for allow and deny rules (with recent denials and an auto mode tab); ours merges every settings scope into the effective set with sources, report-only. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `permissions` (built-in command; markers: model-invocation-disabled) +- **Our component:** `claude-config:audit-permission-state` (skill) +- **Evidence:** + - `permissions` present in the extraction as builtin-command + - markers: model-invocation-disabled + - aliases: allowed-tools + - native description: Manage allow and deny tool permission rules + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin discovered, score 0.8253, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/permissions` or its `allowed-tools` alias, changes its tabs, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `plan` → `planning:plan` + +- **Verdict:** `complementary`: The built-in command enters plan mode or shows the session plan; ours produces a persisted plan with test strategy, blast radius, and an approval gate. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `plan` (built-in command; markers: model-invocation-disabled) +- **Our component:** `planning:plan` (skill) +- **Evidence:** + - `plan` present in the extraction as builtin-command + - markers: model-invocation-disabled + - native description: Enable plan mode or view the current session plan + - argument hint: [open|] + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin discovered, score 0.6733, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/plan`, changes what it persists, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `plugin eval` → `evals:plugin-eval` - **Verdict:** `complementary`: The CLI runs and scores: `claude plugin eval ` loads the plugin, runs every case in a with-plugin arm and a no-plugin baseline arm, grades each run, and reports WITH, W/OUT, and the delta. evals:plugin-eval is the guided practice around that command, which the CLI does not ship: a preflight that reports the CLI version against the floor, whether a sandbox backend exists on this machine, and the target type (plugin, wrapped skill, wrapped agent, hooks as advisory; CLAUDE.md and rules refused because the run strips them by design); static validation of the case files with no model call; a cost estimate from cases x runs x arms and a ceiling from plugin user config passed as --max-cost-usd; and a delta-first reading with the iteration loop. Neither replaces the other: the skill never grades, and the command never preflights, prices, or reads. The skill's Boundary section names the command; no listing phrase is baked, because the native-references gate token is a condition on the model's skill listing, and a CLI subcommand never enters that listing, so the skill gates on the CLI itself (preflight's version floor) instead. The gated marker rests on two switches: below the floor the binary prints an early-access refusal, and a server-side switch prints an unavailable refusal that nothing local restores. @@ -96,11 +282,29 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one +### `recap` → `session-flow:orient` + +- **Verdict:** `complementary`: The built-in command generates a one-line recap of the current session; ours orients from durable state (ledgers, handoffs, PRs, work items, git) the recap never sees. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `recap` (built-in command; markers: model-invocation-disabled) +- **Our component:** `session-flow:orient` (skill) +- **Evidence:** + - `recap` present in the extraction as builtin-command + - markers: model-invocation-disabled + - native description: Generate a one-line session recap now + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`) + - detect: origin seeded, score 0.1948, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/recap`, widens it beyond the current session, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `skill-doctor` → `claude-ops:audit-skill-visibility` - **Verdict:** `complementary`: The sibling doctor row's split, narrowed to the surface that now owns the question. Built-in /skill-doctor is a one-shot report of what each loaded skill costs in context and how often it is used, so unused ones can be turned off. audit-skill-visibility answers why a skill is unseen: it reconciles three usage sources (native ~/.claude.json counters, its own JSONL store, OTEL) under a max-across-sources rule, computes an observed horizon and withholds every verdict the span cannot support, diagnoses reachability causes, and analyses listing-budget starvation. It disables nothing by contract. This row is separate from the doctor row rather than folded into it because the two surfaces carry different gates: /doctor answers to DISABLE_DOCTOR_COMMAND, /skill-doctor to a minimum version and to feature-flag fetching, so a session can resolve either, both, or neither, and each routing line needs its own presence gate. - **Integration:** `suggest` -- **Native surface:** `skill-doctor` (built-in command; markers: gated) +- **Native surface:** `skill-doctor` (built-in command; markers: gated, model-invocation-disabled) - **Our component:** `claude-ops:audit-skill-visibility` (skill) - **Evidence:** - upstream commit d7dbd9a09f59775726ed14bbea8fc9dfdff62f7b in anthropics/claude-code (2026-09-04) added the `## 2.1.261` CHANGELOG heading and, under it, `Added /skill-doctor to show which loaded skills go unused and what they cost in context, so you can prune them`; read from the commit diff, not from the rendered changelog page @@ -112,16 +316,72 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - invocation mode (2026-09-11, Claude Code 2.1.263): local-jsx command type, not a prompt, so the Skill tool never lists it; the native report excludes bundled skills - **Observation:** upstream-source: d7dbd9a09f59775726ed14bbea8fc9dfdff62f7b, the anthropics/claude-code commit that added the 2.1.261 CHANGELOG entry naming /skill-doctor, plus the commands.md and skills.md pages read the same day. Not an extraction and not a live roster: this container runs 2.1.258, below the release that announced the surface, so nothing here observed the command itself. (2026-09-07) - **Recheck trigger:** a Claude Code release note or docs change removes /skill-doctor, folds its report back into /doctor, gives its all-commands row the bundled-skill marker (which moves this row to the bundled-skill lane and changes which switch disables it), changes its version or feature-flag gate, or gives it a multi-source reconciliation or observation-horizon discipline of its own (verified 2026-09-07) -- **Baked:** description phrase yes · Boundary section no · Native step no · suggest sentence yes +- **Baked:** description phrase yes · Boundary section yes · Native step no · suggest sentence yes +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `subtask` → `session-flow:continue-in-background` + +- **Verdict:** `complementary`: The built-in command sends a subagent off with the full context and returns its result here; ours writes a save-point and launches a detached background session seeded with a resume prompt. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `subtask` (built-in command; markers: gated, model-invocation-disabled) +- **Our component:** `session-flow:continue-in-background` (skill) +- **Evidence:** + - `subtask` present in the extraction as builtin-command + - markers: gated, model-invocation-disabled + - native description: Send a subagent off with your full context; its result comes back here + - argument hint: + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`) + - detect: origin seeded, score 0.0771, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes `/subtask`, changes its gating, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one ## Bundled skills +### `artifact-pr-review` → `review:pr-explainer` + +- **Verdict:** `defer`: Deferred: the bundled skill is gated on Artifact availability, so its presence is not determinable from this session's evidence. It publishes a PR review briefing as an Artifact; ours offers a self-contained local HTML explainer beside the markdown record. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `artifact-pr-review` (bundled skill; markers: gated) +- **Our component:** `review:pr-explainer` (skill) +- **Evidence:** + - `artifact-pr-review` present in the extraction as bundled-skill + - markers: gated + - native description: Create a PR review artifact - a structured review briefing for a GitHub pull request (synthesis title and bottom line, a recommendation, reviewer judgment calls, a visual explainer, signals, and blind spots), published as a shareable page. Use when the user asks to review a PR as an artifact, publish a PR review page, or share a review briefing. NOT a narrative walkthrough. Only for CREATING a new artifact; edits to an existing artifact modify its HTML directly. + - argument hint: [pr number or url] + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin discovered, score 0.5363, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release ungates the bundled `artifact-pr-review` skill, the commands reference documents it, or a live roster capture protocol exists for Artifact-gated skills (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section no · Native step no · suggest sentence no + +### `batch` → `implementation:implement-dispatch` + +- **Verdict:** `complementary`: The bundled skill researches and plans a large change, then runs it across 5 to 30 isolated worktree agents that each open a PR; ours dispatches an approved plan's phases to scope-fenced workers with verification at each boundary. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `batch` (bundled skill; markers: model-invocation-disabled) +- **Our component:** `implementation:implement-dispatch` (skill) +- **Evidence:** + - `batch` present in the extraction as bundled-skill + - markers: model-invocation-disabled + - native description: Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR. + - argument hint: + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled + - detect: origin seeded, score 0.0782, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `batch` skill, changes its worker range or PR behavior, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `claude-api` → `claude-config:audit-instructions` - **Verdict:** `complementary`: Composite posture, decided at the ClaudeDevs cost-performance adoption interview: wrap or point to the bundled subcommand where it fits the use case, and run our own processes where they fit, rather than routing one way on paper. The bundled skill's prompt-audit subcommand is the vendor's apply-sweep over the working directory's whole prompt surface, application code included; audit-instructions is a standing report-only audit of locally-owned Claude Code instruction surfaces with the versioned I-catalog, target-model scoping, and deterministic pre-scans. ADR-0028 already composes both: run the vendor procedure per model change, feed recurring gap shapes back into the catalog. The app-code surface stays with the bundled skill (scope widening rejected at the same interview). - **Integration:** `route` -- **Native surface:** `claude-api` (bundled skill; markers: none) +- **Native surface:** `claude-api` (bundled skill; markers: gated) - **Our component:** `claude-config:audit-instructions` (skill) - **Evidence:** - binary extraction 2026-09-09 (claude.exe 2.1.263): registerClaudeApiSkill present; subcommand array cost-optimize, migrate, managed-agents-onboard, prompt-audit, upgrade, build-eval, hillclimb @@ -138,7 +398,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Verdict:** `complementary`: Different jobs on the same object. The bundled skill's hillclimb subcommand consumes an eval suite and searches model and effort for the cheapest configuration that holds the target (train/test split, one change per round, held-out scoring), and build-eval scaffolds the suite it needs; both run evals and change configuration. evals:methodology is knowledge about designing the suite (criteria, anatomy, grading, effort as an axis) and runs nothing. The two chain: design the suite here, hand it to the search. Recorded when the effort-axis note citing hillclimb landed in the methodology reference. - **Integration:** `route` -- **Native surface:** `claude-api` (bundled skill; markers: none) +- **Native surface:** `claude-api` (bundled skill; markers: gated) - **Our component:** `evals:methodology` (skill) - **Evidence:** - binary extraction 2026-09-09 (claude.exe 2.1.263): subcommand array includes build-eval and hillclimb; bundled shared/evals/eval-hillclimb.md read end to end (train/test split, one proposal per round, held-out scoring) @@ -154,7 +414,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Verdict:** `complementary`: The playbook's chapters defer every current fact (model ID, price, beta boundary, parameter shape) to the bundled claude-api skill by standing rule, and its API prompt-caching chapter names cost-optimize as the automation for the cost levers it describes. The bundled skill resolves live facts and acts (prompt-audit, cost-optimize, hillclimb edit prompts and configuration when asked); the playbook is operating doctrine and mechanisms that outlive any one price, and performs no work. Neither replaces the other. - **Integration:** `route` -- **Native surface:** `claude-api` (bundled skill; markers: none) +- **Native surface:** `claude-api` (bundled skill; markers: gated) - **Our component:** `playbooks:fable-5` (skill) - **Evidence:** - binary extraction 2026-09-09 (claude.exe 2.1.263): registerClaudeApiSkill present; subcommand array cost-optimize, migrate, managed-agents-onboard, prompt-audit, upgrade, build-eval, hillclimb @@ -178,11 +438,49 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - native description: Review the current diff or a PR for bugs and cleanups - our description: CI code-review lane for a GitHub pull request. High-signal correctness and maintainability findings only, scoped out of security when a security lane exists - the review plugin already documents this overlap organically in plugins/review/skills/quality-gate/context/pr.md's Boundary section, naming the bundled command, the marketplace plugin, and the managed service as three distinct surfaces -- **Observation:** extraction: extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors) (2026-08-23) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release changes the bundled `code-review` skill's roster entry, its `review` alias, or its invocation mode. The alias was re-pointed at 2.1.220 and the alias-under-shadowing fix landed at 2.1.233, so this pair has moved twice in one quarter (verified 2026-09-11) - **Baked:** description phrase yes · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one +### `commit` → `source-control:commit` + +- **Verdict:** `complementary`: Ours resolves the repo's commit convention (layered source-control config, project convention, Conventional Commits default) and stages surgically, never `git add -A`; the bundled skill is a generic commit workflow the model is told to use whenever it is about to commit. Both create commits, so the Boundary names which one a session takes. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `commit` (bundled skill; markers: gated) +- **Our component:** `source-control:commit` (skill) +- **Evidence:** + - `commit` present in the extraction as bundled-skill + - markers: gated + - native description: Create a git commit. Use whenever you are about to create a commit, whether the user asked for one or it is a step in your current task - it gathers git context and applies the required commit workflow (message style, staging rules, attribution). + - argument hint: [guidance] + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin discovered, score 0.734, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `commit` skill, changes its invocability or gating, or the commands reference starts documenting it (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `debug` → `debugging:debug` + +- **Verdict:** `complementary`: The bundled skill debugs Claude Code itself (it turns on session debug logging and reads that log) and is user-invocable only; ours debugs the user's application through a reproduction loop. Ours offers `/debug` to the person when the problem is Claude Code, not their app. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `debug` (bundled skill; markers: model-invocation-disabled) +- **Our component:** `debugging:debug` (skill) +- **Evidence:** + - `debug` present in the extraction as bundled-skill + - markers: model-invocation-disabled + - native description: Enable debug logging for this session and help diagnose issues + - argument hint: [issue description] + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled + - detect: origin discovered, score 0.6786, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `debug` skill, widens it beyond Claude Code's own session log, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `design` → `prototype:explore-directions` - **Verdict:** `complementary`: explore-directions offers the editable design-canvas Artifact as an explicit alternative to its HTML mockup substrate when the bundled skill is listed with the canvas description, invoking it only on the user's choice and keeping the mockup as the default. The canvas persists under the user's account; the mockup is thrown away once the winning-variant key is captured. Same surface as the visualize row, sibling component; the Boundary section states the split and the presence check, and the description carries the gated routing phrase. @@ -224,7 +522,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Verdict:** `defer`: Deliberately undetermined. The design-sync family (design-sync skill with disableModelInvocation, hidden design-consent/design-revoke commands managing a durable agent-access grant, design-login credential flow, DesignSync tool) is registered in the binary but documented nowhere through v2.1.251, and no operator of this marketplace uses claude.ai/design design-system projects. Real enough to record next to the canvas integration it ships beside; too thin to rule on, and design-system sync is publishing, not visualization, so no integration text ships anywhere. - **Integration:** `route` -- **Native surface:** `design-sync` (bundled skill; markers: hidden, gated, model-invocation-disabled) +- **Native surface:** `design-sync` (bundled skill; markers: gated, model-invocation-disabled) - **Our component:** `visualization:visualize` (skill) - **Evidence:** - binary extraction v2.1.251 (2026-08-31): design-sync registered with disableModelInvocation true; design-consent/design-revoke registered as hidden commands ('Grant/Revoke Claude agent access to your Design projects'); design-login flow strings present @@ -234,6 +532,26 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - **Recheck trigger:** a Claude Code release documents any of design-sync/design-consent/design-revoke/design-login, or an operator of this marketplace adopts claude.ai/design design-system projects (verified 2026-09-01) - **Baked:** description phrase no · Boundary section no · Native step no · suggest sentence no +### `doctor` → `claude-config:audit-instructions` + +- **Verdict:** `complementary`: `/doctor prompt-audit` (added 2.1.283) audits CLAUDE.md files, skills, agents and commands for prompting patterns; ours audits standing instructions for over-prescription, misstated Claude Code behavior, and cross-surface drift, report-only. Model invocation is disabled on the native side, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `doctor` (bundled skill; markers: gated, model-invocation-disabled) +- **Our component:** `claude-config:audit-instructions` (skill) +- **Evidence:** + - `doctor` present in the extraction as bundled-skill + - markers: gated, model-invocation-disabled + - aliases: checkup + - native description: Health-check the user's Claude Code setup and fix issues: diagnose installation health - what the `claude doctor` terminal diagnostics cover - from local data (duplicate or leftover installs, PATH, unparsable settings files, broken or colliding agent definitions, skills whose frontmatter fails to parse); find unused skills, MCP servers, and plugins versus their context cost and disable dead weight; deduplicate local CLAUDE.md files against checked-in ones; trim checked-in CLAUDE.md files by cutting content a session could derive from the codebase (directory layouts, tech-stack lists, architecture overviews) while keeping gotchas, rationale, and non-standard conventions; migrate always-loaded CLAUDE.md guidance into lazy skills and nested CLAUDE.md files; flag slow hooks and context-heavy extensions; check the installed version is current; make auto mode the default permission mode; and pre-approve frequently denied read-only commands. Use when the user asks for a doctor run, checkup, audit, tune-up, or cleanup of their Claude Code setup or configuration. + - argument hint: [prompt-audit []] + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled + - detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.0565) + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release changes the `prompt-audit` subcommand of `/doctor`, the skill's alias or gating, or lets the model invoke it (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ### `doctor` → `claude-ops:audit-install-state` - **Verdict:** `complementary`: Bundled `doctor` is the quick native health-and-fix pass over an installation, and it offers to fix, which puts it outside the read-only contract audit-install-state holds. audit-install-state is the deep read-only inventory of the install tree: every file classified, product-managed retention separated from genuinely unmanaged state, filename schemes resolved before any liveness check, and a deliberate-or-experimental state detected before anything is called stale. Prefer the native pass for a fast check; ours when the question is what is actually in the tree and what nothing manages. @@ -247,7 +565,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - native description: Health-check your setup and fix issues: installation, unused extensions, duplicated or bloated memory files, slow hooks, updates, permissions - the native surface offers to fix; audit-install-state is report-only by contract and never writes to the target tree - invocation mode (2026-09-11, Claude Code 2.1.263): model-invocation-disabled (`disableModelInvocation`, survives `disableBundledSkills`); the Skill tool does not list it -- **Observation:** extraction: extracted from the installed native binary v2.1.284 (integrity: degraded, counts are floors; the builtin_commands lane is broken at this build; the bundled_skills lane read `doctor` as a bundled skill with alias `checkup`, gated, model invocation disabled, surviving the kill switch) (2026-09-29) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release changes `/doctor`'s status as a bundled skill or its gating switch. It became a bundled skill at 2.1.205, which retargeted DISABLE_DOCTOR_COMMAND, and it is the one bundled skill `disableBundledSkills` does not remove (verified 2026-09-29) - **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence yes @@ -263,7 +581,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - native description: Health-check your setup and fix issues: installation, unused extensions, duplicated or bloated memory files, slow hooks, updates, permissions - our description: read-only slowness-diagnostic capture run AT THE MOMENT the machine or a session feels slow, before restarting or deleting anything - invocation mode (2026-09-11, Claude Code 2.1.263): model-invocation-disabled (`disableModelInvocation`, survives `disableBundledSkills`); the Skill tool does not list it -- **Observation:** extraction: extracted from the installed native binary v2.1.284 (integrity: degraded, counts are floors; the builtin_commands lane is broken at this build; the bundled_skills lane read `doctor` as a bundled skill with alias `checkup`, gated, model invocation disabled, surviving the kill switch) (2026-09-29) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release gives `/doctor` a timed or profiling mode, or changes its status as a bundled skill, or this skill's Never-read rule stops covering transcripts (the engine gains a transcript read) (verified 2026-09-29) - **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence yes @@ -282,10 +600,99 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - recheck trigger fired 2026-09-04 and is discharged as of 2026-09-07: /skill-doctor now has its own row in this store, pinned to the upstream commit that added it, so this row is scoped back to /doctor alone and no longer stands in for two surfaces - this row's routing survives the split: the /doctor row of https://code.claude.com/docs/en/commands.md still credits the bundled doctor skill with finding 'unused skills, MCP servers, and plugins versus their context cost' inside its setup checkup, so the deferral recorded here is to a surface that still does the job (read 2026-09-07) - invocation mode (2026-09-11, Claude Code 2.1.263): model-invocation-disabled (`disableModelInvocation`, survives `disableBundledSkills`); the Skill tool does not list it -- **Observation:** extraction: targeted string search of the installed binary v2.1.284 (doctor Check 1 strings confirmed; a spot observation over the sibling rows' full v2.1.284 extraction, not a re-extraction) (2026-09-29) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release changes doctor's unused-components check (Check 1's grouping, its disable offer, or its benefit estimate), gives it a multi-source reconciliation or observation-horizon discipline, or changes /doctor's status as a bundled skill or its gating switch (verified 2026-09-29) - **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence yes +### `explain-usage` → `claude-ops:observability` + +- **Verdict:** `complementary`: The bundled skill explains where the current session's tokens went in one chart; ours reads locally captured telemetry for cross-session trends, hook latency, and cost. Session snapshot versus captured history. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `explain-usage` (bundled skill; markers: gated) +- **Our component:** `claude-ops:observability` (skill) +- **Evidence:** + - `explain-usage` present in the extraction as bundled-skill + - markers: gated + - native description: Explain where this session's tokens went, with one simple chart in plain language. Use when: explain usage, explain my usage, where did my tokens go, token usage breakdown, what used the most tokens. + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin seeded, score 0.0951, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `explain-usage` skill, widens it beyond the current session, or changes its gating (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `explain-usage` → `context-budget:audit` + +- **Verdict:** `complementary`: The bundled skill explains after the fact where the current session's tokens went; ours measures startup context per item with a before/after ledger. Where the session spent versus what loads before it starts. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `explain-usage` (bundled skill; markers: gated) +- **Our component:** `context-budget:audit` (skill) +- **Evidence:** + - `explain-usage` present in the extraction as bundled-skill + - markers: gated + - native description: Explain where this session's tokens went, with one simple chart in plain language. Use when: explain usage, explain my usage, where did my tokens go, token usage breakdown, what used the most tokens. + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin seeded, score 0.0698, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `explain-usage` skill, adds startup or per-tool attribution to it, or changes its gating (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `fewer-permission-prompts` → `claude-config:audit-permission-state` + +- **Verdict:** `complementary`: The bundled skill writes a prioritized allowlist into project .claude/settings.json from transcript evidence; ours reports the effective permission state, read-only. One writes rules, the other reports what is in effect. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `fewer-permission-prompts` (bundled skill; markers: none) +- **Our component:** `claude-config:audit-permission-state` (skill) +- **Evidence:** + - `fewer-permission-prompts` present in the extraction as bundled-skill + - native description: Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts. + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin seeded, score 0.2718, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `fewer-permission-prompts` skill, changes what it writes, or changes its invocability (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `pr` → `source-control:pull-request` + +- **Verdict:** `complementary`: Ours runs the full pull-request lifecycle (prep, draft, ready, monitor, merge, CI logs) under the repo's PR contract; the bundled skill creates one PR generically. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `pr` (bundled skill; markers: gated) +- **Our component:** `source-control:pull-request` (skill) +- **Evidence:** + - `pr` present in the extraction as bundled-skill + - markers: gated + - native description: Create a GitHub pull request. Use whenever you are about to open a PR, whether the user asked for one or it is a step in your current task - it gathers branch context and applies the required PR workflow (gh CLI, title/body format, attribution). + - argument hint: [guidance] + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin discovered, score 0.5095, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `pr` skill, changes its invocability or gating, or the commands reference starts documenting it (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `prototype` → `prototype:explore-directions` + +- **Verdict:** `defer`: Deferred: the bundled skill is gated, so its presence is not determinable from this session's evidence. It publishes a single proof-of-concept Artifact; ours builds switchable throwaway layout variants on the real stack. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `prototype` (bundled skill; markers: gated) +- **Our component:** `prototype:explore-directions` (skill) +- **Evidence:** + - `prototype` present in the extraction as bundled-skill + - markers: gated + - native description: Turn an idea into a working proof of concept and publish it as an Artifact - a single self-contained page the user can open, click through, and react to. Run a short intake, state your assumptions, build, then iterate on feedback in the same artifact. Use when the user asks to prototype an idea, mock up a concept, build a proof of concept, or wants to see something working before committing to a real build - including, on an explicit ask, a new feature shown in place on an app they already have. + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: origin discovered, score 0.3625, invocable_by model+user, recommended integration route-or-wrap + - docs cross-check (commands reference, 2026-09-29): undocumented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release ungates the bundled `prototype` skill, the commands reference documents it, or a live roster capture protocol exists for gated skills (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section no · Native step no · suggest sentence no + ### `run` → `testing:run-e2e` - **Verdict:** `complementary`: The bundled skill answers 'did this change work when I ran the app'; run-e2e drives named UI and API flows, captures evidence (screenshots, responses, logs), and carries a non-UI smoke playbook for libraries, MCP servers, hooks, and scripts, none of which have an app to launch. Prefer the native surface for the quick look; ours where the verification has to be reproducible or the target is not an app. @@ -298,7 +705,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - our description: End-to-end live app verification. Check prerequisites, start the app, drive UI/API flows, and capture evidence; includes a non-UI smoke-test playbook - the non-UI smoke lane has no native counterpart in this extraction - invocation mode (2026-09-11, Claude Code 2.1.263): model-invocable (no invocation-control field); a project skill named run is a legitimate target the bundled skill itself defers to -- **Observation:** extraction: extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors) (2026-08-23) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release changes the bundled `run` skill's roster entry or invocation mode, or gives it an evidence-capture or non-app target mode (verified 2026-09-11) - **Baked:** description phrase yes · Boundary section yes · Native step yes · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one @@ -315,7 +722,7 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - our description already carries `Skip for single-file cleanup. Use /simplify instead` - seeded rationale: same cleanup job at batch scale across many files - invocation mode (2026-09-11, Claude Code 2.1.263): model-invocable (no invocation-control field); takes a [] argument so a wrap scopes it per file set -- **Observation:** extraction: extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors) (2026-08-23) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release gives the bundled `simplify` skill a time-window argument form, a repository mode, or ecosystem grouping (the multi-file half of this trigger fired by 2026-09-11: the skill accepts a path or PR reference target, so the remaining distinction is the sweep discipline, recorded in the skill's context/bundled-simplify.md) (verified 2026-09-11) - **Baked:** description phrase yes · Boundary section yes · Native step yes · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one @@ -331,14 +738,65 @@ and when. See [`docs/conventions/native-references/`](conventions/native-referen - native description: Clean up the changed code without changing behavior - our description already carries `Skip when: /simplify refines the current diff` - seeded rationale: both clean up code without changing behavior -- **Observation:** extraction: extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors) (2026-08-23) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) - **Recheck trigger:** a Claude Code release adds, removes, or changes the invocation mode of the bundled `simplify` skill, or the skill gains a lane-scoped mode that overlaps tidy's proactive hunt (verified 2026-09-11) - **Baked:** description phrase yes · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one +### `update-config` → `claude-config:audit` + +- **Verdict:** `complementary`: The bundled skill writes settings.json on request (hooks, permissions, env vars); ours audits configuration for correctness, security, and drift, report-only unless --fix. Make a change versus audit what exists. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `route` +- **Native surface:** `update-config` (bundled skill; markers: none) +- **Our component:** `claude-config:audit` (skill) +- **Evidence:** + - `update-config` present in the extraction as bundled-skill + - native description: Use this skill to configure the Claude Code harness via settings.json. Automated behaviors ("from now on when X", "each time X", "whenever X", "before/after X") require hooks configured in settings.json - the harness executes these, not Claude, so memory/preferences cannot fulfill them. Also use for: permissions ("allow X", "add permission", "move permission to"), env vars ("set X=Y"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: "allow npm commands", "add bq permission to global settings", "move permission to user settings", "set DEBUG=true", "when claude stops show X". For simple settings like theme/model, suggest the /config command. + - invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable + - detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.2957) + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `update-config` skill, changes what it writes, or changes its invocability (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + +### `verify` → `verification:confirm` + +- **Verdict:** `complementary`: The bundled skill exercises a change end to end and observes behavior, bootstrapping a project verify skill when none exists; ours runs the mechanical prerequisite and then outcome verification against the plan or intent by change type. Its registration disables model invocation, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `verify` (bundled skill; markers: model-invocation-disabled) +- **Our component:** `verification:confirm` (skill) +- **Evidence:** + - `verify` present in the extraction as bundled-skill + - markers: model-invocation-disabled + - native description: Verify that a code change actually does what it's supposed to by exercising it end-to-end and observing behavior - drive the affected flow, not just tests or typecheck. Run before committing nontrivial changes; bootstraps this repo's project verify skill if none exists yet. Don't invoke it on a diff that only touches tests, docs, or other code with no runtime surface to drive (a change to product source always has one) - there's nothing to observe. + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (`model_invocable` undetermined at this build, `disable_model_invocation: true` read instead) + - detect: origin discovered, score 0.3204, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `verify` skill, changes what it bootstraps, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one + ## Bundled workflows -No rows recorded in this lane. +### `deep-research` → `discovery:research-deep` + +- **Verdict:** `complementary`: The bundled workflow is a fan-out web research harness (scope, search, fetch, verify, synthesize) producing a cited report; ours dispatches multi-topic research to the heaviest isolated tier with source tiers and a coverage ledger. Its registration disables model invocation, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation. +- **Integration:** `suggest` +- **Native surface:** `deep-research` (bundled workflow; markers: model-invocation-disabled) +- **Our component:** `discovery:research-deep` (skill) +- **Evidence:** + - `deep-research` present in the extraction as bundled-workflow + - markers: model-invocation-disabled + - native description: Deep research harness - fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report. + - invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (`model_invocable` undetermined at this build, `disable_model_invocation: true` read instead) + - detect: origin discovered, score 0.7023, invocable_by user-only, recommended integration suggest + - docs cross-check (commands reference, 2026-09-29): documented +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals) (2026-09-29) +- **Recheck trigger:** a Claude Code release renames or removes the bundled `deep-research` workflow, changes its phases, or makes it model-invocable (verified 2026-09-29) +- **Baked:** description phrase no · Boundary section yes · Native step no · suggest sentence no +- **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one ## Plugin-backed built-ins @@ -352,7 +810,7 @@ No rows recorded in this lane. - `security-review` present in the extraction as plugin-backed-builtin - the extraction's `plugin_backed` map reports {"security-review": "security-review"}; the name appears in neither `builtin_commands` nor `bundled_skills` - our description: CI security-review lane for a GitHub pull request. Logic, trust-boundary, and Actions security findings static analysis misses -- **Observation:** extraction: extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors) (2026-08-23) +- **Observation:** extraction: extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals; `security-review` read in the plugin_backed lane) (2026-09-29) - **Recheck trigger:** an extraction stops reporting `security-review` under `plugin_backed`: it moves into the bundled-skill or built-in-command lane, or its backing plugin name changes (re-verified 2026-09-11: the installed 2.1.263 binary registers it plugin-backed and the commands page gives the row no Skill label; the skill's reference/bundled-security-review.md carries the record) (verified 2026-09-11) - **Baked:** description phrase yes · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one @@ -389,7 +847,7 @@ No rows recorded in this lane. - corpus slice: 27-resource verified map (2026-08-31) - **Observation:** upstream-source: anthropics/claude-plugins-official at commit ed404106fcd80ba98ecb7c851e531dcb626d13b7 (HEAD of main, re-verified by fetch 2026-09-01) (2026-09-01) - **Recheck trigger:** the upstream repository's default branch moves past the pinned commit with changes under plugins/playground, or the playground plugin is renamed, removed, or absorbed into the CLI as a bundled skill (verified 2026-09-01) -- **Baked:** description phrase yes · Boundary section no · Native step no · suggest sentence no +- **Baked:** description phrase yes · Boundary section yes · Native step no · suggest sentence no - **Budget caveat:** the baked phrase may be dropped from the skill listing under budget pressure. It is the best available routing surface, not a guaranteed one ### `playground` → `visualization:visualize` diff --git a/docs/native-surfaces/records.json b/docs/native-surfaces/records.json index 017b4f4f92..caa92657aa 100644 --- a/docs/native-surfaces/records.json +++ b/docs/native-surfaces/records.json @@ -25,8 +25,8 @@ ], "observation": { "class": "extraction", - "detail": "extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors)", - "date": "2026-08-23" + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" }, "recheck": { "trigger": "a Claude Code release changes the bundled `code-review` skill's roster entry, its `review` alias, or its invocation mode. The alias was re-pointed at 2.1.220 and the alias-under-shadowing fix landed at 2.1.233, so this pair has moved twice in one quarter", @@ -62,8 +62,8 @@ ], "observation": { "class": "extraction", - "detail": "extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors)", - "date": "2026-08-23" + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" }, "recheck": { "trigger": "a Claude Code release adds, removes, or changes the invocation mode of the bundled `simplify` skill, or the skill gains a lane-scoped mode that overlaps tidy's proactive hunt", @@ -100,8 +100,8 @@ ], "observation": { "class": "extraction", - "detail": "extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors)", - "date": "2026-08-23" + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" }, "recheck": { "trigger": "a Claude Code release gives the bundled `simplify` skill a time-window argument form, a repository mode, or ecosystem grouping (the multi-file half of this trigger fired by 2026-09-11: the skill accepts a path or PR reference target, so the remaining distinction is the sweep discipline, recorded in the skill's context/bundled-simplify.md)", @@ -136,8 +136,8 @@ ], "observation": { "class": "extraction", - "detail": "extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors)", - "date": "2026-08-23" + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals; `security-review` read in the plugin_backed lane)", + "date": "2026-09-29" }, "recheck": { "trigger": "an extraction stops reporting `security-review` under `plugin_backed`: it moves into the bundled-skill or built-in-command lane, or its backing plugin name changes (re-verified 2026-09-11: the installed 2.1.263 binary registers it plugin-backed and the commands page gives the row no Skill label; the skill's reference/bundled-security-review.md carries the record)", @@ -174,8 +174,8 @@ ], "observation": { "class": "extraction", - "detail": "extracted from binary v2.1.232 at node_modules/@anthropic-ai/claude-code/bin/claude.exe (integrity: degraded, counts are floors)", - "date": "2026-08-23" + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" }, "recheck": { "trigger": "a Claude Code release changes the bundled `run` skill's roster entry or invocation mode, or gives it an evidence-capture or non-app target mode", @@ -216,7 +216,7 @@ ], "observation": { "class": "extraction", - "detail": "extracted from the installed native binary v2.1.284 (integrity: degraded, counts are floors; the builtin_commands lane is broken at this build; the bundled_skills lane read `doctor` as a bundled skill with alias `checkup`, gated, model invocation disabled, surviving the kill switch)", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", "date": "2026-09-29" }, "recheck": { @@ -257,7 +257,7 @@ ], "observation": { "class": "extraction", - "detail": "extracted from the installed native binary v2.1.284 (integrity: degraded, counts are floors; the builtin_commands lane is broken at this build; the bundled_skills lane read `doctor` as a bundled skill with alias `checkup`, gated, model invocation disabled, surviving the kill switch)", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", "date": "2026-09-29" }, "recheck": { @@ -301,7 +301,7 @@ ], "observation": { "class": "extraction", - "detail": "targeted string search of the installed binary v2.1.284 (doctor Check 1 strings confirmed; a spot observation over the sibling rows' full v2.1.284 extraction, not a re-extraction)", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", "date": "2026-09-29" }, "recheck": { @@ -321,7 +321,8 @@ "name": "skill-doctor", "class": "builtin-command", "markers": [ - "gated" + "gated", + "model-invocation-disabled" ] }, "component": { @@ -352,7 +353,7 @@ }, "baked": { "description_phrase": true, - "boundary_section": false, + "boundary_section": true, "native_step": false, "suggest_sentence": true }, @@ -399,7 +400,9 @@ "native": { "name": "export", "class": "builtin-command", - "markers": [] + "markers": [ + "model-invocation-disabled" + ] }, "component": { "plugin": "session-flow", @@ -501,7 +504,7 @@ }, "baked": { "description_phrase": true, - "boundary_section": false, + "boundary_section": true, "native_step": false, "suggest_sentence": false }, @@ -595,7 +598,6 @@ "name": "design-sync", "class": "bundled-skill", "markers": [ - "hidden", "gated", "model-invocation-disabled" ] @@ -634,7 +636,9 @@ "native": { "name": "claude-api", "class": "bundled-skill", - "markers": [] + "markers": [ + "gated" + ] }, "component": { "plugin": "claude-config", @@ -672,7 +676,9 @@ "native": { "name": "claude-api", "class": "bundled-skill", - "markers": [] + "markers": [ + "gated" + ] }, "component": { "plugin": "evals", @@ -709,7 +715,9 @@ "native": { "name": "claude-api", "class": "bundled-skill", - "markers": [] + "markers": [ + "gated" + ] }, "component": { "plugin": "playbooks", @@ -789,7 +797,9 @@ "native": { "name": "export", "class": "builtin-command", - "markers": [] + "markers": [ + "model-invocation-disabled" + ] }, "component": { "plugin": "session-flow", @@ -828,7 +838,9 @@ "native": { "name": "export", "class": "builtin-command", - "markers": [] + "markers": [ + "model-invocation-disabled" + ] }, "component": { "plugin": "session-flow", @@ -862,6 +874,1048 @@ "native_step": false }, "budget_caveat": false + }, + { + "native": { + "name": "commit", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "source-control", + "skill": "commit", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "Ours resolves the repo's commit convention (layered source-control config, project convention, Conventional Commits default) and stages surgically, never `git add -A`; the bundled skill is a generic commit workflow the model is told to use whenever it is about to commit. Both create commits, so the Boundary names which one a session takes. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`commit` present in the extraction as bundled-skill", + "markers: gated", + "native description: Create a git commit. Use whenever you are about to create a commit, whether the user asked for one or it is a step in your current task - it gathers git context and applies the required commit workflow (message style, staging rules, attribution).", + "argument hint: [guidance]", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin discovered, score 0.734, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `commit` skill, changes its invocability or gating, or the commands reference starts documenting it", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "pr", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "source-control", + "skill": "pull-request", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "Ours runs the full pull-request lifecycle (prep, draft, ready, monitor, merge, CI logs) under the repo's PR contract; the bundled skill creates one PR generically. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`pr` present in the extraction as bundled-skill", + "markers: gated", + "native description: Create a GitHub pull request. Use whenever you are about to open a PR, whether the user asked for one or it is a step in your current task - it gathers branch context and applies the required PR workflow (gh CLI, title/body format, attribution).", + "argument hint: [guidance]", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin discovered, score 0.5095, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `pr` skill, changes its invocability or gating, or the commands reference starts documenting it", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "commit-push-pr", + "class": "builtin-command", + "markers": [] + }, + "component": { + "plugin": "source-control", + "skill": "pull-request", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "The built-in command commits, pushes, and opens a PR in one prompt; ours owns the whole lifecycle and this repo's PR contract. Different scope, same object. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`commit-push-pr` present in the extraction as builtin-command", + "native description: Commit, push, and open a PR", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable (command type `prompt`)", + "detect: origin discovered, score 0.4092, invocable_by model+user, recommended integration route", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/commit-push-pr`, changes its command type or invocability, or the commands reference starts documenting it", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "autofix-pr", + "class": "builtin-command", + "markers": [ + "hidden", + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "source-control", + "skill": "pull-request", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The native command runs a cloud session that monitors the current PR and autofixes it; ours monitors locally. Reserved for the person to run, so ours suggests it during monitor as an alternative or addition. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`autofix-pr` present in the extraction as builtin-command", + "markers: hidden, gated, model-invocation-disabled", + "native description: Monitor and autofix any issues with the current PR", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin discovered, score 0.4125, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/autofix-pr`, un-hides it, changes its gating, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "auto-mode-setup", + "class": "builtin-command", + "markers": [ + "hidden", + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "claude-config", + "skill": "draft-auto-mode-rules", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The native command drafts and saves autoMode.environment entries (plus optional rule tweaks); ours interviews for full allow/deny classifier rules and prints only, never writing settings. Reserved for the person to run, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`auto-mode-setup` present in the extraction as builtin-command", + "markers: hidden, gated, model-invocation-disabled", + "native description: Teach auto mode about your environment, plus optional rule tweaks", + "argument hint: [--request-id ] (--wizard posture=… scope=… depth=… --propose | --expect-sha256 <64-hex> --apply-file )", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`)", + "detect: origin discovered, score 0.6585, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/auto-mode-setup`, changes its argument contract or what it writes, un-hides it, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "fewer-permission-prompts", + "class": "bundled-skill", + "markers": [] + }, + "component": { + "plugin": "claude-config", + "skill": "audit-permission-state", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "The bundled skill writes a prioritized allowlist into project .claude/settings.json from transcript evidence; ours reports the effective permission state, read-only. One writes rules, the other reports what is in effect. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`fewer-permission-prompts` present in the extraction as bundled-skill", + "native description: Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts.", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin seeded, score 0.2718, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `fewer-permission-prompts` skill, changes what it writes, or changes its invocability", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "doctor", + "class": "bundled-skill", + "markers": [ + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "claude-config", + "skill": "audit-instructions", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "`/doctor prompt-audit` (added 2.1.283) audits CLAUDE.md files, skills, agents and commands for prompting patterns; ours audits standing instructions for over-prescription, misstated Claude Code behavior, and cross-surface drift, report-only. Model invocation is disabled on the native side, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`doctor` present in the extraction as bundled-skill", + "markers: gated, model-invocation-disabled", + "aliases: checkup", + "native description: Health-check the user's Claude Code setup and fix issues: diagnose installation health - what the `claude doctor` terminal diagnostics cover - from local data (duplicate or leftover installs, PATH, unparsable settings files, broken or colliding agent definitions, skills whose frontmatter fails to parse); find unused skills, MCP servers, and plugins versus their context cost and disable dead weight; deduplicate local CLAUDE.md files against checked-in ones; trim checked-in CLAUDE.md files by cutting content a session could derive from the codebase (directory layouts, tech-stack lists, architecture overviews) while keeping gotchas, rationale, and non-standard conventions; migrate always-loaded CLAUDE.md guidance into lazy skills and nested CLAUDE.md files; flag slow hooks and context-heavy extensions; check the installed version is current; make auto mode the default permission mode; and pre-approve frequently denied read-only commands. Use when the user asks for a doctor run, checkup, audit, tune-up, or cleanup of their Claude Code setup or configuration.", + "argument hint: [prompt-audit []]", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled", + "detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.0565)", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release changes the `prompt-audit` subcommand of `/doctor`, the skill's alias or gating, or lets the model invoke it", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "verify", + "class": "bundled-skill", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "verification", + "skill": "confirm", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The bundled skill exercises a change end to end and observes behavior, bootstrapping a project verify skill when none exists; ours runs the mechanical prerequisite and then outcome verification against the plan or intent by change type. Its registration disables model invocation, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`verify` present in the extraction as bundled-skill", + "markers: model-invocation-disabled", + "native description: Verify that a code change actually does what it's supposed to by exercising it end-to-end and observing behavior - drive the affected flow, not just tests or typecheck. Run before committing nontrivial changes; bootstraps this repo's project verify skill if none exists yet. Don't invoke it on a diff that only touches tests, docs, or other code with no runtime surface to drive (a change to product source always has one) - there's nothing to observe.", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (`model_invocable` undetermined at this build, `disable_model_invocation: true` read instead)", + "detect: origin discovered, score 0.3204, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `verify` skill, changes what it bootstraps, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "batch", + "class": "bundled-skill", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "implementation", + "skill": "implement-dispatch", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The bundled skill researches and plans a large change, then runs it across 5 to 30 isolated worktree agents that each open a PR; ours dispatches an approved plan's phases to scope-fenced workers with verification at each boundary. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`batch` present in the extraction as bundled-skill", + "markers: model-invocation-disabled", + "native description: Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR.", + "argument hint: ", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled", + "detect: origin seeded, score 0.0782, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `batch` skill, changes its worker range or PR behavior, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "deep-research", + "class": "bundled-workflow", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "discovery", + "skill": "research-deep", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The bundled workflow is a fan-out web research harness (scope, search, fetch, verify, synthesize) producing a cited report; ours dispatches multi-topic research to the heaviest isolated tier with source tiers and a coverage ledger. Its registration disables model invocation, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`deep-research` present in the extraction as bundled-workflow", + "markers: model-invocation-disabled", + "native description: Deep research harness - fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report.", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (`model_invocable` undetermined at this build, `disable_model_invocation: true` read instead)", + "detect: origin discovered, score 0.7023, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `deep-research` workflow, changes its phases, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "explain-usage", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "claude-ops", + "skill": "observability", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "The bundled skill explains where the current session's tokens went in one chart; ours reads locally captured telemetry for cross-session trends, hook latency, and cost. Session snapshot versus captured history. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`explain-usage` present in the extraction as bundled-skill", + "markers: gated", + "native description: Explain where this session's tokens went, with one simple chart in plain language. Use when: explain usage, explain my usage, where did my tokens go, token usage breakdown, what used the most tokens.", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin seeded, score 0.0951, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `explain-usage` skill, widens it beyond the current session, or changes its gating", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "explain-usage", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "context-budget", + "skill": "audit", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "The bundled skill explains after the fact where the current session's tokens went; ours measures startup context per item with a before/after ledger. Where the session spent versus what loads before it starts. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`explain-usage` present in the extraction as bundled-skill", + "markers: gated", + "native description: Explain where this session's tokens went, with one simple chart in plain language. Use when: explain usage, explain my usage, where did my tokens go, token usage breakdown, what used the most tokens.", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin seeded, score 0.0698, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `explain-usage` skill, adds startup or per-tool attribution to it, or changes its gating", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "recap", + "class": "builtin-command", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "session-flow", + "skill": "orient", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command generates a one-line recap of the current session; ours orients from durable state (ledgers, handoffs, PRs, work items, git) the recap never sees. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`recap` present in the extraction as builtin-command", + "markers: model-invocation-disabled", + "native description: Generate a one-line session recap now", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`)", + "detect: origin seeded, score 0.1948, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/recap`, widens it beyond the current session, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "subtask", + "class": "builtin-command", + "markers": [ + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "session-flow", + "skill": "continue-in-background", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command sends a subagent off with the full context and returns its result here; ours writes a save-point and launches a detached background session seeded with a resume prompt. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`subtask` present in the extraction as builtin-command", + "markers: gated, model-invocation-disabled", + "native description: Send a subagent off with your full context; its result comes back here", + "argument hint: ", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin seeded, score 0.0771, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/subtask`, changes its gating, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "fork", + "class": "builtin-command", + "markers": [ + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "session-flow", + "skill": "continue-in-background", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command spawns a background agent that inherits the full conversation; ours hands off through a durable save-point and a detached session. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`fork` present in the extraction as builtin-command", + "markers: gated, model-invocation-disabled", + "native description: Spawn a background agent that inherits the full conversation", + "argument hint: ", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin seeded, score 0.0611, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/fork` (the changelog records a 2.1.77 rename to `/branch` that the 2.1.284 registration does not show), changes its gating, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "background", + "class": "builtin-command", + "markers": [ + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "session-flow", + "skill": "continue-in-background", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command sends this session itself to the background and frees the terminal; ours starts a fresh detached session from a save-point. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`background` present in the extraction as builtin-command", + "markers: gated, model-invocation-disabled", + "aliases: bg", + "native description: Send this session to the background and free the terminal", + "argument hint: [prompt]", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin discovered, score 0.7755, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/background` or its `bg` alias, changes its gating, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "goal", + "class": "builtin-command", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "planning", + "skill": "draft-goal-condition", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "Ours drafts the completion condition the native command runs; the person sets it with `/goal`. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`goal` present in the extraction as builtin-command", + "markers: model-invocation-disabled", + "native description: Set a goal Claude checks before stopping", + "argument hint: [ | clear]", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin discovered, score 0.8063, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/goal`, changes its condition contract or length limit, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "permissions", + "class": "builtin-command", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "claude-config", + "skill": "audit-permission-state", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command is the interactive viewer and editor for allow and deny rules (with recent denials and an auto mode tab); ours merges every settings scope into the effective set with sources, report-only. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`permissions` present in the extraction as builtin-command", + "markers: model-invocation-disabled", + "aliases: allowed-tools", + "native description: Manage allow and deny tool permission rules", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin discovered, score 0.8253, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/permissions` or its `allowed-tools` alias, changes its tabs, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "plan", + "class": "builtin-command", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "planning", + "skill": "plan", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command enters plan mode or shows the session plan; ours produces a persisted plan with test strategy, blast radius, and an approval gate. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`plan` present in the extraction as builtin-command", + "markers: model-invocation-disabled", + "native description: Enable plan mode or view the current session plan", + "argument hint: [open|]", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local-jsx`)", + "detect: origin discovered, score 0.6733, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/plan`, changes what it persists, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "insights", + "class": "builtin-command", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "session-flow", + "skill": "retro", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The built-in command generates a report analyzing the person's Claude Code sessions; ours runs a structured retrospective of one session and codifies learnings durably. User-only, so ours suggests it. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`insights` present in the extraction as builtin-command", + "markers: model-invocation-disabled", + "native description: Generate a report analyzing your Claude Code sessions", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `prompt`)", + "detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.0105)", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes `/insights`, changes its report scope, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "update-config", + "class": "bundled-skill", + "markers": [] + }, + "component": { + "plugin": "claude-config", + "skill": "audit", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "route", + "reason": "The bundled skill writes settings.json on request (hooks, permissions, env vars); ours audits configuration for correctness, security, and drift, report-only unless --fix. Make a change versus audit what exists. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`update-config` present in the extraction as bundled-skill", + "native description: Use this skill to configure the Claude Code harness via settings.json. Automated behaviors (\"from now on when X\", \"each time X\", \"whenever X\", \"before/after X\") require hooks configured in settings.json - the harness executes these, not Claude, so memory/preferences cannot fulfill them. Also use for: permissions (\"allow X\", \"add permission\", \"move permission to\"), env vars (\"set X=Y\"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: \"allow npm commands\", \"add bq permission to global settings\", \"move permission to user settings\", \"set DEBUG=true\", \"when claude stops show X\". For simple settings like theme/model, suggest the /config command.", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.2957)", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `update-config` skill, changes what it writes, or changes its invocability", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true + }, + { + "native": { + "name": "artifact-pr-review", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "review", + "skill": "pr-explainer", + "kind": "skill" + }, + "verdict": "defer", + "integration": "route", + "reason": "Deferred: the bundled skill is gated on Artifact availability, so its presence is not determinable from this session's evidence. It publishes a PR review briefing as an Artifact; ours offers a self-contained local HTML explainer beside the markdown record. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`artifact-pr-review` present in the extraction as bundled-skill", + "markers: gated", + "native description: Create a PR review artifact - a structured review briefing for a GitHub pull request (synthesis title and bottom line, a recommendation, reviewer judgment calls, a visual explainer, signals, and blind spots), published as a shareable page. Use when the user asks to review a PR as an artifact, publish a PR review page, or share a review briefing. NOT a narrative walkthrough. Only for CREATING a new artifact; edits to an existing artifact modify its HTML directly.", + "argument hint: [pr number or url]", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin discovered, score 0.5363, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release ungates the bundled `artifact-pr-review` skill, the commands reference documents it, or a live roster capture protocol exists for Artifact-gated skills", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": false, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": false + }, + { + "native": { + "name": "prototype", + "class": "bundled-skill", + "markers": [ + "gated" + ] + }, + "component": { + "plugin": "prototype", + "skill": "explore-directions", + "kind": "skill" + }, + "verdict": "defer", + "integration": "route", + "reason": "Deferred: the bundled skill is gated, so its presence is not determinable from this session's evidence. It publishes a single proof-of-concept Artifact; ours builds switchable throwaway layout variants on the real stack. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`prototype` present in the extraction as bundled-skill", + "markers: gated", + "native description: Turn an idea into a working proof of concept and publish it as an Artifact - a single self-contained page the user can open, click through, and react to. Run a short intake, state your assumptions, build, then iterate on feedback in the same artifact. Use when the user asks to prototype an idea, mock up a concept, build a proof of concept, or wants to see something working before committing to a real build - including, on an explicit ask, a new feature shown in place on an app they already have.", + "invocation mode (2026-09-29, Claude Code 2.1.284): model-invocable and user-invocable", + "detect: origin discovered, score 0.3625, invocable_by model+user, recommended integration route-or-wrap", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release ungates the bundled `prototype` skill, the commands reference documents it, or a live roster capture protocol exists for gated skills", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": false, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": false + }, + { + "native": { + "name": "pause-memory", + "class": "builtin-command", + "markers": [ + "hidden", + "gated", + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "claude-memory", + "skill": "stateless", + "kind": "skill" + }, + "verdict": "defer", + "integration": "route", + "reason": "Deferred: a hidden, gated command that pauses auto memory for one session; ours inspects and disables auto memory persistently. Hidden and undocumented, so not ruled on. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`pause-memory` present in the extraction as builtin-command", + "markers: hidden, gated, model-invocation-disabled", + "aliases: memory-pause, toggle-memory", + "native description: Pause automemory for this session", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled (command type `local`)", + "detect: human-added pair, not emitted at threshold 0.30 / top-k 3 (discovery score 0.1724)", + "docs cross-check (commands reference, 2026-09-29): undocumented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release un-hides or ungates `/pause-memory` (aliases `memory-pause`, `toggle-memory`), or the commands reference documents it", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": false, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": false + }, + { + "native": { + "name": "debug", + "class": "bundled-skill", + "markers": [ + "model-invocation-disabled" + ] + }, + "component": { + "plugin": "debugging", + "skill": "debug", + "kind": "skill" + }, + "verdict": "complementary", + "integration": "suggest", + "reason": "The bundled skill debugs Claude Code itself (it turns on session debug logging and reads that log) and is user-invocable only; ours debugs the user's application through a reproduction loop. Ours offers `/debug` to the person when the problem is Claude Code, not their app. Ruled 2026-09-29 by operator direction on the orchestrator's recommendation.", + "evidence": [ + "`debug` present in the extraction as bundled-skill", + "markers: model-invocation-disabled", + "native description: Enable debug logging for this session and help diagnose issues", + "argument hint: [issue description]", + "invocation mode (2026-09-29, Claude Code 2.1.284): user-invocable only, model invocation disabled", + "detect: origin discovered, score 0.6786, invocable_by user-only, recommended integration suggest", + "docs cross-check (commands reference, 2026-09-29): documented" + ], + "observation": { + "class": "extraction", + "detail": "extracted from binary v2.1.284 on 2026-09-29 (the /claude-ops:inventory extraction of the installed native build; integrity ok on every lane, counts are totals)", + "date": "2026-09-29" + }, + "recheck": { + "trigger": "a Claude Code release renames or removes the bundled `debug` skill, widens it beyond Claude Code's own session log, or makes it model-invocable", + "verified": "2026-09-29" + }, + "baked": { + "description_phrase": false, + "boundary_section": true, + "native_step": false, + "suggest_sentence": false + }, + "budget_caveat": true } ] } diff --git a/plugins/claude-config/.claude-plugin/plugin.json b/plugins/claude-config/.claude-plugin/plugin.json index 11b0955f5f..35b0bcfea7 100644 --- a/plugins/claude-config/.claude-plugin/plugin.json +++ b/plugins/claude-config/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "claude-config", - "version": "0.53.0", + "version": "0.53.1", "description": "Nine configuration-health skills (plus setup) for a repo's Claude Code configuration: audit (settings.json / .mcp.json / hooks / plugins / permissions drift), audit-automation-gaps (evidence-gated verdicts on automation gaps), audit-permission-grants (allow-rule / allowed-tools grants for auto-mode durability and portability), audit-permission-state (the permission rules actually in effect: every settings scope merged with per-rule provenance, what auto mode drops on entry, config written where nothing reads it, and which managed intents are enforced versus loosenable), draft-auto-mode-rules (interview and draft a paste-ready autoMode classifier block; prints only, never writes), audit-instructions (locally-owned instruction surfaces vs current model capability, proposing removals/rewrites of instructions the model no longer needs, and detecting cross-surface instruction conflicts), audit-prompting-postures (the additive lane: posture guidance the prompting guide says a component's purpose needs but the component does not carry), audit-pass (one coordinated, ordered, resumable pass over a named target: three-scope inventory, run-time-derived exclusion set, stable finding identity, suppression memory, resume, one human gate, delegating every check to the plugin that owns it), and unhobble (the empirical bare-baseline experiment: reversibly strip a repo's standing instructions, log real stumbles against the current model, re-add only what evidence earns).", "author": { "name": "Melodic Software", diff --git a/plugins/claude-config/CHANGELOG.md b/plugins/claude-config/CHANGELOG.md index 6444a32b49..978c614d50 100644 --- a/plugins/claude-config/CHANGELOG.md +++ b/plugins/claude-config/CHANGELOG.md @@ -5,6 +5,26 @@ All notable changes to the `claude-config` plugin are documented here. Format fo Versions 0.51.8 to 0.51.9 and 0.51.11 to 0.51.14 were reserved by parallel branches and never released. +## [0.53.1] - 2026-09-29 + +### Added + +- **`draft-auto-mode-rules` carries a Boundary section for the built-in command + `/auto-mode-setup`.** The command drafts and saves `autoMode.environment` entries; this skill + interviews for every section and prints only. The model offers the person-run command at the + start of the run rather than invoking it. +- **`audit-permission-state` carries a Boundary section for the bundled skill + `fewer-permission-prompts` and the built-in command `/permissions`.** When + `fewer-permission-prompts` resolves in the session it is preferred for writing an allowlist, and + this skill for seeing what is in effect; the model offers the person-run `/permissions` for + interactive editing rather than invoking it. +- **`audit-instructions` carries a Boundary section for the bundled skill `doctor`.** The model + offers the person-run `/doctor prompt-audit` at the end of the run as an addition to this + report-only audit, rather than invoking it. +- **`audit` carries a Boundary section for the bundled skill `update-config`.** When it resolves in + the session it is preferred for making a requested settings change, and this skill for auditing + configuration. + ## [0.53.0] - 2026-09-29 ### Added diff --git a/plugins/claude-config/skills/audit-instructions/SKILL.md b/plugins/claude-config/skills/audit-instructions/SKILL.md index d2bfee2b16..201448ed64 100644 --- a/plugins/claude-config/skills/audit-instructions/SKILL.md +++ b/plugins/claude-config/skills/audit-instructions/SKILL.md @@ -60,24 +60,22 @@ concerns its siblings already cover, so route rather than re-answer: *text* against doctrine; unhobble measures the *model*. On **memory-layer surfaces** (CLAUDE.md, a natively read AGENTS.md, CLAUDE.local.md, -`.claude/rules/`, and `rules/` under the user root Phase A resolves), -this skill runs only the model-era checks I6–I35. It never runs or reports the hygiene checks -I1–I5 (line-necessity, length, placement, inferable content, rule-to-hook) on these surfaces; that -layer belongs to the `claude-memory` plugin. When it is installed, route memory-layer hygiene to its -`audit` skill; when it is not, emit a single one-line pointer to the official CLAUDE.md -include/exclude guidance (recorded with I1–I5 in [reference/criteria.md](reference/criteria.md)). -Either way, no I1–I5 hygiene finding is ever produced here. On **non-memory surfaces** (skill -bodies, agent definitions, hook instruction text, output styles) the catalog applies, since no -incumbent auditor covers instruction content there, **bounded by each row's own surface -declaration**, which is narrower than the partition for some checks. I13, I14, I29, I31, I32, I33, -and I34 name their own surface sets and are not run outside them; I15 is answered pairwise by -Phase B2; this partition never widens a row. +`.claude/rules/`, and `rules/` under the user root Phase A resolves), this skill runs only the +model-era checks I6–I35. It never runs or reports the hygiene checks I1–I5 (line-necessity, length, +placement, inferable content, rule-to-hook) on these surfaces; that layer belongs to the +`claude-memory` plugin. When it is installed, route memory-layer hygiene to its `audit` skill; when +it is not, emit a single one-line pointer to the official CLAUDE.md include/exclude guidance +(recorded with I1–I5 in [reference/criteria.md](reference/criteria.md)). Either way, no I1–I5 +hygiene finding is ever produced here. On **non-memory surfaces** (skill bodies, agent definitions, +hook instruction text, output styles) the catalog applies, since no incumbent auditor covers +instruction content there, **bounded by each row's own surface declaration**, which is narrower than +the partition for some checks. I13, I14, I29, I31, I32, I33, and I34 name their own surface sets and +are not run outside them; I15 is answered pairwise by Phase B2; this partition never widens a row. I15 (cross-surface conflict) carries its own narrower routing on the same convention, drawn from the population `claude-memory:audit`'s C6 actually enumerates via `discover-instruction-surfaces` (project **and** user root-level CLAUDE.md / a natively read AGENTS.md / rules) rather than from the -name of the layer. -[reference/conflict-criteria.md](reference/conflict-criteria.md) states that boundary and owns it. +name of the layer; [reference/conflict-criteria.md](reference/conflict-criteria.md) states and owns it. **Upstream-owned surfaces are excluded from the editable set.** Installed plugin-cache content is owned by the publishing repository, and a managed materialization by whatever upstream the consuming @@ -98,25 +96,39 @@ two are routinely conflated: - **This skill (marketplace plugin).** A standing, report-only audit of locally-owned Claude Code instruction surfaces against the versioned I-catalog in [reference/criteria.md](reference/criteria.md): target-model scoping, deterministic pre-scans, the cross-surface conflict pass, and harness-claim - staleness the vendor sweep does not look for. Prompts embedded in application source stay with the - bundled subcommand. + staleness the vendor sweep misses. Application-source prompts stay with the bundled subcommand. **Routing.** The two compose rather than compete. When the bundled `claude-api` skill resolves in this session, prefer its `prompt-audit` for a model migration or any pass over application-code prompts, and run it whenever the target model changes. Prefer this skill for the standing catalog -audit of Claude Code surfaces, for cross-surface conflicts, and for harness claims that misstate -Claude Code's own behavior. Where a sweep wants both, run both: recurring gap shapes the vendor -sweep surfaces feed this catalog as new rows, and this skill's findings never substitute for the -vendor procedure on a model change. +audit of Claude Code surfaces, cross-surface conflicts, and harness claims that misstate Claude +Code's own behavior. Where a sweep wants both, run both: recurring gap shapes the vendor sweep +surfaces feed this catalog as new rows, and this skill's findings never substitute for the vendor +procedure on a model change. **Mutation gate.** `prompt-audit` edits files when the request asks for edits. This skill is -report-only, so never chain into a `prompt-audit` apply on its behalf; surface the finding and let -the user invoke the sweep. +report-only: never chain into a `prompt-audit` apply; surface the finding and let the user run it. **Availability is never assumed.** Bundled surfaces are gated by settings, environment, plan, and -host; this section states what to do when the surface resolves, never that it is present. Its -subcommand set, distribution facts, and recheck triggers are in -[reference/bundled-claude-api.md](reference/bundled-claude-api.md). +host; this section states what to do when the surface resolves, never that it is present. Subcommand +set, distribution facts, recheck triggers: [reference/bundled-claude-api.md](reference/bundled-claude-api.md). + +## Boundary, the bundled `doctor` skill + +`/doctor prompt-audit` also audits these files for outdated or conflicting instructions. + +- **`doctor` (bundled skill, alias `checkup`).** Ships with Claude Code rather than as a marketplace + plugin; its `prompt-audit` subcommand audits `CLAUDE.md` files, skills, agents, and commands for + older-model prompting patterns. It is reserved for the person to run; the model does not invoke it. +- **This skill (marketplace plugin).** Report-only catalog audit that adds over-prescription with + target-model scope, stale Claude Code behavior claims, and the cross-surface conflict pass. + +**Routing.** At the end of the run, offer it to the person: you can run `/doctor prompt-audit` +alongside this skill. An unattended run records the offer in its output instead of asking. +**Mutation gate.** Its write posture is undocumented; this skill never chains into `/doctor`. +**Availability is never assumed.** Gated by `DISABLE_DOCTOR_COMMAND`, `skillOverrides`, and +version, it survives `disableBundledSkills`; this section states what to offer, never that it is +present. Records: [reference/native-doctor.md](reference/native-doctor.md). ## Arguments @@ -234,8 +246,7 @@ run's resolved target model. I33 is lane-only; each lane brief restates its Must ### Lane sizing One partition rule sizes lanes, a token budget: no lane cap and no line-count constant. **Plan the -dispatch before dispatching** by running `lane-runs.sh partition` over the inventoried files, then -dispatch those lanes. +dispatch first**: run `lane-runs.sh partition` over the inventoried files, then dispatch those lanes. A lane's budget is **0.25 of the lane model's own context window**, leaving the rest for the catalog, the lane brief, the lane's reasoning, and its report, at **3.5 bytes per token** @@ -276,22 +287,21 @@ Phase D cost line disclose the planned and actual dispatch counts in place of th ### Run files and resume -Each run lives under -`${CLAUDE_PLUGIN_DATA}/audit-instructions/runs///`, the run id a UTC -`YYYYMMDDTHHMMSSZ` stamp, and each lane writes its report to `lanes/.md` there. +Each run lives under `${CLAUDE_PLUGIN_DATA}/audit-instructions/runs///`, the run +id a UTC `YYYYMMDDTHHMMSSZ` stamp, and each lane writes its report to `lanes/.md` there. `last-audit.md` stays where Phase D puts it. The lease is audit-pass's `run-state.sh`, invoked with -`--plugin-data ${CLAUDE_PLUGIN_DATA}/audit-instructions` so its containment pin holds: -`paths` names the run directory, `lease acquire` starts the run, `lease heartbeat` runs as each -lane's report lands, and `lease release` writes the tombstone at the end. The skill is read-only, -so it takes a lease and no lock. +`--plugin-data ${CLAUDE_PLUGIN_DATA}/audit-instructions` so its containment pin holds: `paths` names +the run directory, `lease acquire` starts the run, `lease heartbeat` runs as each lane's report +lands, and `lease release` writes the tombstone at the end. The skill is read-only, so it takes a +lease and no lock. Every lane carries an **input digest** from `lane-runs.sh digest`: the lane's ordered file list with content hashes, the partition digest, and one `--param` for each of `catalog_version` (the `version:` in `reference/criteria.md`), `conflict_criteria_version` (the `Version:` in -`reference/conflict-criteria.md`), `prompt_digest` (a sha256 of the lane brief with its surface -list removed), `harness_version` (`claude --version`), `target_model` (the resolved target), -`scope`, `opinion`, and `no_stopping_condition`. The script refuses a digest missing any of them. -The lane brief hands the lane the exact last line its report must end with, from +`reference/conflict-criteria.md`), `prompt_digest` (a sha256 of the lane brief with its surface list +removed), `harness_version` (`claude --version`), `target_model` (the resolved target), `scope`, +`opinion`, and `no_stopping_condition`. The script refuses a digest missing any of them. The lane +brief hands the lane the exact last line its report must end with, from `lane-runs.sh marker --lane --digest `; a report without it as its last non-blank line is incomplete. @@ -401,9 +411,8 @@ abort, not an interactive gate, since it prompts nobody and blocks nothing mid-r as a table. Each row's identity is `(check, claim, sites)` per [reference/finding-identity.md](reference/finding-identity.md); presentation fields stay outside the hash. An I15 conflict is one finding with two sites and one Finding ID. **Finding ID** is the row's -re-run-stable `finding_id/v1` from `scripts/finding-ids.sh` -([derivation and claim templates](reference/finding-identity.md)); a refused row reads -`unidentified: ` there. +re-run-stable `finding_id/v1` from `scripts/finding-ids.sh` ([derivation and claim +templates](reference/finding-identity.md)); a refused row reads `unidentified: ` there. | # | Finding ID | Check | Surface:Line | Severity | Tier | Authority | Finding | Proposed change | |---|------------|-------|--------------|----------|------|-----------|---------|-----------------| @@ -486,6 +495,5 @@ plainly that nothing has been applied. population, namely root-level project **or user** `CLAUDE.md` / `CLAUDE.local.md` / a natively read `AGENTS.md` or `.claude/AGENTS.md` / rules, including **user↔project** pairs. That is `claude-memory:audit`'s C6. A **nested** `CLAUDE.md` / `CLAUDE.local.md` side, an auto-memory side, - or any surface outside that population keeps the pair here; - [reference/conflict-criteria.md](reference/conflict-criteria.md) owns the routing table and its - evidence. + or any surface outside that population keeps the pair here; the routing table and its evidence + live in [reference/conflict-criteria.md](reference/conflict-criteria.md). diff --git a/plugins/claude-config/skills/audit-instructions/reference/native-doctor.md b/plugins/claude-config/skills/audit-instructions/reference/native-doctor.md new file mode 100644 index 0000000000..8fa5d85169 --- /dev/null +++ b/plugins/claude-config/skills/audit-instructions/reference/native-doctor.md @@ -0,0 +1,22 @@ +# The bundled `doctor` skill, as this skill relates to it + +Four-part records behind the `doctor` Boundary section in `SKILL.md`. The section carries the +conclusion; this file carries what it rests on. Nothing here asserts that the surface is present in +any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `doctor` is a bundled skill with alias `checkup`, user-invocable, with model invocation disabled, gated, and it survives `disableBundledSkills` | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`model_invocable: false`, `disable_model_invocation: true`, `gated: true`, `survives_kill_switch: true`, `aliases: ["checkup"]`) | 2026-09-29, Claude Code 2.1.284 | A release renames or removes it, changes its alias, or changes its invocability | +| Its argument hint is `[prompt-audit []]` | Same binary extraction | 2026-09-29, Claude Code 2.1.284 | A release changes the argument hint | +| `/doctor prompt-audit` (also `/checkup prompt-audit`) audits `CLAUDE.md` files, skills, agents, and commands for prompting patterns written for older models | Claude Code changelog 2.1.283 | 2026-09-29 | A release note changes or removes `prompt-audit` | +| The commands page describes it as auditing `CLAUDE.md` files, skills, and other configuration for outdated or conflicting instructions, instead of running the checkup, and requires v2.1.283 or later | The `/doctor` row of | 2026-09-29 | The commands page row changes | +| `/doctor` stays typable under `disableBundledSkills`; `DISABLE_DOCTOR_COMMAND` or a `skillOverrides` entry `"doctor": "off"` hides it | , bundled skills section | 2026-09-29 | The skills page changes its gating for `/doctor` | +| Whether `prompt-audit` edits files or only reports is not stated on the commands page or in the changelog; the checkup it replaces reports first and asks before changing anything | The `/doctor` row of the commands page | 2026-09-29 | The commands page or a release note states `prompt-audit`'s write posture | + +## Why the verdict is complementary + +The vendor pass checks prompting patterns against the current model's guidance. This skill runs a +versioned catalog with target-model scope and citations, checks claims about Claude Code's own +behavior against current docs, and runs a cross-surface conflict pass, and it never edits. Running +both finds more than either; a recurring shape the vendor pass reports belongs in this skill's +catalog as a row, not in a copy of the vendor procedure. diff --git a/plugins/claude-config/skills/audit-permission-state/SKILL.md b/plugins/claude-config/skills/audit-permission-state/SKILL.md index bbd9a502d2..e0474e671d 100644 --- a/plugins/claude-config/skills/audit-permission-state/SKILL.md +++ b/plugins/claude-config/skills/audit-permission-state/SKILL.md @@ -41,6 +41,35 @@ could actually open, and what each one holds. - The instruction layer (CLAUDE.md, a natively read AGENTS.md, rules, auto-memory) → the `claude-memory` plugin. +## Boundary, native Claude Code surfaces + +Two native surfaces act on the same permission rules this skill reports, so "fix my permissions" +can mean any of the three. + +- **`fewer-permission-prompts` (bundled skill).** Ships with Claude Code rather than as a + marketplace plugin. It scans transcripts for common read-only Bash and MCP calls and adds a + prioritized allowlist to project `.claude/settings.json`. The model and the person can both + invoke it. +- **`/permissions` (built-in command, alias `/allowed-tools`).** An interactive dialog to view, + add, and remove rules by scope, review recent auto mode denials, and edit classifier rules on its + Auto mode tab. It is reserved for the person to run; the model does not invoke it. +- **This skill (marketplace plugin).** Computes the effective merged set across every scope, off a + live session, with source, precedence, auto mode drops, and dead config. It writes nothing. + +**Routing.** When the bundled `fewer-permission-prompts` skill resolves in this session, prefer it +for reducing prompts by writing an allowlist; prefer this skill to see what is in effect. When the +report ends with a rule the person wants added, removed, or moved, offer it to the person: you can +run `/permissions` to view and edit these rules interactively. An unattended run records that +offer in its output instead of asking. + +**Mutation gate.** `fewer-permission-prompts` writes project settings, and `/permissions` writes +whichever scope the person edits. This skill never chains into either on its own behalf. + +**Availability is never assumed.** Bundled skills are gated by settings such as +`disableBundledSkills`, and both surfaces vary by version and host; this section states what to do +when they resolve, never that they are present. The four-part records live in +[reference/native-surfaces.md](reference/native-surfaces.md). + ## Report-only, permanently **This skill writes no settings file, in any scope, under any flag.** That is the contract, and it diff --git a/plugins/claude-config/skills/audit-permission-state/reference/native-surfaces.md b/plugins/claude-config/skills/audit-permission-state/reference/native-surfaces.md new file mode 100644 index 0000000000..056e0d1c34 --- /dev/null +++ b/plugins/claude-config/skills/audit-permission-state/reference/native-surfaces.md @@ -0,0 +1,37 @@ +# Native permission surfaces, as this skill relates to them + +Four-part records behind the `## Boundary` section in `SKILL.md`. The section carries the +conclusion; this file carries what it rests on. Nothing here asserts that either surface is present +in any session. + +## The bundled `fewer-permission-prompts` skill + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `fewer-permission-prompts` is a bundled skill, invocable by the model and the person, not gated | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`model_invocable: true`, `user_invocable: true`, `gated: false`) | 2026-09-29, Claude Code 2.1.284 | A release renames or removes the skill, or changes its invocability | +| It scans transcripts for common read-only Bash and MCP tool calls, then adds a prioritized allowlist to project `.claude/settings.json` | Its commands reference row, , and the same binary extraction's description | 2026-09-29 | The commands page row changes, or a release changes the scope it writes | + +## The built-in `/permissions` command + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `/permissions` is a built-in command, user-invocable only, alias `/allowed-tools` | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`model_invocable: false`, `aliases: ["allowed-tools"]`) | 2026-09-29, Claude Code 2.1.284 | A release renames it, changes its alias, or changes its invocability | +| It opens an interactive dialog to view rules by scope, add or remove rules, manage working directories, and review recent auto mode denials | Its commands reference row, | 2026-09-29 | The commands page row changes | +| Its Auto mode tab views and edits auto mode classifier rules | Same commands row; Claude Code changelog 2.1.246 ("Added an Auto mode tab to `/permissions`") | 2026-09-29 | The commands page row changes or a release removes the tab | +| Recent auto mode denials, with their reasons, appear in the dialog | Claude Code changelog 2.1.193 ("auto-mode denial reasons to ... `/permissions` recent denials") | 2026-09-29 | A release note changes the recent-denials view | +| It lists rules without resolving which wins, and there is no CLI export of the merged set | The Purpose section's own verification record in `SKILL.md` | 2026-09-12 | A release note mentions a permissions export or a merged-outcome view | + +## Why the verdict is complementary + +Both native surfaces write rules: one derives an allowlist from transcripts, the other edits rules +by hand in a live session. Neither reports the merged outcome across every scope, which scopes +could not be read, or what auto mode drops, and neither runs outside a session. This skill reports +exactly that and writes nothing, so the useful order is to read this report first and then make the +change with the surface that fits. + +## Presence + +Bundled skills can be removed by `disableBundledSkills` or hidden by `skillOverrides`, and both +surfaces vary by version and host, so the routing reads "when the surface resolves in this session" +and never that it is present. Recheck when a release or docs change adds, removes, or renames a +gating axis. diff --git a/plugins/claude-config/skills/audit/SKILL.md b/plugins/claude-config/skills/audit/SKILL.md index b0c9da7393..6aeae534ce 100644 --- a/plugins/claude-config/skills/audit/SKILL.md +++ b/plugins/claude-config/skills/audit/SKILL.md @@ -375,6 +375,32 @@ CC settings schema, MCP server shape, hook event names, and permission glob synt invariants resolved against their own official pages when a check needs them, rather than asserted as fixed patterns here. +## Boundary, the bundled `update-config` skill + +Both surfaces handle `settings.json` files, so a request about settings can mean either. + +- **`update-config` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. + It edits the matching `settings.json` or `settings.local.json` for a described change: hooks for + automated behaviors, permissions, environment variables, and hook troubleshooting. The model and + the person can both invoke it. +- **This skill (marketplace plugin).** Audits the configuration that exists for correctness, + security, and drift against current official docs, across settings, MCP, hooks, plugins, and + permissions. It reports only, unless `--fix` is passed. + +**Routing.** When the bundled `update-config` skill resolves in this session, prefer it for making +a settings change the person requested; prefer this skill for auditing what is configured. A +request such as "allow npm commands" or "add a hook that runs when Claude stops" is a change, not +an audit. + +**Mutation gate.** `update-config` writes settings files as its job. This skill writes only in +Phase 5, under `--fix`, one confirmed fix at a time, and never chains into `update-config` on its +own behalf. + +**Availability is never assumed.** Bundled skills are gated by settings such as +`disableBundledSkills` and vary by version and host; this section states what to do when the +surface resolves, never that it is present. The four-part records live in +[reference/native-update-config.md](reference/native-update-config.md). + ## Next - A finding is a permission grant that auto mode drops or a hardcoded path: diff --git a/plugins/claude-config/skills/audit/reference/native-update-config.md b/plugins/claude-config/skills/audit/reference/native-update-config.md new file mode 100644 index 0000000000..a8666d9c36 --- /dev/null +++ b/plugins/claude-config/skills/audit/reference/native-update-config.md @@ -0,0 +1,27 @@ +# The bundled `update-config` skill, as this skill relates to it + +Four-part records behind the `update-config` Boundary section in `SKILL.md`. The section carries +the conclusion; this file carries what it rests on. Nothing here asserts that the surface is present +in any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `update-config` is a bundled skill, invocable by the model and the person, not gated | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`model_invocable: true`, `user_invocable: true`, `gated: false`) | 2026-09-29, Claude Code 2.1.284 | A release renames or removes the skill, or changes its invocability | +| It configures the harness through `settings.json`: hooks for automated behaviors, permissions, environment variables, hook troubleshooting, and any change to `settings.json` or `settings.local.json`; for theme and model it points to `/config` | The same binary extraction's description | 2026-09-29, Claude Code 2.1.284 | A release changes the skill's description | +| Given a described settings change, Claude edits the matching `settings.json` file | Its commands reference row, | 2026-09-29 | The commands page row changes | +| It writes `Edit(path)` permission rules, not `Write(path)` rules, for file permissions | Claude Code changelog 2.1.275 | 2026-09-29 | A release note changes the rule shape it writes | + +## Why the verdict is complementary + +`update-config` makes a change the person asks for. This skill checks what is already configured +against current docs and the project's conventions and reports findings; its `--fix` phase applies +only findings it produced, each behind a confirmation. One writes on request, the other judges the +result, so an audit finding the person wants fixed in a way `--fix` does not cover is a natural +request to hand to `update-config`, which the person or the model makes as a new request, not a +chain from this skill. + +## Presence + +Bundled skills can be removed by `disableBundledSkills` or hidden by `skillOverrides`, and vary by +version and host, so the routing reads "when the surface resolves in this session" and never that +it is present. Recheck when a release or docs change adds, removes, or renames a gating axis. diff --git a/plugins/claude-config/skills/draft-auto-mode-rules/SKILL.md b/plugins/claude-config/skills/draft-auto-mode-rules/SKILL.md index bca493a9b1..a6834e6219 100644 --- a/plugins/claude-config/skills/draft-auto-mode-rules/SKILL.md +++ b/plugins/claude-config/skills/draft-auto-mode-rules/SKILL.md @@ -33,6 +33,32 @@ thing this plugin exists not to do. - Whether an existing block is any good → `claude auto-mode critique`, surfaced by `audit-permission-state --critique`. It owns the semantic judgment; this skill owns composition. +## Boundary, the built-in `/auto-mode-setup` command + +Both surfaces help a person write auto mode classifier content, so a request to "set up auto mode" +can mean either. + +- **`/auto-mode-setup` (built-in command).** Ships with Claude Code rather than as a marketplace + plugin. It drafts `autoMode.environment` entries from the project and recent sessions, with + optional rule tweaks, lets the person review the draft, and saves it to user settings. It is + reserved for the person to run; the model does not invoke it. +- **This skill (marketplace plugin).** Interviews for entries in every section (`environment`, + `allow`, `soft_deny`, `hard_deny`), each with stated exclusions and a transcript-visible + condition, and prints the block without writing anything. + +**Routing.** At the start of the run, offer it to the person: you can run `/auto-mode-setup` +instead of or alongside this skill to have the `environment` section drafted from your sessions +and saved for you; this interview then covers the allow and deny sections. If they take it, run +Phase 1 again after it saves so the draft builds on what it wrote. An unattended run records the +offer in its output instead of asking. + +**Mutation gate.** `/auto-mode-setup` writes user settings when the person confirms its draft. This +skill writes nothing and never chains into that command on the person's behalf. + +**Availability is never assumed.** The command is hidden, gated by plan and version, and varies by +platform; this section states what to offer, never that it is present. The four-part records live +in [reference/native-auto-mode-setup.md](reference/native-auto-mode-setup.md). + ## Inputs, and one deliberate omission The draft is built from **the interview plus the effective merge** (`audit-permission-state`), and diff --git a/plugins/claude-config/skills/draft-auto-mode-rules/reference/native-auto-mode-setup.md b/plugins/claude-config/skills/draft-auto-mode-rules/reference/native-auto-mode-setup.md new file mode 100644 index 0000000000..1b81af7128 --- /dev/null +++ b/plugins/claude-config/skills/draft-auto-mode-rules/reference/native-auto-mode-setup.md @@ -0,0 +1,21 @@ +# The built-in `/auto-mode-setup` command, as this skill relates to it + +Four-part records behind the `## Boundary` section in `SKILL.md`. The section carries the +conclusion; this file carries what it rests on. Nothing here asserts that the command is present in +any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `/auto-mode-setup` is a built-in command, user-invocable only, hidden from the command menu, and gated; its description is "Teach auto mode about your environment, plus optional rule tweaks" | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`model_invocable: false`, `user_invocable: true`, `hidden: true`, `gated: true`) | 2026-09-29, Claude Code 2.1.284 | A release renames or removes the command, or changes its invocability or hidden flag | +| It drafts `autoMode.environment` entries from the project and recent sessions, then lets the person review the draft and save it to user settings | Commands reference row for `/auto-mode-setup`, | 2026-09-29 | The commands page row changes | +| It requires a Pro, Max, or Team plan and Claude Code v2.1.228 or later, v2.1.233 or later on native Windows | Same commands reference row | 2026-09-29 | The commands page row changes its plan or version requirements | +| Its argument hint is `[--request-id ] (--wizard posture=... scope=... depth=... --propose \| --expect-sha256 <64-hex> --apply-file )`: a propose step and a hash-checked apply step | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary | 2026-09-29, Claude Code 2.1.284 | A release changes the argument hint | + +## Why the verdict is complementary + +The command writes: it produces `environment` entries and saves them to user settings after the +person reviews them. The commands page documents it for `environment` entries only; its "optional +rule tweaks" are not described there. This skill never writes and covers every classifier section, +with an interview for stated exclusions and a condition the classifier can see in the transcript. +Using the command for `environment` and this skill for the rest composes cleanly, since the +command's save is what Phase 1 then reads. diff --git a/plugins/claude-ops/.claude-plugin/plugin.json b/plugins/claude-ops/.claude-plugin/plugin.json index 8b729b29ca..9d7a3bd228 100644 --- a/plugins/claude-ops/.claude-plugin/plugin.json +++ b/plugins/claude-ops/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "claude-ops", - "version": "0.66.1", + "version": "0.66.2", "description": "Claude Code operations toolkit. Thirteen skills: audit-skill-visibility (audit whether each installed skill is actually VISIBLE to the model, and diagnose why most of a fleet never gets used: a skill is invisible when its description is dropped by Claude Code's skill-listing context budget, which sheds descriptions lowest-score-first so an unused skill loses the keywords that would let it be matched, from skills genuinely not wanted, from skills the run cannot observe at all; computes whether the listing overflows from documented settings, and withholds every cold verdict the data cannot support rather than reporting absence of data as absence of use), inventory (read-only enumeration of the complete invocable surface: every built-in CLI command with aliases and hidden/gated status, every bundled skill, and every component of every installed plugin across all marketplaces; reads the shipped binary because upstream publishes no built-in command list, and carries an integrity verdict so a drifted build reports counts as floors rather than silently short totals), audit-install-state (read-only audit of the machine-scope ~/.claude installation directory and ~/.claude.json: full inventory split into an authored surface and rolled-up bulk trees, product-managed retention vs genuinely unmanaged state, filename-scheme resolution before any process-liveness check, and deliberate/mid-experiment detection; reports, never deletes), audit-performance (read-only slowness-diagnostic capture run at the moment the machine or a session feels slow: CLI version, retention-sweep health including the unparsable-settings pause, which warns in /status, a timed census walk of the install tree as a sweep-cost proxy, active-session and plugin-fleet counts, a process census, and the fan-out layer, which covers a load-labeled no-op spawn baseline, every hook that will fire bucketed per-tool-call versus per-turn with its invocation shape, the configured statusline, subagent concurrency and spawn-depth ceilings against documented defaults, whether running sessions predate the settings file they are judged by, and orphan attribution by parent liveness rather than age, plus on Windows a kernel-object census (Token objects against uptime, paged pool) that names a host-level leak beneath all four suspects; read against a bundled known-performance-issues reference that also records the causes tested and cleared; separates the four documented suspects of accumulated state, version regression, component bloat, and per-spawn fan-out cost, and routes remediation out; reports, never mutates, and never executes a discovered hook or statusline command), audit-native-overlap (map native Claude Code surfaces, namely built-in CLI commands, bundled skills, plugin-backed built-ins, and session-provided skills, against the current repo's plugin skills and agents, so a custom component never silently duplicates what Claude Code itself ships; bare invocation is a read-only overlap report carrying the extraction's integrity floors and a shared-listing-budget exposure section, verdicts are human-gated in a committed store rendered into a generated registry whose every row carries an observable recheck trigger, and only an explicit apply step bakes presence-gated native references into descriptions and Boundary sections), observability (read locally captured telemetry from the OTEL store, the collector, the per-session hook event log and hook-event JSONL, and ccusage, with trend reports, a per-session report of what fired, what was blocked and the event timeline, and store pruning), known-issues (search known Claude product GitHub bugs, check service health, maintain a persistent tracked-issue registry), changelog (ingest Claude Code changelog entries and integrate them into the current repo), prerequisites (read-only table of external binaries declared by enabled plugins; never installs), plugins (bring a machine's plugin fleet current on demand: marketplace refresh, effective-scope updates including in-repo project/local installs, new-plugin install per policy, scope-divergence detection and explicit convergence), morning-brief (read-only gh-based operator morning view: queue-label counts, merge-ready PRs, parked decisions with their RECOMMENDED lines, and loop-lane telemetry freshness), lanes (start/restart/stop/status loop lanes as named background Claude Code sessions seeded from canonical prompt files, with per-lane model/effort, a repo-pull + marketplace-refresh launch step, and a consume-restarts action, an OS-schedulable reader that relaunches stopped lanes whose telemetry carries a restart_request), and a re-runnable setup action that settles where the known-issues registry, the skill-usage log and the hook log root live, places the root's self-ignoring guard, and detects retired conventions. Plus an opt-in, default-off per-session hook event log (one JSON line per hook event on every event the generated registry marks observable, written to /sessions/.jsonl, with SessionEnd retention by session count or age and an optional detached pre-prune command), a family of eight advisory *-audit hooks (API errors, config changes, instruction loads, permission denials, pre-compaction, skill usage, tool failures, and unsurfaced hook failures. The last also warns the user via systemMessage, since a hook that fails to launch enforces nothing and Claude Code surfaces the failure to nobody) that emit the shared hook-telemetry envelope, and a reference sink that routes envelopes under the same root: per session when the envelope carries a session id, else into the shared hook-events.jsonl the observability skill reads.", "author": { "name": "Melodic Software", diff --git a/plugins/claude-ops/CHANGELOG.md b/plugins/claude-ops/CHANGELOG.md index 11d6815083..02d937dc29 100644 --- a/plugins/claude-ops/CHANGELOG.md +++ b/plugins/claude-ops/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to the `claude-ops` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.66.2] - 2026-09-29 + +### Added + +- **`observability` carries a Boundary section for the bundled skill `explain-usage`.** When it + resolves, it answers where this session's tokens went in plain language; this skill keeps local + telemetry, cross-session trends, hooks, and cost. + ## [0.66.1] - 2026-09-29 ### Fixed diff --git a/plugins/claude-ops/skills/observability/SKILL.md b/plugins/claude-ops/skills/observability/SKILL.md index a9bf3f6d88..366375c463 100644 --- a/plugins/claude-ops/skills/observability/SKILL.md +++ b/plugins/claude-ops/skills/observability/SKILL.md @@ -196,6 +196,30 @@ retention in effect" section, the six probe lines verbatim. - `/claude-ops:known-issues`. CC product bugs (not telemetry reads) - `/claude-ops:setup`. Turns the hook logging pipeline on, places the guard, migrates the retired shared-file location +## Boundary, the bundled `explain-usage` skill + +One native surface also answers "where did my tokens go", and the two get conflated whenever a +session feels expensive: + +- **`explain-usage` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. + It explains where the current session's tokens went, with one simple chart in plain language. + The model and the person can both invoke it where it resolves. +- **This skill (marketplace plugin).** Reads locally captured telemetry (the OTEL store, the hook + event log, ccusage) across sessions: trends, cost, hook latency, which hooks fired, and a + per-session timeline. + +**Routing.** When the bundled `explain-usage` skill resolves in this session, prefer it for a quick +plain-language breakdown of this session's tokens. Prefer this skill for cross-session trends, +cost, hooks, and anything the local telemetry stores hold. + +**Mutation gate.** Neither writes to the telemetry stores: `explain-usage` explains, and this skill +is read-only apart from `--write` reports and the explicit `clean` action. Never chain into one on +the other's behalf. + +**Availability is never assumed.** The skill is gated, and bundled skills vary by settings, plan, +and host; this section states what to do when it resolves, never that it is present. The four-part +records live in [reference/native-explain-usage.md](reference/native-explain-usage.md). + ## Gotchas - Empty stores are normal on first run. Degrade gracefully diff --git a/plugins/claude-ops/skills/observability/reference/native-explain-usage.md b/plugins/claude-ops/skills/observability/reference/native-explain-usage.md new file mode 100644 index 0000000000..4636144ce2 --- /dev/null +++ b/plugins/claude-ops/skills/observability/reference/native-explain-usage.md @@ -0,0 +1,28 @@ +# The bundled `explain-usage` skill: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. Nothing here asserts the skill is present in any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `explain-usage` is a bundled skill: "Explain where this session's tokens went, with one simple chart in plain language", menu line "See where this session's tokens went, in plain words" | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 (`bundled_skills` lane) | 2026-09-29 | A release renames or removes the skill, or changes its description | +| It is model-invocable and user-invocable, takes no argument hint, and is gated | The same extraction (`model_invocable`, `user_invocable`, `gated` all true) | 2026-09-29 | A release changes its invocability or its gate | +| It is undocumented on the commands page and no changelog entry names it, so the extraction is the only basis | and read for the name | 2026-09-29 | The commands page gains an `/explain-usage` row, or a release note names it | +| Its scope is the current session; nothing in its description reads other sessions, hook data, cost, or local telemetry stores | The description above | 2026-09-29 | A release widens its description past this session's tokens | +| Its description names an explanation and a chart, not a file write | The description above | 2026-09-29 | A release gives it an output file or a fix action | + +## Why the verdict is complementary + +Both answer questions about token use. `explain-usage` explains one session, the current one, in +plain words from the harness's own accounting. This skill reads what the machine captured locally +(OTEL store, hook event log, ccusage) and reports across sessions: trends, cost, hook latency, and +what each hook did. A person asking "where did this session's tokens go" is better served by the +native explanation where it resolves; everything cross-session or hook-related stays here. + +## Presence + +Bundled skills can be removed by `disableBundledSkills`, hidden by a `skillOverrides` entry, and +vary by plan, platform, and host (, bundled skills section, +read 2026-09-29). The routing reads "resolves in this session", never "is available". Recheck when +a release or docs change adds, removes, or renames a gating axis. diff --git a/plugins/context-budget/.claude-plugin/plugin.json b/plugins/context-budget/.claude-plugin/plugin.json index 588553f4b7..8b8017de53 100644 --- a/plugins/context-budget/.claude-plugin/plugin.json +++ b/plugins/context-budget/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "context-budget", - "version": "0.6.45", + "version": "0.6.46", "description": "Measure a Claude Code session's fixed startup context payload per item, on the consumer's machine at a pinned, version-stamped binary, including per-tool attribution of the built-in tool pools that /context reports only as lump sums, derived live by A/B bare-name-deny differencing with enforced comparability rules (skill-listing signature, one mode, one binary), an SDK-primary exact meter degrading to a version-aware headless /context parser and then to an honest structured error (never a wrong number), and a per-project measure-toggle-remeasure ledger under the plugin data directory recording every lever's real before/after delta. Report-only by default; `fix` applies one approved project-scope trim.", "author": { "name": "Melodic Software", diff --git a/plugins/context-budget/CHANGELOG.md b/plugins/context-budget/CHANGELOG.md index df89e90287..40e4981f55 100644 --- a/plugins/context-budget/CHANGELOG.md +++ b/plugins/context-budget/CHANGELOG.md @@ -7,6 +7,14 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Versions 0.6.38 and 0.6.40 were reserved by parallel changes and never published. +## [0.6.46] - 2026-09-29 + +### Added + +- **`audit` carries a Boundary section for the bundled skill `explain-usage`.** When it resolves, + it explains where this session's tokens went after the fact; this skill keeps per-item startup + measurement and the before/after ledger. + ## [0.6.45] - 2026-09-29 ### Fixed diff --git a/plugins/context-budget/skills/audit/SKILL.md b/plugins/context-budget/skills/audit/SKILL.md index 699b33d62d..8987918701 100644 --- a/plugins/context-budget/skills/audit/SKILL.md +++ b/plugins/context-budget/skills/audit/SKILL.md @@ -46,6 +46,29 @@ Two rules govern everything this skill says, per the plugin's - Live in-session occupancy over time → the `context-guard` plugin, if installed. - Settings correctness, permission-rule state → the `claude-config` plugin, if installed. +## Boundary, the bundled `explain-usage` skill + +One native surface also answers "what is using my tokens", and the two get conflated when a +session feels crowded: + +- **`explain-usage` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. + After the fact, it explains where the current session's tokens went, with one simple chart in + plain language. The model and the person can both invoke it where it resolves. +- **This skill (marketplace plugin).** Measures the fixed startup payload of a fresh headless + session per item, including the built-in tool pools `/context` reports as lump sums, and keeps a + before/after ledger for every lever the operator toggles. + +**Routing.** When the bundled `explain-usage` skill resolves in this session, prefer it for a +plain-language account of where this session's tokens went. Prefer this skill for what a session +costs before any work starts, per-tool attribution, and whether a settings change saved anything. + +**Mutation gate.** `explain-usage`'s description names an explanation, not a write. This skill is read-only unless +`fix` is passed; never chain into one on the other's behalf. + +**Availability is never assumed.** The skill is gated, and bundled skills vary by settings, plan, +and host; this section states what to do when it resolves, never that it is present. The four-part +records live in [reference/native-explain-usage.md](reference/native-explain-usage.md). + ## Declared scope This skill measures **the local Claude Code CLI, in a headless session**. On cloud or web surfaces diff --git a/plugins/context-budget/skills/audit/reference/native-explain-usage.md b/plugins/context-budget/skills/audit/reference/native-explain-usage.md new file mode 100644 index 0000000000..2bca2106d6 --- /dev/null +++ b/plugins/context-budget/skills/audit/reference/native-explain-usage.md @@ -0,0 +1,28 @@ +# The bundled `explain-usage` skill: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. Nothing here asserts the skill is present in any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `explain-usage` is a bundled skill: "Explain where this session's tokens went, with one simple chart in plain language", menu line "See where this session's tokens went, in plain words" | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 (`bundled_skills` lane) | 2026-09-29 | A release renames or removes the skill, or changes its description | +| It is model-invocable and user-invocable, takes no argument hint, and is gated | The same extraction (`model_invocable`, `user_invocable`, `gated` all true) | 2026-09-29 | A release changes its invocability or its gate | +| It is undocumented on the commands page and no changelog entry names it, so the extraction is the only basis | and read for the name | 2026-09-29 | The commands page gains an `/explain-usage` row, or a release note names it | +| It explains the current session after the fact; nothing in its description measures a fresh session's startup payload, attributes built-in tools, or compares two configurations | The description above | 2026-09-29 | A release widens its description to startup cost or per-tool attribution | +| Its description names an explanation and a chart, not a file or settings write | The description above | 2026-09-29 | A release gives it an output file or a fix action | + +## Why the verdict is complementary + +Both answer "what is using my tokens". `explain-usage` explains one session, the current one, after +the fact and in plain words. This skill measures the fixed payload every session starts with, per +item, by A/B differencing headless sessions, and ledgers the measured delta of each lever. A person +asking where this session's tokens went is better served by the native explanation where it +resolves; startup cost, per-tool attribution, and before/after deltas stay here. + +## Presence + +Bundled skills can be removed by `disableBundledSkills`, hidden by a `skillOverrides` entry, and +vary by plan, platform, and host (, bundled skills section, +read 2026-09-29). The routing reads "resolves in this session", never "is available". Recheck when +a release or docs change adds, removes, or renames a gating axis. diff --git a/plugins/debugging/.claude-plugin/plugin.json b/plugins/debugging/.claude-plugin/plugin.json index 6d9f875c0b..2a46276386 100644 --- a/plugins/debugging/.claude-plugin/plugin.json +++ b/plugins/debugging/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "debugging", - "version": "0.7.10", + "version": "0.7.11", "description": "Debug observed failures via a disciplined six-phase loop: build a fast deterministic reproduction signal, reproduce, rank falsifiable hypotheses, instrument, fix with a regression test, then clean up and post-mortem.", "author": { "name": "Melodic Software", diff --git a/plugins/debugging/CHANGELOG.md b/plugins/debugging/CHANGELOG.md index fa53564d99..ad1f6aee40 100644 --- a/plugins/debugging/CHANGELOG.md +++ b/plugins/debugging/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to the `debugging` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.7.11] - 2026-09-29 + +### Added + +- **`debug` carries a Boundary section for the bundled `debug` skill.** The bundled skill debugs + Claude Code itself and is reserved for the person to run, so the model offers `/debug` when the + problem is Claude Code rather than the user's application. + ## [0.7.10] - 2026-09-29 ### Changed diff --git a/plugins/debugging/skills/debug/SKILL.md b/plugins/debugging/skills/debug/SKILL.md index 70b405dcf7..c0389df2cc 100644 --- a/plugins/debugging/skills/debug/SKILL.md +++ b/plugins/debugging/skills/debug/SKILL.md @@ -179,6 +179,29 @@ Required before declaring done: - Make the recommendation **after** the fix is in, not before. The post-fix view has more information than the pre-fix one - State its `Basis:`, `verified` with the `file:line` or loop output it rests on, or `judgment` (only when it is not consequential: cross-repo, shared infrastructure, irreversible, or security). A consequential one is grounded in its consumers first; one that cannot be settled is withheld and filed as an open question naming the evidence that would settle it. Contract: [`${CLAUDE_PLUGIN_ROOT}/context/recommendation-basis.md`](../../context/recommendation-basis.md); full convention: [recommendation-basis](https://github.com/melodic-software/claude-code-plugins/blob/main/docs/conventions/recommendation-basis/README.md#grounding-bar) +## Boundary, the bundled `debug` skill + +The names collide outright, so "debug this" can land on either, but the two debug different things. + +- **`debug` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. It turns + on debug logging for the current Claude Code session and troubleshoots Claude Code itself by + reading that session's debug log. It is reserved for the person to run; the model does not + invoke it. +- **This skill (marketplace plugin).** Debugs the user's application: build a feedback loop, + reproduce, hypothesize, instrument, fix with a regression test, clean up. + +**Routing.** When the broken thing is Claude Code itself (a hook, a tool call, a permission, a +session misbehaving) rather than the user's code, offer it to the person: you can run `/debug` +instead of or alongside this skill. Make the offer at Phase 1, before building a loop against the +application. An unattended run records the offer in its output instead of asking. + +**Mutation gate.** `debug` starts debug logging for the session from the moment it runs. This +skill never runs it on the person's behalf. + +**Availability is never assumed.** Bundled skills are gated on settings, environment, plan, and +host; this section states what to do when the person can run it, never that it is present. The +four-part records live in [reference/native-debug.md](reference/native-debug.md). + ## What this skill does NOT do - **Does not ship without a feedback loop**. Phase 1 is a hard gate. If a loop cannot be built, that is the report you deliver diff --git a/plugins/debugging/skills/debug/reference/native-debug.md b/plugins/debugging/skills/debug/reference/native-debug.md new file mode 100644 index 0000000000..11c3ae1d3b --- /dev/null +++ b/plugins/debugging/skills/debug/reference/native-debug.md @@ -0,0 +1,17 @@ +# The bundled `debug` skill: verification record + +Detail behind the `## Boundary, the bundled \`debug\` skill` section in [SKILL.md](../SKILL.md). +Each row is a four-part record: the claim, the basis it rests on, the date it was checked, and the +event that makes it worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `debug` is a bundled skill that enables debug logging for the current session and troubleshoots issues by reading the session debug log; logging starts from the moment it runs unless the session began with `claude --debug`; an optional description focuses the analysis | The `/debug` row on ; the `/claude-ops:inventory` extraction of the installed 2.1.284 binary (description "Enable debug logging for this session and help diagnose issues", argument hint `[issue description]`) | 2026-09-29 | The commands page row changes, or a release renames or removes the skill | +| It is reserved for the person to run: its registration disables model invocation | The same extraction (`model_invocable: false`, `disable_model_invocation: true`, `user_invocable: true`) | 2026-09-29 | A release makes it model-invocable | +| It is not gated in the extraction; `disableBundledSkills` or a `skillOverrides` entry removes or hides it | The same extraction (`gated: false`); the bundled skills section of | 2026-09-29 | Either page changes the bundled-skill switches, or a release gates the skill | + +## Why the verdict is complementary + +Both answer "why is this broken", on different objects. The bundled skill diagnoses Claude Code's +own runtime from its debug log. This skill diagnoses the user's application through a +reproduction loop. Neither replaces the other; the routing question is which system misbehaves. diff --git a/plugins/discovery/.claude-plugin/plugin.json b/plugins/discovery/.claude-plugin/plugin.json index 3666491b31..dd8a194ba0 100644 --- a/plugins/discovery/.claude-plugin/plugin.json +++ b/plugins/discovery/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "discovery", - "version": "0.25.9", + "version": "0.25.10", "description": "Structured discovery before changes: explore the local codebase, run disciplined multi-source external research, and reconstruct why a past decision was made from evidence outside the code. Each dispatches a purpose-built subagent by default so the reading stays out of the main conversation, with source tiers, falsification, recency gates, an intent-evidence tier, and a corpus-coverage ledger, and each persists EXPLORE.md / RESEARCH.md / INTENT.md index-plus-sidecar handoff artifacts.", "author": { "name": "Melodic Software", diff --git a/plugins/discovery/CHANGELOG.md b/plugins/discovery/CHANGELOG.md index 5ff2b48830..2ed48c8e5c 100644 --- a/plugins/discovery/CHANGELOG.md +++ b/plugins/discovery/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog: discovery plugin +## [0.25.10] - 2026-09-29 + +### Added + +- **`research-deep` carries a Boundary section for the bundled workflow `deep-research`.** The + workflow is reserved for the person to run, so the model offers `/deep-research` for a + single-topic deep report instead of or alongside this skill, and keeps multi-topic dispatch here. + Tier 1 no longer names the bundled workflow as a dispatch target. + ## [0.25.9] - 2026-09-29 ### Fixed diff --git a/plugins/discovery/skills/research-deep/SKILL.md b/plugins/discovery/skills/research-deep/SKILL.md index a84c447a3d..120ab45cc6 100644 --- a/plugins/discovery/skills/research-deep/SKILL.md +++ b/plugins/discovery/skills/research-deep/SKILL.md @@ -46,7 +46,7 @@ For a single-topic ask, pick the tier by the task's breadth as the table defines | Tier | Condition | Execution | |---|---|---| -| 1. Workflow engine (preferred) | The Workflow tool is available AND a deep-research workflow exists (a built-in deep-research workflow, or one the consuming project ships) AND the task is heavy/broad (or unknown scope) | Dispatch that workflow with the topic | +| 1. Workflow engine (preferred) | The Workflow tool is available AND a deep-research workflow exists (one the consuming project ships; the bundled `deep-research` workflow is the person's to run, per the Boundary section below) AND the task is heavy/broad (or unknown scope) | Dispatch that workflow with the topic | | 2. Isolated subagent | No workflow path AND the task is heavy | Dispatch the purpose-built `discovery:researcher` agent with a resolved envelope | | 3. Inline | Task clearly small/targeted (single fact, one obvious source, narrow lookup) | Invoke `/discovery:research` via the Skill tool, inline in this session | @@ -78,7 +78,7 @@ Agent({ ### Tier 1. Workflow engine (preferred) -If your tool list includes the Workflow tool and a deep-research workflow is available (check the consuming project's workflow registry first, a project-provided engine may superset the built-in one), dispatch it with the topic and, if it accepts one, the artifact destination: `//RESEARCH.md`, resolved per the plugin's topic-docs binding ([`${CLAUDE_PLUGIN_ROOT}/reference/topic-docs.md`](${CLAUDE_PLUGIN_ROOT}/reference/topic-docs.md)). The engine runs in the background; its completion notification carries the summary + artifact path. Do not re-run the research inline, and do not surface the return as-is, an engine is a producing context like any other, so close the post-dispatch boundary below first. +If your tool list includes the Workflow tool and a deep-research workflow is available (a project-provided engine in the consuming project's workflow registry; the bundled `deep-research` workflow is offered to the person, never dispatched here), dispatch it with the topic and, if it accepts one, the artifact destination: `//RESEARCH.md`, resolved per the plugin's topic-docs binding ([`${CLAUDE_PLUGIN_ROOT}/reference/topic-docs.md`](${CLAUDE_PLUGIN_ROOT}/reference/topic-docs.md)). The engine runs in the background; its completion notification carries the summary + artifact path. Do not re-run the research inline, and do not surface the return as-is, an engine is a producing context like any other, so close the post-dispatch boundary below first. If no workflow engine resolves, fall through to Tier 2. @@ -106,6 +106,33 @@ Parent-side handling of a `discovery:researcher` return specifically, the gate's This variant tracks `/discovery:research`'s conventions. Same discipline file, same artifact contract, same outcome gate. There is no separate copy here; update the parent and this dispatcher follows. +## Boundary, the bundled `deep-research` workflow + +A native workflow also answers "research this deeply" with a cited report, so a request for deep +research can mean either surface. + +- **`deep-research` (bundled workflow).** Ships with Claude Code rather than as a marketplace + plugin. `/deep-research ` scopes one question, fans out web searches, fetches and + cross-checks sources, votes on each claim, and returns one cited report. It is reserved for the + person to run: its registration disables model invocation, so the model does not start it and + Tier 1 does not dispatch it. +- **This skill (marketplace plugin).** Splits a multi-topic ask across per-topic + `discovery:researcher` workers under the `/discovery:research` discipline (source tiers, recency + gate, coverage ledger), and grades every run off disk with a fresh verifier before surfacing it. + +**Routing.** Offer it to the person at the start of the run, before dispatching: for a single-topic +ask that wants one deep cited report, "you can run `/deep-research ` instead of or +alongside this skill"; for a multi-topic ask, only as an addition for one topic that needs +adversarial claim-checking. If the person takes it instead, stop. An unattended run records the +offer in its output instead of asking, and dispatches. + +**Mutation gate.** This skill writes only its own research slice. It never starts the workflow on +the person's behalf, and a report from the person's own run is not a graded `RESEARCH.md`. + +**Availability is never assumed.** The workflow needs the WebSearch tool, and bundled surfaces vary +by settings, plan, and host; this section states what to offer, never that it is present. The +four-part records live in [reference/native-deep-research.md](reference/native-deep-research.md). + ## Gotchas - **Feeding a multi-topic ask to an engine.** An engine decomposes ONE question into research diff --git a/plugins/discovery/skills/research-deep/reference/native-deep-research.md b/plugins/discovery/skills/research-deep/reference/native-deep-research.md new file mode 100644 index 0000000000..025db86092 --- /dev/null +++ b/plugins/discovery/skills/research-deep/reference/native-deep-research.md @@ -0,0 +1,29 @@ +# The bundled `deep-research` workflow: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. Nothing here asserts the workflow is present in any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `deep-research` is a bundled workflow, not a skill: "Deep research harness: fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report", with phases Scope, Search, Fetch, Verify, Synthesize | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 (`bundled_workflows` lane) | 2026-09-29 | A release renames or removes the workflow, or changes its phases | +| Its registration sets model invocation disabled, and the docs say "`/deep-research` runs only when you invoke it. Before v2.1.218, Claude could also start it on its own" | The same extraction (`disable_model_invocation: true`); the commands page ; the 2.1.218 changelog entry "Changed `/deep-research` to start only when invoked manually" () | 2026-09-29 | A release changes its invocability, or the commands page note changes | +| `/deep-research ` fans out web searches across several angles, fetches and cross-checks sources, votes on each claim, and returns a cited report with claims that did not survive cross-checking filtered out. It requires the WebSearch tool | The bundled-workflows table on ; the `/deep-research` row on the commands page | 2026-09-29 | Either row changes its description or its requirement | +| Before invoking, an underspecified question gets 2-3 clarifying questions, and the refined question is passed as arguments | The workflow's `when_to_use` text in the same extraction | 2026-09-29 | A release changes the workflow's `when_to_use` | +| It researches one question per run; nothing in its description splits a multi-topic ask, applies source tiers, or writes a coverage ledger | The rows above | 2026-09-29 | A release gives the workflow multi-topic splitting or a source-tier contract | + +## Why the verdict is complementary + +Both produce a cited report from fanned-out web research. The workflow is the vendor's harness for +one question, with adversarial claim voting, run by the person. This skill dispatches from the +model's side: it splits a multi-topic ask into one researcher per topic, holds each to the +`/discovery:research` discipline (source tiers, recency gate, falsification, coverage ledger), and +grades each run with a fresh verifier. For one deep question the person may prefer the workflow, or +run it alongside; the model offers it and does not start it. + +## Presence + +Bundled surfaces vary by settings, plan, platform, and host (whether `disableBundledSkills` also +hides bundled workflows is not established), and this workflow also needs WebSearch. The offer names the command for the person to try; an +unattended run records the offer in its output. Recheck when a release or docs change adds, +removes, or renames a gating axis. diff --git a/plugins/implementation/.claude-plugin/plugin.json b/plugins/implementation/.claude-plugin/plugin.json index 21684d61bf..21573df344 100644 --- a/plugins/implementation/.claude-plugin/plugin.json +++ b/plugins/implementation/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "implementation", - "version": "0.19.13", + "version": "0.19.14", "description": "Disciplined implementation stage: execute approved plans inline (`/implementation:implement`) or via orchestrated worker subagents (`/implementation:implement-dispatch`) with incremental validation, TDD-by-default cadence, green-checkpoint commits, scope-fence drift detection, and divergence detection that routes back to planning. Build/test/lint, testing, and outcome verification live in the companion `toolchain`, `testing`, and `verification` plugins, invoked when installed.", "author": { "name": "Melodic Software", diff --git a/plugins/implementation/CHANGELOG.md b/plugins/implementation/CHANGELOG.md index eb99561163..3918e8600e 100644 --- a/plugins/implementation/CHANGELOG.md +++ b/plugins/implementation/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to the `implementation` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.19.14] - 2026-09-29 + +### Added + +- **`implement-dispatch` carries a Boundary section for the bundled `batch` skill.** This skill + executes an approved plan's phases; when no plan exists and the work is a large mechanical change + that splits into independent PRs, the model offers the person-run `/batch` rather than invoking + it. + ## [0.19.13] - 2026-09-29 ### Changed diff --git a/plugins/implementation/skills/implement-dispatch/SKILL.md b/plugins/implementation/skills/implement-dispatch/SKILL.md index 2d1db4c66a..6c26b6afec 100644 --- a/plugins/implementation/skills/implement-dispatch/SKILL.md +++ b/plugins/implementation/skills/implement-dispatch/SKILL.md @@ -32,6 +32,33 @@ Structural variant of `/implementation:implement` for orchestrated execution: th `/implementation:implement` shares this detection at its Step 0 and chains here; invoking this skill directly with a worker-routed plan is equivalent. +## Boundary, the bundled `batch` skill + +Both fan work out to parallel agents in isolated worktrees, so "run this in parallel" can reach for +either. + +- **`/batch` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. Takes an + ``, researches the codebase, decomposes the change into 5 to 30 independent units, + and presents a plan; once approved, it spawns one background agent per unit in its own worktree, + and each implements, tests, and opens its own PR. Reserved for the person to run; the model does + not invoke it. +- **This skill (marketplace plugin).** Executes an already-approved plan's phases: scope-fenced + briefs, capped waves, return verification against direct evidence, the main-side build gate, the + phase-verifier, and divergence routing. + +**Routing.** When no approved plan exists and the work is a large mechanical change that splits +into independent PRs, offer it to the person at the prerequisite check, before any brief: "you can +run `/batch ` instead of or alongside this skill". With an approved plan, this skill +runs. An unattended run records the offer in its output instead of asking. + +**Mutation gate.** `/batch` creates worktrees, commits, and opens one PR per unit. This skill never +triggers it on its own behalf. + +**Availability is never assumed.** `disableBundledSkills` or a `skillOverrides` entry hides it, and +it needs a git repository or a `WorktreeCreate` hook; this section states what to do when it +resolves, never that it is present. The four-part records live in +[reference/native-batch.md](reference/native-batch.md). + ## Arguments `$ARGUMENTS`, an optional phase selector plus an optional `--wave-cap `, in any order. diff --git a/plugins/implementation/skills/implement-dispatch/reference/native-batch.md b/plugins/implementation/skills/implement-dispatch/reference/native-batch.md new file mode 100644 index 0000000000..b5551094a1 --- /dev/null +++ b/plugins/implementation/skills/implement-dispatch/reference/native-batch.md @@ -0,0 +1,21 @@ +# The bundled `batch` skill: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `batch` is a bundled skill described as "Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR", argument hint `` | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 | 2026-09-29 | A release renames or removes it, or changes its description | +| Its registration disables model invocation: the person runs it, the model does not | Same extraction (`disable_model_invocation` true, `model_invocable` false, `user_invocable` true) | 2026-09-29 | A release changes its invocability | +| `/batch ` researches the codebase, decomposes the work into 5 to 30 independent units, and presents a plan; once approved it spawns one background subagent per unit in an isolated worktree, and each implements its unit, runs tests, and publishes its change. It requires a git repository or a `WorktreeCreate` hook that creates the worktrees; outside a git repository it requires v2.1.281 or later | The `/batch` row on | 2026-09-29 | That row changes | +| Bundled skills turn off with `disableBundledSkills`, and one bundled skill hides with a `skillOverrides` entry of `"off"` | | 2026-09-29 | The skills page changes either setting | + +## Why the verdict is complementary + +`/batch` plans and executes in one run: it does its own research and decomposition, and the +units are independent by construction, each ending in its own PR. This skill starts where a plan +already exists and has been approved, runs phases in order with fences composed together per +wave, verifies every return against direct evidence, and gates each phase on a fresh-context +verifier. A large mechanical change with no plan is `/batch`'s case; a planned, ordered, +verified execution is this skill's. diff --git a/plugins/planning/.claude-plugin/plugin.json b/plugins/planning/.claude-plugin/plugin.json index 073f1ff74a..fd11342d46 100644 --- a/plugins/planning/.claude-plugin/plugin.json +++ b/plugins/planning/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "planning", - "version": "0.47.1", + "version": "0.47.2", "userConfig": { "surface": { "type": "string", diff --git a/plugins/planning/CHANGELOG.md b/plugins/planning/CHANGELOG.md index a2879148db..d9f2c67745 100644 --- a/plugins/planning/CHANGELOG.md +++ b/plugins/planning/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to the `planning` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.47.2] - 2026-09-29 + +### Added + +- **`draft-goal-condition` carries a Boundary section for the built-in `/goal` command.** The skill drafts the condition; the person runs `/goal ` with it, and the model never sets a goal. +- **`plan` carries a Boundary section for the built-in `/plan` command.** Plan mode stays the person's permission-mode switch, offered where Plan Mode Integration already suggests it; the skill keeps the persisted, approval-gated plan. + ## [0.47.1] - 2026-09-29 ### Fixed diff --git a/plugins/planning/skills/draft-goal-condition/SKILL.md b/plugins/planning/skills/draft-goal-condition/SKILL.md index 11d1eb0bdb..99bf0729a8 100644 --- a/plugins/planning/skills/draft-goal-condition/SKILL.md +++ b/plugins/planning/skills/draft-goal-condition/SKILL.md @@ -93,6 +93,30 @@ Emit the final, counter-passed condition as a paste-ready invocation: Note for the user: `/goal` holds for the current session only. A goal survives `--resume` / `--continue` (though its turn count, timer, and token baseline reset), but running `/clear` removes it. So the goal must be re-set after any `/clear`. +## Boundary, the built-in `/goal` command + +This skill exists to feed `/goal`, so the two are easy to mistake for one step. + +- **`/goal` (built-in command).** Ships with Claude Code rather than as a marketplace plugin. + `/goal ` sets a completion condition that a fresh evaluator checks before the + session stops; `/goal clear` removes it, and bare `/goal` shows the current one. It is + reserved for the person to run; the model does not invoke it. +- **This skill (marketplace plugin).** Picks the right repetition lever and, when `/goal` fits, + drafts a transcript-demonstrable condition sourced from the live docs and passed through the + deterministic length counter. It sets nothing. + +**Routing.** At the end of the run, offer it to the person: you can run `/goal ` with +the drafted text, instead of or alongside continuing by hand. When the lever check routes away +from `/goal`, make no offer. An unattended run records the paste-ready line in its output instead +of asking. + +**Mutation gate.** Only the person's `/goal` run arms a goal. This skill never sets, replaces, or +clears one on the person's behalf. + +**Availability is never assumed.** This section states what to do when the person can run +`/goal`, never that it is present in their host. The four-part records live in +[reference/native-goal.md](reference/native-goal.md). + ## Gotchas - **The limit is characters, not tokens.** The counter counts Unicode code points; do not substitute a token estimate. diff --git a/plugins/planning/skills/draft-goal-condition/reference/native-goal.md b/plugins/planning/skills/draft-goal-condition/reference/native-goal.md new file mode 100644 index 0000000000..8d4d662f94 --- /dev/null +++ b/plugins/planning/skills/draft-goal-condition/reference/native-goal.md @@ -0,0 +1,20 @@ +# The built-in `/goal` command: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. The condition shape and character limit are not recorded here: Step 1 reads +them live on every run. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `goal` is a built-in command described as "Set a goal Claude checks before stopping", argument `[ \| clear]`, no alias | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`builtin_commands.goal`) | 2026-09-29 | A release renames or removes `goal`, or changes its description or argument | +| It is user-invocable and not model-invocable, and it is not gated behind a setting | Same extraction: `user_invocable: true`, `model_invocable: false`, `gated: false` | 2026-09-29 | A release changes its invocability or adds a gate | +| `/goal [condition\|clear]` keeps Claude working across turns until the condition is met; no argument shows the current or most recently achieved goal; `clear`, `stop`, `off`, `reset`, `none`, or `cancel` removes an active goal | The `/goal` row on | 2026-09-29 | The commands page row changes or disappears | +| The command arrived in 2.1.139, working in interactive, `-p`, and Remote Control sessions | Claude Code changelog, 2.1.139 ("Added `/goal` command") | 2026-09-29 | A release note changes where `/goal` runs | + +## Why the verdict is complementary + +`/goal` runs a condition; it does not write one. This skill writes the condition: it checks the +lever fits, drafts against the live shape, and proves the length with a counter. The person then +runs the native command with the drafted text. The model never arms a goal, so the two compose in +sequence and neither replaces the other. diff --git a/plugins/planning/skills/plan/SKILL.md b/plugins/planning/skills/plan/SKILL.md index 16e422885f..4b064a6e55 100644 --- a/plugins/planning/skills/plan/SKILL.md +++ b/plugins/planning/skills/plan/SKILL.md @@ -303,6 +303,28 @@ Plan mode is also a natural moment for a **scoping confirm**. If you're entering **Substantive rounds do not belong in plan mode.** A question that resolves *what we are building*, real tradeoffs, contested requirements, anything whose answer changes the plan's shape, routes to `/planning:interview` via the Skill tool, run with **plan mode off**, for two reasons. Mechanically, that skill's ask-time open-question register is a disk write, and plan mode's read-only enforcement blocks it, so questions get asked with nothing on disk holding them. Doctrinally, plan mode primes the run toward producing the plan when the job is still reaching shared understanding. Plan mode's round confirms scope; it is not a substitute for the interview. **Getting there is the user's move, not yours**. Symmetric to entering plan mode above: you do not toggle permission modes, so when plan mode is active and a substantive round comes due, say why and ask the user to exit it (`shift+tab`), then invoke the interview once they have. Do not invoke it from inside plan mode on the assumption the register write will survive. It will not. +## Boundary, the built-in `/plan` command + +The command and this skill share a name, so "plan this" can mean either. + +- **`/plan` (built-in command).** Ships with Claude Code rather than as a marketplace plugin. + `/plan [description]` enters plan mode, the read-only permission mode Plan Mode Integration + above describes, optionally starting on the description; `/plan open` views the session plan. + It is reserved for the person to run; the model does not invoke it. +- **This skill (marketplace plugin).** The planning discipline: stress-test, blast radius, an + approval gate, and a persisted PLAN.md a cleared session can execute. + +**Routing.** Where Plan Mode Integration says to suggest plan mode, offer it to the person: you +can run `/plan` (or press `shift+tab`) alongside this skill. Prefer this skill for the plan +itself. An unattended run records the offer in its output instead of asking. + +**Mutation gate.** This skill writes PLAN.md and its checklist; `/plan` changes the permission +mode. This skill never toggles the mode on the person's behalf. + +**Availability is never assumed.** This section states what to do when the person can run `/plan`, +never that it is present. The four-part records live in +[reference/native-plan.md](reference/native-plan.md). + ## Plan Review Mode Read [context/review-mode.md](context/review-mode.md) when invoked with `review`. It holds the review procedure and how it differs from `/planning:devils-advocate`. diff --git a/plugins/planning/skills/plan/reference/native-plan.md b/plugins/planning/skills/plan/reference/native-plan.md new file mode 100644 index 0000000000..6f28d78f43 --- /dev/null +++ b/plugins/planning/skills/plan/reference/native-plan.md @@ -0,0 +1,18 @@ +# The built-in `/plan` command: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `plan` is a built-in command described as "Enable plan mode or view the current session plan", argument `[open\|]`, no alias | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`builtin_commands.plan`) | 2026-09-29 | A release renames or removes `plan`, or changes its description or argument | +| It is user-invocable and not model-invocable, and it is not gated behind a setting | Same extraction: `user_invocable: true`, `model_invocable: false`, `gated: false` | 2026-09-29 | A release changes its invocability or adds a gate | +| `/plan [description]` enters plan mode directly from the prompt; a description starts plan mode on that task | The `/plan [description]` row on | 2026-09-29 | The commands page row changes, including documenting the `open` argument the binary declares | + +## Why the verdict is complementary + +`/plan` switches the session into plan mode, a read-only permission mode, or shows the session +plan. It runs no stress-test, assesses no blast radius, and persists no PLAN.md for a cleared +session. This skill is the planning discipline and works inside or outside plan mode, so the skill +offers `/plan` for safe exploration while it plans rather than replacing it. diff --git a/plugins/prototype/.claude-plugin/plugin.json b/plugins/prototype/.claude-plugin/plugin.json index 7fc7c73805..e5486c87b8 100644 --- a/plugins/prototype/.claude-plugin/plugin.json +++ b/plugins/prototype/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "prototype", - "version": "0.13.3", + "version": "0.13.4", "description": "Builds throwaway code to answer a design question before committing to architecture: a logic facet (an interactive terminal app over a portable state model) and a UI facet (radically different visual variants on one route).", "author": { "name": "Melodic Software", diff --git a/plugins/prototype/CHANGELOG.md b/plugins/prototype/CHANGELOG.md index 7b2d587977..34644f57f4 100644 --- a/plugins/prototype/CHANGELOG.md +++ b/plugins/prototype/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to the `prototype` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.13.4] - 2026-09-29 + +### Added + +- **`explore-directions` carries a Boundary section for the marketplace plugin `playground`.** An + interactive parameter explorer whose output returns as a prompt routes to the `playground` skill; + switchable variants of the user's own UI stay here. + ## [0.13.3] - 2026-09-29 ### Changed diff --git a/plugins/prototype/skills/explore-directions/SKILL.md b/plugins/prototype/skills/explore-directions/SKILL.md index 837c51b849..e0a9574859 100644 --- a/plugins/prototype/skills/explore-directions/SKILL.md +++ b/plugins/prototype/skills/explore-directions/SKILL.md @@ -288,6 +288,30 @@ description is the presence check; this section states what to do when the canva that it is present. The four-part records live in [reference/bundled-design.md](reference/bundled-design.md). +## Boundary, the marketplace `playground` plugin + +Both produce a browser page with controls that change what is shown, so an ask to "try options +visually" can mean either: + +- **`playground` (marketplace plugin, first-party, from `anthropics/claude-plugins-official`).** Its + `playground` skill builds an interactive parameter explorer: controls on one side, a live preview + on the other, and a prompt at the bottom with a copy button. The output returns to the + conversation as a prompt. +- **This skill (marketplace plugin).** Switchable UI variants of the user's own project (real + header, data, and routes, or a local mockup); the winning-variant key is kept and the rest is + thrown away. + +**Routing.** When the ask is to explore a parameter space and hand back a prompt, route it to the +`playground` skill when that plugin is installed, or to `/playgrounds:use` when that wrapper is +installed. When neither is, say the capability exists as an installable plugin and do not build an +imitation. Keep "what should this page look like" here. + +**Mutation gate.** A playground writes its own page; this skill never builds one on its behalf. + +**Availability is never assumed.** The plugin is present only where it is installed from its +marketplace; this section states what to do when it resolves, never that it is present. The +four-part records live in [reference/native-playground.md](reference/native-playground.md). + ## Next - A direction wins and is folded in: `/planning:plan`. diff --git a/plugins/prototype/skills/explore-directions/reference/native-playground.md b/plugins/prototype/skills/explore-directions/reference/native-playground.md new file mode 100644 index 0000000000..be501b829b --- /dev/null +++ b/plugins/prototype/skills/explore-directions/reference/native-playground.md @@ -0,0 +1,26 @@ +# The marketplace `playground` plugin: verification record + +Detail behind the playground Boundary section in [SKILL.md](../SKILL.md). Each row is a four-part record: the claim, the basis it rests on, the date +it was checked, and the event that makes it worth checking again. Nothing here asserts the plugin +is installed in any session. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `playground` is a first-party marketplace plugin in `anthropics/claude-plugins-official`, not a bundled Claude Code surface | The upstream repository at commit `ed404106fcd80ba98ecb7c851e531dcb626d13b7` (HEAD of main, re-verified by fetch) | 2026-09-01 | The default branch moves past that commit with changes under `plugins/playground`, or the plugin is renamed, removed, or absorbed into the CLI as a bundled skill | +| Its `playground` skill builds a page with "interactive controls on one side, a live preview on the other, and a prompt output at the bottom with a copy button" | The upstream `plugins/playground/skills/playground/SKILL.md` at the same commit | 2026-09-01 | Same trigger | +| It targets input spaces that are "large, visual, or structural and hard to express as plain text" | The same upstream file | 2026-09-01 | Same trigger | +| The `playgrounds` wrapper plugin in this marketplace declares the cross-marketplace dependency and carries the install uplift, so the route has a landing surface where the wrapper is installed | The wrapper's manifest (it names `playground` as a dependency) and its `use` skill in this marketplace | 2026-09-29 | The wrapper is renamed or removed, or drops the dependency | + +## Why the verdict is complementary + +Both render a browser page with switchable controls. A playground explores an arbitrary parameter +space and hands the chosen settings back as a prompt. This skill varies the user's own UI on its +real stack (or a local mockup) so one direction can be picked and the rest discarded; its output is +a winning-variant key and notes, not a prompt. Explorer-shaped asks route out; "what should this +page look like" stays here. + +## Presence + +A marketplace plugin resolves only where it is installed and enabled. The routing states what to do +when the `playground` skill or the wrapper resolves, and says the capability exists as an +installable plugin when neither does. diff --git a/plugins/session-flow/.claude-plugin/plugin.json b/plugins/session-flow/.claude-plugin/plugin.json index 97dc96f351..e497d5cb72 100644 --- a/plugins/session-flow/.claude-plugin/plugin.json +++ b/plugins/session-flow/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "session-flow", - "version": "0.40.0", + "version": "0.40.1", "description": "Session-lifecycle toolkit of fourteen skills: workflow (navigate a staged dev workflow and suggest the next stage), handoff (write a save-point and resume prompt for /clear-and-resume), continue-in-background (delegate the task to a fresh background agent that continues it now, using the same save-point engine as handoff, delivered by launching a detached claude --bg session seeded with the resume prompt; launches only on explicit user request), keep-going (recover and continue after any interruption OR when live off-thread work looks stalled: inventory off-thread work, inspect its real output, act only on evidence, then continue; after a usage limit lifts it continues rather than summarizing-and-stalling), find-handoff (recover a lost handoff after /clear, when the resume prompt was written but never copied, via a read-only detection ladder: known-location glob of the handoffs dir, then a bounded, recency-ranked transcript scan for the handoff directive and dashed-rail markers, then a confirm-before-resume gate; surfaces only the resume prompt + metadata, never raw transcript content), clean-stop (get to a durable, linked stopping point before the machine may go away: sweep every repo/worktree for uncommitted, unpushed, or PR-less work, push it durable, put breadcrumbs in PR/issue bodies, then give a free-and-clear verdict), retro (structured end-of-session retrospective with transcript metrics and learning codification), running-retro (in-flight retrospective checkpoints that spawn a subagent to analyze the transcript so far and append classified findings to a cumulative running ledger, which captures and routes only, the live counterpart to retro; also owns a detached-observer substrate that can watch a session out-of-band and run the checkpoint autonomously after the session ends), orient (read-only session orientation: synthesize where the session stands, what it is doing, and why, from durable + off-thread state the built-in /recap never sees: ledgers, handoffs, workflow checklists, running-retro ledgers, open PRs and work-items, and git), orchestrate (arm a session or worker with proactive-orchestration imperatives), reanchor (verify a session's working assumptions are still true against live reality, checking referenced PRs/issues/branches, base-branch drift, renamed/version-drifted surfaces, stale memory-tier files, and the goal a handoff records, compared across the chain so a re-derived goal reports as drift, before building on them), reconcile (retire finished off-thread work and reconcile this session's task ledger with reality, the prune-and-reconcile counterpart to keep-going's resume: inventory the work this session spawned, inspect its real state, retire the finished and close proven-done tasks, auto-settling the finished and gating any kill of still-running work; sibling sessions in the project are reported read-only), setup (check-centric verification of the observer's runtime prerequisites and configuration), and show-options (lay out which skills fit this moment as a ranked, nothing-hidden menu: a shortlist per bucket plus the complete remainder by name, resolved from the full installed catalog rather than the truncated in-context listing, so the human decides and no option is withheld for looking already-done).", "author": { "name": "Melodic Software", diff --git a/plugins/session-flow/CHANGELOG.md b/plugins/session-flow/CHANGELOG.md index 78460776c0..338676c9a8 100644 --- a/plugins/session-flow/CHANGELOG.md +++ b/plugins/session-flow/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog: session-flow plugin +## [0.40.1] - 2026-09-29 + +### Added + +- **`orient` carries a Boundary section for the built-in `/recap` command.** It keeps the durable and off-thread briefing and offers the person-run `/recap` for a one-line conversation recap rather than invoking it. +- **`continue-in-background` carries a Boundary section for the built-in `/subtask`, `/fork`, and `/background` commands.** It keeps the save-point plus fresh `claude --bg` launch and offers the person-run native commands as alternatives or additions rather than invoking them. +- **`retro` carries a Boundary section for the built-in `/insights` command.** It keeps the single-session scored retrospective and offers the person-run `/insights` for a cross-session usage report rather than invoking it. + ## [0.40.0] - 2026-09-29 ### Changed diff --git a/plugins/session-flow/skills/continue-in-background/SKILL.md b/plugins/session-flow/skills/continue-in-background/SKILL.md index 92d0c37d59..b84f2470ed 100644 --- a/plugins/session-flow/skills/continue-in-background/SKILL.md +++ b/plugins/session-flow/skills/continue-in-background/SKILL.md @@ -208,6 +208,35 @@ doc's save-point items, which the sibling `handoff` skill's checklists mirror): `/clear`-then-paste - [ ] **EXECUTION STOPS HERE**, no monitoring, no babysitting, no new work items +## Boundary, native Claude Code surfaces + +Three built-in commands also keep work moving off this terminal, so "continue in the background" +can mean any of them. + +- **`/subtask`, `/fork`, `/background` (built-in commands, alias `/bg`).** Ship with Claude Code + rather than as a marketplace plugin. `/subtask ` sends a subagent off with the full + conversation and returns its result here. `/fork` copies the conversation into a new background + session while this one keeps working. `/background [prompt]` detaches this session itself and + frees the terminal. None writes a save-point. All three are reserved for the person to run; the + model does not invoke them. +- **This skill (marketplace plugin).** Writes a durable, redacted save-point, gates on a dirty + tree, and launches a fresh `claude --bg` session seeded only with the rails resume prompt, so + the continuation carries no conversation history and survives on disk. + +**Routing.** At the start of the run, offer them to the person: you can run `/background` to +detach this session as it is, `/fork` to copy it into a background session, or `/subtask` for a +side task whose result should come back here, instead of or alongside this skill. Prefer this +skill when the continuation should start clean from a durable save-point. An unattended run +records the offer in its output instead of asking. + +**Mutation gate.** This skill writes the save-point and launches one session, only on explicit +request. It never runs a native command on the person's behalf. + +**Availability is never assumed.** All three are gated; `/subtask` is absent when agent view is +turned off, and `/fork` then behaves differently. This section states what to do when they +resolve, never that they are present. The four-part records live in +[reference/native-surfaces.md](reference/native-surfaces.md). + ## Gotchas Failure patterns are documented inline at the step that owns them: the `-uall` untracked-directory diff --git a/plugins/session-flow/skills/continue-in-background/reference/native-surfaces.md b/plugins/session-flow/skills/continue-in-background/reference/native-surfaces.md new file mode 100644 index 0000000000..654c3761d7 --- /dev/null +++ b/plugins/session-flow/skills/continue-in-background/reference/native-surfaces.md @@ -0,0 +1,32 @@ +# Native background surfaces: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md), covering the built-in +commands `subtask`, `fork`, and `background`. Each row is a four-part record: the claim, the basis +it rests on, the date it was checked, and the event that makes it worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `subtask` is a built-in command, "Send a subagent off with your full context; its result comes back here", argument ``, user-invocable, not model-invocable, gated | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`builtin_commands.subtask`) | 2026-09-29 | A release renames or removes `subtask`, or changes its invocability or gate | +| `fork` is a built-in command, "Spawn a background agent that inherits the full conversation", argument ``, user-invocable, not model-invocable, gated | Same extraction (`builtin_commands.fork`) | 2026-09-29 | A release renames or removes `fork`, or changes its description, invocability, or gate | +| `background` is a built-in command with alias `bg`, "Send this session to the background and free the terminal", argument `[prompt]`, user-invocable, not model-invocable, gated | Same extraction (`builtin_commands.background`) | 2026-09-29 | A release renames or removes `background` or its alias, or changes its invocability or gate | +| `/subtask` spawns a forked subagent whose result returns to this conversation; it needs 2.1.212 or later and is unavailable when agent view is turned off | The `/subtask ` row on | 2026-09-29 | The commands page row changes | +| `/fork [prompt]` copies the conversation into a new background session and keeps working here; on 2.1.161 through 2.1.211, and whenever agent view is off, it starts a forked subagent instead. The copy is told to create its own worktree before code changes (2.1.221 or later) | The `/fork [prompt]` row on the commands page; changelog 2.1.212 ("the in-session subagent it used to launch is now `/subtask`") and 2.1.221 | 2026-09-29 | The commands page row changes, or a release note changes what `/fork` launches | +| `/background [prompt]` detaches the current session as a background agent, managed with `claude agents`; alias `/bg` | The `/background [prompt]` row on the commands page | 2026-09-29 | The commands page row changes | + +## The `/fork` name discrepancy + +The Claude Code changelog at 2.1.77 reads "Renamed `/fork` to `/branch` (`/fork` still works as an +alias)". The 2.1.284 binary does not match that entry: it registers `fork` as its own command with +the background-agent description above, and registers `branch` separately ("Create a branch of the +current conversation at this point") with no aliases. The current commands page agrees with the +binary, and the 2.1.212 changelog entry records `/fork` taking its present meaning. Treat the 2.1.77 +alias as superseded. Recheck when a release note or the commands page changes either name. + +## Why the verdict is complementary + +Each native command moves the live conversation: `/background` moves this session, `/fork` copies +it, and `/subtask` hands a side task to a subagent that reports back. None writes a durable +save-point, redacts the prompt, or checks for uncommitted work before a worktree split. This skill +starts a fresh session from a validated save-point, so the continuation does not depend on the +conversation's history and the save-point outlives it. The person may want either, or both, which +is why the skill offers the native commands rather than replacing them. diff --git a/plugins/session-flow/skills/orient/SKILL.md b/plugins/session-flow/skills/orient/SKILL.md index f56dd41692..d99f6641cd 100644 --- a/plugins/session-flow/skills/orient/SKILL.md +++ b/plugins/session-flow/skills/orient/SKILL.md @@ -106,6 +106,32 @@ and point at `/session-flow:reanchor` to verify which still holds. - **`/session-flow:handoff`**. Writes a save-point and ends the session. Orientation writes nothing and ends nothing. +## Boundary, the built-in `/recap` command + +Both answer "where were we", so a request to catch up can land on either. + +- **`/recap` (built-in command).** Ships with Claude Code rather than as a marketplace plugin. + It generates a one-line summary of the current conversation on demand, alongside the + automatic recap shown when you return to an idle terminal. It writes nothing to disk and + reads nothing outside the conversation. It is reserved for the person to run; the model does + not invoke it. +- **This skill (marketplace plugin).** A four-part briefing that adds what the conversation + does not hold: handoff save-points, workflow checklists, running-retro ledgers, open PRs and + work items, git state, and off-thread work at a glance. + +**Routing.** When the person wants only a one-line reminder of this conversation, offer it to +the person: you can run `/recap` instead of or alongside this skill. Make the offer at the end +of the briefing, or at the start when the ask names only the current conversation. Prefer this +skill whenever durable or off-thread state matters. An unattended run records the offer in its +output instead of asking. + +**Mutation gate.** Neither writes files. This skill never runs `/recap` on the person's behalf. + +**Availability is never assumed.** The command can decline in some hosts, for example when the +request is relayed from a chat thread, a routine, or a webhook; this section states what to do +when the person can run it, never that it is present. The four-part records live in +[reference/native-recap.md](reference/native-recap.md). + ## What this skill does NOT do - **Writes nothing**, no files, no memory, no `/clear`. It is a read-only diff --git a/plugins/session-flow/skills/orient/reference/native-recap.md b/plugins/session-flow/skills/orient/reference/native-recap.md new file mode 100644 index 0000000000..22fecba019 --- /dev/null +++ b/plugins/session-flow/skills/orient/reference/native-recap.md @@ -0,0 +1,21 @@ +# The built-in `/recap` command: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `recap` is a built-in command described as "Generate a one-line session recap now", with no argument hint and no alias | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`builtin_commands.recap`) | 2026-09-29 | A release renames or removes `recap`, or changes its description | +| It is user-invocable and not model-invocable, and it is not gated behind a setting | Same extraction: `user_invocable: true`, `model_invocable: false`, `gated: false` | 2026-09-29 | A release changes its invocability or adds a gate | +| The commands page describes it as "Generate a one-line summary of the current session on demand" and points to the automatic session recap shown after you have been away | The `/recap` row on | 2026-09-29 | The commands page row changes or disappears | +| The recap feature and manual `/recap` arrived together, configurable in `/config` | Claude Code changelog, 2.1.108 ("Added recap feature ... manually invocable with `/recap`") | 2026-09-29 | A release note changes what `/recap` summarizes | +| `/recap` declines with a short notice when relayed from a chat thread, a routine, or a webhook; typed in the terminal, the apps, Remote Control, `-p`, or an SDK host, it runs | Claude Code changelog, 2.1.284 | 2026-09-29 | A release note changes where `/recap` runs | +| Recap text is capped at 400 characters | Claude Code changelog, 2.1.236 ("recap text (automatic and `/recap`) is now capped at 400 characters") | 2026-09-29 | A release note changes the cap | + +## Why the verdict is complementary + +`/recap` summarizes the conversation in one line and reads nothing else. This skill reads the +durable state on disk and the work running off this thread, which the recap never sees, and +produces a four-part briefing. Neither replaces the other: a person who only needs the one-line +reminder is better served by `/recap`, so this skill offers it rather than imitating it. diff --git a/plugins/session-flow/skills/retro/SKILL.md b/plugins/session-flow/skills/retro/SKILL.md index ffe41d1c8f..1469320552 100644 --- a/plugins/session-flow/skills/retro/SKILL.md +++ b/plugins/session-flow/skills/retro/SKILL.md @@ -137,6 +137,32 @@ If /export is available in your session (gate basis: **Verification record: `/ex - **As of.** 2026-09-29. - **Recheck when.** A Claude Code release note or the commands page adds an `/export` format or redaction flag, a headless or programmatic form, or an official conversation-sharing surface. +## Boundary, the built-in `/insights` command + +Both look back at how sessions went, so "how did I do" can land on either. + +- **`/insights` (built-in command).** Ships with Claude Code rather than as a marketplace plugin. + It generates an HTML report across your recent sessions on this machine: projects, usage + patterns, where things go wrong, features to try, and an auto mode recommendation. It writes + that report and nothing else. It is reserved for the person to run; the model does not invoke + it. +- **This skill (marketplace plugin).** A structured retrospective of one session or handoff chain: + transcript metrics, five quality dimensions, feedback-memory regressions, and codification into + rules or memory behind approval. + +**Routing.** When the person asks about patterns across many sessions, or `trends` mode runs, +offer it to the person: you can run `/insights` instead of or alongside this skill for a +cross-session usage report. Make the offer at the end of the run. Prefer this skill for what one +session taught and for codifying it. An unattended run records the offer in its output instead of +asking. + +**Mutation gate.** This skill writes only approved codifications. It never runs `/insights` on the +person's behalf. + +**Availability is never assumed.** `/insights` is not available in cloud sessions; this section +states what to do when the person can run it, never that it is present. The four-part records +live in [reference/native-insights.md](reference/native-insights.md). + ## What this skill does NOT do - **Does not run builds or tests**. That's the consuming repo's verify stage diff --git a/plugins/session-flow/skills/retro/reference/native-insights.md b/plugins/session-flow/skills/retro/reference/native-insights.md new file mode 100644 index 0000000000..b912c807c6 --- /dev/null +++ b/plugins/session-flow/skills/retro/reference/native-insights.md @@ -0,0 +1,21 @@ +# The built-in `/insights` command: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `insights` is a built-in command described as "Generate a report analyzing your Claude Code sessions", with no argument hint | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary (`builtin_commands.insights`) | 2026-09-29 | A release renames or removes `insights`, or changes its description | +| It is user-invocable and not model-invocable (model invocation disabled), and it is not gated behind a setting | Same extraction: `user_invocable: true`, `model_invocable: false`, `disable_model_invocation: true`, `gated: false` | 2026-09-29 | A release changes its invocability or adds a gate | +| It generates an HTML report on recent sessions on this machine (projects, how you use Claude Code, where things go wrong, features to try) and is not available in cloud sessions | The `/insights` row on | 2026-09-29 | The commands page row changes or disappears | +| It includes an auto mode recommendation estimating how many permission prompts auto mode could have handled | Claude Code changelog, 2.1.281 | 2026-09-29 | A release note changes what the report covers | + +## Why the verdict is complementary + +`/insights` is cross-session usage analytics: a report over many sessions, with no scoring +dimensions and no path into the repo's rules or memory. This skill scores one session or handoff +chain against fixed quality dimensions, checks feedback-memory regressions, and codifies learnings +behind approval. `trends` mode is the nearest overlap, and it still reads this plugin's own score +history rather than usage telemetry, so the skill offers `/insights` beside it rather than +replacing either. diff --git a/plugins/source-control/.claude-plugin/plugin.json b/plugins/source-control/.claude-plugin/plugin.json index c94d17088d..11e5a258a9 100644 --- a/plugins/source-control/.claude-plugin/plugin.json +++ b/plugins/source-control/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "source-control", - "version": "0.62.27", + "version": "0.62.28", "description": "Git and GitHub delivery workflow: /commit (Conventional Commits + Co-authored-by trailer via safe heredoc mechanics), /pull-request (prep, create, CI monitoring, review-comment triage, merge, CI-log fetch), /babysit-prs (self-pacing fleet loop, safe by default; opt-in worker/autopilot tiers add gate-checked merge and thread resolution behind a deterministic Python engine), /babysit-loop (the loop-lane merge lane: a standing or drain loop that invokes babysit-prs per cycle, configured through repo-scoped babysit_loop_* keys on the layered source-control.md seam, with merge authority human-only until the target repo's tracked config adopts the lane, a gate-proven C2-mechanical baseline once adopted, and standing merge-rung raises binding from the team-tracked layer only, with one named exception, where an invocation line explicitly typing both the autopilot tier keyword and the dedicated raise argument --merge c3-this-run widens that single invocation's merge authority up to C3 behind a fresh independent frontier-tier resolver, while C4-structural and C5-untrusted-provenance stay unconditionally human-merge), /worktree (create, status, cleanup, audit for parallel-session isolation), /setup (check the effective commit-subject / PR-title convention merged across its config layers and the babysit-prs config, or apply, which interviews the repo and writes the convention config to a chosen layer), and /resolve-conflicts (intent-first merge/rebase conflict resolution with a semantic-conflict sweep, never --abort). The commit-subject / PR-title convention is configurable via a source-control.md config written by a re-runnable setup skill, layered across a ~/.claude user-global file, the tracked team file, and a gitignored .claude/source-control.local.md personal overlay merged per key; Conventional Commits is the default when no convention is declared.", "author": { "name": "Melodic Software", diff --git a/plugins/source-control/CHANGELOG.md b/plugins/source-control/CHANGELOG.md index 8a38d1890b..ed0de37fe0 100644 --- a/plugins/source-control/CHANGELOG.md +++ b/plugins/source-control/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to the `source-control` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.62.28] - 2026-09-29 + +### Added + +- **`commit` carries a Boundary section for the bundled `commit` skill.** Prefer this skill when + the repository carries a commit convention or a `source-control.md` layer; the bundled skill fits + a plain commit where this skill's contract is not wanted, and one commit never runs both. +- **`pull-request` carries a Boundary section for the bundled `pr` skill and the built-in + `/commit-push-pr` and `/autofix-pr` commands.** The one-shot native PR surfaces fit a PR with no + lifecycle or body contract; at monitor entry the model offers the person-run `/autofix-pr` as an + alternative or addition rather than invoking it. When both run, the local loop merges the + fetched PR head into its branch before each fix commit, so its push is never rejected as + non-fast-forward. + ## [0.62.27] - 2026-09-29 ### Fixed diff --git a/plugins/source-control/skills/commit/SKILL.md b/plugins/source-control/skills/commit/SKILL.md index 7a936a7576..71bbed54ad 100644 --- a/plugins/source-control/skills/commit/SKILL.md +++ b/plugins/source-control/skills/commit/SKILL.md @@ -355,6 +355,31 @@ documented contract (e.g. `/source-control:pull-request create`) composes this o `git add -A`), the subject pre-check before any git invocation, no hook bypass, and a user-visible SHA + subject report after every commit. +## Boundary, the bundled `commit` skill + +Claude Code bundles a skill of the same name whose description tells the model to use it whenever +it is about to commit, so the two compete for every commit. + +- **`commit` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. A + generic commit workflow: it gathers git context and applies Claude Code's own message style, + staging rules, and attribution. The model and the person can both invoke it. +- **This skill (marketplace plugin).** Resolves the repository's subject convention through the + ladder above (layered `source-control.md` config, the project's own convention, the Conventional + Commits default), resolves `trailer_policy`, stages surgically against the four preconditions, + and reruns the format, exec-bit, and subject pre-check steps on every commit. + +**Routing.** Prefer this skill whenever it resolves and the repository carries a commit +convention, a `source-control.md` layer is present, or a workflow composes `/source-control:commit`. +When the bundled `commit` skill resolves in this session, prefer it only for a plain commit where +none of this skill's contract is wanted. + +**Mutation gate.** Both create commits. Pick one per commit and never run both for the same +change. This skill never chains into the bundled `commit` on its own behalf. + +**Availability is never assumed.** The bundled skill is gated, and `disableBundledSkills` or a +`skillOverrides` entry hides it; this section states what to do when it resolves, never that it is +present. The four-part records live in [reference/native-commit.md](reference/native-commit.md). + ## What this skill does NOT do - **No `git push`**, that's `/source-control:pull-request create`. diff --git a/plugins/source-control/skills/commit/reference/native-commit.md b/plugins/source-control/skills/commit/reference/native-commit.md new file mode 100644 index 0000000000..c7efe4075d --- /dev/null +++ b/plugins/source-control/skills/commit/reference/native-commit.md @@ -0,0 +1,20 @@ +# The bundled `commit` skill: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `commit` is a bundled skill described as "Create a git commit", to be used "whenever you are about to create a commit, whether the user asked for one or it is a step in your current task"; it "gathers git context and applies the required commit workflow (message style, staging rules, attribution)". Argument hint `[guidance]` | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 | 2026-09-29 | A release renames or removes the skill, or changes its description | +| It is model-invocable and user-invocable, and its registration is gated | Same extraction (`model_invocable`, `user_invocable`, `gated` all true) | 2026-09-29 | A release changes its invocability or gate | +| It is undocumented on the commands reference: has no `/commit` row | That page, read 2026-09-29 | 2026-09-29 | The commands page gains a `/commit` row | +| Bundled skills turn off with `disableBundledSkills`, and one bundled skill hides with a `skillOverrides` entry of `"off"` | , bundled skills and skill visibility sections | 2026-09-29 | The skills page changes either setting | + +## Why the verdict is complementary + +The bundled skill applies Claude Code's own commit workflow the same way in every repository. +This skill exists for repositories that declare their own: the layered `source-control.md` +convention and `trailer_policy`, a project commit-msg hook, surgical staging against the four +preconditions, and the per-commit format, exec-bit, and pre-check steps that composing workflows +rely on. Neither replaces the other; both create a commit, so one is chosen per commit. diff --git a/plugins/source-control/skills/pull-request/SKILL.md b/plugins/source-control/skills/pull-request/SKILL.md index ae2021edcd..9f0ae587af 100644 --- a/plugins/source-control/skills/pull-request/SKILL.md +++ b/plugins/source-control/skills/pull-request/SKILL.md @@ -238,6 +238,45 @@ Public action for retrieving failed-CI evidence. Tiered fetch chain. Cheapest si --- +## Boundary, native Claude Code surfaces + +Three native surfaces cover parts of this lifecycle, and they get conflated with it whenever a PR +is opened or watched. + +- **`pr` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. Creates one + GitHub pull request generically: gathers branch context and applies Claude Code's own title, + body, and attribution through `gh`. The model and the person can both invoke it. +- **`/commit-push-pr` (built-in command).** Ships with Claude Code. Commits, pushes, and opens a PR + in one prompt-driven step. The model and the person can both invoke it. +- **`/autofix-pr` (built-in command).** Ships with Claude Code. Spawns a cloud session that watches + the current branch's PR and pushes fixes when CI fails or reviewers comment. Reserved for the + person to run; the model does not invoke it. +- **This skill (marketplace plugin).** The whole lifecycle: prep with verified findings, a draft + under this repository's PR title and body contract, the ready flip after merging the base, + research-gated local monitoring with per-finding classification and replies, and merge. + +**Routing.** When the bundled `pr` skill or `/commit-push-pr` resolves in this session, prefer it +for a one-shot PR where no draft discipline, body contract, or later lifecycle step applies. Prefer +this skill whenever the repository declares a PR convention or the work continues into ready, +monitor, or merge. + +**Offer `/autofix-pr` at monitor entry.** Offer it to the person: "you can run `/autofix-pr` +instead of or alongside this monitor loop". It fits a PR the person wants watched after this +session ends. An unattended run records the offer in its output instead of asking. + +**Mutation gate.** `pr` and `/commit-push-pr` commit, push, and open a PR; `/autofix-pr` pushes +fixes to the PR branch from a cloud session. This skill never chains into any of them on its own +behalf. When `/autofix-pr` runs alongside this loop, both push to one branch. Before each fix +commit, fetch the PR head and merge it into the checked-out branch (`git merge --ff-only` when there +are no local commits, else `git merge`), then re-check the pending edit against the merged tree and +drop it when the cloud session already fixed that finding. A fetch alone leaves the local branch on +the old tip, and the push that follows is rejected as non-fast-forward. + +**Availability is never assumed.** `pr` and `/autofix-pr` register gated, and `/autofix-pr` also +needs `gh` and cloud-session access; this section states what to do when a surface resolves, never +that it is present. The four-part records live in +[reference/native-surfaces.md](reference/native-surfaces.md). + ## Gotchas - **Verify every agent review finding before presenting it.** Automated reviewers produce incorrect findings often enough that an unverified finding is not evidence; check each against current docs and actual code (step 1.3) before it reaches the user diff --git a/plugins/source-control/skills/pull-request/reference/native-surfaces.md b/plugins/source-control/skills/pull-request/reference/native-surfaces.md new file mode 100644 index 0000000000..b0f697ab67 --- /dev/null +++ b/plugins/source-control/skills/pull-request/reference/native-surfaces.md @@ -0,0 +1,25 @@ +# Native PR surfaces: verification record + +Detail behind the `## Boundary, native Claude Code surfaces` section in [SKILL.md](../SKILL.md). +Each row is a four-part record: the claim, the basis it rests on, the date it was checked, and the +event that makes it worth checking again. "The extraction" below is the `/claude-ops:inventory` +extraction of the installed 2.1.284 binary, 2026-09-29. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `pr` is a bundled skill described as "Create a GitHub pull request", to be used "whenever you are about to open a PR, whether the user asked for one or it is a step in your current task"; it "gathers branch context and applies the required PR workflow (gh CLI, title/body format, attribution)". Model-invocable, user-invocable, gated | The extraction | 2026-09-29 | A release renames or removes it, or changes its invocability or gate | +| `pr` is undocumented on (no `/pr` row) | That page, read 2026-09-29 | 2026-09-29 | The page gains a `/pr` row | +| `commit-push-pr` is a built-in command of type `prompt`, described as "Commit, push, and open a PR". Model-invocable, user-invocable, not gated | The extraction | 2026-09-29 | A release renames or removes it, or changes its invocability or gate | +| `/commit-push-pr` is undocumented on the commands page; the changelog records that it no longer auto-approves git/gh commands with dangerous flags (`--force`, `--amend`, `--no-verify`) and auto-allows `git push` to the configured push remote | ; the Claude Code changelog, | 2026-09-29 | The commands page gains a row, or a changelog entry names `/commit-push-pr` | +| `autofix-pr` is a built-in command described as "Monitor and autofix any issues with the current PR". User-invocable only (not model-invocable), hidden, gated | The extraction | 2026-09-29 | A release changes its invocability, visibility, or gate | +| `/autofix-pr [prompt]` spawns a cloud session that watches the current branch's PR and pushes fixes when CI fails or reviewers leave comments; it detects the PR with `gh pr view`, fixes every CI failure and review comment by default, takes a prompt to narrow that, and requires the `gh` CLI and access to cloud sessions | The `/autofix-pr` row on | 2026-09-29 | That row changes | +| Bundled skills turn off with `disableBundledSkills`, and one bundled skill hides with a `skillOverrides` entry of `"off"` | | 2026-09-29 | The skills page changes either setting | + +## Why the verdict is complementary + +`pr` and `/commit-push-pr` stop at an open PR and apply Claude Code's generic format. This skill +applies the repository's own title pattern, body contract, and draft-first rule, then carries the +PR through ready, monitoring, and merge. `/autofix-pr` monitors too, but in a cloud session that +fixes everything by default and keeps running after the local session ends; this skill's monitor +loop runs locally, gates every CI fix on research, and classifies each review finding with a +reply before fixing. The model offers `/autofix-pr` to the person because only the person runs it. diff --git a/plugins/verification/.claude-plugin/plugin.json b/plugins/verification/.claude-plugin/plugin.json index 83905b4892..88bb9b8005 100644 --- a/plugins/verification/.claude-plugin/plugin.json +++ b/plugins/verification/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "verification", - "version": "0.6.11", + "version": "0.6.12", "description": "Outcome-verification stage: prove a change achieved its intended outcome (`/verification:confirm`: a mechanical build/test/lint prerequisite gate, then intent-match + evidence + verdict with the criterion auto-detected by change type), and verify measurable-improvement claims against a planning-time baseline (`/verification:measure`), never fabricating numbers.", "author": { "name": "Melodic Software", diff --git a/plugins/verification/CHANGELOG.md b/plugins/verification/CHANGELOG.md index 5978331f07..ce4c9c0431 100644 --- a/plugins/verification/CHANGELOG.md +++ b/plugins/verification/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to the `verification` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.6.12] - 2026-09-29 + +### Added + +- **`confirm` carries a Boundary section for the bundled `verify` skill.** This skill verifies the + outcome against the plan or intent; when the change has a runtime surface, the model offers the + person-run `/verify` as an addition rather than invoking it. + ## [0.6.11] - 2026-09-29 ### Changed diff --git a/plugins/verification/skills/confirm/SKILL.md b/plugins/verification/skills/confirm/SKILL.md index 28210ee59d..2fb6d380a2 100644 --- a/plugins/verification/skills/confirm/SKILL.md +++ b/plugins/verification/skills/confirm/SKILL.md @@ -138,6 +138,33 @@ For "run the live app and watch it behave," beyond automated `/testing:run-e2e`, | `/verification:confirm` finds gaps | Fix, then re-run `/verification:confirm` | | Improvement claimed without data | Redirect to `/verification:measure` (`performance` or `metrics`; baseline captured at planning time) | +## Boundary, the bundled `verify` skill + +Both answer "does this change actually work", so a request to verify a change can reach for +either. + +- **`/verify` (bundled skill).** Ships with Claude Code rather than as a marketplace plugin. Builds + and runs the project's app and drives the affected flow end to end, observing behavior rather + than relying on tests or type checks. When the repository has no project verify skill yet, it + bootstraps one, which writes files into the repository. Reserved for the person to run; the model + does not invoke it. +- **This skill (marketplace plugin).** The mechanical prerequisite, then outcome verification + against the plan or intent by change type: the intent-match table, out-of-diff couplings, the + evidence table, and an independent verdict. + +**Routing.** When the change has a runtime surface to drive (an `e2e-*` category above, or any +product source), offer it to the person at the end of the run, beside the report: "you can run +`/verify` alongside this skill to drive the change end to end". Skip the offer for a diff touching +only tests, docs, or code with no runtime surface. An unattended run records the offer in its +output instead of asking. Its result is added evidence; it replaces neither Stage 1 nor the verdict. + +**Mutation gate.** `/verify` may write a project verify skill on first use. This skill never +triggers it on its own behalf. + +**Availability is never assumed.** `disableBundledSkills` or a `skillOverrides` entry hides it; +this section states what to do when it resolves, never that it is present. The four-part records +live in [reference/native-verify.md](reference/native-verify.md). + ## What this skill does NOT do - **Does not reimplement the mechanical pass**. `/toolchain:check` (build+test+lint) and `/toolchain:lint` (cross-cutting) are SSOT. Stage 1 delegates to them. diff --git a/plugins/verification/skills/confirm/reference/native-verify.md b/plugins/verification/skills/confirm/reference/native-verify.md new file mode 100644 index 0000000000..b5d368a1ad --- /dev/null +++ b/plugins/verification/skills/confirm/reference/native-verify.md @@ -0,0 +1,20 @@ +# The bundled `verify` skill: verification record + +Detail behind the `## Boundary` section in [SKILL.md](../SKILL.md). Each row is a four-part +record: the claim, the basis it rests on, the date it was checked, and the event that makes it +worth checking again. + +| Claim | Basis | As of | Recheck when | +|---|---|---|---| +| `verify` is a bundled skill described as verifying "that a code change actually does what it's supposed to by exercising it end-to-end and observing behavior", driving "the affected flow, not just tests or typecheck"; it "bootstraps this repo's project verify skill if none exists yet" and is not for "a diff that only touches tests, docs, or other code with no runtime surface to drive" | The `/claude-ops:inventory` extraction of the installed 2.1.284 binary, 2026-09-29 | 2026-09-29 | A release renames or removes it, or changes its description | +| Its registration disables model invocation: the person runs it, the model does not | Same extraction (`disable_model_invocation` true, `user_invocable` true); the commands page says "`/verify` runs only when you invoke it. Before v2.1.215, Claude could also run `/verify` on its own" | 2026-09-29 | A release changes its invocability, or the commands page note changes | +| `/verify` confirms a change "by building your project's app, running it, and observing the result, rather than relying on tests or type checks"; `/run-skill-generator` writes a per-project skill at `.claude/skills/run-/` that `/run` and `/verify` then follow | The `/verify` and `/run-skill-generator` rows on ; the run-and-verify section of | 2026-09-29 | Either row or that section changes | +| Bundled skills turn off with `disableBundledSkills`, and one bundled skill hides with a `skillOverrides` entry of `"off"` | | 2026-09-29 | The skills page changes either setting | + +## Why the verdict is complementary + +`/verify` observes the running app and answers "does it behave". This skill answers "did we build +the right thing": it gates on the mechanical pass, matches the change against the plan or intent, +names the couplings the change leans on, and renders the verdict from a fresh context. A drive of +the running app is one kind of evidence inside that verdict, so the model offers `/verify` to the +person as an addition when the change has a runtime surface, and never as a substitute.