feat(format-plugins): declare and probe prerequisites in the five remaining format plugins - #5468
Conversation
…check skill Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…check skill Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… check skill Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e to the manifest Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tart, add check skill Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in-prerequisite-probes
…obe in the path-probe table Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in-prerequisite-probes
…ite probes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he actionlint key The shfmt, shellcheck and ruff notices moved to the prerequisite class, which latches once per session across agents. The bash-format and ruff-format README and setup text still said once per session and agent; only the jq notice is per agent. Both CHANGELOG entries now record the widened latch, the kept install route on renewal, and that the probe shares the hook's latch key. actionlint's hook latched on actionlint-missing while its probe latched on actionlint-actionlint, so both notices fired on a host without the binary. The hook now uses the probe's key, pinned by a suite case. Also list /actionlint:check in the prerequisites Next section and mark the biome, go and markdown rows of the path-probe table as having a probe. Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The new SessionStart probe latches on the same key as the PostToolUse missing-typos notice, so the first PostToolUse notice stays silent until the renewal. The 0.8.0 entry listed only the probe. Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in-prerequisite-probes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…or .venv/bin/ruff Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in-prerequisite-probes Re-bump claude-ops to 0.70.1 above main's 0.70.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… does - hooks.json descriptions in actionlint, bash-format, ruff-format, typos-format and powershell-format name the SessionStart probe. - ruff-format: the probe checks the working directory plus seven ancestors, not eight, and a Windows host whose only ruff is .venv/Scripts/ruff.exe still gets the probe notice. - powershell-format: a machine without pwsh is INFO in check, and the probe notice appears on it once per session while the plugin is enabled. Refs #5286 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in-prerequisite-probes
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 7m 44s —— View job Code review complete
Scope reviewed: all 55 changed files ( What I checked directly:
Not independently verified: I could not execute the shell test suites or Non-blocking observation (not filed as a finding): No correctness bugs specific to this PR's changes met the high-signal bar for an inline finding. |
|
Claude finished @kyle-sexton's task in 1m 46s —— View job Security review complete
Reviewed the diff ( No security-relevant surface. This PR adds SessionStart prerequisite probes,
Nothing rises to CRITICAL/IMPORTANT/SUGGESTION; this is a low-risk, internal-tooling change confined to static manifest parsing and notice text. 🤖 Generated with Claude Code |
…in-prerequisite-probes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 3m 18s —— View job Security review complete
No security issues found. What changed since the last completed security review on this PR (which ran against
None of that touches the security-relevant surface (the shared
This is a low-risk, internal-tooling change confined to static manifest parsing and notice text; nothing rises to CRITICAL/IMPORTANT/SUGGESTION. 🤖 Generated with Claude Code |
|
Claude finished @kyle-sexton's task in 4m 45s —— View job Code review complete
Scope reviewed: all 55 files in the PR diff at head Note on scope: the diff between What I checked directly:
Not independently verified: shell test suite execution ( Non-blocking observations (not filed as findings):
No correctness bugs specific to this PR's changes met the high-signal bar for an inline finding. |
…in-prerequisite-probes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 45s —— View job Code review complete
Skip gate hit: this head already has a successful review from this lane that still applies. This lane already completed a full code review of this PR's substantive diff at commit
No new review surface. The prior findings summary stands: no correctness bugs met the high-signal bar in either pass; the only non-blocking observation raised (the ceiling-less |
|
Claude finished @kyle-sexton's task in 1m 25s —— View job Security review complete
No security issues found — skip gate applies (head already has a successful security review that still applies). This head (
So the security-relevant surface reviewed at Nothing rises to CRITICAL/IMPORTANT/SUGGESTION. |
Closes #5286
Summary
bash-format, ruff-format, typos-format, actionlint and powershell-format probed binaries with no manifest, so
/claude-ops:prerequisitesreportedmissing=0on a host lacking their tools. Each now declares its prerequisites, probes at SessionStart and ships acheckskill.Fix
prerequisites.json, a SessionStart probe, andskills/check; its hook notice names the check skill.shfmt,shellcheck) and ruff-format (ruff) move their missing-tool notices to theprerequisiteclass: once per session, shared by all agents, install route kept on renewal. Thejqnotice stays once per session and agent.pwsh), the SessionStart probe and the PostToolUse notice share one latch key, so the probe's notice counts as the first and the first PostToolUse notice stays silent until the renewal. actionlint's hook latched onactionlint-missingwhile its probe usedactionlint-actionlint; the hook now uses the probe's key, and a suite case pins it.scripts/check-prerequisite-probes.test.shbinds each notice text to its manifest and covers the new plugins.docs/formatter-path-probes.md, the skill cheat sheet and the leaf-name registry list the new probes and skills.prerequisitesNext section points at every formatter and linter check skill,/actionlint:checkincluded.hooks.jsondescription of each of the five plugins names the SessionStart probe..venv/bin/ruff, and say that a Windows host whose only ruff is.venv/Scripts/ruff.exestill gets the probe notice (the manifest holds onelocal_binand the probe script is shared byte-for-byte by every probed plugin, so a second path is a shared-schema change left out of this PR).pwshis INFO incheck, and the probe notice appears on it once per session while the plugin is enabled (owner decision Q1 A on hooks: missing external tools are not surfaced to the user; add a model-invocable fleet-wide prerequisites check (no auto-install) #4240); the setup skill and its evals no longer call it not-applicable by design.Verification
scripts/check-changelog-parity.sh --check,--check-order,--check-bump origin/mainand--check-preserved origin/main: pass.scripts/validate-plugins.sh: all manifests and the catalog validated.scripts/sync-hook-utils.sh --check,scripts/sync-exec-bash.sh --check,scripts/check-changed-skills.sh origin/main,scripts/generate-cheatsheet.mjs --check,check-evals-quality.shon the two edited evals files: pass.actionlint-missingkey.scripts/check-prerequisite-probes.test.sh: 51 cases, 0 failed. It runs in CI (ci.yml).check-prerequisites.test.sh(claude-ops): 30 cases, 0 failed.plugins/bash-format/CHANGELOG.md0.8.5 andplugins/ruff-format/CHANGELOG.md0.7.5). That correction satisfies AC4; the probes now exist.Related
Refs #4240, #5096. PR 5377 covers playwright, biome and markdown separately.
🤖 Generated with Claude Code