[EXPLICIT INVOCATION ONLY] Create dependency-aware Autolab implementation plans optimized for parallel multi-agent execution.
Use this skill when the user explicitly asks for $swarm-planner to create or revise an execution-ready implementation plan.
.autolab stage and iteration context..autolab availability..autolab/state.json.autolab/verifier_policy.yaml.autolab/prompts/ when relevantexperiments/<iteration_id>/ when availablefinal-plan.md exists in the plan directory (e.g. from $llm-council), use it as starting input rather than generating from scratch..autolab/prompts/rendered/<stage>.context.json when present. Extract allowed_edit_dirs from runner_scope and constrain task location and touches to paths within allowed dirs.Write the plan to:
experiments/<iteration_id>/implementation_plan.md when iteration_id exists.experiments/plan/<topic>/implementation_plan.md.Emit plan_metadata.json alongside the plan with fields: schema_version ("1.0"), iteration_id, generated_at, skill_used ("swarm-planner"), task_count. Optional: wave_count, dependency_depth, conflict_groups, total_touches_count.
Example plan_metadata.json:
{
"schema_version": "1.0",
"iteration_id": "iter_001",
"generated_at": "2026-01-15T10:30:00Z",
"skill_used": "swarm-planner",
"task_count": 8,
"wave_count": 3,
"dependency_depth": 2,
"conflict_groups": ["db_schema", "config_files"],
"total_touches_count": 14
}
Every task must include:
iddepends_onlocationdescriptiontouches (list of file paths/globs the task edits) -- required for wave safety validation. Plans without touches produce weaker wave overlap detection.scope_ok (true after confirming task paths are inside allowed_edit_dirs)validationstatus (default Not Completed)log (empty placeholder)files edited/created (empty placeholder)Optional per task:
conflict_group -- tasks sharing a group must not run in the same waveInclude:
depends_on: [] for roots).location must be specific.touches (list of file paths/globs the task edits).scope_ok: true only after validating touches/location against allowed_edit_dirs.conflict_group field: tasks sharing a group must not be in the same wave.touches within a wave.After drafting the plan:
# Plan: <task title>
**Generated**: <timestamp>
**Iteration**: <iteration_id or none>
**Stage Context**: <active stage>
## Overview
<summary>
## Dependency Graph
<ascii graph>
## Verifier Outputs
- tests: pass|skip|fail
- dry_run: pass|skip|fail
- schema: pass|skip|fail
## Dry Run
- command:
- status:
- evidence:
## Evidence Paths
- `path/to/log_or_output`
## Change Summary
<concise summary of what this plan changes and why>
## Files Updated
<list of files to be created or modified>
## Tasks
### T1: <name>
- **depends_on**: []
- **location**: <paths>
- **description**: <work>
- **touches**: [<file paths/globs>]
- **scope_ok**: true
- **conflict_group**: <optional>
- **validation**: <checks>
- **status**: Not Completed
- **log**:
- **files edited/created**:
### T2: <name>
- **depends_on**: [T1]
- **location**: <paths>
- **description**: <work>
- **touches**: [<file paths/globs>]
- **scope_ok**: true
- **conflict_group**: <optional>
- **validation**: <checks>
- **status**: Not Completed
- **log**:
- **files edited/created**:
## Parallel Execution Groups
- `wave`: 1; `tasks`: T1; `can_start_when`: Immediately
- `wave`: 2; `tasks`: T2; `can_start_when`: T1 complete
## Testing Strategy
<strategy>
## Risks and Mitigations
<risks>
## Assumptions and Defaults
<assumptions>
status must be one of: Not Completed, Completed, In Progress, Blocked## Change Summary section is required by implementation_plan_lint.pytouches pathsconflict_group