Skip to content

feat(source-control): bake native route phrases into commit and pull-request descriptions - #5503

Merged
kyle-sexton merged 4 commits into
mainfrom
feat/native-phrases-source-control
Sep 30, 2026
Merged

kyle-sexton merged 4 commits into
mainfrom
feat/native-phrases-source-control

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

No related issue: sweep unit 1 of the native-reference description-phrase sweep approved in the 2026-09-29 native-surfaces interview (Q4).

Summary

The native-surface store records four route verdicts for source-control whose routing clause lived only in each skill's Boundary section. A body loads only on invocation, so the model picking between our skill and the native one never saw it. A skill's description is what the model reads when choosing a skill.

Fix

  • commit: a front-loaded, presence-gated clause for the bundled commit skill and the built-in /commit-push-pr command.
  • pull-request: a front-loaded, presence-gated clause for the bundled pr skill and /commit-push-pr.
  • Store: the four rows' baked.description_phrase flags are set, and docs/native-surfaces.md is regenerated.
  • Adopters table: the native-references Adopters table no longer says source-control has no phrase.
  • source-control 0.62.30.

Store rows gated by this change, each complementary, route, observed by extraction against Claude Code 2.1.284:

Native surface Component
bundled commit source-control:commit
built-in /commit-push-pr source-control:commit
bundled pr source-control:pull-request
built-in /commit-push-pr source-control:pull-request

Not baked: the /autofix-pr rows. They are suggest rows on a surface the model cannot invoke. The operator ruled they get no phrase, and the convention forbids one on that combination; their Boundary sections already offer the command to the person.

Verification

  • overlap.py self-check: degraded, on the 2 documented advisories only. generate --check: in sync.
  • test_overlap.py: 172 tests OK.
  • check-changed-skills.sh origin/main: 0 failed.
  • validate-plugin-contracts.mjs: 0 warnings.
  • check-changelog-parity.sh: all four modes pass.
  • check-spoke-plugin-root.sh, typos and the ai-slop report: all clean.
  • Description lengths: 654/1536 for commit, 659/1536 for pull-request.

Related

🤖 Generated with Claude Code

kyle-sexton and others added 2 commits September 29, 2026 21:26
…request descriptions

Sweep unit 1 of the native-reference description-phrase sweep. Each skill
description opens with one presence-gated clause covering its route rows:
commit for the bundled commit skill and /commit-push-pr, pull-request for
the bundled pr skill and /commit-push-pr. The four store rows are marked
baked and the registry view is regenerated. Suggest rows (/autofix-pr)
take no phrase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ource-control

# Conflicts:
#	docs/conventions/native-references/CHANGELOG.md
@kyle-sexton
kyle-sexton marked this pull request as ready for review September 30, 2026 01:46
@kyle-sexton
kyle-sexton enabled auto-merge (squash) September 30, 2026 01:46
@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-30T01:49:25.492972Z ed4028d 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 1m 16s —— View job


Security review complete

No security issues found.

This PR is a documentation/metadata bake with no executable-logic changes:

  • plugins/source-control/skills/commit/SKILL.md and plugins/source-control/skills/pull-request/SKILL.md: only the YAML frontmatter description field changed (+1/-1 each), prepending a routing clause. No script, Bash heredoc, or staging logic in either skill body changed.
  • docs/native-surfaces.md, docs/native-surfaces/records.json: flip description_phrase: false → true for four already-recorded route rows. Pure data.
  • docs/conventions/native-references/{CHANGELOG,README}.md, plugins/source-control/CHANGELOG.md, plugins/source-control/.claude-plugin/plugin.json: changelog prose and a version bump (0.62.29 → 0.62.30).

Instruction-surface-deletion lens: checked deliberately, since this diff touches skill descriptions that influence routing. I diffed the new description phrases against each skill's existing ## Boundary section (unchanged by this PR):

No standing guardrail (surgical staging, never git add -A, draft-first + security-review-before-ready, the PR body contract) is deleted, narrowed, or softened anywhere in this diff — those all remain intact in each skill's body, unchanged by this PR. The new description text duplicates already-approved Boundary-section policy rather than introducing new permissive language, so this is not a finding under that lens.

No injection surfaces, no secrets/token handling, no auth/access-control logic, and no Actions workflow changes are present in this diff.

@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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


