/hook-plan-critic
Criticize a hook-plan. Do not write hooks. Do not turn REVISE into a new plan unless asked.
Outcome
You hold a verdict: PASS, REVISE, or REJECT. The hook-plan file is unchanged.
Assumptions
- A
{collection}-{slug}-hook-plan.mdexists. - Skill file:
.agents/skills/hook-plan-critic/SKILL.md - MCP tools are visible.
Non-goals
- Do not write hooks.
- Do not implement.
- Do not write the next artifact unless the user asks for a new plan.
Contract
The critic is read-only. It audits redundancy, overlap, blast radius, style, and Pattern grammar.
Criticizing a hook-plan is scope=IN.
Re-query hook_graph for the planned path and callees.
Syntax
If the slash name does not start the skill, put @.agents/skills/hook-plan-critic/SKILL.md on line 1.
Expected result: Findings with plan section and MCP evidence. Then PASS, REVISE, or REJECT.
Fields
Rules to load
.agents/rules/mcp.md.agents/rules/logic/thinking.md.agents/rules/hook-utils-mcp.md.agents/rules/hook-utils-forbidden-constraints.md.agents/rules/hook-utils-patterns.md- The selected authoring specialist from
.agents/rules/hook-utils-patterns.md .agents/rules/hook/style-reviewer.md.agents/skills/hook-code-style/SKILL.md.agents/rules/hook/coder.md— path-load. Do not recopy.
Gate plan claims against coder BIND and CHECK: one LogicHookPattern, Pattern grammar order, ok + data, no invented identities.
The coder rule does not load thinking.md. This skill does.
Checklist
- Pattern is exact.
hookis last resort with a rejection matrix. execute()order matches Pattern grammar.- Identity forbiddens of the pattern hold. Example: no persist on read-only patterns.
- Shared forbiddens hold. No invented names. No unbounded
.all(). No swallowed errors. - Redundancy: an existing hook already does this job.
- Overlap: two planned writes to the same document, or competing unique keys.
- Blast radius: upstream callers and downstream effects named. 🟢 / 🟡 / 🔴 honest.
- Style: one class, one
execute(),ok+data, structured errors, interface keys. - Unknowns stay questions. They are not guessed fields.
Verdict
| Verdict | When |
|---|---|
REJECT | Pattern wrong, grammar order violated, or required evidence UNKNOWN |
REVISE | Incomplete gates, overlap, or understated blast without a blocker |
PASS | No blocker remains |
Cite plan section and MCP evidence.
Constraints
- If the verdict is not
PASS, revise the hook-plan. Do not callhook-coder. - After
PASS, implement with@.agents/rules/hook/coder.md. That rule is not a skill.
Errors
| Problem | Cause | Action |
|---|---|---|
| Tools missing | MCP not registered | Stop. Fix Setup. |
REJECT on pattern | Wrong or generic LogicHookPattern | Return to /hook-plan |
REJECT on grammar | execute() phases reorder the pattern | Bind Pattern grammar order |
Implement without PASS | Critic skipped | Re-run this skill. Do not write .ts |
Related
/hook-plan/hook-criticafterhook-coderwrites*.hook.ts/hook-code-style