Agent skill
execution
Phase execution methodology for orchestration workflows with error handling and completion protocols
Install this agent skill to your Project
npx add-skill https://github.com/josstei/maestro-orchestrate/tree/main/claude/src/skills/shared/execution
SKILL.md
Execution Skill
Activate this skill during Phase 3 (Execution) of Maestro orchestration. This skill defines how Maestro executes implementation phases through native subagent delegation.
Execution Mode Gate
Step 0 — Express bypass (early return)
If workflow_mode is express in the current session, STOP HERE. Do not proceed
to the execution mode gate. Do not prompt the user. Do not resolve execution mode.
Express always dispatches sequentially. Return to the Express Workflow and continue
from the delegation step.
Step 1 — Read the configured mode
Read MAESTRO_EXECUTION_MODE (default: ask).
- If
parallel: callupdate_sessionwith{ execution_mode: 'parallel', execution_backend: 'native' }to record in session state. Skip to delegation. - If
sequential: callupdate_sessionwith{ execution_mode: 'sequential', execution_backend: 'native' }to record in session state. Skip to delegation. - If
ask: proceed to Step 2.
Step 2 — Analyze the implementation plan
Before prompting the user, analyze the approved plan to generate a recommendation:
-
Count total phases in the plan
-
Count phases marked
parallel: true(parallelizable phases) -
Count distinct parallel batches (groups of parallelizable phases at the same dependency depth)
-
Count sequential-only phases (phases with
blocked_bydependencies that prevent parallelization) -
Cross-check file ownership across all phases. If any two phases share a file in their
filesarrays, those phases CANNOT be parallel-eligible — subtract them from the parallelizable count. Report each overlap as an Overlapping-file Warning in the prompt. -
If
validate_planwas called during planning and returned aparallelization_profile, use itsparallel_eligibleandeffective_batchescounts as the authoritative source for items 1-5 above. These are computed from actual dependency depths and override any manual flag-based counts. Ifparallelization_profileis not available, use the counts from items 1-5 as-is.
Record these counts — they feed into the prompt.
Step 3 — Determine the recommendation
- If parallelizable phases ≤ 1 → auto-select sequential. Call
update_sessionwith{ execution_mode: 'sequential', execution_backend: 'native' }. Inform the user: "All phases are sequential — no parallel batches available." Skip to delegation. Do NOT prompt with a choice. Do NOT callask_user. Do NOT present options. (Parallelism requires at least 2 phases at the same dependency depth; a single parallel-eligible phase has nothing to batch with.)
When parallelizable phases ≤ 1, there is NO choice to make. Auto-select sequential and skip directly to delegation. Do not show a picker. </ANTI-PATTERN>
- If parallelizable phases > 50% of total phases → recommend parallel
- If parallelizable phases ≤ 50% but > 1 → recommend sequential (limited benefit)
- The recommended option appears first in the
ask_useroptions list with "(Recommended)" appended to its label. The non-recommended option MUST NOT include "(Recommended)" in its label.
Step 4 — Prompt the user
Call ask_user with type: 'choice' using exactly one of these option sets:
When recommending parallel: options: - label: "Parallel (Recommended)" description: "Spawn child agents for each ready batch where file ownership does not overlap." - label: "Sequential (High Precision)" description: "Spawn one child agent at a time in dependency order."
When recommending sequential: options: - label: "Sequential (Recommended)" description: "Spawn one child agent at a time in dependency order." - label: "Parallel" description: "Spawn child agents for each ready batch where file ownership does not overlap."
Only ONE option receives the "(Recommended)" suffix. Never both. </ANTI-PATTERN>
Prompt the user for a choice using the user-prompt tool from runtime context. Replace [N], [M], and [B] with actual counts from Step 2. The prompt should convey the execution mode analysis and offer two options as described above.
Step 5 — Record and proceed
- Call
update_sessionwith the selectedexecution_modeandexecution_backend: native - The tool atomically persists both fields
- Use the selected mode for the remainder of the session unless the user changes it
Mode-specific behavior
- If
parallelis selected and a ready batch has only one phase, execute it sequentially - If
sequentialis selected, preserve plan order even when phases are parallel-safe
Safety fallback
If execution_mode is not present in session state at the point where delegation is about to begin, STOP. Do not default to sequential. Return to this gate and resolve it. This catches any edge case where the gate was skipped.
State File Access
When MCP state tools (get_session_status, update_session, transition_phase) are available, prefer them for state operations. They provide structured I/O and atomic transitions.
When MCP tools are not available, state lives inside <MAESTRO_STATE_DIR> and is accessible through read_file and write_file.
Helper scripts remain available for shell-injected command prompts:
node <runtime-script-root>/read-state.js <relative-path>
node <runtime-script-root>/read-active-session.js
Hook Lifecycle During Execution
Hooks fire automatically at agent boundaries. The orchestrator does not invoke them directly.
The hooks system tracks which agent is currently executing. Before each agent dispatch, a hook resolves the active agent identity from the required Agent: header first, then falls back to legacy env/regex detection, and injects compact session context. After completion, a hook validates that the response contains both Task Report and Downstream Context; it requests one retry on the first malformed response.
The hook state directory under /tmp/maestro-hooks/<session-id>/ is transient and separate from orchestration state.
Sequential Execution Protocol
For a sequential phase:
- Verify all
blocked_bydependencies are completed - Mark the phase
in_progress - Update
current_phase - Set
current_batch: null - Update the progress-tracking tool (use the tool names from
get_runtime_context) before delegation - Delegate to the assigned agent with the required header and full context
- Parse the returned handoff
- Update session state
- Mark the phase
completedorfailed - Update the progress-tracking tool after the state update
Native Parallel Execution Protocol
Use native parallel execution only for sibling phases at the same dependency depth with non-overlapping file ownership.
Batch Rules
- Verify all blocking phases for every phase in the batch are completed
- Slice the ready batch into the current dispatch chunk using
MAESTRO_MAX_CONCURRENT - Mark only the current chunk phases
in_progress - Set
current_batchin session state for that chunk - Write one in-progress todo item for the chunk
- In the next turn, emit only agent tool calls for that chunk
- Do not mix shell commands, validation commands, file writes, or narration between those agent calls
MAESTRO_MAX_CONCURRENT=0means emit the entire ready batch in one turn
Native Constraints
- The runtime only parallelizes contiguous agent calls in one turn
- Native subagents currently run without user approval gates
ask_userremains available; a batch may pause while waiting for user input- If execution is interrupted, restart unfinished
in_progressphases on resume instead of attempting to restore in-flight subagent interactions
Progress Context
Include the following in every delegation query body:
Progress: Phase [N] of [M]: [Phase Name]
Session: [session_id]
For native parallel batches, also include the batch identifier in the required header:
Agent: <agent_name>
Phase: <id>/<total>
Batch: <batch_id>
Session: <session_id>
Error Handling Protocol
Record all errors in session state with:
agenttimestamptypemessageresolution
Retry Logic
- Maximum retries per phase:
MAESTRO_MAX_RETRIES(default2) - First failure: analyze, adjust context/scope, retry automatically
- Subsequent failures up to the limit: continue retrying with clearer constraints
- Limit exceeded: mark the phase
failedand escalate to the user
Increment retry_count on each retry.
Timeout / Termination Handling
When a native subagent terminates early or exceeds its configured timeout:
- Record any useful partial output in session state
- Report what the agent was attempting
- Retry with narrower scope when reasonable
- Escalate if repeated failures continue
File Conflict Handling
When a subagent reports a file conflict:
- Stop execution immediately
- Record the conflicting files and phases
- Do not attempt automatic merge resolution
- Ask the user how to proceed
Subagent Output Processing
Native subagent results are wrapped. Do not assume the handoff begins at byte 0.
Parsing Rules
- Locate
## Task Report(or# Task Report) inside the returned text - Locate
## Downstream Context(or# Downstream Context) inside the returned text - Parse:
- status
- files created / modified / deleted
- downstream context fields
- validation result
- reported errors
- Persist the full raw output plus the parsed fields into session state
State Update Sequence
After processing each handoff:
- Update the phase file manifests
- Update
downstream_context - Append any errors
- Aggregate token usage
- If validation passed, mark the phase
completed - If validation failed, trigger retry logic
- Update
updated - Advance or clear
current_batchas each chunk finishes
Completion Protocol
When all phases are completed:
- Verify there are no
failedorpendingphases - Confirm plan deliverables are accounted for
- Run the final code-review gate for non-documentation changes
- Archive the session through
session-management - Present a final summary with deliverables, files changed, token usage, deviations, and review status
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
execute
Execute an approved Maestro implementation plan using the shared session-state contract
orchestrate
Run the full Maestro workflow for complex engineering tasks that need a mandatory design dialogue, approved implementation plan, and then execution with shared session state
resume
Resume an interrupted Maestro session using the existing active-session file and shared phase tracking
execute
Execute an approved Maestro implementation plan using the shared session-state contract
orchestrate
Run the full Maestro workflow for tasks that need design dialogue, implementation planning, shared session state, delegated execution, and review
resume
Resume the active Maestro session from docs/maestro state
Didn't find tool you were looking for?