uctm 1.5.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,120 +1,217 @@
1
- # Agent Communication XML Schema
1
+ # 에이전트 통신 XML 스키마
2
2
 
3
- XML communication format definition for uc-taskmanager agents.
3
+ uc-taskmanager 에이전트용 XML 통신 형식 정의.
4
4
 
5
5
  ---
6
6
 
7
- ## 1. Dispatch Format (Dispatcher → Receiver)
7
+ > **디스패처 라벨**: dispatch를 발신하고 task-result를 수신하는 디스패처 역할은 **orchestrator**가 수행한다. 아래 §1/§2의 "디스패처"는 모두 orchestrator를 가리킨다.
8
+
9
+ ## 1. Dispatch 형식 (orchestrator → 수신자)
8
10
 
9
11
  ```xml
10
- <dispatch to="{receiver}" work="{WORK_ID}" task="{TASK_ID}" execution-mode="{direct|pipeline|full}">
11
- <ref-cache> <!-- optional -->
12
- <ref key="shared-prompt-sections">{file content}</ref>
13
- <ref key="file-content-schema">{file content}</ref>
14
- <ref key="xml-schema">{file content}</ref>
15
- <ref key="context-policy">{file content}</ref>
16
- <ref key="work-activity-log">{file content}</ref>
12
+ <dispatch to="{receiver}" work="{WORK_ID}" task="{TASK_ID}">
13
+ <ref-cache> <!-- 선택사항 -->
14
+ <ref key="shared-prompt-sections">{파일 내용}</ref>
15
+ <ref key="file-content-schema">{파일 내용}</ref>
16
+ <ref key="xml-schema">{파일 내용}</ref>
17
+ <ref key="context-policy">{파일 내용}</ref>
18
+ <ref key="work-activity-log">{파일 내용}</ref>
17
19
  </ref-cache>
18
- <references-dir>{absolute path to references directory}</references-dir>
20
+ <references-dir>{references 디렉토리 절대 경로}</references-dir>
19
21
  <context>
20
- <project>{project name}</project>
22
+ <project>{프로젝트 이름}</project>
21
23
  <language>{lang_code}</language>
22
24
  <plan-file>works/{WORK_ID}/PLAN.md</plan-file>
23
25
  </context>
24
26
  <task-spec>
25
27
  <file>works/{WORK_ID}/TASK-XX.md</file>
26
- <title>{title}</title>
28
+ <title>{제목}</title>
27
29
  <action>{implement|verify|commit|plan|route}</action>
28
- <description>{optional}</description>
30
+ <description>{선택사항}</description>
29
31
  </task-spec>
30
32
  <previous-results>
31
- <result task="{TASK_ID}" status="{PASS|FAIL|SKIP}">{summary}</result>
33
+ <result task="{TASK_ID}" status="{PASS|FAIL|SKIP}">{요약}</result>
32
34
  </previous-results>
33
35
  <cache-hint sections="{section1},{section2}"/>
34
36
  </dispatch>
35
37
  ```
36
38
 
37
- | Attribute | Value |
38
- |-----------|-------|
39
- | `to` | builder, verifier, committer, planner, scheduler, specifier |
40
- | `task` | `TASK-NN` — WORK prefix must NOT be included |
41
- | `execution-mode` | direct / pipeline / full (defaults to full if omitted) |
39
+ | 속성 | |
40
+ |------|-----|
41
+ | `to` | builder, verifier, committer, planner, specifier |
42
+ | `task` | `TASK-NN` — WORK 접두사 포함 금지 |
42
43
 
43
44
  ---
44
45
 
45
- ## 2. Task Result Format (ReceiverDispatcher)
46
+ ## 2. Task Result 형식 (수신자orchestrator)
46
47
 
