Repository navigation
fix: plugin-definitions QA pass — skill nudge reaches the model, repeated guidance trimmed - #10
Merged
Merged
Conversation
Under Claude Code, skill-nudge.sh printed {"systemMessage": ...}. The hooks
reference defines systemMessage as a warning shown to the user, so the nudge
never reached the model it is meant to steer. It now prints
hookSpecificOutput.additionalContext with hookEventName PostToolUse, which
Claude Code injects as a system reminder next to the tool result. Cursor
still gets a plain line.
hooks.json quotes ${CLAUDE_PLUGIN_ROOT} in each command, clearing the
`claude plugin validate` warning that a path with a space splits the
command.
format-on-save.sh described $CLAUDE_FILE_PATH as set by Claude Code; no host
sets it. It stays as an override for tests and manual runs; the stdin
payload's tool_input.file_path (always absolute) is the real source.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both config copies said "keep in sync" and the advice-equals-tooling error already spoke of "both config copies", but nothing compared them. The linter-references check now fails when the scaffold block in skills/go-lint-setup/SKILL.md and references/golangci.v2.yml differ in linters.default, enabled linters or enabled formatters. A new --selftest case proves the check fires on drift and stays quiet on a clean tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
go-testing's description (and the router's Route-then-load table) send can-fail control work to go-testing, but its body never had the rule. It now does. Each of these was stated two or three times and now appears once: - go-idioms: the Go 1.27 go fix changes (table intro, a loose paragraph, and the 1.27 section); strings.CutLast/bytes.CutLast move into the 1.27 table, and the self-referential-constraints note moves to the no-fixer list. - go-coding: the gopls-lsp advice, a paragraph restating Route-then-load, and the orchestrator instruction; drops a reference to "the project research" the consuming model cannot see. - go-errors: the %v-instead-of-%w warning folds into the %w rule. - go-testing: -race, the cryptotest/t.Parallel warning; the compressed-bytes note moves under "Compare stable results". - go-lint-setup: the migrate details and the version-pinning advice; the pointer for what each linter does now names the file that explains it. go-lint-setup pre-approves Bash(golangci-lint *) rather than all of Bash: allowed-tools grants are not gated by workspace trust. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tions The description is loaded into every session; it drops from 1,232 to 984 characters by shortening the dimension list the body already details. The body drops under 10,000 characters by removing instructions stated two or three times: the Skill-tool sentence (step 1 says it), the scope rule, the untrusted-content note, and the paragraph restating steps 1 and 3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Cursor rule named two of the router's five revive rules and omitted gofmt for doc-comment layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A QA pass over the plugin's skills, agent, Cursor rule and hooks, checked against the plugin-dev
skill-development,agent-developmentandhook-developmentguidance and the current Claude Code hooks and skills docs.Fixes
hooks/skill-nudge.shprinted{"systemMessage": …}. The hooks reference definessystemMessageas a "warning message shown to the user"; the model-facing channel ishookSpecificOutput.additionalContext. The hook now uses that, so the nudge can do its job. Cursor still gets a plain line. Tests and the four docs that described the old channel are updated.${CLAUDE_PLUGIN_ROOT}inhooks/hooks.json:claude plugin validatewarned that a plugin path containing a space would split the command. It is quoted now and the warnings are gone.go-testingpromised a rule it did not have. Its description and the router's Route, then load table send "can-fail control" work togo-testing, but the body never covered it. The rule is added.$CLAUDE_FILE_PATHwas described as set by Claude Code; no host sets it. It stays as a test override, and the comments andAGENTS.mdnow say so.reviverules andgofmtdoc-comment layout as the router.Trims (no rule removed)
Guidance stated two or three times now appears once:
go-idiomsgo fixchanges stated once (in Newer in Go 1.27);strings.CutLast/bytes.CutLastget a table row, verified on Go 1.27.1go-codinggo-lint-setupgo-errors,go-testing%v-instead-of-%w;-race; thecryptotest/t.Parallelwarninggo-reviewergo-lint-setupnow pre-approvesBash(golangci-lint *)instead of all ofBash. The skills docs note thatallowed-toolsgrants are not gated by workspace trust.Validator
scripts/validate.pynow fails when the/go-lint-setupscaffold block andreferences/golangci.v2.ymlenable a different default, linters or formatters. Both copies already said "keep in sync", but nothing enforced it. This extends the existing advice-equals-tooling check, so the documented count of three invariants still holds. A new--selftestcase shows the check fires on drift and stays quiet on a clean tree.For the reviewer
go-reviewer's "Import and literal hygiene" dimension is caught entirely byreviveandgo vet, which conflicts with the agent's own "don't report what linters catch" rule. It was left in because CHANGELOG 0.6.0 shows it was added on purpose.Checklist
./scripts/validate.shpasses. The Fixer-column check soft-skipped locally (Go 1.27 on PATH); the Fixer table is unchanged, and CI's 1.26 job runs it.claude plugin validate .passes, with no warnings now.claude --debugsession that edits a*.gofile, to confirm the nudge arrives as a system reminder..cursor-plugin/plugin.jsonpath map kept in step (no components added or removed)[Unreleased]; version bump left for the release commitAGENTS.md,README.md,docs/install.mdanddocs/testing.mdare updated for the hook change.Also run:
python3 scripts/validate.py --selftest(10/10),./scripts/hooks-test.sh(28/28),python3 scripts/validate.py --check-links(64/64).🤖 Generated with Claude Code