From maestro
Decomposes a heavy-mode product spec into a phased mission with child tasks, persisted as JSONL files. Activates after `maestro-design` produces a heavy spec or when a task needs to be promoted to multi-PR work.
How this skill is triggered — by the user, by Claude, or both
Slash command
/maestro:maestro-missionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Heavy-mode work runs as a mission with child tasks. This skill is the bridge from a heavy spec to the first claimed task. Light-mode specs skip this skill — they go straight to `maestro-task`.
Heavy-mode work runs as a mission with child tasks. This skill is the bridge from a heavy spec to the first claimed task. Light-mode specs skip this skill — they go straight to maestro-task.
maestro-design with mode: heavy.Do not use for:
Call EnterPlanMode as the first action of this skill, before reading context or drafting the plan.
Plan mode enforces read-only behavior so the plan is built from verified context without side effects. Stay in plan mode for the entire drafting pass: exploration, synthesis, phasing, validation design. Do not edit files or run destructive commands while in plan mode. Use Read, Grep, Glob, and Bash for inspection only.
When the plan is complete and ready to present, call ExitPlanMode with the full plan content as the argument. If the user rejects the plan, re-enter plan mode and revise rather than starting implementation.
.maestro/specs/<slug>.md. Carry forward acceptance_criteria, non_goals, work_type, and any open questions.If the spec is light-mode or has not been authored, stop and route the user to maestro-design first.
For each phase, include: purpose, child tasks, dependencies, verification checkpoint.
The verification protocol is maestro-verify — every task ends with maestro task verify, every PR is gated by CI Maestro.
When the user approves, run the mission lifecycle. There are four entry points; pick whichever matches the starting material:
maestro mission new "<title>" --from-spec .maestro/specs/<slug>.md
Creates a mission in approved. approved here means "spec parsed", NOT a human approval gate. Captures the returned pln-... id. Requires mode: heavy on the spec — light-mode specs are rejected with MissionRequiresHeavyModeError.
maestro mission new "<title>" --from-file tasks.json
Reads a JSON array of {title, slug, spec_path?} task objects and creates a mission directly in planned with those tasks seeded as drafts. Skips the approved step entirely.
maestro mission new "<title>" --template refactor # or: feature, bug, migration
Built-in templates seed 4 starter tasks (slugged under the mission slug) and land at planned. Custom templates live in .maestro/templates/missions/<name>.yaml and override built-ins of the same name. Run maestro mission new --list-templates to discover available templates.
maestro mission new "<title>" # creates at intake
maestro mission decompose <pln-id> --file tasks.json # advances intake -> planned
Bare missions sit in intake until decompose attaches tasks. mission decompose accepts both intake and approved as input states, so spec-first and stub-first workflows both work.
[
{ "title": "Scaffold feature X", "slug": "scaffold-feature-x" },
{ "title": "Implement core use-case", "slug": "impl-feature-x-core" },
{ "title": "Add unit + integration tests", "slug": "test-feature-x" }
]
The batch is validated atomically: no duplicate slugs within the batch, no collisions with existing tasks. Decompose refuses missions that already have any tasks — use task from-spec to add more tasks manually, or mission cancel and start over.
maestro mission show <pln-id>
maestro mission show <pln-id> --json
Prints the mission state, the spec path, and every child task with its current state.
The mission auto-advances planned → in-progress on the first task claim (ADR-0011). After that, mission state auto-derives from task rollup — no manual mission start or mission complete verb. Load maestro-task and execute from there.
+- (auto-pause) -> paused
/ \
intake -> approved -> planned -> in-progress ---------+ +-> in-progress (auto-resume)
\ \ \ \ \ /
\ \ \ \ +- (rollup) -> completed | failed
\ \ \ \
\ \ \ +-> cancelled (verb: mission cancel)
\ \ +-> cancelled
\ +-> cancelled
+-> cancelled
intake → planned is the bare-title decompose path.approved is the spec-parsed state, not a reviewer gate (gates are task-level).paused fires automatically when every active task is blocked; in-progress resumes when any unblocks.completed requires every task shipped; any abandoned task flips the terminal to failed.completed, failed, cancelled are absorbing. To "retry" a failed mission, create a new one.maestro mission cancel <pln-id>
maestro mission cancel <pln-id> --reason "<text>"
Cascades to active tasks (transitions them to abandoned) then transitions the mission to cancelled. Idempotent on already-cancelled missions. Errors on completed / failed — those represent different outcomes and shouldn't be re-stamped. Best-effort: a task that fails to abandon mid-cascade is reported in the result (cascadeErrors), and the mission still cancels.
The mission record in .maestro/missions/missions.jsonl carries title, slug, spec_path, and state — it does not carry narrative. For non-trivial missions, persist a markdown sidecar so future sessions and reviewers have the rationale:
.maestro/missions/<slug>.md:
# <Title>
## Objective
<1-2 sentence restatement of the heavy-mode spec's goal>
## Scope
**In:** <what is included>
**Out:** <what is explicitly excluded>
## Research findings
<context gathered during planning, grounded in verified files or artifacts>
## Phases
- [ ] Phase 1 — <outcome> — tasks: <tsk-...>, <tsk-...>
- [ ] Phase 2 — <outcome> — tasks: <tsk-...>
## Verification
<commands, tests, manual checks per phase>
## Risks and cut lines
<the highest-risk assumption; what can be deferred>
Collision handling: if .maestro/missions/<slug>.md already exists, append a numeric suffix (<slug>-2.md).
Skip this section entirely when no maestro project is detected.
maestro task ship; the PR opens through normal git flow before ship.The next phase after this skill is maestro-task.
Pass a decomposed mission with child tasks materialized — not just a mission record.
Do not invoke implementation from this skill.
When the child tasks exist and the user approves, invoke the Skill tool with skill: "maestro-task" and claim the first child. mission decompose does not emit a handoff envelope; the only handoff trigger here is the first maestro task claim, which writes a task:claim envelope to .maestro/handoffs/<hnd-...>.json (see maestro-handoff for the read side).
maestro-design — grill-protocol spec authoring (run before this skill).maestro-task — single-task execution loop (run after this skill for each child).maestro-verify — canonical verification protocol.docs/cli-reference.md — verb-by-verb reference.docs/adr/0003-task-lifecycle.md, docs/adr/0011-exec-plan-auto-complete.md — the lifecycle decisions this skill rides on.npx claudepluginhub reinamaccredy/maestro --plugin maestroHandles single-task execution in a maestro project: spec authoring, task claiming, iteration through verify/block/ship, and automatic handoff envelopes.
Transforms a specification into a dependency-aware task graph. Use after cw-spec to break a spec into executable tasks before dispatching.
Creates execution plans from feature specs by decomposing tasks, validating quality, analyzing dependencies, grouping into phases, and committing. Supports multi-repo workspaces via /spectacular:plan.