47
48
  ```xml
48
49
  <task-result work="{WORK_ID}" task="{TASK_ID}" agent="{agent}" status="{PASS|FAIL}">
49
- <summary>{1-2 line summary}</summary>
50
+ <summary>{1-2 요약}</summary>
50
51
  <files-changed>
51
- <file action="{created|modified|deleted}" path="{path}">{description}</file>
52
+ <file action="{created|modified|deleted}" path="{path}">{설명}</file>
52
53
  </files-changed>
53
54
  <verification>
54
- <check name="{type}" status="{PASS|FAIL|N/A}">{output}</check>
55
+ <check name="{type}" status="{PASS|FAIL|N/A}">{출력}</check>
55
56
  </verification>
56
- <notes>{notes}</notes>
57
- <ref-cache> <!-- optional -->
58
- <ref key="shared-prompt-sections">{file content}</ref>
59
- <ref key="file-content-schema">{file content}</ref>
60
- <ref key="xml-schema">{file content}</ref>
61
- <ref key="context-policy">{file content}</ref>
62
- <ref key="work-activity-log">{file content}</ref>
57
+ <notes>{메모}</notes>
58
+ <ref-cache> <!-- 선택사항 -->
59
+ <ref key="shared-prompt-sections">{파일 내용}</ref>
60
+ <ref key="file-content-schema">{파일 내용}</ref>
61
+ <ref key="xml-schema">{파일 내용}</ref>
62
+ <ref key="context-policy">{파일 내용}</ref>
63
+ <ref key="work-activity-log">{파일 내용}</ref>
63
64
  </ref-cache>
64
65
  </task-result>
65
66
  ```
66
67
 
67
68
  ---
68
69
 
69
- ## 3. Context-Handoff Element
70
+ ## 3. Context-Handoff 요소
70
71
 
71
72
  ```xml
72
73
  <context-handoff from="{agent}" detail-level="{FULL|SUMMARY|DROP}">
73
- <what>{changes/verification details}</what>
74
- <why>{decision rationale}</why> <!-- FULL only -->
75
- <caution>{caveats}</caution> <!-- FULL only -->
76
- <incomplete>{incomplete items}</incomplete> <!-- FULL only -->
74
+ <what>{변경/검증 상세}</what>
75
+ <why>{결정 근거}</why> <!-- FULL -->
76
+ <caution>{주의사항}</caution> <!-- FULL -->
77
+ <incomplete>{미완료 항목}</incomplete> <!-- FULL -->
77
78
  </context-handoff>
78
79
  ```
79
80
 
80
- | detail-level | Included Fields |
81
+ | detail-level | 포함 필드 |
81
82
  |:---:|---|
82
83
  | `FULL` | what, why, caution, incomplete |
83
- | `SUMMARY` | what only (1-3 lines) |
84
- | `DROP` | Element omitted |
84
+ | `SUMMARY` | what (1-3) |
85
+ | `DROP` | 요소 생략 |
85
86
 
86
87
  ---
87
88
 
88
- ## 4. ref-cache Element Definition
89
+ ## 4. ref-cache 요소 정의
89
90
 
90
- `<ref-cache>` is an optional container element that carries pre-loaded reference file contents within dispatch and task-result XML. When present, receiving agents MUST use these contents instead of reading files from disk.
91
+ `<ref-cache>`는 dispatch task-result XML 내에서 미리 로딩된 레퍼런스 파일 내용을 전달하는 선택적 컨테이너 요소입니다. 존재할 경우, 수신 에이전트는 디스크에서 파일을 읽는 대신 반드시 내용을 사용해야 합니다.
91
92
 
92
- ### Structure
93
+ ### 구조
93
94
 
94
95
  ```xml
95
96
  <ref-cache>
96
- <ref key="{filename-without-extension}">{full file content}</ref>
97
+ <ref key="{확장자 없는 파일명}">{전체 파일 내용}</ref>
97
98
  ...
98
99
  </ref-cache>
99
100
  ```
100
101
 
101
- | Element | Required | Description |
102
- |---------|----------|-------------|
103
- | `<ref-cache>` | Optional | Container for cached reference files. Omit entirely if no cache is available. |
104
- | `<ref key="...">` | — | Individual reference file. `key` is the filename without extension (e.g., `shared-prompt-sections`). |
102
+ | 요소 | 필수 | 설명 |
103
+ |------|------|------|
104
+ | `<ref-cache>` | 선택 | 캐시된 레퍼런스 파일 컨테이너. 캐시가 없으면 전체 생략. |
105
+ | `<ref key="...">` | — | 개별 레퍼런스 파일. `key`는 확장자 없는 파일명 (예: `shared-prompt-sections`). |
105
106
 
106
- ### Recognized Keys
107
+ ### 인식되는
107
108
 
108
- | Key | Corresponding File |
109
- |-----|--------------------|
109
+ | | 대응 파일 |
110
+ |-----|-----------|
110
111
  | `shared-prompt-sections` | `{REFERENCES_DIR}/shared-prompt-sections.md` |
111
112
  | `file-content-schema` | `{REFERENCES_DIR}/file-content-schema.md` |
112
113
  | `xml-schema` | `{REFERENCES_DIR}/xml-schema.md` |
113
114
  | `context-policy` | `{REFERENCES_DIR}/context-policy.md` |
114
115
  | `work-activity-log` | `{REFERENCES_DIR}/work-activity-log.md` |
115
116
 
116
- ### Backward Compatibility
117
+ ### 하위 호환성
118
+
119
+ - `<ref-cache>` 없는 dispatch 또는 task-result XML은 완전히 유효 — 에이전트는 `REFERENCES_DIR`에서 파일을 읽는 것으로 폴백.
120
+ - ref-cache를 아직 지원하지 않는 에이전트는 해당 요소를 무시하고 정상적으로 파일을 읽음.
121
+ - 부분적 ref-cache (일부 키만 존재)도 허용 — 없는 키는 디스크에서 읽음.
122
+
123
+ ---
124
+
125
+ ## 5. Gate 요소 (orchestrator → Main Claude)
126
+
127
+ `<gate>`는 orchestrator가 자율 실행을 일시 정지하고 Main Claude(및 사용자)의 승인 또는 결정을 요청할 때 반환하는 정지 신호입니다. orchestrator는 `<gate>`를 반환한 뒤 Main Claude의 응답(승인 또는 `<decision>`)이 돌아올 때까지 재개하지 않습니다.
128
+
129
+ ### type="stage" — 단계 완료 승인 게이트
130
+
131
+ ```xml
132
+ <gate type="stage" work="WORK-12" stage="specifier">
133
+ <summary>Requirement.md 작성 완료. FR 6건, NFR 2건 도출.</summary>
134
+ <next-stage>planner</next-stage>
135
+ </gate>
136
+ ```
137
+
138
+ ### type="decision" — 결정 필요 게이트
139
+
140
+ ```xml
141
+ <gate type="decision" work="WORK-12" stage="planner">
142
+ <context>인증 방식으로 세션 기반과 JWT 중 선택이 필요합니다. 기존 코드베이스는 세션 기반이나 신규 마이크로서비스 확장 계획이 있습니다.</context>
143
+ <options>
144
+ <option id="1">세션 기반 유지 (기존 컨벤션 일치)</option>
145
+ <option id="2">JWT 전환 (확장성 우선)</option>
146
+ </options>
147
+ <recommended>option 1 — 현재 스코프에서는 확장 계획이 확정되지 않아 리스크가 낮은 세션 기반 유지를 권고</recommended>
148
+ </gate>
149
+ ```
150
+
151
+ | 속성 | 값 |
152
+ |------|-----|
153
+ | `type` | `stage`(단계 완료 승인 요청) / `decision`(선택 필요) |
154
+ | `work` | `WORK_ID` |
155
+ | `stage` | 현재 정지된 단계: `specifier`/`planner`/`builder`/`verifier`/`committer` |
156
+
157
+ - `type="decision"`은 `<context>`(배경 — 왜 결정이 필요한가), `<options>`(선택지 목록), `<recommended>`(권고안)을 하위 요소로 반드시 포함한다.
158
+ - Main Claude는 `<gate>` 수신 시 사용자에게 승인/선택을 구하고, 결과를 `<decision>`(§ 7)으로 orchestrator에 재전달하여 재개시킨다.
159
+ - 게이트 정지는 활동 로그의 `GATE_WAIT`(stage 게이트) 또는 `DECISION_WAIT`(decision 게이트) 이벤트와 짝을 이룬다 → `work-activity-log.md` 참조.
160
+
161
+ ---
162
+
163
+ ## 6. needs-decision 요소 (자식 에이전트 → orchestrator)
164
+
165
+ `<needs-decision>`은 자식 에이전트(builder/verifier 등)가 구현 중 스스로 결정할 수 없는 사항을 발견했을 때, task-result와 함께(또는 대신) orchestrator에 상향 보고하는 신호입니다. Main Claude로 직접 올라가지 않고 먼저 orchestrator가 받는다는 점에서 `<gate type="decision">`과 구분됩니다.
166
+
167
+ ```xml
168
+ <needs-decision work="WORK-12" task="TASK-03" agent="builder">
169
+ <context>TASK 스펙에 명시되지 않은 에러 응답 포맷이 필요합니다. 기존 엔드포인트는 두 가지 포맷이 혼재합니다.</context>
170
+ <options>
171
+ <option id="1">엔드포인트 A 방식(`{error: string}`)에 통일</option>
172
+ <option id="2">엔드포인트 B 방식(`{code, message}`)에 통일</option>
173
+ </options>
174
+ <recommended>option 2 — 신규 API 표준에 부합</recommended>
175
+ </needs-decision>
176
+ ```
177
+
178
+ | 속성 | 값 |
179
+ |------|-----|
180
+ | `work` | `WORK_ID` |
181
+ | `task` | `TASK_ID` |
182
+ | `agent` | 신호를 발생시킨 자식 에이전트 |
183
+
184
+ - orchestrator는 `<needs-decision>` 수신 시 자동 결정 가능 여부를 판단한다.
185
+ - 자동 결정 가능 → `<decision by="auto">`(§ 7)로 확정하고 자식 작업을 재개시킴.
186
+ - 자동 결정 불가 → `<gate type="decision">`(§ 5)으로 승격하여 Main Claude에 전달.
187
+ - 어느 경로든 결정 내용은 `works/{WORK_ID}/DECISIONS.md`에 기록된다 → `file-content-schema.md` § 4 참조.
188
+
189
+ ---
190
+
191
+ ## 7. decision 요소 (확정 결정 기록)
192
+
193
+ `<decision>`은 게이트(§ 5) 또는 needs-decision(§ 6)에 대해 내려진 확정 결정을 기록하는 요소입니다. 사용자 승인분(`by="user"`)과 orchestrator 자동결정분(`by="auto"`)이 동일한 형식을 공유합니다.
194
+
195
+ ```xml
196
+ <decision work="WORK-12" stage="planner" by="user">
197
+ <context>인증 방식으로 세션 기반과 JWT 중 선택이 필요했음.</context>
198
+ <chosen>세션 기반 유지</chosen>
199
+ <rationale>기존 컨벤션과의 일치를 우선함</rationale>
200
+ </decision>
201
+ ```
202
+
203
+ ```xml
204
+ <decision work="WORK-12" task="TASK-03" by="auto">
205
+ <context>에러 응답 포맷 불일치 — builder의 needs-decision.</context>
206
+ <chosen>엔드포인트 B 방식(`{code, message}`)에 통일</chosen>
207
+ <rationale>신규 API 표준과 일치, 리스크 낮음</rationale>
208
+ </decision>
209
+ ```
210
+
211
+ | 속성 | 값 |
212
+ |------|-----|
213
+ | `work` | `WORK_ID` |
214
+ | `stage` / `task` | 결정이 발생한 단계 또는 TASK (해당하는 것 사용) |
215
+ | `by` | `user`(사용자 승인) / `auto`(orchestrator 자동결정) |
117
216
 
