A hardened-mode MCP server plugin for Claude Code that enforces evidence-based verification, turn-end gating, and delivery-of-value (DoD) tracking through hook-based validation and skill-based task orchestration.
Both tools are hook-based validators with minimal, domain-specific schemas. evidence-lint and turn-end-gate are READ_ONLY hooks that validate state transitions, not general-purpose agent tools. Naming is clear (verb_noun pattern), but descriptions are highly specialized and assume deep familiarity with build-it's hardened mode semantics. Input schemas are present but sparse: evidence-lint accepts tool_name, tool_input (with file_path, content/new_string); turn-end-gate accepts transcript_path and stop_hook_active. Neither tool has output schema documentation. Error handling is fail-open by design (intentional for hooks), but descriptions lack guidance on what LLMs should do when hooks reject actions. These are not traditional agent tools, they are Claude Code hooks that intercept and gate tool invocations, making them unsuitable for general LLM composition.
Claude Code PreToolUse hook that validates report writes in hardened mode. Rejects any DoD row marked VERIFIED whose evidence cell is empty or has no matching entry in .taskstate/evidence.md. Fail-open: any script error allows the write and logs to .taskstate/hooks.log.
Claude Code Stop hook that blocks ending a turn whose final paragraph is a promise/plan pattern while .taskstate/dod.md still shows unfinished DoD criteria. BLOCKED is a valid terminal state, not a promise. Fail-open: any script error allows the stop and logs to .taskstate/hooks.log.
No output schema documented. Both hooks return JSON with hookSpecificOutput or empty response, but LLMs cannot predict structure or plan downstream actions.
Descriptions assume deep domain knowledge (build-it hardened mode, DoD criteria, ledger matching). LLMs cannot infer when to invoke these hooks or what they validate without external context.
Input schemas lack descriptions for parameters. 'tool_input' is an object with nested properties (file_path, content, new_string) but no guidance on which fields apply when. 'stop_hook_active' boolean lacks context.
Fail-open error handling is intentional but undocumented in tool descriptions. LLMs cannot distinguish between 'hook allowed the action' (success) and 'hook crashed and failed open' (silent bypass).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
These are Claude Code hooks, not general MCP tools. They intercept tool invocations within a specific IDE/agent context, not standalone agent tools. Scoring as MCP tools is a category mismatch.