Skip to content

refactor(debugging): rename diagnose skill to debug - #268

Merged
kyle-sexton merged 1 commit into
mainfrom
refactor/debugging-diagnose-to-debug
Jul 17, 2026
Merged

refactor(debugging): rename diagnose skill to debug#268
kyle-sexton merged 1 commit into
mainfrom
refactor/debugging-diagnose-to-debug

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

What

Renames the debugging plugin's sole skill: /debugging:diagnose/debugging:debug. One atomic rename PR per the shadowed-skill-renames contract (#256): directory (git mv) and frontmatter name move together, and all repo-wide references update in the same PR.

  • plugins/debugging/skills/diagnose/plugins/debugging/skills/debug/ (all bundled files)
  • Frontmatter name: debug; description unchanged — already third-person what+when, and keeps "diagnose this" as a trigger phrase
  • Internal ${CLAUDE_PLUGIN_ROOT}/skills/diagnose/... paths, self-references, checklist/reference headers, and evals updated
  • plugins/debugging/README.md invocation line updated
  • plugins/verification/skills/confirm/evals/evals.json boundary notes updated
  • docs/MIGRATION-PLAYBOOK.md non-router-skill example updated
  • plugins/debugging bumped 0.3.0 → 0.4.0 (0.x breaking-by-minor precedent); new CHANGELOG.md with the breaking entry

Why

The skill runs the full repro → hypothesize → fix → regression-test loop; "diagnose" promised only the first half, and twinned confusingly with the unrelated /testing:diagnose (a read-only test-failure investigator that keeps its name). Pre-migration shadow-compromise naming is no longer needed now that plugin namespacing exists.

Breaking change

  • /debugging:diagnose no longer resolves; invoke /debugging:debug. Clean break — no renames-map entry per the contract (marketplace renames map unchanged; its existing "diagnose": "debugging" entry is the historical plugin-level rename).
  • No collision with Claude Code's built-in bundled /debug skill: plugin skills have no bare command form, so the plugin skill is only reachable as the namespaced /debugging:debug.

Deliberate skips

  • plugins/testing/**/testing:diagnose is a different skill and keeps its name.
  • docs/topics/plugin-organization/PLAN.md — historical record of the earlier plugin reorganization (its D3/D13 rows describe decisions as made at the time).
  • .claude-plugin/marketplace.jsonrenames map untouched (contract constraint); the diagnose tag stays as a discovery keyword, mirroring the retained trigger word.
  • plugin.json keywords keeps diagnose as a discovery keyword.

Verification

  • git grep -n "debugging:diagnose" → 0 hits
  • git grep -n "skills/diagnose" → 0 hits
  • git grep -nE "(^|[^a-z:])/diagnose\b" → 0 hits
  • Remaining diagnose hits in plugins/debugging are the deliberate trigger word in the skill description and the plugin keyword
  • Edited JSON files parse cleanly

🤖 Generated with Claude Code

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

Related

No linked issue. Contract source: #256. Sibling shadowed-skill rename PRs: #269, #270, #271.

BREAKING: /debugging:diagnose is now /debugging:debug. The skill runs the
full repro -> hypothesize -> fix -> regression-test loop; "diagnose"
promised only the first half and twinned confusingly with the unrelated
/testing:diagnose (which keeps its name). Directory and frontmatter name
move together; "diagnose" stays a trigger word in the description. Clean
break per the shadowed-skill-renames contract: no renames-map entry;
plugin bumped to 0.4.0. Claude Code's built-in bundled /debug is
unaffected — the plugin skill is only reachable as the namespaced
/debugging:debug.

Repo-wide sweep updates the skill's internal ${CLAUDE_PLUGIN_ROOT} paths,
evals, checklist and reference headers, the plugin README, the
/verification:confirm evals boundary notes, and the MIGRATION-PLAYBOOK
example. Historical records (marketplace.json plugin-level renames map,
docs/topics/plugin-organization/PLAN.md) deliberately untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C
@claude

claude Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

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


