Execute all steps and tasks in Phase $1 from EXECUTION_PLAN.md.
Workflow
Copy this checklist and track progress:
Phase Start Progress: - [ ] Parse arguments and detect execution mode - [ ] Context detection (project root vs feature) - [ ] Directory guard (EXECUTION_PLAN.md + AGENTS.md) - [ ] Context check (compact if <40% remaining) - [ ] Codex mode prerequisites (if --codex) - [ ] Git setup (commit dirty files, create phase branch) - [ ] Execute tasks sequentially (test → implement → verify → commit) - [ ] Track state in phase-state.json - [ ] Phase completion summary - [ ] Auto-advance to checkpoint (if conditions met)
Arguments
| Argument | Required | Description |
|---|---|---|
$1 | Yes | Phase number to execute |
--codex | No | Switch to Codex execution mode (persists to settings) |
--no-codex | No | Switch to default execution mode (persists to settings) |
--pause | No | Stop after phase completes (skip auto-advance to checkpoint) |
Execution Mode Resolution
When --codex or --no-codex is passed, update executionMode in .claude/settings.local.json before proceeding:
- •
--codex→ write"executionMode": "codex" - •
--no-codex→ write"executionMode": "default"
These flags are persistent toggles, not one-time overrides. The setting survives across sessions, auto-advance, and /go resume.
When neither flag is passed, read executionMode from .claude/settings.local.json. If not set, default to "default" (Claude Code executes directly).
Execution Modes
Default mode: Claude Code executes tasks directly using its tools.
Codex mode (--codex): Claude Code orchestrates while /codex-implement handles each task:
- •Claude Code maintains phase context, state tracking, commits, and auto-advance logic
- •Each task is delegated to
/codex-implement --no-commit --batchwith a spec file - •
/codex-implementprovides decomposition, scoped context, safety guards, and multi-tier verification - •Results return to Claude Code for commit and next-task decisions
Use --codex when:
- •Tasks involve external APIs where current documentation matters
- •You want cross-model execution for different perspectives
- •Codex's web search during implementation adds value
External Tool Documentation Protocol
CRITICAL: Before implementing code that integrates with external services, you MUST read the latest official documentation first.
When to Fetch Docs
Fetch documentation when ANY of these apply:
- •Task involves integrating with a third-party API (Supabase, Stripe, Firebase, etc.)
- •You're writing code that calls external service endpoints
- •Task references SDK usage for an external service
- •You need to implement webhooks, authentication, or data sync with external services
How to Fetch Docs
- •Identify external services from task description and acceptance criteria
- •Fetch relevant docs using WebFetch or WebSearch:
- •SDK/library installation and setup
- •API reference for specific endpoints being used
- •Code examples for the integration pattern
- •Cache per session — Don't re-fetch docs already fetched in this session
- •Handle failures gracefully:
- •Retry with exponential backoff (2-3 attempts)
- •If all retries fail: warn user and proceed with best available info
Documentation URLs by Service
| Service | SDK/API Documentation |
|---|---|
| Supabase | https://supabase.com/docs/reference/javascript |
| Firebase | https://firebase.google.com/docs/reference/js |
| Stripe | https://stripe.com/docs/api |
| Auth0 | https://auth0.com/docs/api |
| Clerk | https://clerk.com/docs/references/javascript |
| Resend | https://resend.com/docs/api-reference |
| OpenAI | https://platform.openai.com/docs/api-reference |
| Anthropic | https://docs.anthropic.com/en/api |
| Trigger.dev | https://trigger.dev/docs |
For services not listed, use WebSearch: {service name} {language} SDK documentation
Integration with Task Execution
When implementing external service integrations:
- •Fetch docs FIRST before writing integration code
- •Use the official SDK patterns (not outdated examples)
- •Follow current authentication methods from docs
- •Reference error handling patterns from official documentation
- •Check for breaking changes if using a newer SDK version
Context Detection
Determine working context. Run execution commands from the scoped directory that contains the active EXECUTION_PLAN.md.
- •
If current working directory matches pattern
*/features/*:- •PROJECT_ROOT = parent of parent of CWD (e.g.,
/project/features/foo→/project) - •MODE = "feature"
- •PROJECT_ROOT = parent of parent of CWD (e.g.,
- •
If current working directory matches pattern
*/plans/greenfield*:- •PROJECT_ROOT = parent of parent of CWD (e.g.,
/project/plans/greenfield→/project) - •MODE = "greenfield"
- •PROJECT_ROOT = parent of parent of CWD (e.g.,
- •
Otherwise:
- •PROJECT_ROOT = current working directory
- •MODE = "greenfield-legacy"
Context
Before starting, read these files:
- •PROJECT_ROOT/AGENTS.md — Follow all durable workflow conventions
- •AGENTS.md — Follow scoped execution guidance if present in CWD
- •EXECUTION_PLAN.md — Task definitions and acceptance criteria (from CWD)
Directory Guard (Wrong Directory Check)
Before starting, confirm the required files exist:
- •
EXECUTION_PLAN.mdexists in the current working directory - •
PROJECT_ROOT/AGENTS.mdexists - •
If either is missing, STOP and tell the user to
cdinto their project/feature directory (the one containingEXECUTION_PLAN.md) and re-run/phase-start $1. - •
If
plans/greenfield/EXECUTION_PLAN.mdexists in the current working directory, tell the user tocd plans/greenfieldand re-run/phase-start $1.
Context Check
Before starting: If context is below 40% remaining, run /compact first. This ensures the full command instructions remain in context throughout execution. Compaction mid-command loses procedural instructions.
Codex Mode Prerequisites (if --codex flag provided)
Skip this section if --codex was not provided.
See CODEX_MODE.md for detailed Codex CLI setup and configuration.
Execution Rules
- •
Git Workflow (Auto-Commit)
One branch per phase, one commit per task:
codemain └── phase-$1 (branch) ├── task(1.1.A): Add user model ← step 1.1 ├── task(1.1.B): Add user routes ├── task(1.1.C): Add user tests ├── task(1.2.A): Add auth middleware ← step 1.2 continues ├── task(1.2.B): Add login endpoint └── task(1.3.A): Add session handling ← step 1.3 continuesBefore starting the phase (once, at the beginning):
bash# Commit any dirty files first (preserves user work) git add -A && git diff --cached --quiet || git commit -m "wip: uncommitted changes before phase-$1"
Verify with
git statusthat the working tree is clean after the commit.Check for unpushed commits before branching:
bash# Get current branch and check if ahead of remote CURRENT_BRANCH=$(git branch --show-current) UNPUSHED=$(git rev-list --count @{upstream}..HEAD 2>/dev/null || echo "no-upstream")- •If
UNPUSHEDis a number > 0:- •Ask: "You have {UNPUSHED} unpushed commit(s) on
{CURRENT_BRANCH}. Push before creating phase branch? (recommended)" - •If yes:
git push - •If no: Continue (user accepts branching from unpushed state)
- •Ask: "You have {UNPUSHED} unpushed commit(s) on
- •If
UNPUSHEDis "no-upstream" or 0: Continue without prompting
bash# Create phase branch from current HEAD git checkout -b phase-$1
Verify branch creation:
bashgit branch --show-current
If the output does not match
phase-$1, the checkout failed. Check if the branch already exists (git branch --list phase-$1) and append a suffix (e.g.,phase-$1-2).After each task completion (sequential commits on same branch):
bashgit add -A git commit -m "task({id}): {description} [REQ-XXX]"Verify with
git statusthat the commit succeeded and the working tree is clean.Requirement traceability: Check the task's
Requirement:field in EXECUTION_PLAN.md.- •If a REQ-ID exists (e.g.,
REQ-002), include it:task(1.2.A): Add auth [REQ-002] - •If no REQ-ID or "None", omit brackets:
task(1.1.A): Set up scaffolding
Do NOT push. Leave pushing to the human after manual verification at checkpoint.
Commit discipline:
- •Every task gets its own commit immediately after verification passes
- •All commits are sequential on the phase branch—each builds on the previous
- •Steps are logical groupings, not separate branches
- •Never batch multiple tasks into one commit
- •Include task ID in commit message for traceability
- •Use conventional commit format:
task({id}): {imperative description}
- •If
- •
Task Execution (for each task)
{If
--codexflag provided}Codex Execution Mode:
See CODEX_MODE.md for full details. Summary:
- •Build task spec file from execution plan data
- •Invoke
/codex-implement <spec> --no-commit --batchvia Skill tool - •Process results and handle failures (stuck detection applies)
- •Run
/verify-taskthen commit (Claude Code verifies and commits)
{Else}
Default Execution Mode:
- •Read the task definition and acceptance criteria
- •Explore before implementing:
- •Search for similar existing functionality (don't duplicate)
- •Identify patterns used elsewhere in codebase
- •List reusable utilities/components to leverage
- •Note conventions (naming, error handling, structure)
- •Write tests first (one per acceptance criterion)
- •Implement minimum code to pass tests, following discovered patterns
- •Run verification using /verify-task
- •Update checkboxes in EXECUTION_PLAN.md:
- [ ]→- [x] - •Commit immediately (see Git Workflow above)
{/If}
- •
Stuck Detection and Recovery
Track failures in
.claude/phase-state.jsonso counters survive context compaction.For each task, maintain a
failuresobject in the task's state entry:json{ "consecutive": 0, "verification_attempts": {"V-001": 2, "V-003": 1}, "last_errors": ["error msg 1", "error msg 2"] }- •On task failure: Increment
consecutive, append tolast_errors(keep last 3), write to phase-state.json. Read back the file to confirm valid JSON. - •On task success: Reset
consecutiveto 0, clearlast_errors - •On verification attempt: Increment the criterion's count in
verification_attempts
Read these counters before each attempt. If ANY threshold is met, STOP and escalate to human:
Trigger Threshold Check Consecutive task failures 3 tasks failures.consecutive >= 3Same error pattern 2 occurrences Same error string in failures.last_errorstwiceVerification loop 5 attempts on same criterion failures.verification_attempts[criterion] >= 5Test flakiness Same test passes then fails Detected during verification (log to last_errors)When stuck, report:
codeSTUCK: Phase $1, Task {id} ───────────────────────────── Pattern: {describe what keeps failing} Attempts: {N} Last 3 errors: 1. {error summary} 2. {error summary} 3. {error summary} Possible causes: - {hypothesis 1} - {hypothesis 2} Options: 1. Skip this task and continue 2. Modify acceptance criteria 3. Take a different approach: {suggestion} 4. Abort phase for manual interventionDo not:
- •Keep retrying the same approach
- •Silently skip failing tasks
- •Reduce test coverage to make things pass
- •On task failure: Increment
- •
Blocking Issues
- •If blocked, report using the format in AGENTS.md
- •Do not continue past a blocker without resolution
- •
Context Hygiene
- •Summarize progress between steps if context grows large
State Tracking
Maintain .claude/phase-state.json throughout execution. See STATE_TRACKING.md for JSON formats.
Key updates:
- •At phase start: Set status to
IN_PROGRESSwith timestamp and execution mode. Read backphase-state.jsonto confirm valid JSON. - •After each task: Update task entry with
COMPLETEstatus; resetfailures.consecutiveto 0. Read backphase-state.jsonto confirm valid JSON. - •On task failure: Increment
failures.consecutive, append error tofailures.last_errors(max 3) - •On verification attempt: Increment
failures.verification_attempts[criterion_id] - •If blocked: Record blocker type and description
If .claude/phase-state.json doesn't exist, run /populate-state first to initialize it.
Completion
Do not check back until Phase $1 is complete, unless blocked or stuck.
When done, provide:
- •Execution mode used (default or Codex)
- •Summary of what was built
- •Files created/modified
- •Git branch and commits created
- •Any issues encountered
- •Ready for /phase-checkpoint $1
Note: Branches are not pushed automatically. After /phase-checkpoint passes, the human will review and push.
Auto-Advance (After Phase Completes)
Check if auto-advance is enabled and this phase completes with no manual items.
Configuration Check
Read .claude/settings.local.json for auto-advance configuration:
{
"autoAdvance": {
"enabled": true // default: true
}
}
If autoAdvance is not configured, use defaults (enabled: true).
Pre-Check: Attempt Automation on Manual Items
Before evaluating auto-advance conditions, attempt automation on checkpoint manual items:
- •Extract manual verification items from "Phase $1 Checkpoint" section in EXECUTION_PLAN.md
- •For each manual item, invoke auto-verify skill with item text and available tools
- •Categorize results:
- •Automated: Item verified automatically (PASS/FAIL)
- •Truly Manual (blocking): No automation, tagged
MANUAL, downstream dependency - •Truly Manual (deferrable): No automation, tagged
MANUAL:DEFER, no dependency → enqueue to.claude/deferred-reviews.json
Auto-Advance Conditions
Auto-advance to /phase-checkpoint $1 ONLY if ALL of these are true:
- •✓ All tasks in Phase $1 are complete
- •✓ No BLOCKING manual checkpoint items remain
(MANUAL:DEFER items are queued to
.claude/deferred-reviews.json, not blocking) - •✓ No tasks were marked as blocked or skipped
- •✓
--pauseflag was NOT passed to this command - •✓
autoAdvance.enabledis true (or not configured, defaulting to true)
Rationale: Auto-verify attempts automation before blocking. Only items
tagged (MANUAL) that genuinely require human judgment and affect downstream
work block auto-advance. Items tagged (MANUAL:DEFER) are enqueued for later
review. Items that can be verified with curl, file checks, or browser
automation do not require human presence.
If Auto-Advance Conditions Met
- •
Show brief notification:
codeAUTO-ADVANCE ============ All Phase $1 tasks complete. No truly manual verification items. {N} checkpoint items can be auto-verified. Proceeding to checkpoint... - •
Execute immediately:
- •Track this command in auto-advance session log
- •Invoke
/phase-checkpoint $1using the Skill tool - •Checkpoint will continue the chain if it passes
If Auto-Advance Conditions NOT Met
Stop and report why:
PHASE $1 COMPLETE
=================
All tasks finished.
Cannot auto-advance because:
- {reason: e.g., "Phase has blocking manual verification items"}
Checkpoint Verification Preview:
--------------------------------
Automatable ({N} items):
- [auto] "{item}" — can verify with {method}
Blocking Manual ({N} items requiring human judgment):
- [ ] "{item}"
- Reason: {why this blocks downstream work}
{If deferred items exist:}
Deferred ({N} items queued for later review):
- "{item}" — no downstream dependency
{/If}
Next: Run /phase-checkpoint $1 when ready to verify
Ready to open a PR? Run: /create-pr