DannyMac180/skills/tree/main/modsmith/templates/next-steps-supervisor
next-steps-supervisor
一个 Claude Code 插件,会在真正完成工作的回合后分叉对话,询问目标是否达成、哪些地方走了捷径以及需要批准什么,然后在提示列上方显示带单击式下一步按钮的判定栏。
关于这个 mod
next-steps-supervisor 是一个 Claude Code 插件模板,会对每个改动了内容的回合提供第二意见。当主循环回合以回答结束,并且要么运行了非只读工具,要么发出了 8+ 次工具调用时,分叉的对话副本会提出四个问题:原始目标、目标是否达成(是/部分/否)、哪些地方走了捷径(未运行的测试、留下的存根、未经验证的说法),以及是否有任何事项需要事先批准。结果干净时会收起成一行;否则会展开显示缺口、采取的捷径,以及可执行的下一步按钮,这些按钮会把该步骤作为下一条提示提交(快捷键 n 和 m)。关闭后会清除判定。根据 $.model.fork 合约,分叉中的内容不会进入主对话,因此主上下文不会增长。命令:/supervisor 切换(会持久保存)、/supervisor on|off、/supervisor now 立即检查。它可以与 quiz-after、token-weather、assumption-ledger 以及 mode-registry/effort-modes 组合使用,快捷键不会冲突。通过 claude --plugin-dir /path/to/next-steps-supervisor 安装,并用 claude plugin validate 和 claude plugin test 验证。每个符合条件的回合会产生一次 $.model.fork 成本,转录内容会使用提示缓存,判定栏每次都会报告实际 token 数字。文件包括 .claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx、hooks/verdict.ts、types/index.d.ts 和 tests/supervisor.test.tsx。
安装
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add DannyMac180/skills claude plugin install next-steps-supervisor
原文 / README
next-steps-supervisor
A second opinion on every turn that did real work. When Claude finishes a turn that changed something, a forked copy of the conversation asks four questions about it:
- What was the original goal?
- Did the work actually achieve it? (
yes,partly,no) - Where did it cut corners: tests not run, a stub left in, a claim never checked?
- Did it do anything you should have approved first?
The answer is drawn above the prompt. A clean result takes one line:
✓ Supervisor: Solved · Add retry with backoff to the API client
[ Run the full test suite ] [ Dismiss ]
Anything else expands:
◐ Supervisor: Partly solved · fork: 48k cached, 0.2k new, 0.1k out
Goal: Add retry with backoff to the API client
Gaps
· No retry on 429 responses
Shortcuts taken
· Tests were written but never run
[ Run the client tests and fix failures ] [ Handle 429 with Retry-After ] [ Dismiss ]
Each next-step button sends that step as your next prompt (hotkeys n and
m once the band has focus). Dismiss clears the verdict. A new turn clears
it too.
None of this enters the main conversation: by $.model.fork's documented
contract the fork's question and answer stay outside the transcript, so the
main context does not grow. (In the first live run nothing from the fork reached the main conversation; see
DECISIONS.md.)
Commands
| Command | Does |
| --- | --- |
| /supervisor | Toggle on/off (saved across sessions) |
| /supervisor on / off | Set it explicitly |
| /supervisor now | Check the last turn right away, even when off or un-gated |
What it costs
One $.model.fork per qualifying turn, and only then.
- When it runs: after a main-loop turn that ended with an answer and either ran at least one tool that was not read-only (an edit, a write, a shell command) or made 8 or more tool calls. At most once per turn. Never on chat-only turns, interrupted turns, subagent turns, or while off. If a turn ends while the previous turn's fork is still out, that old reply is dropped and the newer turn is checked as soon as it returns.
- How much: the fork re-sends the main thread's last request with the
question appended, so the API serves the transcript from its prompt cache.
You pay cache-read price on the transcript (typically about a tenth of
normal input), full price on the ~250-token question plus Claude's final
reply for the turn (quoted in the question, capped at its last 4,000
characters, so at most about 1k tokens), and output on a reply of roughly
100-300 tokens. On a 50k-token session that is about 5-6k
input-equivalent tokens per check. These are estimates, not measurements. The band shows the real numbers each time
(
fork: 48k cached, 0.2k new, 0.1k out). - When it gets expensive: if the cache entry has lapsed (typically about
5 minutes after the main thread's last request) or right after
/model, the fork pays full price for the whole transcript. Thecachedfigure falls to near zero when that happens. - It never runs a second time for the same turn. The fork only reads the main thread's cached prefix and its own tail is never cached, so it should not make the next real turn more expensive.
Composes with
- quiz-after: both mods fork after a turn and both draw above the prompt.
This mod draws its verdict and then
{await next(e)}underneath, so the quiz (and anything else below it in the chain) still shows. Neither hides the other. Hotkeys are chosen not to clash: quiz-after uses1-3,s,x; this mod usesn,m. - token-weather and other AbovePrompt bands: same rule, they draw below.
- assumption-ledger: the ledger records what Claude assumed; the supervisor judges whether the result met the goal. Running both gives you "what it assumed" and "whether it worked" side by side.
- mode-registry / effort-modes: no direct link. A future mode could turn the supervisor on only for high-effort domains (API, security).
When a survey holds the band, this mod yields completely and draws only what is below it.
Install / load
claude --plugin-dir /path/to/next-steps-supervisor
Check it before loading:
claude plugin validate /path/to/next-steps-supervisor
claude plugin test /path/to/next-steps-supervisor
Files
.claude-plugin/plugin.json manifest, types pointer
hooks/hooks.json { "modules": ["./register.tsx"] }
hooks/register.tsx gating, the fork, /supervisor, the band
hooks/verdict.ts fork prompt and a tolerant JSON parser
types/index.d.ts Verdict type and PluginState entry
tests/supervisor.test.tsx gating, final-reply quote, queued check, drawing with what is below, button submit