/review:code-review findings

  • Gather context (PR diff, changed files, Boundary sections in both touched SKILL.md files)
  • Understand the request: run /review:code-review per the trigger's custom instructions
  • Run the review against origin/main...HEAD
  • Post inline comments for anchorable findings
  • Post summary review comment

Scope: 8 changed files — two SKILL.md description edits, docs/native-surfaces.md +
docs/native-surfaces/records.json (4 rows flipped description_phrase: false → true), two
CHANGELOGs, one README table row, and a plugin version bump. This is the doc/description-only PR
the body describes (sweep unit 1 of the native-phrases sweep); no code paths change.

2 findings posted inline, both about the same class of issue: the newly front-loaded routing
clause in each skill's description is a narrower condition than the (unchanged) Boundary section
it's meant to summarize, and since the description is the only text the model reads at
skill-selection time, that narrowing changes real routing behavior, not just phrasing:

  1. plugins/source-control/skills/commit/SKILL.md:2 — the description says prefer the bundled commit skill for "a plain commit with no repo convention," but the Boundary section (L374-379) actually gates that preference on "none of this skill's contract... wanted" (trailer policy, surgical staging, exec-bit/format checks, subject pre-check — not just an absent source-control.md layer). Most repos have no such layer, so read literally this would misroute the common case away from this skill's safety behaviors.
  2. plugins/source-control/skills/pull-request/SKILL.md:2 — the description drops the Boundary section's (L258-261) "or later lifecycle step applies" condition, so a one-shot PR that still needs monitor/merge could get routed to the bundled pr skill / /commit-push-pr purely because it has no draft/body-contract concern.

Both are named as ## Fix this → links with a proposed reword direction, scoped to stay inside the
existing description length budget.

Not independently verified (author-claimed in the PR body, not re-run by this review): the
overlap.py self-check / generate --check results, the 172-test test_overlap.py run,
check-changed-skills.sh, validate-plugin-contracts.mjs, check-changelog-parity.sh,
check-spoke-plugin-root.sh, the typos/ai-slop reports, and the exact 654/1536 and 659/1536
character counts.

No other correctness issues found — the records.json/native-surfaces.md row flips match the
four store rows the PR body enumerates, the plugin version bump and both CHANGELOG entries are
consistent with each other and with this convention's own patch/minor/major precedent, and the
gate token (resolves in this session) matches the canonical form.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed4028d011

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/source-control/skills/pull-request/SKILL.md Outdated
…parate routes

Codex review on #5503: one "prefer it" clause treated the two native PR
surfaces as interchangeable, but /commit-push-pr also commits, so a
one-shot PR request with unrelated uncommitted changes could commit them.
The description and the Boundary routing now send committed work to `pr`
and reserve /commit-push-pr for a whole working tree that belongs in the
commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread plugins/source-control/skills/commit/SKILL.md Outdated
Comment thread plugins/source-control/skills/pull-request/SKILL.md Outdated
@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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


Security review complete

This PR is a documentation/metadata bake plus one fix commit; no executable-logic changes. Full diff reviewed: docs/conventions/native-references/{CHANGELOG,README}.md, docs/native-surfaces.md, docs/native-surfaces/records.json, plugins/source-control/.claude-plugin/plugin.json, plugins/source-control/CHANGELOG.md, and the two skill descriptions in commit/SKILL.md and pull-request/SKILL.md.

Instruction-surface lens (this diff edits routing descriptions, so it was checked deliberately against docs/conventions/instruction-exception-register/README.md, present in this checkout):

  • pull-request/SKILL.md — the latest commit (e584ad7) fixes the previously-flagged conflation of the two native PR routes: it now distinguishes "pr opens a PR from already-committed work" from "/commit-push-pr only when the whole working tree belongs in the commit," and states unrelated uncommitted changes always route to pr, never /commit-push-pr. This tightens the data-integrity guardrail (avoiding a native tool committing unrelated changes) rather than weakening it — no finding.

  • commit/SKILL.md — one finding remains open and unaddressed by this push (posted inline, line 2):

    IMPORTANT — the new description clause "prefer the first for a plain commit with no repo convention" is a narrower-sounding but practically broader trigger than the unchanged Boundary section it's meant to restate (line 376: "prefer it only for a plain commit where none of this skill's contract is wanted"). Since the description is the only part a model reads at skill-selection time (this PR's own stated rationale), "commit this change" in a repo with no source-control.md layer — the common case — now reads as "prefer the bundled commit skill," bypassing this skill's surgical-staging guardrail (avoiding a git add -A foot-gun), Co-authored-by trailer, and format/exec-bit checks far more often than the Boundary section intends. The Boundary text itself isn't touched, but the routing surface reaching it is now much wider than the rule it's supposed to gate — a data-integrity-adjacent guardrail is effectively softened for most repos without the guardrail text changing.

