Execute All Tasks
Executes all pending tasks from a specification's tasks document. Major tasks run sequentially. Subtasks within a single major task can run in parallel via concurrent subagents when they are independent.
When to use
Use this skill when the user needs to:
- Implement an entire feature based on the tasks document
- Execute all remaining tasks from a specification
- Complete the full implementation plan
Specification Files Structure
All specification documents are located in .specs/<spec-name>/ directory:
| File | Description |
|---|---|
.specs/<spec-name>/requirements.md | Requirements and acceptance criteria |
.specs/<spec-name>/research.md | Research findings and chosen solutions |
.specs/<spec-name>/design.md | Technical design and architecture |
.specs/<spec-name>/tasks.md | Implementation tasks with checkboxes |
Always read all four files to understand the full context before executing tasks.
Instructions
Step 1: Locate and Read Specification Documents
- If
<args>contains a spec name, look in.specs/<spec-name>/ - If no spec name provided, list available specs in
.specs/and use theAskUserQuestiontool to let the user choose - Read and parse all specification documents:
- requirements.md - understand what needs to be built - research.md - understand chosen solutions and their rationale - design.md - understand how it should be built - tasks.md - get the list of tasks to execute
Step 2: Parse Tasks
- Identify all tasks and subtasks using checkbox markers:
- [] - Pending task (to be executed) - [-] - In progress task (continue execution) - [x] - Completed task (skip)
- Build a task list with:
- Task number (e.g., "1.1", "2.3") - Task description - File paths mentioned - Requirements references
- Determine execution order based on task numbering
Step 3: Execute Major Tasks Sequentially
CRITICAL RULE: Major tasks ALWAYS execute sequentially, one after another. Never start major task N+1 until major task N is fully complete. Parallelism is ONLY allowed between subtasks of the SAME major task.
For each major task:
- Analyze its subtasks for parallelism (see Step 3a)
- Execute subtasks using the chosen strategy — parallel or sequential (see Steps 3b/3c)
- After ALL subtasks are complete, mark the major task as
[x]in tasks.md - Commit the major task completion using the
git:commitskill - Only then proceed to the next major task
Step 3a: Analyze Subtask Dependencies
Before executing a major task's subtasks, analyze whether they can run in parallel. Check each subtask pair for conflicts:
Subtasks are DEPENDENT (must run sequentially) when ANY of the following is true:
- They modify the same file
- One creates a file/module/export that another imports or uses
- One generates types, schemas, or configs consumed by another
- They have an explicit ordering requirement in the task description
- One subtask's output is another's input (e.g., "create API" → "write tests for API")
- They modify related parts of the same system (e.g., both touch the same database table schema)
Subtasks are INDEPENDENT (can run in parallel) when ALL of the following are true:
- They touch completely different files
- No data or import dependencies between them
- No shared state (database tables, config files, global state)
- Each is self-contained and can be verified independently
When in doubt, choose sequential execution. The quality of the implementation is more important than speed.
Produce a short dependency verdict for the major task before proceeding:
Major Task 2 — dependency analysis:
2.1 Create user model (files: src/models/user.ts)
2.2 Create auth middleware (files: src/middleware/auth.ts) — depends on 2.1 (imports User type)
2.3 Add login route (files: src/routes/login.ts) — depends on 2.1, 2.2
Verdict: SEQUENTIAL — chain of dependenciesor
Major Task 3 — dependency analysis:
3.1 Add email validation util (files: src/utils/email.ts)
3.2 Add phone validation util (files: src/utils/phone.ts)
3.3 Add address validation util (files: src/utils/address.ts)
Verdict: PARALLEL — all independent, no shared files or importsStep 3b: Parallel Execution with Concurrent Subagents
Use this strategy when the dependency analysis yields PARALLEL.
- Mark all parallel subtasks as in-progress — update each checkbox to
[-]in tasks.md - Launch all subagents in a single message — use multiple Task tool calls (one per subtask) in the same response, each with
subagent_type: "general-purpose":
- Provide the full subtask description, file paths, and requirements - Include relevant context from the spec (requirements.md, design.md) - Instruct each subagent: implement the subtask but do NOT commit - Include these rules in each prompt: - Implement directly. Do NOT explore the codebase beyond the files listed in the task. - If you need to understand an existing pattern, read ONLY the specific file — do not launch broad searches. - If tests fail because behavior was intentionally changed, update the tests. NEVER re-add removed functionality. - For new fields/entities, ensure they appear in ALL layers: schema, query/mutation, API response type, frontend type, and UI rendering.
- Wait for all subagents to complete
- Verify results — for each subagent, confirm every file listed in the subtask was modified and new fields appear in all required layers
- Mark all subtasks as
[x]in tasks.md - Commit all changes together — stage all files from the parallel batch and use
git:commitskill once for the group
IMPORTANT constraints for parallel execution:
- Maximum 3 parallel subagents at a time to avoid resource contention
- If a major task has more than 3 independent subtasks, batch them in groups of 3
- If any subagent fails, stop and fall back to sequential execution for remaining subtasks
- Subagents must NOT commit — only you commit after verifying all results
Step 3c: Sequential Execution with Subagents
Use this strategy when the dependency analysis yields SEQUENTIAL, or for single subtasks, or as a fallback.
For each pending subtask in order:
- Mark subtask as in-progress — update the checkbox to
[-]in tasks.md - Launch subagent — use the Task tool with
subagent_type: "general-purpose":
- Provide the full subtask description, file paths, and requirements - Include relevant context from the spec (requirements.md, design.md) - The subagent implements the subtask autonomously
- Wait for completion
- Verify result — review the subagent's output for success
- Mark subtask as complete — update the checkbox to
[x]in tasks.md - Commit the changes — use the
git:commitskill (see Committing Changes section) - Proceed to next subtask
Example Task tool call for a subtask:
Task tool:
subagent_type: "general-purpose"
description: "Execute task 1.2"
prompt: |
Execute subtask 1.2 from the specification.
Task: [Subtask description from tasks.md]
Files to modify: [file paths]
Requirements: [requirement references]
Context from design.md: [relevant design context]
RULES:
- Implement directly. Do NOT explore the codebase beyond the files listed above.
- If you need to understand an existing pattern, read ONLY the specific file — do not launch broad searches.
- If tests fail because behavior was intentionally changed, update the tests to match the new behavior. NEVER re-add removed functionality to make old tests pass.
- For new fields/entities, ensure they appear in ALL layers: schema, query/mutation, API response type, frontend type, and UI rendering.When NOT to use subagent:
- Simple one-line changes
- Checkpoint/verification tasks (handle these directly)
- Tasks that require user interaction
Step 3d: Post-Subtask Verification
After each subagent completes (whether parallel or sequential), verify before marking as [x]:
- File check — confirm that every file listed in the subtask was actually modified (use
git diff --stat) - Field completeness — if the subtask adds a new field or entity, spot-check that it appears in all required layers (schema → query → type → UI)
- No regressions — if the subtask modified existing files, ensure no unrelated code was changed or removed
If verification fails, either fix it directly or re-run the subagent with specific correction instructions. Do NOT mark the subtask as [x] until verification passes.
Step 4: Handle Checkpoints
When encountering a checkpoint task:
- Run any verification commands specified
- Ensure tests pass if mentioned
- Summarize progress to the user
- Continue to next task unless there are failures
Step 5: Final Summary
After completing all tasks:
- Summarize what was implemented
- List any issues encountered
- Note which major tasks used parallel vs sequential execution
- Suggest next steps (e.g., testing, review)
Committing Changes
After sequential subtask execution
Commit each subtask individually using the git:commit skill:
- Stage the changed files related to the subtask
- Check if
tasks.mdis tracked by git (rungit check-ignore.specs/<spec-name>/tasks.md). If it is NOT ignored, also stagetasks.mdin the same commit so the task progress is captured - Invoke the
git:commitskill — it will analyze staged changes, determine the commit type, and create a properly formatted Conventional Commits message
After parallel subtask execution
Commit ALL subtasks from the parallel batch together as a single commit:
- Stage all changed files from all completed parallel subtasks
- Include
tasks.mdif tracked - Invoke the
git:commitskill — the commit message should reference the major task (e.g., "feat(auth): implement validation utilities (tasks 3.1-3.3)")
Skip committing if:
- The user explicitly asked not to commit
- The subtask only modified the tasks.md file (checkpoint tasks)
Error Handling
- If a task fails, mark it as
[-]and report the issue - If a parallel subagent fails, fall back to sequential for the remaining subtasks of that major task
- Use the
AskUserQuestiontool to ask how to proceed, with options like "Skip this task", "Retry", "Abort execution" - Do not proceed with dependent tasks if a prerequisite fails
Arguments
<args>- The spec name (e.g., "user-auth", "payment-flow")
If not provided, list available specs and ask the user to choose.