118
- - Dispatch or task-result XML without `<ref-cache>` is fully valid agents fall back to reading files from `REFERENCES_DIR`.
119
- - Agents that do not yet support ref-cache simply ignore the element and read files normally.
120
- - Partial ref-cache (only some keys present) is allowed — missing keys are read from disk.
217
+ - orchestrator는 `<decision>` 확정 즉시 `works/{WORK_ID}/DECISIONS.md`의 해당 항목을 `PENDING RESOLVED`로 갱신하고, 활동 로그에 `DECISION` 이벤트를 기록한다 `work-activity-log.md` 참조.
@@ -1,6 +1,6 @@
1
1
  # sdd-pipeline references
2
2
 
3
- 파이프라인 에이전트(specifier, planner, scheduler, builder, verifier, committer)가 참조하는 규칙/스키마 문서 모음.
3
+ 파이프라인 에이전트(orchestrator, specifier, planner, builder, verifier, committer)가 참조하는 규칙/스키마 문서 모음.
4
4
 
5
5
  직접 사용자 호출용이 아니라 에이전트 내부 참조용입니다.
6
6
 
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: uctm-init
3
+ description: Initialize uc-taskmanager for the current project. Creates works/ directory and configures Bash permissions in .claude/settings.local.json. Use when the user says "uctm init", "initialize uctm", "uctm 초기화", or "초기화".
4
+ ---
5
+
6
+ # uc-taskmanager 초기화
7
+
8
+ 현재 프로젝트를 uc-taskmanager 파이프라인 실행을 위해 초기화합니다.
9
+
10
+ ## 단계
11
+
12
+ ### 1. works/ 디렉토리 생성
13
+
14
+ ```
15
+ works/가 없으면:
16
+ works/ 생성
17
+ 보고: ✓ works/ 디렉토리 생성됨
18
+ 아니면:
19
+ 보고: - works/ 이미 존재
20
+ ```
21
+
22
+ ### 2. Bash 권한 설정
23
+
24
+ **먼저 사용자에게 확인:** "에이전트에 필요한 Bash 권한을 .claude/settings.local.json에 자동 설정할까요? (recommended) [Y/n]"
25
+
26
+ 사용자가 승인하면 (yes/Y/확인):
27
+
28
+ `.claude/settings.local.json` 읽기 (없으면 생성). 다음 권한을 `permissions.allow` 배열에 병합 — **이미 있는 것은 건너뛰기** (중복 금지):
29
+
30
+ ```json
31
+ [
32
+ "Read(/**)",
33
+ "Edit(/**)",
34
+ "Write(/**)",
35
+ "Read(**)",
36
+ "Edit(**)",
37
+ "Write(**)",
38
+ "Bash(ls:*)",
39
+ "Bash(cat:*)",
40
+ "Bash(mkdir:*)",
41
+ "Bash(basename:*)",
42
+ "Bash(find:*)",
43
+ "Bash(wc:*)",
44
+ "Bash(sort:*)",
45
+ "Bash(tail:*)",
46
+ "Bash(head:*)",
47
+ "Bash(echo:*)",
48
+ "Bash(printf:*)",
49
+ "Bash(grep:*)",
50
+ "Bash(sed:*)",
51
+ "Bash(cut:*)",
52
+ "Bash(tr:*)",
53
+ "Bash(node:*)",
54
+ "Bash(npm run:*)",
55
+ "Bash(npm test:*)",
56
+ "Bash(bun run:*)",
57
+ "Bash(yarn:*)",
58
+ "Bash(cargo:*)",
59
+ "Bash(go build:*)",
60
+ "Bash(go test:*)",
61
+ "Bash(python:*)",
62
+ "Bash(ruff:*)",
63
+ "Bash(make:*)",
64
+ "Bash(git:*)"
65
+ ]
66
+ ```
67
+
68
+ 기존 `permissions.allow` 및 `permissions.deny` 항목을 보존하고 누락된 것만 추가.
69
+
70
+ ```
71
+ 권한 추가됨:
72
+ 보고: ✓ {N}개 권한이 .claude/settings.local.json에 추가됨 (총: {T})
73
+ 사용자가 건너뛰면:
74
+ 보고: - 권한 설정 건너뜀
75
+ 이미 모두 설정됨:
76
+ 보고: - 모든 권한이 이미 설정됨
77
+ ```
78
+
79
+ ### 3. 요약
80
+
81
+ 모든 단계 완료 후 요약 표시:
82
+
83
+ ```
84
+ uc-taskmanager 초기화 완료!
85
+
86
+ ✓ works/ 디렉토리 준비됨
87
+ ✓ Bash 권한 설정됨
88
+
89
+ 다음: [new-feature] Add a hello world feature 입력
90
+ ```
91
+
92
+ ## Arguments
93
+
94
+ $ARGUMENTS
@@ -1,72 +1,64 @@
1
1
  ---
