review-epic
review-epic
Review: $ARGUMENTS
Prove the epic against its outcome, child criteria, integration contracts, and security boundaries. Fix confirmed defects, then certify only the final repository state. This skill alone writes DONE, BLOCKED, or a downgrade. Carry the review through to a written verdict in one run: between phases, keep going, and a path you cannot repair becomes a recorded blocker, not a pause. Explicit user instructions override anything below.
Scope
Resolve the PRD path, epic ID, and optional flags. Without an epic ID, take the first epic at IN_REVIEW, else the first whose non-cancelled children are implemented but uncertified. Include every non-cancelled child, IN_REVIEW and DONE ones too, in dependency order. Tracker status is never proof: IN_REVIEW is the expected inbound state and carries none.
Isolate the epic diff. Prefer --base; otherwise use the default-branch merge-base only when it isolates the epic unambiguously. Include committed, staged, unstaged, and untracked changes. Review lockfiles, generated files, and binaries through their source or metadata rather than excluding them. When several epics cannot be separated, stop and report the ambiguous files and baseline.
External evidence is worth fetching only for one named current or version-sensitive claim that can change a verdict, finding, or gate. One route per question; record fact, source, and review impact.
Reachability first
A diff shows what was added. Missing wiring is an absence and never appears in it, so a diff-only audit is blind to the most common class of "complete but inert" epics. Read the epic in reverse, from the repository's real execution roots (route table, command registry, rendered component tree, dependency container, migration list, scheduler, event subscriptions, config readers, public package exports) to the new code, against the final repository state: