--- name: verify-spec description: Verify that a merged design's success criteria are actually met in the live cluster. Deploys the example manifest, watches Flux reconciliation, queries VictoriaMetrics/VictoriaLogs for evidence, writes docs/superpowers/specs/-verification.md. when_to_use: | When the user says "verify the design", "did that actually ship", "check this works", "post-merge verification", "UAT this feature", "prove the success criteria", or after a feature PR has merged and the user wants to close the loop on whether the delivered work satisfies the design's acceptance criteria. disable-model-invocation: true argument-hint: " — path to a docs/superpowers/specs/*-design.md file" paths: "docs/superpowers/**" allowed-tools: Read, Write, Bash(kubectl:*), Bash(flux:*), Grep, Glob --- # Verify Spec Skill Close the acceptance loop. Merged work is not "done" until the design's success criteria are observably met in the target cluster. ## Workflow ### 1. Locate inputs Resolve `$ARGUMENTS` to a design document under `docs/superpowers/specs/`. Accept a bare topic slug and glob for it. Abort with guidance if not found. Read: - the design doc — its goals, its **Testing** table, and any explicit success criteria - the matching plan at `docs/superpowers/plans/--plan.md`, if present — its per-task verification commands are usually the best evidence source - any example manifests the design names Archived specs under `docs/specs/done/` are also accepted, for re-verifying older work. Those use the retired `SC-XXX` format; parse `**SC-XXX**: ` lines when you see them. ### 2. Enumerate success criteria Superpowers designs state criteria in prose and in a **Testing** table rather than as numbered `SC-XXX` items. Extract one checkable claim per row or per bullet, and give each a stable local id (`C-1`, `C-2`, …) for the report. For each, infer a verification method: | Criterion pattern | Verification method | |---|---| | "pods can call AWS APIs …" | `kubectl run` a test pod; try the API; check result | | "reconciliation succeeds within Xs" | `flux get` + time window check | | "metrics emit" | VictoriaMetrics query for the metric name | | "logs appear" | VictoriaLogs query for the log stream | | "latency p95 < Y" | VictoriaMetrics `histogram_quantile(0.95, ...)` | | "eviction deterministic" | deploy, fill, observe eviction counter | | "resource X created" | `kubectl get X -l