2
2
  name: work-pipeline
3
- description: Triggers the WORK-PIPELINE. Use this skill when (1) user request starts with a [] tag (e.g., [new-feature], [bugfix]), or (2) user asks to resume/continue a WORK (e.g., "WORK-01 계속실행", "resume WORK-01", "WORK-01 실행", "continue WORK-01").
3
+ description: Triggers the WORK-PIPELINE. Use this skill when
4
+ (1) user message starts with a bracketed tag like [anything], e.g. [WORK], [new-feature], [bugfix], [New game], [enhancement]
5
+ (2) user asks to resume/continue a WORK-NN (e.g., "WORK-01 계속실행", "resume WORK-01", "WORK-01 실행", "continue WORK-01").
4
6
  ---
5
7
 
6
- # WORK-PIPELINE Trigger
8
+ # WORK-PIPELINE 트리거
7
9
 
8
- Read `../../references/agent-flow.md` and follow the orchestration flow.
10
+ ## 트리거 감지
9
11
 
10
- ## Trigger Detection
11
-
12
- **New WORK** — message starts with `[...]` tag:
12
+ **새 WORK** — 메시지가 `[]` 태그로 시작하면 실행:
13
13
  - `[new-feature]`, `[enhancement]`, `[bugfix]`, `[new-work]`, `[WORK start]`
