Skip to content

refactor(machine-health): rename check skill to audit#270

Merged
kyle-sexton merged 1 commit into
mainfrom
refactor/machine-health-check-to-audit
Jul 17, 2026
Merged

refactor(machine-health): rename check skill to audit#270
kyle-sexton merged 1 commit into
mainfrom
refactor/machine-health-check-to-audit

Conversation

@kyle-sexton

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

Copy link
Copy Markdown
Contributor

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.00.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-healthcheck) — 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.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

Related

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

The skill emits a findings report, not a deterministic pass/fail gate;
the marketplace naming grammar reserves `check` for gates and `audit`
for read-only reports. Directory and frontmatter `name` move together;
"check"/"health check" remain description triggers. All repo-wide
references updated atomically; plugin bumped to 0.5.0 with a
breaking-rename CHANGELOG entry (0.x breaking-by-minor precedent, no
renames-map entry).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C
kyle-sexton added a commit that referenced this pull request Jul 17, 2026
## 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.json` — `renames` 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.com/claude-code)

https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C

## Related

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

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@claude

claude Bot commented Jul 17, 2026

Copy link
Copy Markdown

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


PR Review: refactor(machine-health): rename check skill to audit

  • Gather context and read changed files
  • Review plugin manifest and version bump
  • Review CHANGELOG entry
  • Review README changes
  • Review skill frontmatter and content changes
  • Review evals and testing.md updates
  • Check cross-references and verification claims
  • Synthesize findings and post review

Overview

This is a clean, atomic rename from checkaudit across the machine-health plugin. The rename is well-scoped, the deliberate skips are justified, and the verification claims hold up. A couple of minor issues worth addressing before merge.


What checks out ✅

Rename completeness. All the right things were updated together:

  • plugin.json: 0.4.00.5.0 (correct 0.x breaking-by-minor bump)
  • SKILL.md frontmatter name: audit matches the directory name
  • evals.json skill_name: "audit" updated
  • testing.md path references updated to skills/audit/tests/
  • README table and test command both updated

Verification claims verified. git grep for machine-health:check returns only: the schema URNs (domain vocabulary), the 0.5.0 migration note, and the 0.4.0 historical entry — exactly as the PR claims. No stray skills/check path references remain.

Discovery trigger phrases preserved. SKILL.md description retains 'machine health check', 'health check', 'check my computer', 'run health check' — so renaming the command doesn't break natural-language discovery.

Deliberate skips are sound. Schema URN urn:claude-code-plugin:machine-health:check-result names the check-result schema concept (domain vocabulary), not the skill. Script names like Test-* and Invoke-MachineHealthCheck.ps1 follow PowerShell verb conventions and name individual checks — also domain vocabulary. Correct not to rename these. The D17 decision record in docs/topics/plugin-organization/PLAN.md is historical context and correctly left unmodified.

marketplace.json renames map untouched. That map is for plugin-level renames; skill-level renames don't belong there.


Issues

1. Dangling program referencedocs/topics/shadowed-skill-renames/PLAN.md does not exist in the repo (neither on main nor on this branch). The PR body cites it as the program contract and references PR #256. If #256 hasn't been merged or doesn't create this file, consumers and reviewers have no durable anchor for the naming grammar rule (check = deterministic gate, audit = read-only report) that justifies the rename.

This isn't a blocker if #256 is in flight, but consider either: landing #256 first (dependency), or briefly capturing the naming rule in docs/CATALOG-TAXONOMY.md so the contract exists in the codebase.

2. Follow-up behavior gap has no tracking home — The PR body notes that once a user seeds approvals.json via /machine-health:setup, subsequent bare weekly/on-demand invocations run pre-approved remediations without a per-invocation flag (DryRun defaults to $false). Whether this satisfies the audit contract's "explicit user override" requirement is left open. Given this plugin's security posture (remediations that can delete temp files, restart services), a dangling behavioral question in a PR comment won't surface at the right time.

Fix this → — File a follow-up issue so this gets a real decision, not a PR comment that scrolls out of view.


Nit (no action required)

CHANGELOG entries repo-wide omit release dates (pre-existing convention). The [0.5.0] entry is consistent with prior art, but Keep a Changelog specifies ## [0.5.0] - 2026-07-17. Worth standardizing as a separate cleanup.


Verdict

The rename itself is correct and complete. The two issues above are about program tracking (the missing PLAN.md) and security-posture follow-up (the DryRun default), not about the rename's correctness. Safe to merge if PR #256 establishes the naming-grammar contract.

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

Copy link
Copy Markdown
Contributor Author

claude-review findings addressed:

Finding Verdict Action
Dangling docs/topics/shadowed-skill-renames/PLAN.md reference VALID The topic slice was branch-only by convention and has been pruned from PR #256; the program contract now lives durably as issue #280. The naming grammar itself (check = gate, audit = read-only) merges with #256's PLUGIN-PHILOSOPHY changes.
Persistent-approvals vs explicit-override gap untracked VALID Already filed as issue #273 before this review posted.

No code changes needed on this branch.

@kyle-sexton
kyle-sexton merged commit 92bbfc8 into main Jul 17, 2026
23 of 24 checks passed
@kyle-sexton
kyle-sexton deleted the refactor/machine-health-check-to-audit branch July 17, 2026 17:09
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>
kyle-sexton added a commit that referenced this pull request Jul 21, 2026
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