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