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.
- package/.claude-plugin/plugin.json +29 -0
- package/agents/agent-flow.md +88 -45
- package/agents/ko/agent-flow.md +84 -37
- package/agents/ko/planner.md +4 -3
- package/agents/ko/shared-prompt-sections.md +15 -17
- package/agents/planner.md +4 -3
- package/agents/shared-prompt-sections.md +15 -17
- package/lib/constants.mjs +1 -35
- package/lib/init.mjs +49 -24
- package/package.json +4 -2
- package/skills/init/SKILL.md +95 -0
- package/skills/sdd-pipeline/SKILL.md +16 -0
- package/skills/sdd-pipeline/references/agent-flow.md +279 -0
- package/skills/sdd-pipeline/references/context-policy.md +94 -0
- package/skills/sdd-pipeline/references/file-content-schema.md +249 -0
- package/skills/sdd-pipeline/references/shared-prompt-sections.md +250 -0
- package/skills/sdd-pipeline/references/work-activity-log.md +47 -0
- package/skills/sdd-pipeline/references/xml-schema.md +159 -0
- package/skills/work-pipeline/SKILL.md +49 -0
- package/skills/work-status/SKILL.md +35 -0
|
@@ -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
|
+
}
|
package/agents/agent-flow.md
CHANGED
|
@@ -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
|
|
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 +
|
|
44
|
-
2. ⛔ STOP — Present Requirement.md
|
|
45
|
-
3. Invoke
|
|
46
|
-
4.
|
|
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 →
|
|
58
|
-
2. ⛔ STOP — Present Requirement.md
|
|
59
|
-
3. Invoke
|
|
60
|
-
4.
|
|
61
|
-
5. Invoke
|
|
62
|
-
6.
|
|
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 scheduler → DAG 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.
|
|
79
|
-
3.
|
|
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 |
|
|
87
|
-
|
|
88
|
-
| specifier | Requirement
|
|
89
|
-
| planner | PLAN
|
|
90
|
-
| scheduler |
|
|
91
|
-
| builder |
|
|
92
|
-
| verifier |
|
|
93
|
-
| committer |
|
|
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
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
|
|
|
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 |
|
|
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
|
|
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
|
|
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 →
|
|
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 |
|
|
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
|
|
package/agents/ko/agent-flow.md
CHANGED
|
@@ -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
|
|
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
|
|
44
|
-
2. ⛔ STOP — Requirement.md
|
|
45
|
-
3.
|
|
46
|
-
4.
|
|
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
|
|
58
|
-
2. ⛔ STOP — Requirement.md
|
|
59
|
-
3.
|
|
60
|
-
4.
|
|
61
|
-
5.
|
|
62
|
-
6.
|
|
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
|
|
79
|
-
3.
|
|
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 |
|
|
89
|
-
| planner | PLAN
|
|
90
|
-
| scheduler |
|
|
91
|
-
| builder |
|
|
92
|
-
| verifier |
|
|
93
|
-
| committer |
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
|
102
|
-
|
|
103
|
-
|
|
|
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 |
|
|
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
|
|
167
|
+
1. specifier+planner가 생성한 산출물 요약을 제시 (파일, 범위, execution-mode)
|
|
121
168
|
2. "진행할까요?" 또는 동등한 질문
|
|
122
|
-
3. **사용자 응답을 기다린다** — 승인 전까지 builder
|
|
169
|
+
3. **사용자 응답을 기다린다** — 승인 전까지 builder를 호출하지 마라
|
|
123
170
|
|
|
124
171
|
---
|
|
125
172
|
|
package/agents/ko/planner.md
CHANGED
|
@@ -57,9 +57,10 @@ WORK (일) — 사용자 요청의 목표 단위
|
|
|
57
57
|
|
|
58
58
|
### 3-2. 프로젝트 탐색 (Discovery Process)
|
|
59
59
|
|
|
60
|
-
```
|
|
61
|
-
# 1. 기존 WORK 확인
|
|
62
|
-
|
|
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/*"
|
|
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
|
-
```
|
|
71
|
+
```
|
|
72
72
|
# 미완료 TASK가 있는 최신 WORK 찾기
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
80
|
+
# Glob 도구 사용: pattern "works/WORK-*/"
|
|
82
81
|
|
|
83
82
|
# TASK 완료 현황
|
|
84
|
-
TOTAL
|
|
85
|
-
DONE
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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" \)
|
|
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
|
-
```
|
|
61
|
-
# 1. Check existing WORKs
|
|
62
|
-
|
|
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/*"
|
|
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
|
-
```
|
|
71
|
+
```
|
|
72
72
|
# Find latest WORK with incomplete TASKs
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
80
|
+
# Use Glob tool: pattern "works/WORK-*/"
|
|
82
81
|
|
|
83
82
|
# TASK completion status
|
|
84
|
-
TOTAL
|
|
85
|
-
DONE
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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" \)
|
|
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
|
|
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:*)',
|