14
- - Or any custom tag in square brackets
14
+ - 또는 대괄호 안의 커스텀 태그
15
15
 
16
- **Resume WORK**message mentions existing WORK-ID with execution intent:
16
+ **WORK 재개** 메시지에 기존 WORK-ID 실행 의도가 있을 때:
17
17
  - "WORK-XX 계속실행", "WORK-XX 실행", "resume WORK-XX", "continue WORK-XX"
18
18
  - "파이프라인 재개", "WORK 계속"
19
- - → Follow agent-flow.md § Resuming Existing WORK
19
+
20
+ 두 경우 모두 아래 "오케스트레이션 흐름"을 따릅니다.
20
21
 
21
22
  ## References Directory (CRITICAL)
22
23
 
23
- When this skill is triggered, Claude Code provides the "Base directory for this skill" as an absolute path.
24
- Derive the **REFERENCES_DIR** from it:
24
+ 스킬이 트리거되면 Claude Code "Base directory for this skill" 절대 경로로 제공합니다.
25
+ 여기서 **REFERENCES_DIR**을 유도합니다:
25
26
 
26
27
  ```
27
28
  REFERENCES_DIR = {Base directory}/../../references
28
29
  ```
29
30
 
30
- You MUST pass this absolute path to **every sub-agent invocation** (specifier, planner, scheduler, builder, verifier, committer).
31
- Include it at the top of the prompt text:
32
-
33
- ```
34
- REFERENCES_DIR={absolute_path}
35
- ```
36
-
37
- Sub-agents need this path to read their reference files. Without it, they cannot find the files and will loop.
31
+ `orchestrator` spawn 절대 경로를 반드시 전달해야 합니다. orchestrator가 레퍼런스 파일을 찾기 위해 경로가 필요합니다. 없으면 파일을 찾지 못하고 루프에 빠집니다.
38
32
 
39
- ## Callback Info Passthrough
33
+ ## Auto 모드 감지
40
34
 
41
- If the user's prompt contains `CALLBACK_URL=...` and `CALLBACK_TOKEN=...`, extract these values and pass them to **every sub-agent invocation** alongside REFERENCES_DIR:
35
+ 사용자의 메시지에 "auto" 또는 "자동으로"가 포함되면 **auto 모드**로 spawn합니다. 외에는 **gated 모드**(기본값)로 spawn합니다.
42
36
 
43
- ```
44
- CALLBACK_URL={url}
45
- CALLBACK_TOKEN={token}
46
- ```
37
+ ## 오케스트레이션 흐름
47
38
 
48
- **Main Claude (this skill) must NEVER send callbacks itself.** Only sub-agents send callbacks.
39
+ Main Claude `orchestrator` 에이전트 하나만 spawn합니다. specifier/planner/builder/verifier/committer는 orchestrator가 내부에서 중첩 spawn(TASK DAG 스케줄링 포함)하므로 Main Claude가 직접 호출하지 않습니다.
49
40
 
50
- ## Pipeline Flow
41
+ ### Gated 모드 (기본값 — "auto"/"자동으로" 없음)
51
42
 
52
- 1. **Spawn specifier agent** (via Agent tool) analyzes the requirement, creates `works/WORK-NN/Requirement.md`, determines execution-mode (direct/pipeline/full)
53
- 2. **⛔ STOP Present the specifier's output summary to the user and WAIT for explicit approval.** Do NOT call the next agent until the user approves. Show what was created (Requirement.md, PLAN.md if direct mode, TASK files) and ask "Proceed?"
54
- 3. **Follow the execution-mode** returned by specifier:
55
- - `direct`: spawn builder (Agent tool) spawn verifier+committer (single Agent tool, see agent-flow.md § Combined Agent Invocation)
56
- - `pipeline`: for each TASK spawn builder spawn verifier+committer (repeat per TASK)
57
- - `full`: spawn planner **⛔ STOP for 2nd approval** → spawn scheduler → scheduler handles [builder → verifier+committer] × N
43
+ 1. **최초 spawn**: `orchestrator`를 `mode=gated`로 spawn. 프롬프트 상단에 `REFERENCES_DIR=...`와 `mode=gated`를 포함하고, 사용자 요청 원문(및 재개 시 `WORK_ID`)을 전달. 반환된 **agentId를 보관**한다(다음 재개에 사용).
44
+ 2. **`<gate>` 수신 정지**: orchestrator가 `<gate type="stage">`(고정 게이트: specifier 완료 / planner 완료 후) 또는 `<gate type="decision">`(동적 의사결정)을 반환하면 orchestrator는 자리에서 yield(파킹) 상태다.
45
+ - `type="stage"`: `<summary>`를 사용자에게 제시하고 진행 승인을 요청.
46
+ - `type="decision"`: `<context>`/`<options>`/`<recommended>`를 **AskUserQuestion**으로 제시해 사용자 선택을 받는다.
47
+ 3. **재개**: 사용자의 승인 또는 결정을 **`SendMessage(agentId, 결정내용)`으로 orchestrator에 전달해 재개**한다(컨텍스트 유지). agentId가 유실되었거나 SendMessage가 실패하면(세션 종료, 크로스세션 등) 로그(`work_{WORK}.log`) 기반으로 orchestrator를 **re-spawn**하는 폴백을 사용한다 — 이 경우도 재개 지정은 name이 아니라 **agentId**(또는 재-spawn 결과의 새 agentId)로 한다.
48
+ 4. **반복**: 2~3을 orchestrator가 최종 WORK 요약을 반환할 때까지 반복한다.
49
+ 5. **종료**: orchestrator가 최종 요약(`## 자동 결정 사항` 포함)을 반환하면 사용자에게 제시하고, **`TaskStop(agentId)`으로 orchestrator를 종료**한다.
58
50
 
