Validate
Decide whether a change is ready to ship and report the verdict — pass, or fail with the exact
failures someone else can act on. The bar: every acceptance criterion from clarify/plan is
demonstrably met, and every quality gate the repo defines is green, each shown by a command or
observation rather than asserted. This skill is a gate, not a fixer: on failure it hands precise
error-feedback to pr-fix or implement and stops. It does not edit code and does not ship.
Process
- Gather the acceptance criteria. Read the Success criteria from the
clarify/plan artifacts.
These are the goal-backward targets — what must be TRUE about the codebase. If no artifact exists,
reconstruct the criteria from the task description and list them, so the verdict is checkable.
- Discover the repo's own gate commands. Find how this repo lints, type-checks, tests, builds,
and audits — from its scripts/manifest/CI config (
explore when it isn't obvious). Use the repo's
actual commands; never substitute a generic command or invent a gate the repo doesn't define. A
gate the repo doesn't have is skipped as not-applicable (and noted), not faked.
- Run every applicable quality gate — none skippable. The gates, in report order:
lint → typecheck → unit tests → build → integration → e2e → security/audit → bundle-size. This
sequence is the reporting/intent order, not a stop-on-first-failure barrier: run independent gates
in parallel when the tooling allows (dispatch sub-agents when available; otherwise inline), never
stop at the first failure, and capture every gate's output so the report is complete in one pass.
- Check each acceptance criterion, goal-backward. For each criterion, name the test, command, or
direct observation that demonstrates it holds — and run/observe it. A criterion with no evidence is
a FAIL, not a pass-by-assertion; "looks done" is not evidence.
- Render the verdict. PASS only if every applicable gate is green AND every acceptance criterion
has passing evidence. Otherwise FAIL. Report, for each failure: the exact command run, its
error output, and the location (file/line/criterion) — this is the error-feedback
pr-fix
or implement consumes. Do not attempt deep fixes here; a one-line obvious typo is still routed
out, not silently patched.
Never mask a failure to go green
Disabling a test, skipping a spec, loosening a lint rule, or lowering a threshold to make a gate pass
is a hard red flag — it converts a real failure into a hidden one. If a gate fails, report it as a
FAIL with its evidence and route it out. The only legitimate "skip" is a gate the repo genuinely does
not define, recorded as not-applicable.
Output schema (the verdict)
# Validation: <task> — VERDICT: PASS | FAIL
## Gates
- <gate>: PASS | FAIL | N/A — `<exact command>` (on FAIL: error + location)
## Acceptance criteria
- [x] <criterion> — evidence: <test/command/observation>
- [ ] <criterion> — FAIL: <what's missing + where>
## Failures (for pr-fix / implement)
- `<exact command>` → <error output> @ <file:line | criterion>
A PASS verdict means nothing in the Failures section. List every failure, not just the first — one
pass should give the fixer everything to act on.
Red flags
- Skipping a gate that applies, or running them out of order, instead of the full lint→…→bundle-size sequence.
- Disabling/loosening a test, spec, lint rule, or threshold to turn a gate green.
- Substituting a generic command for the repo's own gate command, or inventing a gate the repo lacks.
- Marking an acceptance criterion PASS without a test/command/observation behind it.
- Editing code to fix a failure here instead of routing it to
pr-fix/implement.
- Reporting only the first failure when later gates also failed — the fixer needs the whole set.
- Shipping, merging, or invoking the next skill —
validate returns a verdict and stops.
Verification checklist
1---2name: validate3description: Verify a change is ready to ship by checking it against its acceptance criteria and running the repo's own quality gates in order, then report a pass/fail verdict with the exact failures. Use to decide go/no-go right before shipping — when you want a pass/fail verdict against acceptance criteria and the repo's quality gates (lint/build/test), not a code critique (use `review` for that). It reports — it does not fix (route failures to `pr-fix`/`implement`) and does not ship.4---56# Validate78Decide whether a change is ready to ship and report the verdict — pass, or fail with the exact9failures someone else can act on. The bar: every acceptance criterion from `clarify`/`plan` is10demonstrably met, and every quality gate the repo defines is green, each shown by a command or11observation rather than asserted. This skill is a gate, not a fixer: on failure it hands precise12error-feedback to `pr-fix` or `implement` and stops. It does **not** edit code and does **not** ship.1314## Process15161. **Gather the acceptance criteria.** Read the Success criteria from the `clarify`/`plan` artifacts.17 These are the goal-backward targets — what must be TRUE about the codebase. If no artifact exists,18 reconstruct the criteria from the task description and list them, so the verdict is checkable.192. **Discover the repo's own gate commands.** Find how *this* repo lints, type-checks, tests, builds,20 and audits — from its scripts/manifest/CI config (`explore` when it isn't obvious). Use the repo's21 actual commands; never substitute a generic command or invent a gate the repo doesn't define. A22 gate the repo doesn't have is skipped as not-applicable (and noted), not faked.233. **Run every applicable quality gate — none skippable.** The gates, in report order:24 **lint → typecheck → unit tests → build → integration → e2e → security/audit → bundle-size**. This25 sequence is the *reporting/intent order*, not a stop-on-first-failure barrier: run independent gates26 in parallel when the tooling allows (dispatch sub-agents when available; otherwise inline), **never27 stop at the first failure**, and capture every gate's output so the report is complete in one pass.284. **Check each acceptance criterion, goal-backward.** For each criterion, name the test, command, or29 direct observation that demonstrates it holds — and run/observe it. A criterion with no evidence is30 a FAIL, not a pass-by-assertion; "looks done" is not evidence.315. **Render the verdict.** PASS only if every applicable gate is green AND every acceptance criterion32 has passing evidence. Otherwise FAIL. Report, for each failure: the **exact command run**, its33 **error output**, and the **location** (file/line/criterion) — this is the error-feedback `pr-fix`34 or `implement` consumes. Do not attempt deep fixes here; a one-line obvious typo is still routed35 out, not silently patched.3637## Never mask a failure to go green3839Disabling a test, skipping a spec, loosening a lint rule, or lowering a threshold to make a gate pass40is a hard red flag — it converts a real failure into a hidden one. If a gate fails, report it as a41FAIL with its evidence and route it out. The only legitimate "skip" is a gate the repo genuinely does42not define, recorded as not-applicable.4344## Output schema (the verdict)4546```markdown47# Validation: <task> — VERDICT: PASS | FAIL48## Gates49 - <gate>: PASS | FAIL | N/A — `<exact command>` (on FAIL: error + location)50## Acceptance criteria51 - [x] <criterion> — evidence: <test/command/observation>52 - [ ] <criterion> — FAIL: <what's missing + where>53## Failures (for pr-fix / implement)54 - `<exact command>` → <error output> @ <file:line | criterion>55```5657A PASS verdict means nothing in the Failures section. List every failure, not just the first — one58pass should give the fixer everything to act on.5960## Red flags6162- Skipping a gate that applies, or running them out of order, instead of the full lint→…→bundle-size sequence.63- Disabling/loosening a test, spec, lint rule, or threshold to turn a gate green.64- Substituting a generic command for the repo's own gate command, or inventing a gate the repo lacks.65- Marking an acceptance criterion PASS without a test/command/observation behind it.66- Editing code to fix a failure here instead of routing it to `pr-fix`/`implement`.67- Reporting only the first failure when later gates also failed — the fixer needs the whole set.68- Shipping, merging, or invoking the next skill — `validate` returns a verdict and stops.6970## Verification checklist7172- [ ] Acceptance criteria came from the `clarify`/`plan` artifact (or were reconstructed and listed).73- [ ] Gate commands are the repo's own, discovered from its config — not generic or invented.74- [ ] Every applicable gate ran in order; results captured; none skipped or masked to go green.75- [ ] Each acceptance criterion is backed by a named test/command/observation, not assertion.76- [ ] The verdict is PASS only with all gates green and all criteria evidenced; else FAIL.77- [ ] Each failure reports exact command + error + location for `pr-fix`/`implement` to consume.78- [ ] No code was edited, nothing was shipped, and no next skill was invoked.