Arness Execute Plan
Execute a structured project plan by dispatching parallel batches of arn-code-task-executor agents and validating each completed task through a arn-code-task-reviewer agent before marking it done. Independent tasks run concurrently; dependent tasks wait for their blockers to clear. Each task goes through an execute-review-gate cycle: the executor implements and tests, the reviewer validates against patterns and acceptance criteria, and the orchestrator (this skill) decides whether to pass, retry, or escalate.
Key architectural constraint: Subagents cannot spawn other subagents. The dispatch loop MUST stay in the main session (this skill).
Pipeline position:
arn-code-init -> arn-code-feature-spec / arn-code-bug-spec -> arn-code-plan -> arn-code-save-plan -> arn-code-review-plan -> arn-code-taskify -> **arn-code-execute-plan** (dispatch -> execute -> review -> gate) -> arn-code-review-implementation -> arn-code-document-project -> arn-code-ship
Prerequisites
If no ## Arness section exists in the project's CLAUDE.md, inform the user: "Arness is not configured for this project yet. Run /arn-implementing to get started — it will set everything up automatically." Do not proceed without it.
Workflow
Step 1: Load Configuration
-
Read the project's CLAUDE.md and extract the
## Arnesssection to find:- Plans directory -- base path where project plans are saved
- Code patterns -- path to the directory containing stored pattern documentation
- Template path -- path to the report template set (JSON templates)
- Template version -- plugin version the templates were copied from (if present)
- Template updates -- user preference:
ask,auto, ormanual(if present) - Specs directory -- path to the directory containing specification files (if present)
Template version check: If
Template versionandTemplate updatesfields are present, run the template version check procedure documented in arn-code-save-plan Step 1 (Template Version Check) before proceeding. If## Arnessdoes not contain these fields, treat as legacy and skip. -
Ask the user for
PROJECT_NAMEif not provided in the trigger message -
Verify the project directory exists and contains the required structure:
<plans-dir>/<PROJECT_NAME>/ ├── INTRODUCTION.md ├── TASKS.md ├── PROGRESS_TRACKER.json ├── plans/PHASE_*.md └── reports/ -
If the project directory is missing, suggest running
/arn-code-save-planfirst -
If INTRODUCTION.md or phase plans are missing, suggest running
/arn-code-save-planfirst -
If
PROGRESS_TRACKER.jsonis missing, warn that progress tracking will not be available. Execution can still proceed. -
If
### Visual Testingis configured in CLAUDE.md, note the presence of visual testing. Per-task execution uses Layer 1 config only (top-level fields). Multi-layer visual validation is handled by/arn-code-review-implementationafter plan execution completes. -
Detect sketch artifacts -- Read
<project-folder>/INTRODUCTION.mdand check for a### Sketch Artifactssection. If found, extract the sketch manifest path listed there (typically a relative path tosketch-manifest.json). Resolve it to an absolute path relative to the project directory. Also resolve the sketch directory path (the parent directory of the manifest). If no Sketch Artifacts section is found, check for manifests by scanningarness-sketches/in the project's source directory for anysketch-manifest.jsonmatchingPROJECT_NAME. Store the resolved manifest path and sketch directory path for use in the dispatch loop (Step 4). If no manifest is found from either source, proceed normally -- the dispatch loop will not pass sketch context to executors.
Step 2: Verify Task List and Build Dependency Graph
Deferred Task List Setup:
Check for Task list ID in ## Arness config. If absent:
Ask (using AskUserQuestion):
"Persistent task lists are not configured. Would you like to enable them? (Recommended — tasks survive across sessions)"
- Yes (Recommended) — Auto-generate ID from project directory name
- Yes, with custom ID — Specify the task list ID
- No — Keep tasks session-scoped
If Yes: derive ID (slugify project directory name or use custom ID), write to .claude/settings.json (create if needed, preserve existing env vars), add Task list ID to ## Arness config. Inform: "Persistent task list configured."
If No: proceed without persistence. Inform (once): "Tasks will be session-scoped. Enable persistence anytime with /arn-code-taskify."
- Call
TaskListto check for existing tasks - If no tasks exist:
- If
Task list IDis configured in## Arness: tasks should have persisted — suggest: "No tasks found despite persistent task lists being configured. The task list may have been cleared. Run/arn-code-taskifyto recreate tasks." - If
Task list IDis NOT configured: "No tasks found. Tasks may have been lost when the previous session ended (session-scoped storage). Run/arn-code-taskifyto recreate them. To enable persistent task lists for future sessions, run/arn-code-taskifywhich will offer to configure persistence."
- If
- If tasks already exist with progress (some in_progress or completed):
-
Show the current state (how many pending, in_progress, completed)
-
Ask (using
AskUserQuestion):"Tasks already exist with progress. How would you like to proceed?"
Options:
- Resume -- Continue execution from where it left off, picking up the next pending unblocked task
- Restart -- Warn that existing reports will be preserved but task statuses will be reset to pending; confirm before proceeding
-
- Present the dependency graph:
- Total number of tasks
- How many tasks can run in the first parallel batch (unblocked, pending)
- Dependency chain overview -- which tasks block which, showing the critical path
- Confirm with the user before starting execution
Step 3: Choose Review Feedback Mode
Ask (using AskUserQuestion):
"How should Arness handle critical review findings?"
Options:
- Resume executor with feedback (Recommended) -- Resumes the original executor agent with its full implementation context, passing the reviewer's specific findings as new instructions. This preserves all state from the initial implementation pass.
- Dispatch fresh executor with review report -- Spawns a brand-new executor agent with the original task context plus the full review report. Use this if resuming fails or if you prefer a clean slate for fixes.
Store the chosen mode for the duration of this execution session. This choice applies to all tasks; the user is not asked again unless execution is restarted.
Step 4: Dispatch Loop
The dispatch loop identifies batches of unblocked pending tasks, spawns parallel executor agents, then spawns parallel reviewer agents for each completed executor. Review verdicts determine whether a task is marked complete, retried with feedback, or escalated to the user. The loop repeats until all tasks are completed or blocked.
Read
${CLAUDE_PLUGIN_ROOT}/skills/arn-code-execute-plan/references/dispatch-loop.mdfor the full dispatch algorithm.
Step 5: Report Completion
When all tasks are completed (or skipped/aborted by user), present a summary:
- Total tasks completed (out of total)
- First-pass tasks -- tasks that passed review on the first attempt
- Fix-cycle tasks -- tasks that needed one or more review-fix cycles (list which ones)
- Implementation reports generated (list file names)
- Testing reports generated (list file names)
- Review reports generated (list file names)
- Escalations -- any tasks that were escalated to the user during execution (what happened, what was decided)
- Skipped tasks -- any tasks the user chose to ski