PR Review: refactor(debugging): rename diagnose skill to debug

  • Gather context and understand request
  • Review changed files
    • plugins/debugging/skills/debug/SKILL.md
    • plugins/debugging/skills/debug/evals/evals.json
    • plugins/debugging/skills/debug/reference/ecosystem-debugging.md
    • plugins/debugging/skills/debug/templates/checklist.md
    • plugins/debugging/.claude-plugin/plugin.json
    • plugins/debugging/CHANGELOG.md
    • plugins/debugging/README.md
    • plugins/verification/skills/confirm/evals/evals.json
    • docs/MIGRATION-PLAYBOOK.md
  • Verify no stale references remain
  • Post review

This is a clean, well-scoped atomic rename. The core contract — directory + frontmatter move together, discovery keywords and trigger phrases preserved, cross-plugin references swept — is satisfied. I independently verified the claimed greps: debugging:diagnose has zero hits outside of the CHANGELOG (which is the correct historical record), and skills/diagnose has zero hits. One minor finding below.

Finding: CHANGELOG.md missing date in version header

File: plugins/debugging/CHANGELOG.md, line 6

The file declares it follows Keep a Changelog 1.1.0, which specifies the version header format as ## [version] - YYYY-MM-DD. The entry reads ## [0.4.0] with no date, which is a spec deviation — a consumer scanning the changelog won't know when the breaking change shipped.

-## [0.4.0]
+## [0.4.0] - 2026-07-17

Fix this →