No injection surfaces, secrets/token handling, auth/access-control logic, or Actions workflow changes in this diff. No other security issues found.
· Branch

🤖 Generated with Claude Code

@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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


CI code review (/review:code-review)

1 finding posted inline.

Summary

This is the latest push (e584ad7) on top of the review that already ran when the draft was marked ready. That earlier push fixed the Codex P2 finding about /commit-push-pr vs. the bundled pr skill being treated as interchangeable — plugins/source-control/skills/pull-request/SKILL.md's description and Boundary section now correctly split "work already committed → pr" from "whole tree belongs in the commit → /commit-push-pr", so I'm not re-flagging that one.

plugins/source-control/skills/commit/SKILL.md, however, was untouched by that fix commit, and the routing-narrowing finding raised against it earlier still stands unaddressed — flagged again inline at commit/SKILL.md#L2: the new description clause's trigger ("no repo convention") is narrower than the unchanged Boundary section's actual condition ("none of this skill's contract is wanted"), which can misroute a plain "commit this" to the bundled skill in the common case of a repo with no source-control.md file at all — even when this skill's Conventional-Commits default, surgical staging, and trailer/format checks are still wanted.

The remaining changed files (docs/native-surfaces.md, docs/native-surfaces/records.json, the two CHANGELOG.md files, docs/conventions/native-references/README.md, plugin.json) are data/prose updates that stay internally consistent with each other and with the fixed pull-request/SKILL.md wording — no issues found there.

Description-length and test-count figures in the PR body are author-claimed; I did not independently re-run them.

Comment thread plugins/source-control/skills/commit/SKILL.md Outdated
Comment thread plugins/source-control/skills/commit/SKILL.md Outdated
@kyle-sexton
kyle-sexton enabled auto-merge (squash) September 30, 2026 01:56
…ry conditions

Claude review on #5503: the description clauses were narrower than the
Boundary rules they front-load. `commit` said "no repo convention", which
is the common case and would route most commits away even when this
skill's trailer, staging and pre-checks are wanted; the rule is "none of
this skill's contract is wanted". `pull-request` dropped "or later
lifecycle step", so a PR the person wants monitored could leave the skill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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


Security review complete

No security issues found.

This remains a documentation/metadata bake with no executable-logic changes. The latest commit
(cbaa8c5, commit/SKILL.md#L2,
pull-request/SKILL.md#L2)
only edits the description frontmatter field in both skills plus the changelog, closing out the
two routing-narrowing findings raised on prior pushes:

  • commit: description now reads "prefer the first only when none of this skill's
    contract (convention, trailer, surgical staging, pre-checks) is wanted
    ", which matches the
    unchanged Boundary condition at commit/SKILL.md#L376
    verbatim ("none of this skill's contract is wanted"). The earlier "no repo convention" wording,
    which would have misrouted the common case (no source-control.md layer) away from this
    skill's surgical-staging/trailer guardrails, is gone.
  • pull-request: description now reads "only when no draft, body contract, or later ready,
    monitor, or merge step
    applies", matching the Boundary condition at
    pull-request/SKILL.md#L258-263
    ("no draft discipline, body contract, or later lifecycle step applies... the work continues
    into ready, monitor, or merge"). The previously-dropped "or later lifecycle step" condition is
    restored (spelled out as its constituent steps).

Instruction-surface lens: re-checked since this diff again edits routing descriptions. This
commit touches only the description field and the changelog — it does not modify either
skill's ## Boundary section, ## Mutation gate, or any other guardrail text, so there is no new
deletion or narrowing to evaluate against the
instruction exception register
(present in this checkout). The two guardrails this lane previously scrutinized (surgical staging
in commit, the committed-vs-uncommitted PR split in pull-request) are now more accurately
gated by the description, not less.

No injection surfaces, secrets/token handling, auth/access-control logic, or Actions workflow
changes are present in this diff.
· Branch

🤖 Generated with Claude Code

@claude

claude Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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


/review:code-review findings

  • Gather context (PR diff, changed files, prior findings on commit/SKILL.md narrowing)
  • Check skip gate
  • Review current head diff against criteria
  • Post inline findings (if any)
  • Post summary

No findings.

This pass reviewed the latest push, cbaa8c5 ("fix(source-control): make the native route clauses
match their Boundary conditions"), which is a 3-file, 9/8-line diff on top of the head (e584ad7)
the previous CI code-review lane run already reviewed
(comment-adjacent
run at 01:53:26). That prior run left one open finding: commit/SKILL.md's front-loaded routing
clause used a narrower trigger ("no repo convention") than the unchanged Boundary section it
restates ("none of this skill's contract is wanted").

cbaa8c5 fixes exactly that, and nothing else:

  • commit/SKILL.md:2
    now reads "prefer the first only when none of this skill's contract (convention, trailer,
    surgical staging, pre-checks) is wanted", which matches the Boundary section's condition at
    line 376
    verbatim in substance. The routing surface no longer reaches a broader set of requests than the
    rule it summarizes.
  • pull-request/SKILL.md:2
    also gained "...or later ready, monitor, or merge step applies", restoring the "or later
    lifecycle step applies" condition the description had dropped (a separate, earlier-flagged
    finding from before e584ad7, not re-flagged at 01:53:26 because it had already been fixed by
    that point — this push tightens the wording further to name the same three steps the Boundary
    section itself enumerates two lines later, at
    line 263).
  • plugins/source-control/CHANGELOG.md's [0.62.30] entry was reworded in the same commit to
    match both corrected description clauses — no drift between changelog prose and shipped text.

I checked both new description clauses against their respective (unchanged-by-this-commit)
Boundary sections line by line; each now matches its Boundary condition rather than narrowing or
dropping part of it, so no routing-narrowing issue remains, and no new issue was introduced by the
reword.

Description-length and test-count figures in the PR body remain author-claimed; I did not
independently re-run check-listing-budget.sh, overlap.py self-check, test_overlap.py, or the
other scripts named in the Verification section (Bash access in this run is scoped to git/gh
read commands and didn't extend to executing repo scripts).
· Branch

@kyle-sexton
kyle-sexton enabled auto-merge (squash) September 30, 2026 01:58
@kyle-sexton
kyle-sexton merged commit 074e080 into main Sep 30, 2026
19 checks passed
@kyle-sexton
kyle-sexton deleted the feat/native-phrases-source-control branch September 30, 2026 02:01
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…t after #5503

#5503 added route phrases to pull-request's description, so detect
resurfaced this dismissal (description changed). The ruling still holds:
the added text routes to `pr` and /commit-push-pr, and a review briefing
artifact is not the PR lifecycle. Re-dismissed with the same reason,
refreshing both fingerprints. Detect: 0 new, 76 suppressed, 0 resurfaced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…ndidates (#5504)

No related issue: follow-up to #5467, ruling on the candidates its new
built-in agent and tool lanes surfaced (operator decisions Q9 and Q10,
2026-09-29 native-surfaces interview).

## Summary

#5467 taught the inventory to extract Claude Code's built-in subagents
and tools, and taught `overlap.py detect` to score them. That surfaced
new overlap candidates with no rulings, such as `Explore` vs
`discovery:explore`, `Plan` vs `planning:plan`, and
`WebFetch`/`WebSearch` vs `firecrawl`.

## Fix

**Verdict rows** (all `complementary`, `route`, extraction-evidence
against 2.1.285):

| Native surface | Component | Split |
|---|---|---|
| `Explore` (agent) | discovery:explore | Boundary section. Built-in:
one-shot read-only locate. Ours: persisted `EXPLORE.md`. |
| `Explore` (agent) | discovery:explorer (agent) | Registry row only. |
| `Plan` (agent) | planning:plan | Boundary section. Built-in: returns
an approach and cannot write. Ours: approval-gated, persisted PLAN.md. |
| `WebFetch` (tool) | firecrawl:firecrawl | Boundary section. Built-in:
plain unprotected pages. Ours: anti-bot or JS pages, full text on disk.
|
| `WebSearch` (tool) | firecrawl:firecrawl | Boundary section. Built-in:
titles and URLs. Ours: search plus scraped content. |

**Dismissals:** 18 dismissals, each with a one-line reason:
- 17 shared-word false positives: `Write`, `Read`, `Bash`, `PowerShell`,
`Workflow`, `worker`, `Agent`, `SendUserMessage`, `memory_read`, and
further `Explore`/`Plan` pairs.
- `/output-style` vs `animation:learn-style`.

**Other changes:**
- The Boundary sections carry four-part records checked against the raw
`sub-agents.md` and `tools-reference.md` pages.
- No frontmatter description is edited; that belongs to the per-plugin
phrase sweep.
- Version bumps: discovery 0.25.11, planning 0.47.3, firecrawl 0.5.20.
The native-references Adopters table and a CHANGELOG patch entry are
included.

## Verification

- `overlap.py detect` on the 2.1.285 inventory: 0 new candidates in
every lane, 76 suppressed, 0 resurfaced, 0 orphaned.
- `overlap.py self-check`: degraded on the 2 documented advisories only,
63 rows checked. `generate --check`: in sync.
- `test_overlap.py`: 175 tests OK.
- `check-changed-skills.sh origin/main`: 0 failed. Its warnings are
outside the new sections.
- `validate-plugin-contracts.mjs`: 0 warnings. `generate-catalog.mjs
--check`: in sync.
- `check-changelog-parity.sh`: all four modes pass.
- `check-spoke-plugin-root.sh`: clean. typos: clean.

## Related

- #5467 added the lanes. #5466 added the dismissal mechanism.
- #5503 is sweep unit 1. It also touches the store and the
native-references CHANGELOG; whichever merges second takes the next
version.

🤖 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
…Boundary bullets (#5509)

No related issue: sweep unit 2 of the native-reference
description-phrase sweep approved in the 2026-09-29 native-surfaces
interview (Q4).

## Summary

Three `route` verdicts for claude-config carried their routing only in
Boundary sections, which the model reads after it has already picked a
skill. Six Boundary bullets in this plugin also said "Ships with Claude
Code". That is an availability assertion, which the native-references
convention's presence-gated rule forbids (raised by Codex on #5504).

## Fix

- **Description phrases:** each is one presence-gated clause restating
its Boundary section's full routing condition (the lesson from #5503's
review).

  | Native surface | Skill | Clause |
  |---|---|---|
| bundled `fewer-permission-prompts` | audit-permission-state | prefer
it to reduce prompts by writing an allowlist; this skill to see what
permission state is in effect |
| bundled `update-config` | audit | prefer it for a settings change the
person requested; this skill for auditing what is configured |
| bundled `claude-api` | audit-instructions | prefer its `prompt-audit`
for a migration, a target-model change, or application-code prompts;
this skill for the standing instruction-surface audit, and both when a
sweep wants both |

- **Presence wording:** the six "Ships with Claude Code…" bullets now
use the convention's template form, `(<provenance class>)**: what it
does`, with no availability claim.
- **Store:** `baked.description_phrase` is set on the three rows, and
the view is regenerated.
- **Resurfaced dismissals:** the new descriptions made detect resurface
the two `/config` dismissals. `/config` opens the preferences UI, so the
ruling holds, and both are re-dismissed with their original reasons.
Detect: 0 new, 76 suppressed, 0 resurfaced.
- **Not baked:** the `suggest` rows (`/auto-mode-setup`, `doctor`,
`/permissions`), per the operator ruling.
- claude-config 0.53.3; the native-references Adopters table and a
CHANGELOG entry (3.3.3) are updated.

## Verification

- `overlap.py self-check`: degraded, on the 2 documented advisories
only. `generate --check`: in sync. `test_overlap.py`: 175 tests OK.
- `check-changed-skills.sh origin/main`: 0 failed.
- `validate-plugin-contracts.mjs`: 0 warnings. `generate-catalog.mjs
--check`: in sync.
- `check-changelog-parity.sh`: all four modes pass.
- typos: clean. The ai-slop report found nothing.
- Description lengths: 677, 623 and 838 characters, against a cap of
1536.

## Related

- #5503 was sweep unit 1 (source-control).
- #5504 is the Codex finding on the presence wording. The remaining
plugins' bullets are fixed in their own units or in one wording PR.

🤖 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
…ity's description (#5556)

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
#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

- #5503 (source-control) and #5509 (claude-config) were the earlier
sweep units.
- Sweep contract: one plugin per PR, each merged before the next unit
starts (`audit-native-overlap/SKILL.md`).

🤖 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>
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