feat(source-control): bake native route phrases into commit and pull-request descriptions - #5503
Conversation
…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
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 1m 16s —— View job Security review complete
No security issues found. This PR is a documentation/metadata bake with no executable-logic changes:
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
No standing guardrail (surgical staging, never No injection surfaces, no secrets/token handling, no auth/access-control logic, and no Actions workflow changes are present in this diff. |
|
Claude finished @kyle-sexton's task in 3m 8s —— View job
|
There was a problem hiding this comment.
💡 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".
…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>
|
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: Instruction-surface lens (this diff edits routing descriptions, so it was checked deliberately against
No injection surfaces, secrets/token handling, auth/access-control logic, or Actions workflow changes in this diff. No other security issues found. 🤖 Generated with Claude Code |
|
Claude finished @kyle-sexton's task in 2m 12s —— View job CI code review (
|
…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 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
Instruction-surface lens: re-checked since this diff again edits routing descriptions. This No injection surfaces, secrets/token handling, auth/access-control logic, or Actions workflow 🤖 Generated with Claude Code |
|
Claude finished @kyle-sexton's task in 2m 48s —— View job
|
…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>
…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>
…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>
…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>
…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>
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
routeverdicts 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 bundledcommitskill and the built-in/commit-push-prcommand.pull-request: a front-loaded, presence-gated clause for the bundledprskill and/commit-push-pr.baked.description_phraseflags are set, anddocs/native-surfaces.mdis regenerated.Store rows gated by this change, each
complementary,route, observed by extraction against Claude Code 2.1.284:commit/commit-push-prpr/commit-push-prNot baked: the
/autofix-prrows. They aresuggestrows 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.commit, 659/1536 forpull-request.Related
audit-native-overlap/SKILL.md).🤖 Generated with Claude Code