feat(claude-ops): bake the explain-usage route phrase into observability's description - #5556
Conversation
…ity's description The native-surface store's `route` row for the bundled `explain-usage` skill against claude-ops:observability now carries its description phrase, derived from the skill's Boundary routing text. The doctor bullets in audit-install-state, audit-performance and audit-skill-visibility, and the explain-usage bullet in observability, drop the "Ships with Claude Code" availability claim for the native-references template form. claude-ops 0.70.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…laude-ops # Conflicts: # plugins/claude-ops/.claude-plugin/plugin.json # plugins/claude-ops/CHANGELOG.md
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 2m 56s —— View job Code review complete
Scope: all 10 changed files (native-references convention docs, Findings: none that clear the high-signal bar for this lane. What I checked and ruled out:
All other verification claims in the PR body (script output, lint/typos runs) are author-claimed and not independently re-run in this pass. |
|
Claude finished @kyle-sexton's task in 1m 1s —— View job Security review — no issues found
Scope: All 10 changed files are documentation/metadata — two Instruction-surface check: The diff removes "Ships with Claude Code rather than as a marketplace plugin" from four Boundary bullets ( No CRITICAL / IMPORTANT / SUGGESTION findings. No injection surfaces, auth/access-control logic, secret handling, or Actions workflow changes are present in this diff. |
…ts (#5568) No related issue: wording-only follow-up to the native-reference sweep; it fixes the presence-wording defect Codex raised on #5504. ## Summary Boundary bullets in 13 plugins said a native surface "Ships with Claude Code rather than as a marketplace plugin". That is an availability assertion, and the native-references convention says a component never states that a native surface is present. The sweep units fix it plugin by plugin (#5509, #5556). This PR covers every other plugin in one change, since body text spends no listing budget and changes no routing. ## Fix - Each affected bullet now uses the convention's template form, `**\`<name>\` (<provenance class>)**: what it does`, and keeps every behavioral statement it carried (what the surface mutates, and whether the model or only the person invokes it). - `review:fanout`'s Boundary says the bundled command and the managed service are not marketplace plugins, without asserting that either is present. - No description, store row, or routing text changes. - Patch bumps, each one above origin/main: bugs 0.11.6, claude-memory 0.13.12, code-tidying 0.25.1, debugging 0.7.12, discovery 0.25.16, github 0.3.22, implementation 0.19.16, planning 0.49.2, review 0.34.1, session-flow 0.40.3, source-control 0.65.3, testing 0.11.6, verification 0.6.13. ## Verification - `overlap.py self-check`: degraded, on the 2 documented advisories only. `generate --check`: in sync. `test_overlap.py`: OK. - `overlap.py detect` against a 2.1.285 inventory: 0 new, 0 resurfaced. - `check-changed-skills.sh origin/main`: 21 checked, 0 failed. - `validate-plugin-contracts.mjs`: 0 warnings. `generate-catalog.mjs --check`: in sync. - `check-changelog-parity.sh`: `--check`, `--check-order`, `--check-bump`, `--check-preserved` all pass. `check-spoke-plugin-root.sh --check`: clean. - typos and markdownlint on the changed files: clean. - The only "Ships with Claude Code" bullets left are in claude-ops, context-budget, playbooks and prototype. #5556 and the combined phrase-sweep PR fix those. ## Related - #5504: the Codex finding on presence wording. - #5509, #5556: sweep units that fixed the same wording in their own plugins. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ts (#5570) No related issue: operator-directed batch of the remaining native description-phrase sweep units, tracked in the sweep PRs listed under Related. ## Summary Ships the five remaining description-phrase sweep units (context-budget, evals, playbooks, prototype, visualization) as one PR, per operator direction. ## Fix - `context-budget` 0.6.47: `/context-budget:audit` description routes a plain-language account of this session's tokens to the bundled `explain-usage` skill; this skill keeps startup cost, per-tool attribution, and before/after checks. - `evals` 0.3.8: `/evals:methodology` description routes the model-and-effort sweep over an existing suite to `claude-api`'s `hillclimb`; this skill keeps suite and criteria design. - `playbooks` 0.15.2: `/playbooks:fable-5` description routes current model, price, and API facts and the cost audit to the bundled `claude-api` skill. - `prototype` 0.13.5 and `visualization` 0.8.3: the bundled `design` skill is model-invocation-disabled in 2.1.285, so both rows move from `route` to `suggest`. The description phrase is dropped and the Boundary offers `/design` to the person. - Boundary bullets follow the `- **`<name>` (<class>)**: what it does` template and no longer assert availability. - `docs/native-surfaces/records.json`: the three `route` rows carry `baked.description_phrase: true`; the two `design` rows are `suggest` with `suggest_sentence: true`. `docs/native-surfaces.md` regenerated with `overlap.py generate`. - `/design` evidence: a targeted string search of the 2.1.285 binary shows the `design` registration is a user-only design-Artifact creator ("Make a new Design artifact from a brief"), not the claude.ai/design hub (now a separate `ClaudeDesign` tool). The canvas behavior in both skills is restated from the commands and artifacts docs fetched 2026-09-30; the converted `design` rows drop `budget_caveat` and the "versioned" claim. - `context-budget:audit` gains a `suggest` row and a `## Boundary` section for the built-in `/context` command (2.1.285: builtin-command, "Visualize current context usage as a colored grid", argument hint `[all]`, gated, model invocation disabled), with four-part records in `reference/native-context.md`. - Two dismissals recorded with `overlap.py dismiss`: - `Bash` (builtin-tool) vs `bash-format:check`: "Name overlap only: bash-format:check is a read-only check that the shfmt and shellcheck binaries resolve for the bash-format hook; the built-in Bash tool executes shell commands. Different jobs, no routing." - `PowerShell` (builtin-tool) vs `powershell-format:check`: "Name overlap only: powershell-format:check is a read-only check that pwsh, PSScriptAnalyzer, jq and node resolve for the powershell-format hook; the built-in PowerShell tool executes PowerShell commands. Different jobs, no routing." - native-references convention: one 3.3.5 CHANGELOG entry and updated Adopters rows. ## Verification - `overlap.py generate --check`: in sync (64 rows, 78 dismissals). `overlap.py self-check`: degraded on the two standing advisories only (older extraction versions, no `--upstream-sha`). - `overlap.py detect` against the 2.1.285 inventory: 0 resurfaced dismissals, 0 orphaned, 0 unruled discovered pairs. - `git grep -i 'ships with Claude Code'` over the five plugins' SKILL.md files: empty. - `validate-plugin-contracts.mjs`, `check-changed-skills.sh origin/main` (7 skills, 0 failed), `check-skill-description-voice.sh` (5 PASS), `check-changelog-parity.sh --check`, `--check-bump`, `--check-order`, `--check-preserved`, `check-skill-portability.sh`, `check-purged-em-dashes.sh`, and `markdownlint-cli2` on the touched files: all pass. - `node scripts/generate-catalog.mjs`: in sync. ## Related - #5503 - #5509 - #5556 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…plugins (#5629) Closes #4661 ## Summary Eight listed skill descriptions in plugins the issue names were still over 500 characters on `origin/main` (description plus `when_to_use`, whitespace-normalised, YAML-parsed). This PR trims them, so no listed skill in the issue's 18 plugins is over 500. The prior drain PR (#5422) covered `architecture` and `improvement:find`; the native-route sweeps (#5556, #5570) then re-grew several descriptions by prepending a `When the bundled <x> skill resolves ... prefer ...` clause. ## Fix Frontmatter only. Each skill keeps its native-route phrase in shortened form, its quoted trigger phrases and its sibling boundary. No rename, merge or `disable-model-invocation` change, no `plugin.json` description change. | Skill | Before | After | |---|---|---| | `claude-config:audit-instructions` | 838 | 494 | | `claude-config:audit-permission-state` | 677 | 497 | | `claude-config:audit` | 623 | 474 | | `context-budget:audit` | 767 | 439 | | `claude-ops:observability` | 721 | 456 | | `claude-ops:inventory` | 522 | 464 | | `code-tidying:audit-dead-code` | 501 | 439 | | `fleet:reach` | 1112 | 475 | Patch bumps with a CHANGELOG entry: `claude-config` 0.55.1, `claude-ops` 0.77.3, `context-budget` 0.6.48, `code-tidying` 0.25.3, `fleet` 0.2.1. ## Verification - `check-listing-budget.sh plugins/*/skills` aggregate: 131638 chars before (`origin/main`), 129613 after. - Measured by YAML parse over the issue's 18 plugins: 8 skills over 500 on `origin/main`, 0 on this branch. - `check-changelog-parity.sh --check`, `--check-bump origin/main` and `--check-order`: pass. - `validate-plugins.sh`: pass. `validate-plugin-contracts.mjs`: pass (59 setup skills, 4976 files). - `check-changed-skills.sh origin/main`: 8 skills checked, 0 failed. - `check-purged-em-dashes.sh --check`: no em dashes. `markdownlint-cli2` on 13 changed files: 0 issues. - `affected-tests.sh`: no suites selected (every changed file is a no-suite class). - Diff against `origin/main` shows only modified files and no `name:` or `disable-model-invocation` change. ## Related - #4657 (parent), #5422 (earlier trims), #5288 (deleted the cap-exceptions doc), #5556 and #5570 (native-route phrases kept here), #5561 (edits the `claude-config:audit` body, not its frontmatter). - Not covered here: listed skills over 500 in plugins the issue does not name. On this branch that is 82 skills across `adhd`, `ai-slop`, `animation`, `attribution`, `bugs`, `claude-memory`, `codebase-health`, `computer-use`, `context7`, `coupling`, `debugging`, `disk-hygiene`, `domain-driven-design`, `education`, `evals`, `event-storming`, `firecrawl`, `gaming`, `github`, `kindle-dedrm`, `machine-health`, `mcp-tools`, `mutation-testing`, `naming`, `pixel-art`, `playbooks`, `playgrounds`, `playwright`, `plugin-quality`, `prototype`, `repo-fleet-hygiene`, `repo-hygiene`, `review`, `skill-quality`, `songwriting`, `source-control`, `tdd`, `testing`, `toolchain`, `verification`, `visualization`, `wizard`, `writing` and `x`. This PR does not trim them. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
No related issue: sweep unit 3 of the native-reference description-phrase sweep approved in the 2026-09-29 native-surfaces interview (Q4).
Summary
The native-surface store records a
routeverdict for the bundledexplain-usageskill againstclaude-ops:observability, but the routing lived only in the skill's Boundary section, which the model reads after it has picked a skill. Four Boundary bullets in claude-ops also said the native surface "Ships with Claude Code", an availability assertion the native-references convention forbids.Fix
Description phrase:
observabilityopens with one presence-gated clause that restates its Boundary routing in full (the lesson from feat(source-control): bake native route phrases into commit and pull-request descriptions #5503's review).explain-usageexplain-usageskill 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."Presence wording: the
doctorbullets inaudit-install-state,audit-performanceandaudit-skill-visibility, and theexplain-usagebullet inobservability, drop "Ships with Claude Code rather than as a marketplace plugin" for the template form(<provenance class>)**: what it does. Every behavioral statement in those bullets is kept.Store:
baked.description_phraseis set on theexplain-usage→claude-ops:observabilityrow (complementary,route, extraction against Claude Code 2.1.284), anddocs/native-surfaces.mdis regenerated.Not baked: the
doctorand/skill-doctorrows aresuggestrows on user-only surfaces, which take no description phrase.claude-ops 0.71.2; native-references CHANGELOG 3.3.4 and the Adopters table record the phrase.
Verification
overlap.py self-check: degraded, on the 2 documented advisories only (extraction versions older than the local 2.1.285 build; upstream SHA not supplied).generate --check: in sync.test_overlap.py: OK.overlap.py detectagainst a 2.1.285 inventory: 0 new, 0 resurfaced, 76 suppressed.check-changed-skills.sh origin/main: 4 checked, 0 failed.validate-plugin-contracts.mjs: 0 warnings.generate-catalog.mjs --check: in sync.check-changelog-parity.sh:--check,--check-order,--check-bump,--check-preservedall pass.check-spoke-plugin-root.sh --check: clean.observabilitydescription: about 720 of 1536 characters.Related
audit-native-overlap/SKILL.md).🤖 Generated with Claude Code