plugins/flow-next/skills/flow-next-epic-review/SKILL.md
Epic completion review - verifies all epic tasks implement spec requirements. Triggers on /flow-next:epic-review.
npx skillsauth add gmickel/gmickel-claude-marketplace flow-next-epic-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read workflow.md for detailed phases and anti-patterns.
Verify that the combined implementation of all epic tasks satisfies the spec requirements. This is NOT a code quality review (that's impl-review's job) — this confirms spec compliance only.
Role: Epic Review Coordinator (NOT the reviewer) Backends: RepoPrompt (rp), Codex CLI (codex), or GitHub Copilot CLI (copilot)
CRITICAL: flowctl is BUNDLED — NOT installed globally. which flowctl will fail (expected). Always use:
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
Priority (first match wins):
--review=rp|codex|copilot|none argumentFLOW_REVIEW_BACKEND env var — bare backend (rp, codex, copilot, none) OR spec form (codex:gpt-5.4:xhigh, copilot:claude-opus-4.5).flow/config.json → review.backend (same bare / spec forms)Check $ARGUMENTS for:
--review=rp or --review rp → use rp--review=codex or --review codex → use codex--review=copilot or --review copilot → use copilot--review=none or --review none → skip reviewIf found, use that backend and skip all other detection.
BACKEND=$($FLOWCTL review-backend)
if [[ "$BACKEND" == "ASK" ]]; then
echo "Error: No review backend configured."
echo "Run /flow-next:setup to configure, or pass --review=rp|codex|copilot|none"
exit 1
fi
echo "Review backend: $BACKEND (override: --review=rp|codex|copilot|none)"
gpt-5.5). FLOW_CODEX_MODEL / FLOW_CODEX_EFFORT env vars, or --spec codex:gpt-5.4:xhigh.FLOW_COPILOT_MODEL / FLOW_COPILOT_EFFORT env vars, or --spec copilot:claude-opus-4.5:xhigh.Spec grammar: backend[:model[:effort]] — FLOW_REVIEW_BACKEND and .flow/config.json review.backend both accept this. Examples: codex, codex:gpt-5.2, copilot:claude-opus-4.5:xhigh. Per-epic default_review (set via flowctl epic set-backend) overrides env.
For rp backend:
setup-review - handles window selection + builder atomically--new-chat after first reviewFor codex backend:
$FLOWCTL codex completion-review exclusively--receipt for session continuity on re-reviewsFor copilot backend:
$FLOWCTL copilot completion-review exclusively--receipt for session continuity on re-reviews (session only resumes when prior receipt has mode == "copilot")--spec backend:model:effort flag, per-epic default_review, FLOW_REVIEW_BACKEND spec, FLOW_COPILOT_MODEL / FLOW_COPILOT_EFFORT env vars, registry defaultsFor all backends:
REVIEW_RECEIPT_PATH set: write receipt after SHIP verdict (RP writes manually after fix loop; codex writes automatically via --receipt)<promise>RETRY</promise> and stopFORBIDDEN:
Arguments: $ARGUMENTS
Format: <epic-id> [--review=rp|codex|copilot|none]
fn-1 or fn-22-53k--review - Optional backend overrideSee workflow.md for full details on each backend.
FLOWCTL="${DROID_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/flowctl"
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
Parse $ARGUMENTS for:
fn-* → EPIC_ID--review=<backend> → backend overrideRun backend detection from SKILL.md above. Then branch:
RECEIPT_PATH="${REVIEW_RECEIPT_PATH:-/tmp/completion-review-receipt.json}"
$FLOWCTL codex completion-review "$EPIC_ID" --receipt "$RECEIPT_PATH"
# Output includes VERDICT=SHIP|NEEDS_WORK
On NEEDS_WORK: fix code, commit, re-run (receipt enables session continuity).
RECEIPT_PATH="${REVIEW_RECEIPT_PATH:-/tmp/completion-review-receipt.json}"
# Override model + effort (pick one):
# --spec copilot:claude-opus-4.5:xhigh (preferred)
# FLOW_REVIEW_BACKEND=copilot:claude-opus-4.5:xhigh
# FLOW_COPILOT_MODEL=gpt-5.2 FLOW_COPILOT_EFFORT=high
$FLOWCTL copilot completion-review "$EPIC_ID" --receipt "$RECEIPT_PATH"
# Output includes VERDICT=SHIP|NEEDS_WORK
On NEEDS_WORK: fix code, commit, re-run. Session resume only when prior receipt has mode == "copilot".
⚠️ STOP: You MUST read and execute workflow.md now.
Go to the "RepoPrompt Backend Workflow" section in workflow.md and execute those steps. Do not proceed here until workflow.md phases are complete.
The workflow covers:
$W and $TReturn here only after workflow.md execution is complete.
CRITICAL: Do NOT ask user for confirmation. Automatically fix ALL valid issues and re-review — our goal is complete spec compliance. Never use AskUserQuestion in this loop.
If verdict is NEEDS_WORK, loop internally until SHIP:
flowctl codex completion-review (receipt enables context)flowctl copilot completion-review (receipt enables context; must be mode == "copilot" to resume)$FLOWCTL rp chat-send --window "$W" --tab "$T" --message-file /tmp/re-review.md (NO --new-chat)<verdict>SHIP</verdict>CRITICAL: For RP, re-reviews must stay in the SAME chat so reviewer has context. Only use --new-chat on the FIRST review.
data-ai
Render a cognitive-aid PR body from flow-next state and open via gh. Triggers on /flow-next:make-pr with optional spec id and flags (--draft, --ready, --no-mermaid, --base <ref>, --memory, --dry-run). Auto-detects spec from current branch when no id given. NOT Ralph-blocked — autonomous loops can surface a draft PR for human review.
data-ai
Render a cognitive-aid PR body from flow-next state and open via gh. Triggers on /flow-next:make-pr with optional spec id and flags (--draft, --ready, --no-mermaid, --base <ref>, --memory, --dry-run). Auto-detects spec from current branch when no id given. NOT Ralph-blocked — autonomous loops can surface a draft PR for human review.
testing
Synthesize the current conversation context into a flow-next spec at `.flow/specs/<spec-id>.md` via `flowctl spec create + spec set-plan` — agent-native, source-tagged, with mandatory read-back before write. Triggers on /flow-next:capture, "capture spec", "lock down what we discussed", "make a spec from this conversation", "convert conversation to spec". Optional `mode:autofix` token runs without questions and requires `--yes` to commit. Optional `--rewrite <spec-id>` overwrites an existing spec; `--from-compacted-ok` overrides the compaction-detection refusal; `--override-strategy` proceeds despite a contradiction with an active STRATEGY.md track (and prompts to record the override as a decision).
testing
Synthesize the current conversation context into a flow-next spec at `.flow/specs/<spec-id>.md` via `flowctl spec create + spec set-plan` — agent-native, source-tagged, with mandatory read-back before write. Triggers on /flow-next:capture, "capture spec", "lock down what we discussed", "make a spec from this conversation", "convert conversation to spec". Optional `mode:autofix` token runs without questions and requires `--yes` to commit. Optional `--rewrite <spec-id>` overwrites an existing spec; `--from-compacted-ok` overrides the compaction-detection refusal; `--override-strategy` proceeds despite a contradiction with an active STRATEGY.md track (and prompts to record the override as a decision).