Everything else looks correct

  • Internal ${CLAUDE_PLUGIN_ROOT} paths — all updated from skills/diagnose/ to skills/debug/ across SKILL.md, checklist.md, ecosystem-debugging.md, and the HITL script reference. ✓
  • Frontmattername: debug, argument-hint example, and self-reference in the skill body all updated. ✓
  • Evalsskill_name: "debug" and all six eval prompts use /debugging:debug. ✓
  • Cross-plugin referenceverification/skills/confirm/evals/evals.json eval id 3 correctly routes to /debugging:debug in both expected_output and expectations. ✓
  • MIGRATION-PLAYBOOK.md — the non-router-skill example (e.g. \debug`) correctly replaced from diagnose`. ✓
  • Version bump — 0.3.0 → 0.4.0 is correct under the 0.x breaking-by-minor precedent. ✓
  • diagnose retained as discovery keywordplugin.json keywords and the skill description trigger phrase preserved intentionally. ✓
  • Deliberate skips — marketplace renames map, plugin.json keywords, PLAN.md historical record, and plugins/testing/** are all correct non-touches. ✓

One non-blocking minor: the CHANGELOG date. Otherwise approve-ready.

@kyle-sexton
kyle-sexton merged commit eba8f67 into main Jul 17, 2026
23 of 24 checks passed
@kyle-sexton
kyle-sexton deleted the refactor/debugging-diagnose-to-debug branch July 17, 2026 16:40
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## What

Renames the `work-items` plugin's `scan` skill to `scan-todos` —
directory (`plugins/work-items/skills/scan` → `scan-todos` via `git
mv`), frontmatter `name`, and every live repo-wide reference, atomically
in one PR. One of the sequenced shadowed-skill-rename PRs (contract:
`docs/topics/shadowed-skill-renames/PLAN.md`, PR #256).

## Why

Under the `work-items` namespace, bare `scan` read as scanning tracker
items. The skill sweeps the codebase's **source comments** for
TODO/FIXME/HACK/XXX markers (and can resolve or file each) — the name
now states its object. Per the fetched skills doc
(https://code.claude.com/docs/en/skills), the invocation name comes from
the skill directory name, so the directory and frontmatter `name` move
together.

## Breaking change

- `/work-items:scan` no longer exists; invoke `/work-items:scan-todos`.
- No `renames`-map entry (settling-phase policy: clean break + version
bump).
- `work-items` plugin bumped **0.7.0 → 0.8.0** with a `Changed
(breaking)` CHANGELOG entry.

## Changes

- `skills/scan/` → `skills/scan-todos/` (`SKILL.md` +
`evals/evals.json`); frontmatter `name: scan-todos`; description
sharpened to state the object (source comments, not tracker items);
usage line and eval `skill_name`/prompt updated.
- Sibling-skill cross-references updated: `track`, `triage`, `work`,
`decompose` descriptions; `track`'s scope note and legacy-verb router
(`scan` → `/work-items:scan-todos`).
- Shared docs: `reference/tracker-seam.md`, `reference/topic-docs.md`,
`templates/checklist.md`, plugin `README.md`.
- `plugin.json` version bump; new `[0.8.0]` CHANGELOG entry.

## Deliberate skips

- Historical CHANGELOG entries (0.7.0 migration table and older) left
verbatim.
- `track/SKILL.md` legacy-verb list keeps the old bare verb `scan` on
the left of its routing arrow (it names the retired monolith
sub-action).
- English-verb "scan"/"scanning" prose (plugin description, `add.md`,
unrelated plugins) untouched.
- `.claude-plugin/marketplace.json` untouched — it carries no skill
names or per-plugin version, and no `renames` entry is added by policy.

## Verification

- `git grep "work-items:scan"` → only `scan-todos` forms and the
preserved historical CHANGELOG rows.
- `git grep "skills/scan\b"` → no hits.
- Skill-name/directory agreement: `name: scan-todos` matches
`skills/scan-todos/` (invocation name derives from the directory per the
official skills doc).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

## Related

No linked issue. Contract source: #256. Sibling shadowed-skill rename
PRs: #268, #270, #271.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## What

Renames the `machine-health` plugin's `check` skill to `audit` —
directory (`skills/check/` → `skills/audit/`) and frontmatter `name`
move together — with all repo-wide references updated atomically. Part
of the shadowed-skill-renames program (contract:
`docs/topics/shadowed-skill-renames/PLAN.md`, PR #256).

## Why

The skill emits a findings report (dated markdown, CRIT/WARN/UNKNOWN
sections, trend deltas), not a deterministic pass/fail gate. The
marketplace naming grammar reserves `check` for deterministic gates and
`audit` for read-only reports. "check" / "health check" remain as
description trigger phrases so discovery is unaffected.

## Breaking change

- `/machine-health:check` → `/machine-health:audit`. The plugin ID
(`machine-health`) is unchanged.
- Plugin version bumped `0.4.0` → `0.5.0` (0.x breaking-by-minor
precedent) with a CHANGELOG breaking-rename entry.
- No `renames`-map entry, per the program constraint (clean break while
the marketplace settles).

## Follow-up noted (not fixed here)

The audit contract requires bare invocation to be read-only, with
mutation only behind an explicit user override. Today, remediations
default to **not approved** (`approvals.json` empty; first run forces
dry-run), so a bare invocation on a fresh install never mutates.
However, once a user seeds approvals via `/machine-health:setup`,
subsequent bare `weekly`/`on-demand` invocations execute those
pre-approved remediations without a per-invocation flag (`DryRun`
defaults to `$false`). Whether persistent approval satisfies the
"explicit user override (flag/argument)" clause, or the default should
flip to dry-run absent a flag, is left as a follow-up decision —
behavior is intentionally unchanged in this PR.

## Deliberate skips

- `plugins/machine-health/CHANGELOG.md` `[0.4.0]` entry still says
`/machine-health:check` — historical record, not rewritten.
- Schema `$id` URNs `urn:claude-code-plugin:machine-health:check-result`
/ `...:checks` — these name the check-result/catalog schemas (individual
*checks* remain the domain vocabulary), not the skill.
- `docs/topics/plugin-organization/PLAN.md` D17 (`machine-health` →
`check`) — historical decision record.
- `check-catalog.md` reference filenames and all `Test-*`/`*Check*`
script names — domain vocabulary for individual checks, unchanged.

## Verification

- `git grep -n "machine-health:check"` → only the historical 0.4.0
CHANGELOG entry, the new 0.5.0 migration note, and the schema URNs
above.
- `git grep -nE 'skills[/\]check\b'` → clean (forward- and backslash
path forms swept, including PowerShell examples in the skill README and
testing reference).
- Frontmatter `name: audit` matches the directory name (agentskills.io
constraint).
- marketplace.json `renames` map untouched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

## Related

No linked issue. Contract source: #256. Sibling shadowed-skill rename
PRs: #268, #269, #271.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
)

Codifies the marketplace naming convention in PLUGIN-PHILOSOPHY:

- Imperative-verb grammar; namespace supplies the object. Documented
deviation from the official gerund preference (sanctioned alternative +
collection-consistency requirement), chosen for sentence-composability.
- Fixed verb meanings: `audit`/`scan` read-only (mutation only behind
explicit override), `check` = pass/fail gate, `clean`/`tidy`/`fix`
mutate, `setup`, `update`.
- Sanctioned exceptions: knowledge/lifecycle-object noun routers,
vendor-wrapper stutter, `-deep` isolation tier.
- Cross-plugin reference rule: declared `dependencies` (auto-install) or
"if installed" guard — bare references are defects.
- Adds the `shadowed-skill-renames` topic contract (interview output)
that drives the follow-up rename PRs.

Sources fetched this session, linked in Authoritative references
(verified 2026-07-17). No external content copied.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

## Related

No linked issue. Companion doctrine PR: #257. Drives the follow-up
shadowed-skill rename PRs: #268, #269, #270, #271.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## What

Renames the `toolchain` plugin's `build` skill to `check` — one atomic
rename PR from the shadowed-skill-renames plan
(`docs/topics/shadowed-skill-renames/PLAN.md`, PR #256):

- `git mv plugins/toolchain/skills/build plugins/toolchain/skills/check`
(directory name is what sets the `/toolchain:check` command; frontmatter
`name` moved with it)
- Repo-wide reference sweep: every living reference to
`/toolchain:build` updated — `verification:confirm`'s Stage-1
delegation, `implementation:implement` / `implement-dispatch` build-gate
references, `testing:*` SSOT citations, `toolchain:lint` /
`toolchain:setup` cross-references, reference YAMLs, READMEs, evals,
`docs/conventions/ecosystem-commands`, and the plugin-organization
decision record's live seam reference
- `toolchain` plugin bumped 0.1.1 → 0.2.0 with a breaking-rename
CHANGELOG entry
- No `renames`-map entry, per the plan's constraint (clean breaking
change while the marketplace settles)

## Why

The skill runs build + test + lint as a deterministic pass/fail gate;
per the marketplace naming grammar `check` = deterministic gate. "build"
is also a null phase for several covered ecosystems (Python, Markdown),
so the old name under-described what the skill does. Description keeps
the "build", "does it compile", "run tests" trigger phrases so
auto-invocation behavior is unchanged.

## Breaking

`/toolchain:build` no longer exists — invoke `/toolchain:check`.
Arguments, behavior, and the resolution ladder are unchanged. Consumers
get the rename via the 0.2.0 plugin bump; there is no automatic
renames-map migration.

## Verification

- `git grep toolchain:build` → hits only in historical CHANGELOG entries
(implementation, testing, verification, source-control, toolchain 0.1.0)
and the new 0.2.0 breaking-rename note
- `node scripts/validate-plugin-contracts.mjs` → pass (17 setup skills,
1377 plugin files)
- `scripts/check-cross-plugin-source-drift.sh --check` → clean
- `markdownlint-cli2` over touched markdown → 0 errors
- Skill-name mechanics verified against
https://code.claude.com/docs/en/skills (plugin skill command name =
directory name, namespaced by plugin)

Deliberate skips: historical CHANGELOG entries and the pre-split
skill-name list in `plugins/implementation/README.md`'s migration
section keep the old name as historical record; `marketplace.json`
`tags`/`keywords` keep "build" (still functionally descriptive); no
vendor/ or `.work/` touched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

## Related

No linked issue. Contract source: #256. Sibling shadowed-skill rename
PRs: #268, #269, #270.

---------

Co-authored-by: Claude Fable 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