59
- ## ⚠️ CRITICAL: Agent Spawn Rules
51
+ ### Auto 모드 ("auto"/"자동으로" 포함)
60
52
 
61
- - **EVERY agent MUST be spawned via the Agent tool.** Main Claude must NEVER implement code, create files, run git commands, or perform any agent's work directly.
62
- - In direct mode: spawn specifier spawn builder spawn verifier+committer (**3 Agent tool calls**).
63
- - verifier+committer is a **single spawn** that performs both roles in sequence (see agent-flow.md).
64
- - If specifier returns builder dispatch XML, pass it to the builder agent — do NOT execute it yourself.
53
+ 1. `orchestrator`를 `mode=auto`로 **1회만 spawn**. 프롬프트 상단에 `REFERENCES_DIR=...`와 `mode=auto`를 포함.
54
+ 2. 게이트/의사결정 정지 없이 orchestrator가 전체 파이프라인을 완주하고 최종 요약(`## 자동 결정 사항` 포함)을 반환한다.
55
+ 3. 반환된 최종 요약을 사용자에게 제시한다. (파킹 상태가 아니므로 TaskStop 불필요.)
65
56
 
66
- ## Auto Mode
57
+ ## ⚠️ CRITICAL: 에이전트 Spawn 규칙
67
58
 
68
- If the user's message ends with "auto" or "자동으로", skip ALL approval steps and execute the entire pipeline automatically. This is the ONLY case where approval gates can be skipped.
59
+ - Main Claude가 spawn하는 에이전트는 **orchestrator 하나뿐**이다. Main Claude가 직접 코드 구현, 파일 생성, git 명령 실행 또는 orchestrator의 작업을 수행하면 된다.
60
+ - 게이트 재개는 항상 **agentId** 기준(SendMessage/TaskStop 모두)으로 한다 — name 재사용에 의한 오배달을 방지한다.
69
61
 
70
62
  ## Arguments
71
63
 
72
- User requirement: $ARGUMENTS
64
+ 사용자 요구사항: $ARGUMENTS
@@ -3,31 +3,31 @@ name: work-status
3
3
  description: Shows WORK status (read-only). Use ONLY when the user asks to VIEW status — not to execute or resume. Matches queries like "WORK 목록", "상태 확인", "WORK-01 상태", "show status". Do NOT use for "실행", "계속", "resume" — those go to work-pipeline.
4
4
  ---
5
5
 
6
- # WORK Status
6
+ # WORK 상태
7
7
 
8
- Check and report the current status of WORKs and TASKs.
8
+ WORK TASK의 현재 상태를 확인하고 보고합니다.
9
9
 
10
- ## How to Check
10
+ ## 확인 방법
11
11
 
12
- 1. Read `works/WORK-LIST.md` for the master index of all WORKs
13
- 2. For a specific WORK, read last line of `works/WORK-NN/work_WORK-NN.log` for current progress
14
- 3. For a specific TASK, read `works/WORK-NN/TASK-NN_result.md` for completion details
12
+ 1. `works/WORK-LIST.md`를 읽어 모든 WORK의 마스터 인덱스 확인
13
+ 2. 특정 WORK 경우 `works/WORK-NN/work_WORK-NN.log` 마지막 줄을 읽어 현재 진행 상황 확인
14
+ 3. 특정 TASK 경우 `works/WORK-NN/TASK-NN_result.md`를 읽어 완료 상세 확인
15
15
 
