# worker-orchestrator
> Manages parallel Claude instances via tmux for multi-worktree development. Use when spawning workers, checking status, collecting results, or coordinating parallel tasks.
- Author: ssiumha
- Repository: ssiumha/dots
- Version: 20260121142812
- Stars: 9
- Forks: 0
- Last Updated: 2026-02-07
- Source: https://github.com/ssiumha/dots
- Web: https://mule.run/skillshub/@@ssiumha/dots~worker-orchestrator:20260121142812
---
---
name: worker-orchestrator
description: Manages parallel Claude instances via tmux for multi-worktree development. Use when spawning workers, checking status, collecting results, or coordinating parallel tasks.
---
# Worker Orchestrator
tmux 기반 병렬 Claude 인스턴스 관리. git-worktree skill과 연계하여 워커 라이프사이클 지원.
## 워크플로우
```mermaid
graph LR
A[spawn] --> B[WORK]
B --> C{Complete?}
C -->|Yes| D[collect]
C -->|No| B
D --> E[kill]
subgraph Monitoring
F[status]
G[list]
end
B -.-> F
B -.-> G
```
## 핵심 개념
### 워커 = Worktree + tmux 세션
| 항목 | 형식 | 예시 |
|------|------|------|
| tmux 세션명 | `wt-{feature}` | `wt-login`, `wt-auth` |
| 결과 파일 | `{worktree}/.worker-result.md` | 워커 작업 결과 저장 |
| 상태 파일 | `{worktree}/.worker-status` | `running`, `done`, `failed` |
### 아키텍처
```mermaid
graph TB
O[Orchestrator
tmux: orchestrator] --> W1[Worker 1
tmux: wt-login]
O --> W2[Worker 2
tmux: wt-auth]
W1 --> WT1[worktree: login]
W2 --> WT2[worktree: auth]
WT1 --> R1[.worker-result.md]
WT2 --> R2[.worker-result.md]
```
## .worktree.json 확장
```json
{
"feature": "login",
"worker": {
"session": "wt-login",
"task": "로그인 API 구현",
"started_at": "2025-01-20T10:00:00"
}
}
```
## 명령어
**Placeholder**: `{feature}` = worktree feature명, `{task}` = 작업 내용
### spawn {feature} "{task}"
워커 생성. worktree에 Claude 인스턴스 배치.
- 스크립트: `scripts/spawn.sh`
### status [feature]
워커 상태 확인. feature 없으면 전체 조회.
- 스크립트: `scripts/status.sh`
- 출력: `WORKER | STATUS | DURATION | LAST OUTPUT`
### collect [feature]
완료된 워커 결과 수집. done/failed 상태만.
- 스크립트: `scripts/collect.sh`
### kill {feature}
워커 종료. running 상태면 경고 후 재실행 시 강제 종료.
- 스크립트: `scripts/kill.sh`
### list
활성 워커 목록.
- 스크립트: `scripts/list.sh`
### kill-all [--force]
모든 워커 일괄 종료.
- 스크립트: `scripts/kill-all.sh`
## 결과 수집 프로토콜
```
{task}
완료되면:
1. 결과를 .worker-result.md 에 저장
2. echo "done" > .worker-status
3. "작업 완료" 출력
실패 시:
1. 에러 내용을 .worker-result.md 에 저장
2. echo "failed" > .worker-status
3. "작업 실패" 출력
```
## 안전장치
| 상황 | 동작 | 우회 |
|------|------|------|
| spawn 시 worktree 없음 | 차단 | worktree 먼저 생성 |
| spawn 시 이미 실행 중 | 차단 | kill 후 재시도 |
| kill 시 running 상태 | 경고 | 재실행 시 강제 종료 |
| kill-all 시 running 존재 | 차단 | `--force` |
## 중요 원칙
1. **1:1 매핑**: 워커 = Worktree + tmux 세션
2. **비블로킹**: sleep 대신 파일 기반 통신
3. **명시적 종료**: 완료 후 상태 파일 업데이트 필수
4. **결과 보존**: kill 시 `.worker-result.md` 유지
5. **git-worktree 연계**: worktree 없으면 spawn 불가
## Example
```
# 1. worktree 생성
/git-worktree add login
/git-worktree add auth
# 2. 워커 배치
/worker-orchestrator spawn login "로그인 API 구현"
/worker-orchestrator spawn auth "OAuth2 인증 구현"
# 3. 모니터링
/worker-orchestrator status
# 4. 결과 수집
/worker-orchestrator collect
# 5. 정리
/worker-orchestrator kill login
```
## Technical Details
| 도구 | 용도 | 필수 |
|------|------|------|
| tmux | 세션 관리 | O |
| jq | JSON 파싱 | O |
| git | worktree 조회 | O |
**연계 Skill**: git-worktree (spawn 전 worktree 필요)
**파일 구조**:
```
{worktree}/
├── .worktree.json # worker 필드
├── .worker-status # running | done | failed
└── .worker-result.md # 작업 결과
```
**tmux 세션**: `wt-{feature}` (조회: `tmux list-sessions | grep "^wt-"`)