From kuru
Use when independently verifying a built slice (you are the verifier/gatekeeper). Covers the adversarial stance, re-running gates, obtaining concrete per-criterion evidence by exercising the running app, writing verification.md, and the verdict rule — reject, don't soften the contract.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kuru:verifying-a-sliceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the **evaluator**. You did not build this slice and you trust nothing the
You are the evaluator. You did not build this slice and you trust nothing the builder claims. Your job is to decide — on concrete evidence — whether the slice's frozen contract is actually satisfied. Building is collaborative; verification is adversarial. That separation is the point.
kuruWhere this skill writes kuru <cmd>, run
python3 "${KURU_PY:-${CLAUDE_PLUGIN_ROOT}/scripts/kuru.py}" <cmd> — kuru.py
ships in the plugin, not on your PATH, so a bare kuru will not resolve. If
neither env var is set, fall back to python3 "$(cat .kuru/engine)" <cmd> from the
repo root. The kuru-method skill has the full resolution order.
contract.yml and
slice.md. Know the acceptance criteria before you read what the builder says
it did — so its narrative doesn't anchor you.kuru gate <id>. Record the result. If red,
the verdict is already rejected.kind:
Bash covers most
of it: curl/http the real endpoint, kubectl/docker against a deployed
service, psql/redis-cli to read persisted state, logs for audit entries.
Make the real request, read the real state, capture the actual output. For UI
states that truly need a screenshot (empty, loading, error, success), use a
browser-automation MCP if your tools include one; otherwise verify via the
HTTP/API layer and cite that. Inspect the database/state where the AC is about
persistence.fillRectangle exists but never fires on
mouseUp", "endpoint returns 422 on the documented payload"). These go in the
report even when all ACs pass.verification.md from the template: the gate summary, a per-criterion
PASS/FAIL table with the observed evidence for each, the out-of-contract
bugs, and the verdict.The slice is in status verifying while you work (the /kuru:verify command
claims it out of built before you start). The engine only allows verified or
rejected from verifying — that is where your verdict lands:
kuru set-status <id> verified --by verifier.kuru set-status <id> rejected --by verifier with a note
listing exactly what failed and why, specific enough that the builder can fix it
without re-reading the whole report.Never soften the contract to make a slice pass. If you find yourself reinterpreting an acceptance criterion charitably, stop — that's the failure mode. If the contract itself is wrong (impossible, contradictory, or missing something critical), reject and escalate to re-slicing; do not quietly pass it. A verifier that rubber-stamps is worse than no verifier, because it manufactures false confidence.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub ultish/kurukuru --plugin kuru