Repository navigation
docs(skill): always use the plannotator tool over the CLI when you have it - #1687
Merged
Merged
Conversation
1 task
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.
The failure
In a Claude Code session where the mod had registered the
plannotatortool (listed asmcp__plannotator__plannotator, deferred behind tool search), Claude was asked for an approval and ranplannotator annotate <file> --gate --jsonthrough Bash instead of calling the tool. The skill's tool rule was one hedged sentence. Directly under it, a table headed "Run" listed only CLI commands, including that exact command. The annotate section's strongest instruction was "always add--gate --json", with no tool form for approvals.The change (one file:
apps/skills/core/plannotator/SKILL.md)There is still one skill for every agent, distributed as before. Nothing changes in the installers, the per-host files, or the tool contract.
plannotatortool, always use it":annotate/review/last.{ "action": "annotate", "target": "<file>", "gate": true }, not--gate --json.mcp__plannotator__plannotator) and can need loading through tool search.archive,guide,sessions, review flags other than--base, annotate flags other than--gate/--markdown, and strict exit-code gates.plannotatortool)"."gate": true) and--gate --jsonas the fallback.annotate/review/lastthrough a shell when you have the tool.Reviewed from the clean-room proposal: kept vs cut
Kept: the strong top rule, the approval form with
gate: true, the end-your-turn-and-wait behavior, the note on prefixed and deferred tools, the tool form at the two places that pulled Claude to the CLI (the table and the annotate approval sentence), the "Do not" line, and the description/intro wording.Cut:
plannotator". It is an open heuristic that could match an unrelated tool. The rule names the real prefixed form instead.gate: true. Because the tool is deferred, the skill is what the agent reads before it loads the tool. Leaving the description alone also avoids a conflict with the concurrent CONTRACT edit.last, and{ "action": "last" }is in the tool description.Fact checks against the code: the tool takes only
action,target,gate(annotate only), andoptions.base/options.markdown(packages/shared/plannotator-tool.ts). So--diff-type,--patch-file,--app/--static,--tailscale, and the strict flags all really are CLI-only. The decision "arrives later as a message" on the only host that registers the tool today (the Claude Code mod). The wording stays host-neutral for Pi and OpenCode when they adopt the tool.Tests
bun test apps/hook/server/plannotator-skill-reference.test.ts apps/hook/hooks/mod/tool.test.ts packages/shared/plannotator-tool.test.ts apps/pi-extension/bundled-skill.test.ts: 19 pass, 0 fail. The skill still containsplannotator annotate <file> --gate --json, which the freshness test pins. Every flag the new text mentions exists in the CLI.apps/marketing/src/pages/llms.txt.tsstill strips the opening summary line as before.