Verifies user-gate acceptance criteria by running a self-check on HOW to verify, then executing verification and posting evidence. Routes ambiguous criteria to specifying-gates.
How this skill is triggered — by the user, by Claude, or both
Slash command
/superpowers-extended-cc:checking-gatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
User-gate enforcement is an **opt-in flow**. When the opt-in hook is not registered, executing-plans runs unchanged — no extra checks, no extra context, no extra questions. When the hook IS registered, it routes user-gate tasks through this skill. Keeping the decision logic in a separate skill means:
User-gate enforcement is an opt-in flow. When the opt-in hook is not registered, executing-plans runs unchanged — no extra checks, no extra context, no extra questions. When the hook IS registered, it routes user-gate tasks through this skill. Keeping the decision logic in a separate skill means:
executing-plans stays short and readable.Any one of:
json:metadata has "userGate": true or whose tags contains "user-gate" AND the opt-in hook is active (see the README for how to detect this — if you were invoked via /gate-check, the hook is active by definition)./gate-check <task-id>./gate-check <task-id>.If none of these apply, return to executing-plans without running this skill.
Announce at start: "I'm using the checking-gates skill to verify Task N's acceptance criteria."
TaskGet <task-id> — read the full description.json:metadata fence.requiresUserSpecification: true → go to Step 2 path A.verifyCommand + every acceptanceCriteria names an observable (sensor, HTTP status, file, log line, entity) → go to Step 2 path B.verifyCommand → go to Step 2 path A.Path A — HOW is ambiguous. Invoke specifying-gates (or tell the user to run /specify-gate <task-id>). Stop. Let that skill lock down the mechanics. When it returns, re-enter this skill from Step 1.
Path B — HOW is clear. Continue to Step 3.
Run the verifyCommand (or dispatch the subagent with subagentBrief). Capture exact output.
Map each acceptanceCriteria entry to an observable in the output.
Post one block of text back to the user, using EXACTLY this format (the sibling hooks key off the AC: + PROVEN BY markers):
Gate: <task subject>
AC: <criterion 1> — PROVEN BY <command or excerpt of output>
AC: <criterion 2> — PROVEN BY <...>
...
If every criterion passed → TaskUpdate status=completed.
If any criterion failed → look up failurePolicy:
"stop-plan" → leave the task in_progress, surface the failure to the user, stop."reopen-continue" → leave the task in_progress, move to the next unblocked task."log-continue" → post the failure inline, mark completed anyway, continue.A criterion has a clear HOW when all three hold:
If any of the three is missing for any criterion, HOW is NOT clear → Path A.
Err on the side of Path A. Inventing a HOW silently is the exact failure this flow exists to prevent.
EnterPlanMode or ExitPlanMode./specify-gate — don't walk around it./gate-check slash command.specifying-gates (Path A).executing-plans (or wherever it was invoked from) after TaskUpdate.skills/shared/task-format-reference.md for metadata schema.npx claudepluginhub nakkeez/superpowers3plugins reuse this skill
First indexed Jul 14, 2026
Verifies user-gate acceptance criteria by running a self-check on HOW to verify, then executing verification and posting evidence. Routes ambiguous criteria to specifying-gates.
Final quality gate before reporting task completion (Gate 3). Fills confidence assessment, runs supplementary verification for <95% items, completes self-check checklist. Writes PASS/FAIL result to subtask.md, then calls autoworker:dispatch for routing.
Validates completed tasks against acceptance criteria, maps each AC to evidence, and gates completion on explicit user sign-off (self-approval prohibited). Use after code review when implementation and tests are done.