16
- ## Status Values
16
+ ## 상태
17
17
 
18
- | Status | Meaning |
19
- |--------|---------|
20
- | `IN_PROGRESS` | WORK created, TASKs being executed |
21
- | `DONE` | All TASKs committed — committer auto-sets on last TASK |
22
- | `COMPLETED` | Archived to `_COMPLETED/`set during push |
18
+ | 상태 | 의미 |
19
+ |------|------|
20
+ | `IN_PROGRESS` | WORK 생성됨, TASK 실행 |
21
+ | `DONE` | 모든 TASK 커밋됨 — committer 마지막 TASK에서 자동 설정 |
22
+ | `COMPLETED` | `_COMPLETED/`로 아카이빙됨 push 설정 |
23
23
 
24
- ## Display Format
24
+ ## 표시 형식
25
25
 
26
26
  ```
27
- WORK Status
28
- WORK-01: User Authentication ✅ 5/5 completed
29
- WORK-02: Payment Integration 🔄 2/4 in progress
30
- WORK-03: Admin Dashboard ⬜ 0/6 pending
27
+ WORK 상태
28
+ WORK-01: 사용자 인증 ✅ 5/5 완료
29
+ WORK-02: 결제 연동 🔄 2/4 진행
30
+ WORK-03: 관리자 대시보드 ⬜ 0/6 대기
31
31
  ```
32
32
 
33
33
  ## Arguments
@@ -1,47 +0,0 @@
1
- {
2
- "$schema": "http://uc-taskmanager.local/schemas/router-rules/v1.0.json",
3
- "version": "1.1.0",
4
- "description": "Router execution-mode 판정 기준 설정. 프로젝트별로 이 파일을 수정하여 라우팅 기준을 커스터마이즈한다.",
5
- "decision_flow": [
6
- "1. build_test_required 여부 판단 → false이면 direct",
7
- "2. single_domain + sequential DAG → pipeline",
8
- "3. 아래 full_conditions 중 하나라도 해당 → full"
9
- ],
10
- "rules": {
11
- "direct": {
12
- "description": "Router 단독 처리 — 빌드/테스트 검증 불필요, 서브에이전트 0",
13
- "criteria": {
14
- "build_test_required": false,
15
- "note": "파일 수·줄 수 무관. 검증 없이 끝나는 작업이면 direct (텍스트 편집, 설정 변경, 단순 치환 등)"
16
- }
17
- },
18
- "pipeline": {
19
- "description": "Builder → Verifier → Committer 단일 흐름 — Builder 1회 호출",
20
- "criteria": {
21
- "build_test_required": true,
22
- "single_domain_only": true,
23
- "max_tasks": 5,
24
- "dag_complexity": "sequential",
25
- "note": "빌드/테스트 필요하지만 단일 도메인(BE만 또는 FE만)이고 한 흐름으로 처리 가능한 경우"
26
- }
27
- },
28
- "full": {
29
- "description": "Planner → Scheduler → [Builder → Verifier → Committer] × N",
30
- "criteria": {
31
- "any_of": [
32
- "task_count > 5",
33
- "dag_complexity == complex (TASK 간 의존성이 2레벨 이상)",
34
- "multi_domain == true (BE + FE 동시 변경)",
35
- "new_module == true (신규 모듈/기능 — 설계→구현→검증 다단계)",
36
- "partial_rollback_needed == true (TASK 실패 시 부분 롤백 필요)"
37
- ],
38
- "note": "Builder를 여러 번 독립 호출해야 안전한 규모"
39
- }
40
- }
41
- },
42
- "customization_guide": {
43
- "uc-taskmanager형 프로젝트 (md 편집 중심)": "direct 범위를 넓게. build_test_required=false인 경우 대부분 direct 처리",
44
- "uc-teamspace형 프로젝트 (코드 개발 중심)": "pipeline/full 중심. 단순 버그 수정은 pipeline, 멀티도메인 기능은 full",
45
- "max_tasks 조정": "팀 규모나 컨텍스트 한계에 따라 pipeline의 max_tasks를 3~7 사이로 조정 가능"
46
- }
47
- }