| allowed-tools | ["Agent","Read","Write","Bash","Glob","Grep"] |
| description | Use when PLAN.md or SPEC.md exists and tasks require splitting into waves for parallel execution in isolated worktrees. |
| name | dispatcher |
| trigger | dispatch, ๋ณ๋ ฌ ์คํ, wave ์คํ, ์ด์ ๋ฐฐ์ , ์ด์ ๋ถํ , work split, parallel issue, ๋ง์คํฐํ๋, plan split, master work ๋ถํ , 6-phase ์ค์ผ์คํธ๋ ์ด์
, wave loop, subagent dispatch, ์ํฌํธ๋ฆฌ ๋ณ๋ ฌ, git worktree ๊ด๋ฆฌ, issue orchestration, wave dispatch, work ๋ณํฉ, wave merge, ๋ณ๋ ฌ ์ํฌํธ๋ฆฌ, ์ด์ ์ถ์ , track wave, crash recovery, ์ค๋จ ๋ณต๊ตฌ, ์ค์ผ์คํธ๋ ์ดํฐ, dispatcher skill, plan to work, master ์์ฑ, work ๋ถํ , wave ์์ฐจ ์ฒ๋ฆฌ, ๋ณ๋ ฌ ๋ฐฐํฌ, ์ด์ ๋ถํ ์คํ |
| version | 2.0.0 |
Quick Reference
- ์ํ ์์กด์ฑ: Split ์ ์์กด์ฑ ๊ทธ๋ํ ์ํ ๊ฐ์ง ์ ์ฆ์ ์ค๋จ ๋ฐ ์ฌ๋ถํ ์์ฒญ
- ํ์ผ ์ถฉ๋: ๊ฐ์ Wave ๋ด files/side_effect_files ์ค๋ณต ์ Wave ๋ถ๋ฆฌ ๋๋ ์ฌ๋ถํ
- Wave ์์: Wave N+1์ Wave N์ ๋ชจ๋ Work MERGE ์๋ฃ ํ์๋ง ์์
- 3-Strike Rule: ๋์ผ Work 3ํ ์ฐ์ ์คํจ ์ ์ฆ์ ์ฌ์ฉ์ ์์ค์ปฌ๋ ์ด์
- ๊ฒ์ฆ ์๋ฃ: ํตํฉ ํ
์คํธ ํต๊ณผ ์์๋ง ์ํฌํธ๋ฆฌ ์ ๋ฆฌ ๋ฐ MASTER ์ํ ๋ณ๊ฒฝ
Orchestration Lifecycle
Phase 1: SPLIT
Phase 2: BRANCH
โโโโ Wave Loop โโโโโโโโโโโโโโโโโโโโ
โ Phase 3: DISPATCH (Wave N) โ
โ Phase 4: TRACK (Wave N) โ
โ Phase 5: MERGE (Wave N) โ
โ โ Wave N+1์ด ์์ผ๋ฉด ๋ฃจํ ๋ฐ๋ณต โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Phase 6: VERIFY โ CLOSE
Phase 1: PLAN โ SPLIT
PLAN.md ๋๋ SPEC.md๋ฅผ ์ฝ๊ณ MASTER/WORK ์ด์ ๋ฌธ์๋ฅผ ์์ฑํ๋ค.
-
MASTER ์์ฑ
bash .hxsk/scripts/issue-create.sh master "<ํ๋ ์ ๋ชฉ>"
-
Work ๋ถํ โ AI ์์ด์ ํธ๊ฐ PLAN์ task๋ฅผ ๊ฒน์น์ง ์๋ Work ๋จ์๋ก ๋ถํ
- ๊ฐ Work์ files, side_effect_files ๋ช
์
- depends_on์ผ๋ก ์์กด์ฑ ๋ช
์ (๊ฐ์ MASTER ๋ด๋ง)
bash .hxsk/scripts/issue-create.sh work <master-id> "<title>" <wave> "<depends_on>" "<files>" "<side_effect_files>"
-
Wave ์๋ ๋ฐฐ์ (์์ ์ ๋ ฌ)
- ๋ชจ๋ WORK์ depends_on ๊ทธ๋ํ ๊ตฌ์ฑ
- ์ํ ์์กด์ฑ ๊ฐ์ง โ ๋ฐ๊ฒฌ ์ ์๋ฌ, ์ฌ์ฉ์์๊ฒ ๋ถํ ์ฌ์์ฒญ
- depends_on์ด ๋น์ด์์ผ๋ฉด โ Wave 1
- ๋ณต์ ์์กด์ฑ:
max(์ ํ Work๋ค์ Wave) + 1
- ์์ ์ ๋ ฌ ์์๋๋ก ์ฒ๋ฆฌ
-
ํ์ผ ์์ ๊ถ ๊ฒ์ฆ
- ๊ฐ์ Wave ๋ด Work ๊ฐ
files + side_effect_files ๊ฒน์นจ ์ฒดํฌ
- ๊ฒน์นจ ๋ฐ๊ฒฌ โ Wave ๋ถ๋ฆฌ ๋๋ Work ์ฌ๋ถํ
- ๋ค๋ฅธ Wave ๊ฐ ๊ฒน์นจ โ depends_on ๋ช
์ ํ์
-
MASTER ๋ฌธ์ ์
๋ฐ์ดํธ โ works, wave_plan ํ๋ ์ฑ์ฐ๊ธฐ
Phase 2: BRANCH
๋ฉ์ธ ์ด์ ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.
git checkout -b feat/master-<id>
MASTER ๋ฌธ์์ branch ํ๋ ๊ธฐ๋ก. status๋ฅผ in-progress๋ก ๋ณ๊ฒฝ.
Phase 3: DISPATCH (Wave๋ณ)
ํ์ฌ Wave์ Work๋ค์ ๋ณ๋ ฌ ์ํฌํธ๋ฆฌ ์๋ธ์์ด์ ํธ๋ก ์คํํ๋ค.
์ค์: Wave N+1์ ์ํฌํธ๋ฆฌ๋ Wave N ๋จธ์ง ์๋ฃ ํ ์ด์ ๋ธ๋์น์์ ์์ฑํด์ผ ํ๋ค.
๊ฐ Work์ ๋ํด:
- WORK ๋ฌธ์ status๋ฅผ
in-progress๋ก ์
๋ฐ์ดํธ
- ์๋ธ์์ด์ ํธ dispatch:
Agent(
prompt: <์๋ธ์์ด์ ํธ ํ๋กฌํํธ>,
isolation: "worktree",
subagent_type: "general-purpose",
run_in_background: true # ๊ฐ์ Wave ๋ด ๋ณ๋ ฌ
)
- WORK ๋ฌธ์์ worktree, worktree_branch ๊ธฐ๋ก
์๋ธ์์ด์ ํธ ํ๋กฌํํธ ํ
ํ๋ฆฟ:
You are executing {WORK_ID}.
Main root: resolve via `git worktree list | head -1 | awk '{print $1}'`
Read your work spec: {main_root}/.hxsk/issues/{WORK_ID}.md
Rules:
- Tasks ์น์
์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์์ฐจ ์ํ
- files ํ๋์ ๋ช
์๋ ํ์ผ๋ง ์์ (side_effect_files๋ ํ์ฉ)
- ๊ฐ Task๋ง๋ค atomic commit
- ์ปค๋ฐ ๋ฉ์์ง ํ์: feat({WORK_ID}): {๋ด์ฉ}
- files + side_effect_files ๋ฒ์ ๋ฐ ํ์ผ ์์ ๊ธ์ง
- ์๋ฃ/์คํจ ์ exit
## LESSONS-LEARNED ์ฐธ์กฐ (REQUIRED)
์คํ ์ ๊ด๋ จ ํจํด ์กฐํ:
```bash
bash .hxsk/hooks/md-recall-memory.sh "{WORK_ID} {task description} lessons-learned" \
"." 5 compact
```
ํด๋น A/B/C/D/E ํจํด ํ์ธ ํ ๋์ผ ์ค์ ๋ฐฉ์ง.
## Self-Review (REQUIRED)
์๋ฃ ๋ณด๊ณ ์ ์๋ ํ๋ฅผ ๋ช
์์ ์ผ๋ก ์์ฑ:
| ์นดํ
๊ณ ๋ฆฌ | ํ์ธ ํญ๋ชฉ | ๊ฒฐ๊ณผ |
|---|---|---|
| A | docstring โ ๊ตฌํ ์ผ์น | PASS / FAIL / N/A |
| B | real path ํ
์คํธ ํฌํจ | PASS / FAIL / N/A |
| C | cross_phase_invariants ์๋ฐ ์์ | PASS / FAIL / N/A |
| D | resource cleanup ์กด์ฌ | PASS / FAIL / N/A |
| E | ๋ฏธ์ฌ์ฉ entity ์์ | PASS / FAIL / N/A |
## Ambiguity Log (REQUIRED)
PLAN.md์ ์๋ ๊ฒฐ์ ์ ๋ด๋ฆฐ ๊ฒฝ์ฐ ๊ฐ๊ฐ ๊ธฐ๋ก:
DECISION: {๋ฌด์์ ๊ฒฐ์ }
REASON: {์ ๊ทธ๋ ๊ฒ ๊ฒฐ์ }
ALT: {๊ณ ๋ คํ ๋ค๋ฅธ ์ต์
}
๊ฒฐ์ ์ด ์์๋ค๋ฉด: DECISION LOG: none
Phase 4: TRACK (Wave๋ณ)
์๋ธ์์ด์ ํธ ์๋ฃ๋ฅผ ๊ฐ์งํ๊ณ ์ด์ ๋ฌธ์๋ฅผ ์
๋ฐ์ดํธํ๋ค.
-
์ํ ๊ฐ์ง
- Agent ๋๊ตฌ ๋ฐํ๊ฐ์ผ๋ก ์ฑ๊ณต/์คํจ ํ๋จ
- ์ํฌํธ๋ฆฌ
git log --oneline์ผ๋ก ์ค์ ์ปค๋ฐ ํ์ธ
-
WORK ๋ฌธ์ ์
๋ฐ์ดํธ
- ์ฑ๊ณต โ status:
done, Result ์น์
์ ์ปค๋ฐ ํด์/๋ณ๊ฒฝ ์์ฝ
- ์คํจ โ status:
failed, Failure Log์ ์ฌ์ /์๋ ํ์
- 3-Strike Rule: ๋์ผ Work 3ํ ์คํจ ์ ์ฌ์ฉ์ ์์ค์ปฌ๋ ์ด์
-
MASTER Progress ๊ฐฑ์
- Wave๋ณ ์๋ฃ ํํฉ ์
๋ฐ์ดํธ
- Wave ๋ด ๋ชจ๋ Work ์๋ฃ ํ์ธ ํ Phase 5๋ก ์ดํ
Phase 5: MERGE (Wave๋ณ)
์๋ฃ๋ ์ํฌํธ๋ฆฌ๋ฅผ ๋ฉ์ธ ์ด์ ๋ธ๋์น์ ์์ฐจ ๋จธ์งํ๋ค.
bash .hxsk/scripts/merge-worktrees.sh <worktree-path> <branch-name>
- ๋จธ์ง ์คํ โ Wave ๋ด Work์ ์์ฐจ ์ฒ๋ฆฌ
- ์ถฉ๋ ์ฒ๋ฆฌ
- ์๋ ํด์ ์๋
- ์คํจ ์ MASTER Notes์ ๊ธฐ๋ก + ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์๋ ํด๊ฒฐ
- MASTER Merge Log ๊ธฐ๋ก โ ๋ ์ง, WORK ID, ์ปค๋ฐ ํด์, ๊ฒฐ๊ณผ
- ์ํฌํธ๋ฆฌ ๋ณด์กด โ Phase 6 ๊ฒ์ฆ ํต๊ณผ๊น์ง ์ญ์ ํ์ง ์์
- โ ๋ค์ Wave๊ฐ ์์ผ๋ฉด Phase 3๋ก ๋ณต๊ท (์ด์ ๋ธ๋์น ๊ธฐ๋ฐ ์ ์ํฌํธ๋ฆฌ)
Phase 6: VERIFY โ CLOSE
์ ์ฒด ๋จธ์ง ์๋ฃ ํ ํตํฉ ๊ฒ์ฆ์ ์ํํ๋ค.
- ํตํฉ ํ
์คํธ โ ์ด์ ๋ธ๋์น์์ ํ๋ก์ ํธ ํ
์คํธ ์คํ
- ๊ฒ์ฆ ์คํจ ์ โ ์ํฌํธ๋ฆฌ ๋ณด์กด ์ํ์ด๋ฏ๋ก ๋๋ฒ๊น
/๋กค๋ฐฑ ๊ฐ๋ฅ
- ๊ฒ์ฆ ํต๊ณผ ํ:
- ์ํฌํธ๋ฆฌ ์ ๋ฆฌ (
git worktree remove)
- MASTER ๋ฌธ์ status:
done
- ์๋ฃ ์ด์๋ฅผ
.hxsk/issues/archive/๋ก ์ด๋
- ๋ง์คํฐ ๋จธ์ง๋ ์ฌ์ฉ์ ํ์ธ ํ ์งํ
Crash Recovery Protocol
์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ ์ฌ๊ฐ ์ ์ฐจ:
.hxsk/issues/MASTER-*.md์์ status: in-progress์ธ ๋ฌธ์ ๊ฒ์
- ํด๋น MASTER์ WORK ๋ฌธ์๋ค status ํ์ธ
- status:
in-progress์ธ WORK์ ๋ํด:
git worktree list๋ก ์ํฌํธ๋ฆฌ ์กด์ฌ ํ์ธ
- ์กด์ฌ โ
git log --oneline์ผ๋ก ์ปค๋ฐ ํ์ธ, ์ค์ ์๋ฃ ์ฌ๋ถ ํ๋จ
- ๋ฏธ์กด์ฌ โ status:
failed๋ก ๊ฐฑ์ , ์ฌ์คํ ๋์
- ๋ฏธ์๋ฃ Wave๋ถํฐ Phase 3 ๋ฃจํ ์ฌ๊ฐ
Dispatch Rules
- Wave ์์ ์์: Wave N+1์ Wave N ๋จธ์ง ์๋ฃ ํ์๋ง ์์
- ํ์ผ ์์ ๊ถ ๊ฒ์ฆ: ๊ฐ์ Wave ๋ด files + side_effect_files ๊ฒน์นจ ๊ธ์ง
- Subagent ๋
๋ฆฝ์ฑ: ๊ฐ ์๋ธ์์ด์ ํธ๋ ์์ฒด ์ํฌํธ๋ฆฌ์์ ๋
๋ฆฝ ์คํ
- ์คํจ ๊ฒฉ๋ฆฌ: ํ๋์ ์๋ธ์์ด์ ํธ ์คํจ๊ฐ ๋ค๋ฅธ ์๋ธ์์ด์ ํธ์ ์ํฅ ์์
- ๊ฒฐ๊ณผ ๋ฆฌ๋ทฐ: merge ์ ๊ฐ ์๋ธ์์ด์ ํธ ๊ฒฐ๊ณผ๋ฅผ ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ๋ฆฌ๋ทฐ
- ์ค์ผ์คํธ๋ ์ดํฐ ๋จ๋
์ฐ๊ธฐ: ์ด์ ๋ฌธ์๋ ์ค์ผ์คํธ๋ ์ดํฐ๋ง ์์ฑ/์
๋ฐ์ดํธ
- ์ํฌํธ๋ฆฌ ๋ธ๋์น ๋ค์ด๋ฐ:
feat/master-{id}/work-{seq}
Main Root Resolve
์๋ธ์์ด์ ํธ๊ฐ ์ํฌํธ๋ฆฌ์์ ๋ฉ์ธ ๋ฃจํธ๋ฅผ resolveํ๋ ๋ฒ์ฉ ํจํด:
MAIN_ROOT=$(git worktree list | head -1 | awk '{print $1}')
์ด๋ค ํ๋ก์ ํธ/๋จธ์ ์์๋ ๋ณ๋ ์ค์ ์์ด ๋์.
Iron Laws
NO DISPATCH WAVE N+1 WITHOUT MERGE WAVE N FIRST
NO SPLIT WITHOUT CYCLIC DEPENDENCY CHECK FIRST
NO PARALLEL DISPATCH WITHOUT FILE OWNERSHIP VERIFICATION FIRST
NO FILE MODIFICATION WITHOUT FILES LIST SPECIFICATION FIRST
NO WORK COMPLETION WITHOUT SELF-REVIEW TABLE FIRST
NO MERGE WITHOUT LESSONS-LEARNED REFERENCE FIRST
NO MERGE WITHOUT ORCHESTRATOR REVIEW FIRST
NO ESCALATION WITHOUT 3-STRIKE FAILURE COUNT FIRST
NO CRASH RECOVERY WITHOUT WORKTREE STATE VERIFICATION FIRST
NO DISPATCH WITHOUT MASTER BRANCH CREATION FIRST
NO WORKTREE REMOVAL WITHOUT FINAL VERIFICATION PASS FIRST
NO ISSUE DOCUMENT UPDATE WITHOUT ORCHESTRATOR AUTHORITY FIRST