Orchestrate parallel phase execution from plan files. Parses symphony-phases blocks, builds dependency DAG, and executes phases concurrently using Task tool. Supports artifact propagation between phases and automatic dependency resolution using Kahn's algorithm.
View on GitHubxavierchoi/xavierchoi_skills
vs-design-diverge
January 21, 2026
Select agents to install to:
npx add-skill https://github.com/xavierchoi/xavierchoi_skills/blob/main/skills/symphony/SKILL.md -a claude-code --skill symphonyInstallation paths:
.claude/skills/symphony/# Symphony Skill
Orchestrate parallel phase execution from plan files containing `symphony-phases` code blocks.
## Trigger Keywords
- conduct
- orchestrate
- execute plan
- run phases
- symphony
- 계획 실행 (execute plan in Korean)
- 오케스트레이트 (orchestrate in Korean)
## Workflow
### 1. Detect Plan File
Find the plan file to execute:
```bash
# Check context for plan path, or find latest in ~/.claude/plans/
ls -t ~/.claude/plans/*.md 2>/dev/null | head -1
```
Search for `symphony-phases` code blocks in:
1. Plan path provided in context
2. Most recently modified file in `~/.claude/plans/`
3. `plan.md` in current directory
### 2. Parse and Validate Plan
Extract phases from the `symphony-phases` code block:
```bash
# Read the plan file and extract the JSON block
# Look for: ```symphony-phases ... ```
```
Validate each phase has required fields:
- `id` (kebab-case, max 64 chars)
- `title`, `objective`, `tasks[]`
- `dependencies[]`, `complexity`
- `required_context.files[]`, `required_context.concepts[]`, `required_context.artifacts_from[]`
- `success_criteria`
Use `scripts/lib/validation.ts` for validation logic.
### 3. Initialize State
Create state file `.symphony-state.json`:
```json
{
"planPath": "/path/to/plan.md",
"startedAt": "ISO-timestamp",
"phases": {
"phase-id": { "status": "pending", "artifacts": [] }
},
"completedCount": 0,
"failedCount": 0,
"status": "running"
}
```
### 4. Orchestration Loop (with Automatic Retry)
Execute phases respecting dependencies with intelligent retry:
```
WHILE not all phases complete/failed/aborted:
1. Check "retrying" phases: if backoff elapsed, move to "ready"
2. Handle "awaiting_decision" phases:
- Display: "Phase {title} failed after {n} retries"
- Show error and category
- Offer: [retry once more | skip | abort branch | abort all]
- Process with resolve-decision.ts
3. Get ready phases (pending with all deps complete)
4. For each ready phase:
- Mark as "running"