diff --git a/commands/gsd/auto.md b/commands/gsd/auto.md new file mode 100644 index 000000000..0aa835aa2 --- /dev/null +++ b/commands/gsd/auto.md @@ -0,0 +1,150 @@ +--- +description: Autonomous mode - reads state, executes next step, spawns next Claude. +allowed-tools: + - Read + - Bash + - Grep + - Glob + - SlashCommand +--- + + +Autonomous execution with self-spawning. Run once: +```bash +claude --dangerously-skip-permissions '/gsd:auto' +``` + +Reads STATE.md, determines next action, executes it, then spawns a fresh Claude to continue. +Chains until milestone complete. All gates auto-approved. + + + + + +**Check yolo mode is enabled:** + +```bash +cat .planning/config.json 2>/dev/null +``` + +Parse the JSON. If `mode` is not `"yolo"`, refuse: + +``` +⚠ Auto mode requires yolo mode. + +Set in .planning/config.json: +{"mode": "yolo"} + +Then run: +while true; do claude -p --dangerously-skip-permissions '/gsd:auto'; done +``` + +Exit without executing anything. + +If no `.planning/` directory exists: + +``` +No planning structure found. +Run /gsd:new-project first. +``` + +Exit. + + + +**Load minimal state:** + +- Read `.planning/STATE.md` - current position +- Read `.planning/ROADMAP.md` - phase structure + +Extract: +- Current phase number +- Current plan number (or "none") +- Phase status (planning/executing/complete) +- Total phases in milestone + + + +**Determine next action based on state:** + +Check what exists in `.planning/phases/`: + +1. **No PLAN.md for current phase** → need to plan +2. **PLAN.md exists, no SUMMARY.md** → need to execute +3. **SUMMARY.md exists for all plans in phase** → phase complete, check next +4. **All phases complete** → milestone complete + +Logic: +``` +if current_phase has no PLAN.md: + action = plan-phase +elif current_phase has unexecuted PLAN.md: + action = execute-plan +elif current_phase complete AND more phases exist: + action = plan-phase (next phase) +elif all phases complete: + action = complete-milestone +``` + + + +**Execute the determined action immediately:** + +No status report. No "Next Up" display. Just execute. + +**If action = plan-phase:** +``` +▶ AUTO: /gsd:plan-phase [N] +``` +Invoke: `SlashCommand("/gsd:plan-phase [N]")` + +**If action = execute-plan:** +``` +▶ AUTO: /gsd:execute-plan [path] +``` +Invoke: `SlashCommand("/gsd:execute-plan [full-path-to-PLAN.md]")` + +**If action = complete-milestone:** +``` +▶ AUTO: /gsd:complete-milestone +``` +Invoke: `SlashCommand("/gsd:complete-milestone")` + +**If milestone already complete:** +``` +✅ Milestone complete. Nothing to do. +``` +Exit cleanly (loop will restart, hit this again, user can Ctrl+C). + + + + + +**CRITICAL: ALL HUMAN CHECKPOINTS ARE AUTO-APPROVED IN /gsd:auto** + +When executing via /gsd:auto, treat ALL checkpoint types as auto-approved: + +- `checkpoint:human-verify` → AUTO-APPROVED, log "Auto-verified in yolo mode" +- `checkpoint:decision` → AUTO-APPROVED, pick the most sensible default +- `checkpoint:human-action` → SKIP if possible, or simulate completion +- Any "Type approved to continue" → AUTO-APPROVED +- Any "Does this look right?" → YES +- Any confirmation prompt → CONFIRMED + +**DO NOT STOP AND WAIT FOR INPUT. EVER.** + +If a checkpoint would normally block, instead: +1. Log: "⚡ Auto-approved: [checkpoint description]" +2. Continue execution immediately + +The invoked commands should detect yolo mode from config.json and apply this behavior. + + + +- [ ] Refuses to run if mode != yolo +- [ ] Reads state, determines action +- [ ] Executes exactly one action via SlashCommand +- [ ] No prompts, no waiting, no "Next Up" display +- [ ] Exits cleanly after action completes +- [ ] Works with: while true; do claude -p --dangerously-skip-permissions '/gsd:auto'; done +