Skip to content

feat(claude-ops): bake the explain-usage route phrase into observability's description - #5556

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/native-phrases-claude-ops
Sep 30, 2026
Merged

kyle-sexton merged 2 commits into
mainfrom
feat/native-phrases-claude-ops

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

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 route verdict for the bundled explain-usage skill against claude-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: observability opens 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).

    Native surface Skill New description clause Boundary routing sentence
    bundled explain-usage observability "When the bundled explain-usage skill resolves in this session, prefer it for a quick plain-language breakdown of this session's tokens; this skill for cross-session trends, cost, hooks, and anything the local telemetry stores hold." "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."
  • Presence wording: the doctor bullets in audit-install-state, audit-performance and audit-skill-visibility, and the explain-usage bullet in observability, 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_phrase is set on the explain-usage → claude-ops:observability row (complementary, route, extraction against Claude Code 2.1.284), and docs/native-surfaces.md is regenerated.

  • Not baked: the doctor and /skill-doctor rows are suggest rows 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 detect against 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-preserved all pass. check-spoke-plugin-root.sh --check: clean.
  • typos and markdownlint on the changed files: clean.
  • observability description: about 720 of 1536 characters.

Related

🤖 Generated with Claude Code

kyle-sexton and others added 2 commits September 29, 2026 22:42
…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
@kyle-sexton
kyle-sexton marked this pull request as ready for review September 30, 2026 04:01
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-30T04:03:26.815408Z fc94cd8 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 2m 56s —— View job


Code review complete

  • Gather context (PR body, changed files, diff via gh pr diff 5556)
  • Review changed files for correctness/maintainability
  • Post findings

Scope: all 10 changed files (native-references convention docs, docs/native-surfaces.md + records.json, claude-ops plugin manifest/changelog, and the four SKILL.md Boundary-section edits).

Findings: none that clear the high-signal bar for this lane.

What I checked and ruled out:

  • The new observability description clause (plugins/claude-ops/skills/observability/SKILL.md:2) matches the Boundary routing sentence's intent and the PR body's stated table exactly; no drift between the two.
  • Cross-file consistency: docs/native-surfaces/records.json's explain-usage → claude-ops:observability row (baked.description_phrase: true), docs/native-surfaces.md's prose ("Baked: description phrase yes"), and docs/conventions/native-references/README.md's Adopters row all agree with each other and with the CHANGELOG (3.3.4, patch/clarification per the doc's own major/minor/patch rule).
  • The four Boundary-bullet rewrites (audit-install-state, audit-performance, audit-skill-visibility, observability) drop "Ships with Claude Code rather than as a marketplace plugin" for the **<name> (<provenance class>)**: what it does template defined at docs/conventions/native-references/README.md#L146 — verified each rewritten bullet still reads as one coherent sentence once the markdown line-wrap is resolved (no dropped words/duplicated text at the hunk boundaries).
  • Independently recomputed the observability description length (grep '^description:' … | wc -c, minus the description: " prefix and trailing ") → 721 chars, matching the PR's claimed "about 720 of 1536." (The 1536 budget figure itself is author-claimed and not independently re-derived here.)
  • plugins/claude-ops/.claude-plugin/plugin.json version bump (0.71.1 → 0.71.2) matches the new plugins/claude-ops/CHANGELOG.md entry; .claude-plugin/marketplace.json doesn't duplicate plugin versions, so nothing there needed updating.
  • The doctor//skill-doctor rows correctly keep their old bullet wording, consistent with the PR's claim that those are suggest rows on user-only surfaces and take no description phrase.

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

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 1m 1s —— View job


Security review — no issues found

  • Gather context (PR diff, changed files)
  • Invoke /review:security-review skill
  • Post findings/results

Scope: All 10 changed files are documentation/metadata — two SKILL.md frontmatter descriptions plus Boundary-section prose (audit-install-state, audit-performance, audit-skill-visibility, observability), two CHANGELOG.md files, docs/native-surfaces.md, docs/native-surfaces/records.json, docs/conventions/native-references/README.md, and a version bump in plugins/claude-ops/.claude-plugin/plugin.json. No executable code, workflow, hook, or permission logic changed.

Instruction-surface check: The diff removes "Ships with Claude Code rather than as a marketplace plugin" from four Boundary bullets (audit-install-state, audit-performance, audit-skill-visibility, observability — e.g. observability/SKILL.md#L155). Checked against docs/conventions/instruction-exception-register/README.md's six protected classes (irreversible-action, secret-handling, data-integrity, external-publication, legal-compliance, agent-authority): this is a provenance/availability assertion, not a rule in any protected class, and every behavioral statement in the same bullets (what the surface does, how it's invoked) is preserved. No guardrail is being removed — this doesn't qualify as a finding under the instruction-surface lens.

No CRITICAL / IMPORTANT / SUGGESTION findings. No injection surfaces, auth/access-control logic, secret handling, or Actions workflow changes are present in this diff.

@kyle-sexton
kyle-sexton enabled auto-merge (squash) September 30, 2026 04:21
@kyle-sexton
kyle-sexton merged commit f75bebe into main Sep 30, 2026
21 of 29 checks passed
@kyle-sexton
kyle-sexton deleted the feat/native-phrases-claude-ops branch September 30, 2026 04:24
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…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>
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…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>
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant