uctm 1.4.0 → 1.5.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.
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "uc-taskmanager",
3
+ "version": "1.4.0",
4
+ "agents": [
5
+ "./agents/specifier.md",
6
+ "./agents/planner.md",
7
+ "./agents/scheduler.md",
8
+ "./agents/builder.md",
9
+ "./agents/verifier.md",
10
+ "./agents/committer.md"
11
+ ],
12
+ "description": "SDD WORK-PIPELINE Agent — Requirements analysis & development 6-agent full pipeline with DAG-based orchestration and sliding window context management",
13
+ "author": {
14
+ "name": "UCJung",
15
+ "url": "https://github.com/UCJung"
16
+ },
17
+ "homepage": "https://github.com/UCJung/uc-taskmanager-claude-agent",
18
+ "repository": "https://github.com/UCJung/uc-taskmanager-claude-agent",
19
+ "license": "GPL-3.0",
20
+ "keywords": [
21
+ "task-manager",
22
+ "pipeline",
23
+ "sub-agents",
24
+ "sdd",
25
+ "dag-orchestration",
26
+ "work-pipeline",
27
+ "automation"
28
+ ]
29
+ }
@@ -30,39 +30,35 @@
30
30
  1. Invoke specifier → creates Requirement.md + PLAN.md + TASK-00 + returns builder dispatch XML
31
31
  2. ⛔ STOP — Present summary to user and WAIT for approval (do NOT invoke builder)
32
32
  3. Invoke builder (dispatch XML as prompt) — includes self-check
33
- 4. Invoke committer (builder result as prompt)
33
+ 4. Invoke verifier+committer (builder result as prompt) — verify then commit in one spawn
34
34
  ```
35
35
 
36
- > Verifier skipped: Builder performs self-check (build/lint), so separate verification is unnecessary for a single TASK.
36
+ > Verifier+Committer combined: single spawn performs verification, then creates result.md and git commit.
37
37
 
38
38
  ---
39
39
 
40
40
  ## Pipeline Mode (Separate Planner Invocation)
41
41
 
42
42
  ```
43
- 1. Invoke specifier → creates Requirement.md + returns planner dispatch XML
44
- 2. ⛔ STOP — Present Requirement.md summary and WAIT for planning approval
45
- 3. Invoke planner (dispatch XML as prompt) → creates PLAN.md + TASK-NN + determines execution-mode
46
- 4. STOP Present PLAN.md + TASK list and WAIT for development approval
47
- 5. Invoke builder (per-TASK dispatch XML as prompt)
48
- 6. Invoke verifier (builder result as prompt)
49
- 7. Invoke committer (verifier result as prompt)
43
+ 1. Invoke specifier+planner (single spawn) → creates Requirement.md + PLAN.md + TASK-NN + determines execution-mode
44
+ 2. ⛔ STOP — Present Requirement.md + PLAN.md + TASK list and WAIT for approval
45
+ 3. Invoke builder (per-TASK dispatch XML as prompt)
46
+ 4. Invoke verifier+committer (builder result as prompt) verify then commit in one spawn
50
47
  ```
51
48
 
49
+ > Specifier+Planner combined: specifier.md role first (Requirement.md), then planner.md role (PLAN.md + TASKs) in one spawn.
50
+
52
51
  ---
53
52
 
54
53
  ## Full Mode (With Scheduler)
55
54
 
56
55
  ```
57
- 1. Invoke specifier → creates Requirement.md + returns planner dispatch XML
58
- 2. ⛔ STOP — Present Requirement.md summary and WAIT for planning approval
59
- 3. Invoke plannerPLAN.md + TASK decomposition + execution-mode: full
60
- 4. STOP Present PLAN.md + TASK list and WAIT for development approval
61
- 5. Invoke scheduler DAG analysis + READY TASK + returns builder dispatch XML
62
- 6. Invoke builder (dispatch XML as prompt) implementation
63
- 7. Invoke verifier (builder result as prompt) → verification
64
- 8. Invoke committer (verifier result as prompt) → commit
65
- 9. If incomplete TASKs remain, return to step 5
56
+ 1. Invoke specifier+planner (single spawn) → Requirement.md + PLAN.md + TASKs + execution-mode: full
57
+ 2. ⛔ STOP — Present Requirement.md + PLAN.md + TASK list and WAIT for approval
58
+ 3. Invoke schedulerDAG analysis + READY TASK + returns builder dispatch XML
59
+ 4. Invoke builder (dispatch XML as prompt) implementation
60
+ 5. Invoke verifier+committer (builder result as prompt) verify then commit in one spawn
61
+ 6. If incomplete TASKs remain, return to step 3
66
62
  ```
67
63
 
68
64
  Parallel execution: When scheduler returns multiple READY TASKs, invoke builders concurrently.
@@ -75,32 +71,81 @@ Resume pipeline for a WORK that already has PLAN.md + TASKs:
75
71
 
76
72
  ```
77
73
  1. Invoke scheduler → check READY TASKs + return builder dispatch XML
78
- 2. Execute builder → verifier → committer in sequence
79
- 3. If incomplete TASKs remain, return to step 1
74
+ 2. Invoke builder → implementation
75
+ 3. Invoke verifier+committer verify then commit in one spawn
76
+ 4. If incomplete TASKs remain, return to step 1
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Combined Agent Invocation
82
+
83
+ ### Specifier+Planner (single spawn)
84
+
85
+ When invoking specifier in pipeline/full mode, include both agent definitions:
86
+
87
+ ```
88
+ Prompt to agent:
89
+ "You will perform two roles in sequence.
90
+
91
+ Role 1 — Specifier: Read specifier.md and create Requirement.md.
92
+ Role 2 — Planner: Read planner.md and create PLAN.md + TASK files.
93
+
94
+ Execute Role 1 first, then Role 2. Return the combined result."
95
+ ```
96
+
97
+ - Use specifier's model (opus) for the spawn
98
+ - Agent reads both specifier.md and planner.md from REFERENCES_DIR
99
+ - Returns: Requirement.md + PLAN.md + TASK files + execution-mode
100
+
101
+ ### Verifier+Committer (single spawn)
102
+
103
+ When invoking verification after builder completes:
104
+
105
+ ```
106
+ Prompt to agent:
107
+ "You will perform two roles in sequence.
108
+
109
+ Role 1 — Verifier: Read verifier.md and verify build/lint/test.
110
+ Role 2 — Committer: Read committer.md and create result.md + git commit.
111
+
112
+ Execute Role 1 first. If verification PASSES, execute Role 2.
113
+ If verification FAILS, skip Role 2 and return FAIL result."
80
114
  ```
81
115
 
116
+ - Use verifier's model (haiku) for the spawn
117
+ - Agent reads both verifier.md and committer.md from REFERENCES_DIR
118
+ - On PASS: returns verification result + commit hash
119
+ - On FAIL: returns verification failure only (no commit)
120
+
82
121
  ---
83
122
 
84
123
  ## Agent Role Summary
85
124
 
86
- | Agent | Return Value | Invoked By |
87
- |-------|-------------|------------|
88
- | specifier | Requirement.md + (when assumed) PLAN.md/TASK + dispatch XML | Main Claude |
89
- | planner | PLAN.md/TASK files created + execution-mode | Main Claude |
90
- | scheduler | READY TASK + dispatch XML | Main Claude |
91
- | builder | task-result XML (including context-handoff) | Main Claude |
92
- | verifier | task-result XML | Main Claude |
93
- | committer | task-result XML + commit hash | Main Claude |
125
+ | Agent | Role | Model | Combined With |
126
+ |-------|------|-------|---------------|
127
+ | specifier | Requirement analysis | opus | + planner (pipeline/full) |
128
+ | planner | PLAN + TASK decomposition | opus | combined into specifier spawn |
129
+ | scheduler | DAG management + dispatch | haiku | standalone |
130
+ | builder | Code implementation | sonnet | standalone |
131
+ | verifier | Build/lint/test verification | haiku | + committer |
132
+ | committer | Result report + git commit | haiku | combined into verifier spawn |
94
133
 
95
134
  ---
96
135
 
97
- ## Sub-agent Invocation Count by Mode
136
+ ## Sub-agent Spawn Count by Mode
137
+
138
+ | Mode | Spec+Plan | Scheduler | Builder | Veri+Commit | Total |
139
+ |------|:---------:|:---------:|:-------:|:-----------:|:-----:|
140
+ | direct | 1 (assumed) | — | 1 | 1 | **3** |
141
+ | pipeline | 1 (combined) | — | 1 | 1 | **3** |
142
+ | full (N TASKs) | 1 (combined) | 1 | N | N | **2 + 2N** |
98
143
 
99
- | Mode | Specifier | Planner | Scheduler | Builder | Verifier | Committer | Total |
100
- |------|:---------:|:-------:|:---------:|:-------:|:--------:|:---------:|:-----:|
101
- | direct | O (assumed) | X | X | O | X | O | **3** |
102
- | pipeline | O | O | X | O | O | O | **5** |
103
- | full | O | O | O | O | O | O | **6** |
144
+ **Before vs After (6 TASKs):**
145
+
146
+ | | Before | After | Reduction |
147
+ |---|:---:|:---:|:---:|
148
+ | Spawns | 2 + 3×6 = 20 | 2 + 2×6 = 14 | **-30%** |
104
149
 
105
150
  ---
106
151
 
@@ -113,13 +158,15 @@ Resume pipeline for a WORK that already has PLAN.md + TASKs:
113
158
  | Mode | Approvals | Timing | What to show user |
114
159
  |------|:---------:|--------|-------------------|
115
160
  | direct | 1 | After Specifier completes | Requirement.md + PLAN.md + TASK-00.md summary |
116
- | pipeline/full | 2 | After Specifier After Planner | 1st: Requirement.md summary, 2nd: PLAN.md + TASK list |
161
+ | pipeline/full | 1 | After Specifier+Planner completes | Requirement.md + PLAN.md + TASK list |
117
162
  | auto-approve | 0 | — | Skip all approval gates |
118
163
 
164
+ > Note: pipeline/full now has **1 approval** (not 2), since specifier and planner run in one spawn.
165
+
119
166
  **How to request approval:**
120
- 1. Present a summary of what the specifier/planner created (files, scope, execution-mode)
167
+ 1. Present a summary of what the specifier+planner created (files, scope, execution-mode)
121
168
  2. Ask: "Proceed?" or equivalent
122
- 3. **WAIT for user response** — do NOT invoke builder/planner until approved
169
+ 3. **WAIT for user response** — do NOT invoke builder until approved
123
170
 
124
171
  ---
125
172
 
@@ -204,13 +251,11 @@ If REFERENCES_DIR is not available (e.g., npm installation without plugin), sub-
204
251
  ### Flow Example
205
252
 
206
253
  ```
207
- specifier (no ref-cache in) → reads files → returns task-result with <ref-cache>
208
- ↓ Main Claude copies <ref-cache> into dispatch
209
- planner (ref-cache in) → skips file reads → returns task-result with <ref-cache>
254
+ specifier+planner (no ref-cache in) → reads files → returns task-result with <ref-cache>
210
255
  ↓ Main Claude copies <ref-cache> into dispatch
211
256
  builder (ref-cache in) → skips file reads → returns task-result with <ref-cache>
212
257
  ↓ Main Claude copies <ref-cache> into dispatch
213
- verifier → committer...
258
+ verifier+committer (ref-cache in) skips file reads commit
214
259
  ```
215
260
 
216
261
  ### Phase 2: Selective Section Delivery
@@ -221,12 +266,10 @@ Instead of passing full reference files, Main Claude extracts only the sections
221
266
 
222
267
  | Agent | shared-prompt-sections | file-content-schema | xml-schema | context-policy | work-activity-log |
223
268
  |-------|:---:|:---:|:---:|:---:|:---:|
224
- | **specifier** | §1,§7,§8,§9,§11 | §0,§1,§2,§3 | §1,§3 | — | full |
225
- | **planner** | §1,§2,§11 | §1,§2,§3 | — | — | full |
269
+ | **specifier+planner** | §1,§2,§7,§8,§9,§11 | §0,§1,§2,§3 | §1,§3 | — | full |
226
270
  | **scheduler** | §4,§8,§10 | §1,§6 | §1,§3,§4,§5 | full | full |
227
271
  | **builder** | §1,§2,§10,§12 | §2,§3 | §1,§2,§4 | Builder section | full |
228
- | **verifier** | §1,§2,§12 | | §1,§2,§4 | Verifier section | full |
229
- | **committer** | §1,§2,§8,§10 | §3,§4,§5,§6,§7 | §1,§2,§4 | Committer+Retry | full |
272
+ | **verifier+committer** | §1,§2,§8,§10,§12 | §3,§4,§5,§6,§7 | §1,§2,§4 | Verifier+Committer | full |
230
273
 
231
274
  **Delivery format**: Condense each `<ref key="">` to contain only the needed sections, not the full file. Use one-line summaries for simple rules, keep full content only for templates and code blocks.
232
275
 
@@ -30,39 +30,35 @@
30
30
  1. specifier 호출 → Requirement.md + PLAN.md + TASK-00 생성 + builder dispatch XML 반환
31
31
  2. ⛔ STOP — 산출물 요약을 사용자에게 제시하고 승인을 기다린다 (builder 호출 금지)
32
32
  3. builder 호출 (dispatch XML을 prompt로) — self-check 포함
33
- 4. committer 호출 (builder 결과를 prompt로)
33
+ 4. verifier+committer 호출 (builder 결과를 prompt로) — 단일 spawn에서 검증 후 커밋
34
34
  ```
35
35
 
36
- > Verifier 생략: Builder가 self-check(build/lint)를 수행하므로 단일 TASK에서 별도 검증 불필요.
36
+ > Verifier+Committer 통합: 단일 spawn에서 검증 수행 result.md 생성 + git commit.
37
37
 
38
38
  ---
39
39
 
40
40
  ## pipeline 모드 (Planner 별도 호출)
41
41
 
42
42
  ```
43
- 1. specifier 호출 → Requirement.md 생성 + planner dispatch XML 반환
44
- 2. ⛔ STOP — Requirement.md 요약을 제시하고 기획 승인을 기다린다
45
- 3. planner 호출 (dispatch XML을 prompt로) → PLAN.md + TASK-NN 생성 + execution-mode 결정
46
- 4. STOP PLAN.md + TASK 목록을 제시하고 개발 승인을 기다린다
47
- 5. builder 호출 (TASK별 dispatch XML을 prompt로)
48
- 6. verifier 호출 (builder 결과를 prompt로)
49
- 7. committer 호출 (verifier 결과를 prompt로)
43
+ 1. specifier+planner 호출 (단일 spawn) → Requirement.md + PLAN.md + TASK-NN 생성 + execution-mode 결정
44
+ 2. ⛔ STOP — Requirement.md + PLAN.md + TASK 목록을 제시하고 승인을 기다린다
45
+ 3. builder 호출 (TASK별 dispatch XML을 prompt로)
46
+ 4. verifier+committer 호출 (builder 결과를 prompt로) 단일 spawn에서 검증 커밋
50
47
  ```
51
48
 
49
+ > Specifier+Planner 통합: specifier.md 역할 (Requirement.md) 수행 후 planner.md 역할 (PLAN.md + TASKs) 순차 수행.
50
+
52
51
  ---
53
52
 
54
53
  ## full 모드 (Scheduler 포함)
55
54
 
56
55
  ```
57
- 1. specifier 호출 → Requirement.md 생성 + planner dispatch XML 반환
58
- 2. ⛔ STOP — Requirement.md 요약을 제시하고 기획 승인을 기다린다
59
- 3. planner 호출 → PLAN.md + TASK 분해 + execution-mode: full 결정
60
- 4. STOP PLAN.md + TASK 목록을 제시하고 개발 승인을 기다린다
61
- 5. scheduler 호출 DAG 분석 + READY TASK + builder dispatch XML 반환
62
- 6. builder 호출 (dispatch XML을 prompt로) → 구현
63
- 7. verifier 호출 (builder 결과를 prompt로) → 검증
64
- 8. committer 호출 (verifier 결과를 prompt로) → commit
65
- 9. 미완료 TASK 있으면 5번으로 돌아감
56
+ 1. specifier+planner 호출 (단일 spawn) → Requirement.md + PLAN.md + TASK 분해 + execution-mode: full
57
+ 2. ⛔ STOP — Requirement.md + PLAN.md + TASK 목록을 제시하고 승인을 기다린다
58
+ 3. scheduler 호출 → DAG 분석 + READY TASK + builder dispatch XML 반환
59
+ 4. builder 호출 (dispatch XML을 prompt로) 구현
60
+ 5. verifier+committer 호출 (builder 결과를 prompt로) 단일 spawn에서 검증 커밋
61
+ 6. 미완료 TASK 있으면 3번으로 돌아감
66
62
  ```
67
63
 
68
64
  병렬 실행: scheduler가 복수의 READY TASK를 반환하면 builder를 동시에 호출한다.
@@ -75,32 +71,81 @@
75
71
 
76
72
  ```
77
73
  1. scheduler 호출 → READY TASK 확인 + builder dispatch XML 반환
78
- 2. builder verifier committer 순서대로 실행
79
- 3. 미완료 TASK 있으면 1번으로 돌아감
74
+ 2. builder 호출구현
75
+ 3. verifier+committer 호출 단일 spawn에서 검증 후 커밋
76
+ 4. 미완료 TASK 있으면 1번으로 돌아감
80
77
  ```
81
78
 
82
79
  ---
83
80
 
81
+ ## 통합 에이전트 호출
82
+
83
+ ### Specifier+Planner (단일 spawn)
84
+
85
+ pipeline/full 모드에서 specifier 호출 시 양쪽 에이전트 정의를 포함:
86
+
87
+ ```
88
+ 에이전트에 전달할 프롬프트:
89
+ "두 가지 역할을 순서대로 수행하라.
90
+
91
+ 역할 1 — Specifier: specifier.md를 읽고 Requirement.md를 생성하라.
92
+ 역할 2 — Planner: planner.md를 읽고 PLAN.md + TASK 파일을 생성하라.
93
+
94
+ 역할 1을 먼저 수행한 후 역할 2를 수행하라. 통합 결과를 반환하라."
95
+ ```
96
+
97
+ - specifier의 모델(opus)로 spawn
98
+ - REFERENCES_DIR에서 specifier.md와 planner.md 양쪽 참조
99
+ - 반환: Requirement.md + PLAN.md + TASK 파일 + execution-mode
100
+
101
+ ### Verifier+Committer (단일 spawn)
102
+
103
+ builder 완료 후 검증 호출 시:
104
+
105
+ ```
106
+ 에이전트에 전달할 프롬프트:
107
+ "두 가지 역할을 순서대로 수행하라.
108
+
109
+ 역할 1 — Verifier: verifier.md를 읽고 build/lint/test를 검증하라.
110
+ 역할 2 — Committer: committer.md를 읽고 result.md를 생성하고 git commit하라.
111
+
112
+ 역할 1을 먼저 수행하라. 검증 통과 시 역할 2를 수행하라.
113
+ 검증 실패 시 역할 2를 건너뛰고 FAIL 결과만 반환하라."
114
+ ```
115
+
116
+ - verifier의 모델(haiku)로 spawn
117
+ - REFERENCES_DIR에서 verifier.md와 committer.md 양쪽 참조
118
+ - 통과 시: 검증 결과 + commit hash 반환
119
+ - 실패 시: 검증 실패만 반환 (커밋 없음)
120
+
121
+ ---
122
+
84
123
  ## 에이전트 역할 요약
85
124
 
86
- | 에이전트 | 반환값 | 호출 주체 |
87
- |---------|-------|---------|
88
- | specifier | Requirement.md + (겸임 시) PLAN.md/TASK + dispatch XML | Main Claude |
89
- | planner | PLAN.md/TASK 파일 생성 완료 + execution-mode | Main Claude |
90
- | scheduler | READY TASK + dispatch XML | Main Claude |
91
- | builder | task-result XML (context-handoff 포함) | Main Claude |
92
- | verifier | task-result XML | Main Claude |
93
- | committer | task-result XML + commit hash | Main Claude |
125
+ | 에이전트 | 역할 | 모델 | 통합 대상 |
126
+ |---------|------|------|----------|
127
+ | specifier | 요구사항 분석 | opus | + planner (pipeline/full) |
128
+ | planner | PLAN + TASK 분해 | opus | specifier spawn에 통합 |
129
+ | scheduler | DAG 관리 + dispatch | haiku | 단독 |
130
+ | builder | 코드 구현 | sonnet | 단독 |
131
+ | verifier | build/lint/test 검증 | haiku | + committer |
132
+ | committer | 결과 보고 + git commit | haiku | verifier spawn에 통합 |
94
133
 
95
134
  ---
96
135
 
97
- ## 모드별 서브에이전트 호출 횟수
136
+ ## 모드별 서브에이전트 Spawn 횟수
137
+
138
+ | 모드 | Spec+Plan | Scheduler | Builder | Veri+Commit | 합계 |
139
+ |------|:---------:|:---------:|:-------:|:-----------:|:----:|
140
+ | direct | 1 (겸임) | — | 1 | 1 | **3** |
141
+ | pipeline | 1 (통합) | — | 1 | 1 | **3** |
142
+ | full (N TASK) | 1 (통합) | 1 | N | N | **2 + 2N** |
98
143
 
99
- | 모드 | Specifier | Planner | Scheduler | Builder | Verifier | Committer | 합계 |
100
- |------|:---------:|:-------:|:---------:|:-------:|:--------:|:---------:|:----:|
101
- | direct | O (겸임) | X | X | O | X | O | **3회** |
102
- | pipeline | O | O | X | O | O | O | **5회** |
103
- | full | O | O | O | O | O | O | **6회** |
144
+ **Before vs After (6 TASK 기준):**
145
+
146
+ | | Before | After | 감소율 |
147
+ |---|:---:|:---:|:---:|
148
+ | Spawn 횟수 | 2 + 3×6 = 20 | 2 + 2×6 = 14 | **-30%** |
104
149
 
105
150
  ---
106
151
 
@@ -113,13 +158,15 @@
113
158
  | 모드 | 승인 횟수 | 시점 | 사용자에게 보여줄 내용 |
114
159
  |------|:---------:|------|----------------------|
115
160
  | direct | 1회 | Specifier 완료 후 | Requirement.md + PLAN.md + TASK-00.md 요약 |
116
- | pipeline/full | 2회 | Specifier → Planner 후 | 1차: Requirement.md 요약, 2차: PLAN.md + TASK 목록 |
161
+ | pipeline/full | 1회 | Specifier+Planner 완료 후 | Requirement.md + PLAN.md + TASK 목록 |
117
162
  | 자동 승인 | 0회 | — | 모든 승인 게이트 생략 |
118
163
 
164
+ > 참고: pipeline/full 승인이 **2회에서 1회**로 줄었다 (specifier+planner가 단일 spawn이므로).
165
+
119
166
  **승인 요청 방법:**
120
- 1. specifier/planner가 생성한 산출물 요약을 제시 (파일, 범위, execution-mode)
167
+ 1. specifier+planner가 생성한 산출물 요약을 제시 (파일, 범위, execution-mode)
121
168
  2. "진행할까요?" 또는 동등한 질문
122
- 3. **사용자 응답을 기다린다** — 승인 전까지 builder/planner를 호출하지 마라
169
+ 3. **사용자 응답을 기다린다** — 승인 전까지 builder를 호출하지 마라
123
170
 
124
171
  ---
125
172
 
@@ -57,9 +57,10 @@ WORK (일) — 사용자 요청의 목표 단위
57
57
 
58
58
  ### 3-2. 프로젝트 탐색 (Discovery Process)
59
59
 
60
- ```bash
61
- # 1. 기존 WORK 확인
62
- ls -d works/WORK-* 2>/dev/null | sort -V | tail -1
60
+ ```
61
+ # 1. 기존 WORK 확인 — Glob 도구 사용
62
+ Glob pattern: "works/WORK-*/"
63
+ → 마지막 항목이 최신 WORK 번호
63
64
  ```
64
65
 
65
66
  → 탐색 명령 (2~4단계): `shared-prompt-sections.md` § 11 참조
@@ -28,7 +28,7 @@ elif [ -f "Cargo.toml" ]; then
28
28
  elif [ -f "go.mod" ]; then
29
29
  go build ./... 2>&1
30
30
  elif [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
31
- python -m py_compile $(find . -name "*.py" -not -path "*/venv/*" | head -20) 2>&1
31
+ python -m py_compile $(find . -maxdepth 3 -name "*.py" -not -path "*/venv/*" 2>/dev/null) 2>&1
32
32
  elif [ -f "Makefile" ]; then
33
33
  make build 2>&1 || make 2>&1
34
34
  fi
@@ -68,22 +68,20 @@ works/{WORK_ID}/
68
68
 
69
69
  ## § 4. File System Discovery Scripts
70
70
 
71
- ```bash
71
+ ```
72
72
  # 미완료 TASK가 있는 최신 WORK 찾기
73
- for dir in $(ls -d works/WORK-* 2>/dev/null | sort -V -r); do
74
- WORK_ID=$(basename $dir)
75
- TOTAL=$(ls $dir/TASK-*.md 2>/dev/null | grep -v result | wc -l)
76
- DONE=$(ls $dir/TASK-*_result.md 2>/dev/null | wc -l)
77
- [ "$DONE" -lt "$TOTAL" ] && echo "$WORK_ID" && break
78
- done
73
+ # Glob 도구 사용: pattern "works/WORK-*/" 전체 WORK 디렉토리 목록 (정렬됨)
74
+ # 각 WORK (역순)에 대해 비교:
75
+ # Glob "works/WORK-NN/TASK-*.md" (*_result.md, *_progress.md 제외) TOTAL
76
+ # Glob "works/WORK-NN/TASK-*_result.md" DONE
77
+ # DONE < TOTAL 번째 WORK가 활성 WORK
79
78
 
80
79
  # 전체 WORK 목록
81
- ls -d works/WORK-* 2>/dev/null | sort -V
80
+ # Glob 도구 사용: pattern "works/WORK-*/"
82
81
 
83
82
  # TASK 완료 현황
84
- TOTAL=$(ls works/${WORK_ID}/TASK-*.md 2>/dev/null | grep -v result | wc -l)
85
- DONE=$(ls works/${WORK_ID}/TASK-*_result.md 2>/dev/null | wc -l)
86
- echo "$DONE / $TOTAL"
83
+ # TOTAL = Glob "works/${WORK_ID}/TASK-??.md" 개수
84
+ # DONE = Glob "works/${WORK_ID}/TASK-*_result.md" 개수
87
85
  ```
88
86
 
89
87
  ---
@@ -190,13 +188,13 @@ curl -s -X POST "CALLBACK_URL" -H "Content-Type: application/json" -H "X-Runner-
190
188
  grep -oP '(?<=Language:\s?)[a-z]{2}' CLAUDE.md 2>/dev/null
191
189
 
192
190
  # 2. 기술 스택
193
- cat package.json 2>/dev/null | head -50
194
- cat pyproject.toml 2>/dev/null | head -30
195
- cat Cargo.toml 2>/dev/null | head -20
196
- cat go.mod 2>/dev/null | head -10
191
+ head -50 package.json 2>/dev/null
192
+ head -30 pyproject.toml 2>/dev/null
193
+ head -20 Cargo.toml 2>/dev/null
194
+ head -10 go.mod 2>/dev/null
197
195
 
198
196
  # 3. 구조 (필요 시)
199
- find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) | grep -v node_modules | head -30
197
+ find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) -not -path "*/node_modules/*" 2>/dev/null
200
198
  ```
201
199
 
202
200
  ---
package/agents/planner.md CHANGED
@@ -57,9 +57,10 @@ Required reference files for this agent:
57
57
 
58
58
  ### 3-2. Project Exploration (Discovery Process)
59
59
 
60
- ```bash
61
- # 1. Check existing WORKs
62
- ls -d works/WORK-* 2>/dev/null | sort -V | tail -1
60
+ ```
61
+ # 1. Check existing WORKs — use Glob tool
62
+ Glob pattern: "works/WORK-*/"
63
+ → Take the last entry (latest WORK number)
63
64
  ```
64
65
 
65
66
  → Discovery commands (steps 2–4): see `shared-prompt-sections.md` § 11
@@ -28,7 +28,7 @@ elif [ -f "Cargo.toml" ]; then
28
28
  elif [ -f "go.mod" ]; then
29
29
  go build ./... 2>&1
30
30
  elif [ -f "pyproject.toml" ] || [ -f "setup.py" ]; then
31
- python -m py_compile $(find . -name "*.py" -not -path "*/venv/*" | head -20) 2>&1
31
+ python -m py_compile $(find . -maxdepth 3 -name "*.py" -not -path "*/venv/*" 2>/dev/null) 2>&1
32
32
  elif [ -f "Makefile" ]; then
33
33
  make build 2>&1 || make 2>&1
34
34
  fi
@@ -68,22 +68,20 @@ works/{WORK_ID}/
68
68
 
69
69
  ## § 4. File System Discovery Scripts
70
70
 
71
- ```bash
71
+ ```
72
72
  # Find latest WORK with incomplete TASKs
73
- for dir in $(ls -d works/WORK-* 2>/dev/null | sort -V -r); do
74
- WORK_ID=$(basename $dir)
75
- TOTAL=$(ls $dir/TASK-*.md 2>/dev/null | grep -v result | wc -l)
76
- DONE=$(ls $dir/TASK-*_result.md 2>/dev/null | wc -l)
77
- [ "$DONE" -lt "$TOTAL" ] && echo "$WORK_ID" && break
78
- done
73
+ # Use Glob tool: pattern "works/WORK-*/" list all WORK directories (sorted)
74
+ # For each WORK (descending), compare:
75
+ # Glob "works/WORK-NN/TASK-*.md" (exclude *_result.md, *_progress.md) TOTAL
76
+ # Glob "works/WORK-NN/TASK-*_result.md" DONE
77
+ # First WORK where DONE < TOTAL is the active WORK
79
78
 
80
79
  # List all WORKs
81
- ls -d works/WORK-* 2>/dev/null | sort -V
80
+ # Use Glob tool: pattern "works/WORK-*/"
82
81
 
83
82
  # TASK completion status
84
- TOTAL=$(ls works/${WORK_ID}/TASK-*.md 2>/dev/null | grep -v result | wc -l)
85
- DONE=$(ls works/${WORK_ID}/TASK-*_result.md 2>/dev/null | wc -l)
86
- echo "$DONE / $TOTAL"
83
+ # TOTAL = count of Glob "works/${WORK_ID}/TASK-??.md"
84
+ # DONE = count of Glob "works/${WORK_ID}/TASK-*_result.md"
87
85
  ```
88
86
 
89
87
  ---
@@ -190,13 +188,13 @@ Agent-specific payload fields:
190
188
  grep -oP '(?<=Language:\s?)[a-z]{2}' CLAUDE.md 2>/dev/null
191
189
 
192
190
  # 2. Tech stack
193
- cat package.json 2>/dev/null | head -50
194
- cat pyproject.toml 2>/dev/null | head -30
195
- cat Cargo.toml 2>/dev/null | head -20
196
- cat go.mod 2>/dev/null | head -10
191
+ head -50 package.json 2>/dev/null
192
+ head -30 pyproject.toml 2>/dev/null
193
+ head -20 Cargo.toml 2>/dev/null
194
+ head -10 go.mod 2>/dev/null
197
195
 
198
196
  # 3. Structure (when needed)
199
- find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) | grep -v node_modules | head -30
197
+ find . -maxdepth 3 -type f \( -name "*.md" -o -name "*.json" -o -name "*.toml" \) -not -path "*/node_modules/*" 2>/dev/null
200
198
  ```
201
199
 
202
200
  ---
package/lib/constants.mjs CHANGED
@@ -31,37 +31,6 @@ export function getAgentsSrcDir(lang) {
31
31
  return join(__dirname, '..', 'agents', lang);
32
32
  }
33
33
 
34
- export const CLAUDE_MD_SECTION_KO = `
35
- ## Agent 호출 규칙
36
-
37
- \`[]\` 태그로 시작하는 요청 → \`.claude/agents/agent-flow.md\` 를 읽고 파이프라인을 실행한다.
38
-
39
- - **Main Claude가 오케스트레이터**다. 모든 에이전트 호출은 Main Claude가 직접 수행한다.
40
- - \`[]\` 태그 감지 시 → specifier 호출 (첫 번째 에이전트)
41
- - 각 에이전트는 작업 완료 후 결과(dispatch XML 또는 task-result XML)만 반환한다.
42
- - Main Claude가 반환값을 받아 다음 에이전트를 순서대로 호출한다.
43
- - 파이프라인 흐름은 \`.claude/agents/agent-flow.md\` 기준을 따른다.
44
-
45
- 예: \`[추가기능]\`, \`[버그수정]\`, \`[리팩토링]\`, \`[WORK 시작]\` 등
46
- `.trimStart();
47
-
48
- export const CLAUDE_MD_SECTION_EN = `
49
- ## Agent Invocation Rules
50
-
51
- Requests starting with a \`[]\` tag → read \`.claude/agents/agent-flow.md\` and execute the pipeline.
52
-
53
- - **Main Claude is the orchestrator.** All agent invocations are performed directly by Main Claude.
54
- - On \`[]\` tag detection → invoke specifier (first agent)
55
- - Each agent only returns results (dispatch XML or task-result XML) after completing its work.
56
- - Main Claude receives return values and invokes the next agent in sequence.
57
- - Pipeline flow follows \`.claude/agents/agent-flow.md\`.
58
-
59
- Examples: \`[new-feature]\`, \`[bugfix]\`, \`[enhancement]\`, \`[new-work]\`, etc.
60
- `.trimStart();
61
-
62
- export function getClaudeMdSection(lang) {
63
- return lang === 'ko' ? CLAUDE_MD_SECTION_KO : CLAUDE_MD_SECTION_EN;
64
- }
65
34
 
66
35
  /**
67
36
  * Bash permissions required by uc-taskmanager agents.
@@ -117,10 +86,7 @@ export const REQUIRED_PERMISSIONS = [
117
86
  'Bash(make:*)',
118
87
 
119
88
  // Git operations (committer)
120
- 'Bash(git add:*)',
121
- 'Bash(git commit:*)',
122
- 'Bash(git log:*)',
123
- 'Bash(git rev-parse:*)',
89
+ 'Bash(git:*)',
124
90
 
125
91
  // Network (callback transmission)
126
92
  'Bash(curl:*)',