Executes Tasks one at a time with mandatory human checkpoints between each. Loads epic context, runs ONE task, presents checkpoint summary, then STOPS. Use when an epic Task exists with subtasks ready for implementation, when resuming work after a previous checkpoint, or when iteratively building a feature.
Execute Tasks one at a time with mandatory human checkpoints. Load epic → Execute ONE task → Present checkpoint → STOP. User reviews, then invokes again to continue.
Core principle: Epic requirements are immutable. Tasks adapt to reality. STOP after each task for human oversight — no exceptions.
Announce at start: "I'm using gambit:executing-plans to implement this task."
LOW FREEDOM — Follow exact process: load epic, execute ONE task, checkpoint, STOP.
Do not skip checkpoints or verification. Epic requirements never change. Tasks adapt to discoveries.
| Step | Action | Critical Rule |
|---|---|---|
| 0. Check State | TaskList | Task state tells you where to resume — never ask |
| 1. Load Epic |
TaskGet on epic |
| Requirements are IMMUTABLE |
| 2. Execute ONE Task | Mark in_progress → follow steps → mark completed | TDD cycle, verify each step |
| 3. Create Next Task | TaskCreate based on learnings | Reflect reality, not original assumptions |
| 4. Checkpoint | Present summary | STOP — no exceptions |
Iron Law: One task → Checkpoint → STOP → User reviews → Next task. No batching. No "just one more."
gambit:writing-plans or gambit:brainstorming creates tasksDon't use when:
gambit:brainstorming or gambit:writing-plansgambit:debuggingRun TaskList and analyze:
Do NOT ask "where did we leave off?" — Task state tells you exactly where to resume.
Before executing ANY task, read the epic with TaskGet.
Extract and keep in mind:
Why: Requirements prevent rationalizing shortcuts when implementation gets hard.
Find and claim:
TaskList → identify ready task (status="pending", blockedBy=[])TaskUpdate → mark in_progressTaskGet → load full task detailsExecute the steps in the task description:
Task descriptions contain bite-sized steps. For each:
Pre-completion verification (FRESH evidence required):
Mark complete with TaskUpdate only after ALL steps verified with fresh evidence.
CRITICAL: Check epic BEFORE switching approaches.
TaskGet — check "Approaches Considered" and "Anti-patterns"Never water down requirements to "make it easier."
If implementation reveals unexpected work:
TaskCreate — full detail, no placeholdersTaskUpdate addBlockedByAfter completing a task, create the NEXT task based on what you learned. This is how executing-plans differs from writing-plans: tasks are created iteratively as reality unfolds, not all upfront.
Review what you learned:
Three cases:
A) Clear next step → Create task with TaskCreate, set dependencies, proceed to checkpoint
B) Planned next task now redundant:
C) Need to adjust approach:
Task quality check (same as writing-plans):
Present this summary, then STOP:
## Checkpoint
### What Was Done
- [Summary of implementation]
- [Key decisions made]
### Learnings
- [Discoveries during implementation]
- [Anything that affects future tasks]
### Task Status
[TaskList output — completed, in-progress, pending]
### Epic Progress
- [X/Y success criteria met]
- [What remains]
### Next Task
- [Title and brief description]
- [Why this is the right next step based on learnings]
### To Continue
Run `/gambit:executing-plans` to execute the next task.
Why STOP is mandatory:
When all subtasks completed:
TaskList — verify all subtasks show "completed"TaskGet on epic — review each success criterionThen invoke review directly using the Skill tool:
Skill skill="gambit:review"
Do not tell the user to run it manually — invoke it and follow its process immediately. Review validates architecture, security, completeness, dead code, test quality, and code quality across the entire epic before allowing finishing-branch.
When blocked, check epic BEFORE switching approaches:
1. Hit obstacle: OAuth library doesn't support PKCE
2. Re-read epic → "Approaches Considered" shows:
"Implicit flow - REJECTED BECAUSE: security risk"
3. PKCE is different from implicit flow → safe to explore
4. Ask user before switching: "Library X doesn't support PKCE.
Should I try library Y, or use a different approach?"
Wrong: "PKCE doesn't work, let me just use implicit flow" (REJECTED approach)
After completing "Set up OAuth config", you discover the framework has built-in session middleware:
TaskCreate
subject: "Integrate with existing session middleware"
description: |
## Goal
Use framework's built-in session middleware instead of custom implementation.
## Implementation
1. Study existing middleware: src/middleware/session.ts:15-40
2. Write test: auth token stored in session correctly
3. Integrate OAuth token storage with existing session
4. Verify: session persists across requests
## Success Criteria
- [ ] OAuth tokens stored via existing session middleware
- [ ] No duplicate session logic
- [ ] Tests passing
activeForm: "Integrating session middleware"
This task wouldn't have been correct if planned upfront — it reflects what you actually found.
Common rationalizations (all mean STOP, follow the process):
| Excuse | Reality |
|---|---|
| "Good context loaded" | STOP anyway — user reviews matter |
| "Just one more quick task" | STOP anyway — quick tasks compound |
| "User trusts me" | STOP anyway — one invocation ≠ blanket permission |
| "This is trivial" | STOP anyway — trivial tasks can have unexpected effects |
| "I'll save time by continuing" | STOP anyway — wrong direction wastes more time |
Before completing each task:
TaskUpdate status="completed" only after truly doneAfter completing each task:
TaskGet)/gambit:executing-plans againBefore closing epic:
TaskListgambit:review directly via Skill toolCalled by:
/gambit:executing-plansgambit:writing-plans or gambit:brainstorming creates tasksCalls:
gambit:test-driven-development during implementationgambit:verification before claiming task completegambit:review (invoked directly when all tasks complete — reviews then calls finishing-branch)