fix(claude-setup): migrate docs for Opus 5, stop blind staging - #566
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📚 Documentation Check ✅Verdict: Passed The critical requirement is met: packages/plugins/claude-setup/.claude-plugin/plugin.json was bumped from 1.0.5 to 1.1.0, and the version table in root CLAUDE.md was updated to match. No new skills/agents/commands were added, so no other structural docs (plugin.json arrays, marketplace.json, plugin-level CLAUDE.md) need changes. This PR only touches Version bump — satisfied: Consistency checks:
Minor (non-blocking) observation: Per this repo's own semver guidance ("Patch: bug fixes, doc updates, typo fixes" vs "Minor: new skills/agents/commands"), this change set (added guidance sentences, wording fixes) reads more like a patch-level change than a minor one. A 1.0.6 patch bump would have been equally defensible. This is not a correctness problem — a bump was made and the required-file check passes — just flagging the classification as debatable. Suggestions (1)
🤖 Generated by Claude Documentation Validator | Mode: |
|
● Reviewed · 2026-08-05 23:27 UTC · 2 reviews · view run ↗
Migrates AssessmentEach inserted instruction lands where it takes effect: the 200-line CLAUDE.md bound sits outside the template fence (so it instructs the wizard, not the generated file), the inline template bounds sit inside theirs, and the conditionalized Suggestions
|
There was a problem hiding this comment.
Tip
💬 Commented — see full review in the sticky comment ↑
| ```` | ||
|
|
||
| ### 2. Stage All Changes | ||
| ### 2. Stage the Changed Files |
There was a problem hiding this comment.
description: Stage all changes and commit with a descriptive message. That description ships verbatim into the generated .claude/commands/quick-commit.md, so the command a user ends up with says "stage all" while its body says the opposite.
Note
SKILL.md:140 has the same stale text in the wizard's command menu (Stage all and commit with generated message) — outside this diff's hunks, but it needs the same edit.
There was a problem hiding this comment.
Note
✅ Approved — see full review in the sticky comment ↑
Refresh the stale Opus 4.8 model references and apply the Opus 5 prompt deltas that actually exist in this plugin. - Stale facts: README best-practices bullet, the pillar-5 heading, and the anti-patterns table now say Opus 5. The Boris quotation is left verbatim with an editorial note instead of being rewritten. - Output length: agent report templates (verify-app, code-simplifier, build-validator, code-architect, oncall-guide) and the generated CLAUDE.md now carry explicit length bounds. Reasoning-effort settings do not shorten authored deliverables; only explicit instructions do. - Invented numbers: the build-validator report no longer demands build time, a bundle-size delta against main, or npm audit results that its own validation steps never produce. Version bumped 1.0.5 -> 1.1.0 (minor: changes what the generated agents and CLAUDE.md do, not just wording). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
command-templates.md contradicted itself: line 50 says "Never use `git add .` - always review what you're committing", while the /quick-commit template staged everything with the -A flag. Staging everything sweeps in untracked files that were never reviewed: build artifacts, local scratch files, and any secret-bearing config a missing gitignore entry left visible. The "quick" path is precisely where nobody is reading the diff, so it is the worst place to do it. Staged files are now listed individually, matching the other two commit templates in the same file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2742332 to
01bdf0f
Compare
Applies the Opus 5 migration audit to
packages/plugins/claude-setup/. Every.mdunder that directory was read in full; only defects were touched.Deltas addressed
Stale facts (model version)
The plugin recommended Opus 4.8 in three places. All three now say Opus 5:
README.md— "Boris' Best Practices" bullet.references/boris-best-practices.md— the pillar-5 heading (### 5. Opus 4.8 (Most Capable)→### 5. Opus (Most Capable)).references/boris-best-practices.md— the anti-patterns table row (Use Opus 4.8→Use Opus 5).Carve-out honored: the Boris quotation on the next line ("The model choice is unambiguous: Opus 4.8 for everything.") is left verbatim. Rewriting the inside of a quotation would falsify the source. An italic editorial note below it records that the current flagship is Opus 5.
Delta 4 — output length
Reasoning-effort settings do not shorten authored deliverables; only explicit length instructions do. Report sections that lacked one now have one. Highest priority first (agent reports feed another agent's context):
references/agent-templates.md— length bounds added to the## Output Formatsection ofverify-app(40 lines),code-simplifier(40),build-validator(30),code-architect(60), andoncall-guide(40).SKILL.md— the inlineverify-appandcode-simplifiertemplates now bound their## Outputat 20 lines.SKILL.md— the generated CLAUDE.md is bounded at under 200 lines, with the reason stated (it loads into every session in the target repo). This is the plugin's primary deliverable and had no length guidance at all.Invented numbers
build-validator's report template demanded three numeric fields its own validation steps never produce, so a model filling the required fields would fabricate them and they would read as measured:Build time: [X seconds]— the steps never time the build.Bundle size: [X KB] ([+/- Y KB] from main)— the delta requires a base-branch build the template never instructs.Vulnerabilities: [npm audit results]—npm auditis never run; onlynpm ls.Each is now explicitly conditional on the measurement having actually happened, and the report section instructs omitting a line rather than guessing a value.
Total dependencies: Xwas dropped (unmeasured and not actionable). Counts that are derived from real tool output (X passed, Y failed,Files modified,Lines removed) were left alone — arithmetic over measured inputs is fine.Deltas audited and found absent
Reported rather than invented:
verify-apptemplate's checks run real build/test/typecheck/lint commands and report their results, which is grounding, not ceremony. Kept as-is.review-changesis already coverage-first (report every issue found, summarize downstream). The remainingDo NOT/Neveremphasis marks real constraints (git add ., not marking ready while a check fails), not decoration.allowed-toolsinSKILL.mdlists only real tools; noMultiEdit, nobudget_tokens, no OpenAI-only sampling params.Version bump
1.0.5→1.1.0(minor). The length bounds and the omit-unmeasured-fields rule change what the generated agents and CLAUDE.md do, not just the wording of the docs. RootCLAUDE.mdversion table updated in the same commit.CLAUDE.mdandREADME.mdcomponent lists were checked and needed no update: no skill, agent, or command was added, removed, or renamed.Test plan
bunx nx format:write --uncommitted— clean; normalizedagent-templates.md, that normalization is in the commit.bunx markdownlint-cli2 --fix "packages/plugins/claude-setup/**/*.md"—Linting: 200 file(s),Summary: 0 error(s), exit 0.format,lint,lint-markdown,test,typecheck,update-lockfile.grep -rn "Opus 4" packages/plugins/claude-setup/— one remaining hit, the Boris quotation, intentionally preserved.🤖 Generated with Claude Code
AI-Generated Description
Summary
Applies the Opus 5 migration audit to
packages/plugins/claude-setup/, plus one credential-adjacentfix found in the same read: the quick-commit template told users to
git add -A. Every.mdunderthe plugin was read in full; only defects were touched. 7 files, +31/-15.
Stale model version
The plugin recommended Opus 4.8 in three places. All three now say Opus 5:
README.md— the "Boris' Best Practices" bullet.references/boris-best-practices.md— the pillar-5 heading (### 5. Opus 4.8 (Most Capable)→### 5. Opus (Most Capable)).references/boris-best-practices.md— the anti-patterns table row (Use Opus 4.8→Use Opus 5).Carve-out honored: the Boris quotation on the next line ("The model choice is unambiguous: Opus
4.8 for everything.") is left verbatim — rewriting the inside of an attributed quotation would
falsify the source. An italic editorial note below it records that the current flagship is Opus 5.
This matches the exemption already taken in chore(workflows): update model references to claude-opus-5 #558.
Output length
Reasoning-effort settings do not shorten authored deliverables; only an explicit length instruction
does. Report sections that lacked one now have one, agent reports first since they feed another
agent's context:
references/agent-templates.md— bounds added to the## Output Formatofverify-app(40 lines),code-simplifier(40),build-validator(30),code-architect(60), andoncall-guide(40).SKILL.md— the inlineverify-appandcode-simplifiertemplates now bound their## Outputat 20 lines.SKILL.md— the generated CLAUDE.md is bounded at under 200 lines, with the reason stated (it loads into every session in the target repo). This is the plugin's primary deliverable and had no length guidance at all.Invented numbers
build-validator's report template required three numeric fields its own validation steps neverproduce, so a model filling the required fields would fabricate them — and they would read as
measured:
Build time: [X seconds]Bundle size: [X KB] ([+/- Y KB] from main)Vulnerabilities: [npm audit results]npm auditis never run; onlynpm lsTotal dependencies: Xwas dropped (unmeasured and not actionable). CountsX passed, Y failed,Files modified,Lines removed)Quick-commit staged blind
references/command-templates.mdis the source for the slash commands the wizard writes into auser's repo. Its
/quick-committemplate said:git add -Asweeps in untracked files the user never reviewed — build artifacts, local scratchfiles, and
.envfiles that a missing.gitignoreentry left visible. The template's own mitigationwas a one-line "Note: This stages everything," which does not stop the command it just prescribed.
This contradicted the plugin in three other places, including line 50 of the same file (
Never use git add .),SKILL.md:166,references/claude-md-examples.md:27, and thegit add .anti-patterns row in
boris-best-practices.md. So this was an internal inconsistency, not a missingconvention — the correct form was already modeled 250 lines up.
The template now stages named files and states why, so the pattern does not get reintroduced as a
"simplification."
/commit-push-prremains the pointer for the fuller review flow.Deltas audited and found absent
Reported rather than invented:
verify-app's checks run real build/test/typecheck/lint commands and report their results, which is grounding, not ceremony.review-changesis already coverage-first. The remainingDo NOT/Nevermarks real constraints (git add ., not marking ready while a check fails), not decoration.allowed-toolsinSKILL.mdlists only real tools; noMultiEdit, nobudget_tokens, no OpenAI-only sampling params.Version bump
1.0.5→1.1.0(minor). The length bounds, the omit-unmeasured-fields rule, and the stagingchange alter what the generated agents and commands do, not just the wording of the docs. Root
CLAUDE.mdversion table updated in the same commit.Plugin
CLAUDE.mdandREADME.mdcomponent lists were checked and need no update: no skill, agent,or command was added, removed, or renamed.
Test plan
grep -rn "Opus 4" packages/plugins/claude-setup/— exactly one hit, the Boris quotation, intentionally preservedgrep -rn "git add -A"across the plugin — no hits remainbunx nx format:write --uncommitted— clean; normalizedagent-templates.md, that normalization is in the commitbunx markdownlint-cli2 --fix "packages/plugins/claude-setup/**/*.md"— 200 files, 0 errors, exit 0format,lint,lint-markdown,test,typecheck,update-lockfile