uctm 1.5.0 → 1.5.1
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/.claude-plugin/plugin.json +29 -0
- package/README.md +1120 -0
- package/package.json +5 -2
|
@@ -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/README.md
ADDED
|
@@ -0,0 +1,1120 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/badge/Claude_Code-Subagents-6b5ce7?style=for-the-badge&logo=anthropic&logoColor=white" />
|
|
3
|
+
<img src="https://img.shields.io/badge/Language_Agnostic-Any_Stack-27ae60?style=for-the-badge" />
|
|
4
|
+
<img src="https://img.shields.io/badge/License-GPLv3-f5a623?style=for-the-badge" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
# uc-taskmanager
|
|
8
|
+
|
|
9
|
+
Requirements Analysis & Development 6-Agent Full Pipeline + DAG-Based Orchestration + Sliding Window Context Management
|
|
10
|
+
|
|
11
|
+
**Universal Claude Task Manager** — A WORK-PIPELINE Agent that executes SDD (Specification-Driven Development) for Claude Code.
|
|
12
|
+
It formalizes user requirements into specifications,
|
|
13
|
+
builds execution plans (WORK) from those specs,
|
|
14
|
+
decomposes them into small tasks (TASK) and analyzes dependency graphs (DAG),
|
|
15
|
+
then automatically executes TASKs sequentially or in parallel based on dependencies.
|
|
16
|
+
|
|
17
|
+
Available as an **npm CLI** (`uctm`). Install once, use `[]`-tagged requests to trigger automated multi-agent pipelines.
|
|
18
|
+
|
|
19
|
+
**[한국어 문서 (Korean)](README_KO.md)**
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### npm CLI
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g uctm
|
|
29
|
+
cd your-project
|
|
30
|
+
uctm init --lang en # English agents
|
|
31
|
+
uctm init --lang ko # 한국어 에이전트 (Korean — npm only)
|
|
32
|
+
uctm init # Interactive language selection
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`uctm init` automatically configures Bash permissions for agents in `settings.local.json` and installs `.claude-plugin` and `skills/` resources. No prompts required — the pipeline runs immediately after init.
|
|
36
|
+
|
|
37
|
+
### Start Using
|
|
38
|
+
|
|
39
|
+
Once installed, start Claude Code and use pipeline tags:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
claude
|
|
43
|
+
> [new-feature] Add a hello world feature
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Since `uctm init` automatically sets up permissions, the pipeline runs without additional prompts. If you need to bypass permissions in a CI/isolated environment:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
claude --dangerously-skip-permissions
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> **Warning**: Only use bypass mode in isolated environments or when you trust the pipeline fully. See [Claude Code Permissions](https://code.claude.com/docs/en/permissions) for details.
|
|
53
|
+
|
|
54
|
+
The agents analyze your request, plan the work, and execute through isolated subagent pipelines.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## What Makes This Pipeline Different
|
|
59
|
+
|
|
60
|
+
### 1. Procedures Must Be Executed Properly and Recorded
|
|
61
|
+
|
|
62
|
+
* Rather than focusing on *writing better code* (like TDD or DDD), this agent focuses on **executing development procedures properly**.
|
|
63
|
+
* It systematizes the full pipeline: **Requirement (user) → Specification → WORK Plan → Per-TASK Execution Plan → Per-TASK Execution/Verification/Completion → Per-TASK Result Storage** (WORK PIPELINE)
|
|
64
|
+
* The result: end-to-end records from requirement to delivery, providing full traceability.
|
|
65
|
+
|
|
66
|
+
**How to work with this AI Agent:**
|
|
67
|
+
|
|
68
|
+
* **Start**: Give a prompt starting with `[]` to trigger the WORK-PIPELINE
|
|
69
|
+
```
|
|
70
|
+
[game-dev] Build a brick breaker game in HTML
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
* **Requirement Analysis**: The agent analyzes your requirement and asks for approval. Review `works/WORK-NN/Requirement.md` and type **"approve"** to proceed.
|
|
74
|
+
```
|
|
75
|
+
{Requirement specification content}
|
|
76
|
+
If you approve Requirement.md, I will call the Planner to create PLAN.md + TASK decomposition.
|
|
77
|
+
Let me know if you want to modify anything.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
* **WORK Execution Plan**: The agent builds an execution plan and asks again. Review `works/WORK-NN/PLAN.md` and `TASK-NN.md`, then type **"approve"** to proceed.
|
|
81
|
+
```
|
|
82
|
+
WORK-31 Development Approval Request
|
|
83
|
+
|
|
84
|
+
Project folder structure reorganization ~~~~~~~ / ########
|
|
85
|
+
|
|
86
|
+
┌─────────┬─────────────────────────┐
|
|
87
|
+
│ Item │ Details │
|
|
88
|
+
├─────────┼─────────────────────────┤
|
|
89
|
+
│ Mode │ full │
|
|
90
|
+
├─────────┼─────────────────────────┤
|
|
91
|
+
│ TASKs │ 6 (TASK-00 ~ TASK-05) │
|
|
92
|
+
└─────────┴─────────────────────────┘
|
|
93
|
+
|
|
94
|
+
DAG Structure
|
|
95
|
+
|
|
96
|
+
TASK-00 (move agents/ en files → en/ subdirectory)
|
|
97
|
+
├─→ TASK-01 (~~~~~~~~~~~~) ─→ TASK-03 (#########)
|
|
98
|
+
├─→ TASK-02 (create plugin/) ─→ TASK-04 (????????)
|
|
99
|
+
└─────────────────────────────────→ TASK-05 ($$$$$$$$$)
|
|
100
|
+
|
|
101
|
+
- TASK-01/02 parallel, TASK-03/04 parallel, TASK-05 final integration
|
|
102
|
+
- If approved, scheduler → builder → verifier → committer pipeline will execute.
|
|
103
|
+
|
|
104
|
+
Proceed?
|
|
105
|
+
```
|
|
106
|
+
* Per-TASK: build → verify → commit repeats automatically for each TASK.
|
|
107
|
+
```
|
|
108
|
+
● TASK-05 committed. Updating PROGRESS.md and finalizing WORK-31.
|
|
109
|
+
```
|
|
110
|
+
* When TASKs complete, verify via `works/WORK-NN/TASK-NN_result.md` and actual testing.
|
|
111
|
+
```
|
|
112
|
+
push, merge
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Want to rollback?** Type `WORK-NN rollback`. Commit hashes are stored in the files, so only that WORK's changes are reverted.
|
|
116
|
+
|
|
117
|
+
**Too much ceremony for a simple button rename?**
|
|
118
|
+
```
|
|
119
|
+
[WORK start] Change the submit button label to "Send" — auto
|
|
120
|
+
```
|
|
121
|
+
Add "auto" to skip all approval steps and run the entire process automatically.
|
|
122
|
+
|
|
123
|
+
### 2. Token Economy
|
|
124
|
+
|
|
125
|
+
I'm cost-conscious (honestly). So this agent applies four token-saving strategies:
|
|
126
|
+
|
|
127
|
+
**(1) Serena MCP for codebase analysis.**
|
|
128
|
+
The agent prioritizes [Serena MCP](https://github.com/oraios/serena) for code exploration — reading symbols instead of entire files. (Huge thanks to the Serena team.)
|
|
129
|
+
|
|
130
|
+
**(2) Three execution modes + spawn consolidation to minimize subagent overhead.** The WORK-PIPELINE has 6 agent stages running sequentially. For a single-TASK WORK, that's 6 subagent sessions — each consuming tokens just to boot up. Wasteful. So the specifier agent decides the execution mode based on complexity: **direct** mode uses only 3 agent calls (specifier → builder → verifier+committer), skipping planner and scheduler. On top of this, related agents are combined into a single spawn: specifier+planner run together, and verifier+committer run together — reducing total spawns by **~30%** (6 TASKs: 20 → 14 spawns). See [Three Execution Modes](#concept-three-execution-modes).
|
|
131
|
+
|
|
132
|
+
**(3) Structured XML communication.** Subagents can't nest — Main Claude orchestrates everything.
|
|
133
|
+
* When one agent finishes and the next agent starts, Main Claude sits in between, causing data to be transmitted twice. This communication is a blob of text —
|
|
134
|
+
* The receiving side has to parse it again. So we standardized the communication format as XML.
|
|
135
|
+
* Every bit helps.
|
|
136
|
+
* (This also made agent log monitoring much easier.) See [Structured Agent Communication](#structured-agent-communication).
|
|
137
|
+
|
|
138
|
+
**(4) Sliding Window Context Transfer.** Agent A finishes and tells B what it did. B finishes and tells C what A did plus what B did. But does C really need A's full details? So B passes its own work in full to C, and summarizes A's work. **One degree of separation = just a name and phone number** — you don't need to know their personality. If curious, just ask them directly. Testing shows ~20-30% token savings. See [Sliding Window Context Transfer](#sliding-window-context-transfer).
|
|
139
|
+
|
|
140
|
+
**"Why not skip agents entirely and do everything in one session?"** See [Context Isolation](#context-isolation). In long sessions, AI gradually loses coherence — like sudden memory loss mid-conversation. Strict context isolation prevents this and directly impacts output quality.
|
|
141
|
+
|
|
142
|
+
### 3. Dependency-Aware Parallel Execution
|
|
143
|
+
|
|
144
|
+
TASKs within a WORK have dependency management via DAG. Parallel execution only happens when TASKs have no mutual dependencies — meaning no source code conflicts from concurrent edits.
|
|
145
|
+
|
|
146
|
+
I've also built a **requirement management system** that integrates with this pipeline. It manages requirements per project. Queue up requirements before bed, and by morning they're all developed — your to-do list just shifts to *reviewing* instead of *coding*. WORKs execute in parallel across projects too (cross-project dependencies don't exist).
|
|
147
|
+
|
|
148
|
+
### What's Next
|
|
149
|
+
|
|
150
|
+
Currently designing a **RAG-based system** to store accumulated artifacts and query similar past requirements during specification analysis — for faster and more accurate requirement decomposition. (If enough data accumulates, who knows — maybe a fine-tuned LLM behind an MCP someday.)
|
|
151
|
+
|
|
152
|
+
> **Tip for prompting AI agents**: Think of it like SQL WHERE clause ordering (developers only). The first condition should narrow the dataset the most — and if it hits an index, even better. That's why I maintain a glossary with terms and source code entry points, and have the agent reference it. My tokens are precious.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
Six subagents work across any project and any language, automatically handling **request routing → task decomposition → dependency management → code implementation → verification → commit**.
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
"[new-feature] Build a user authentication feature"
|
|
160
|
+
→ specifier decides WORK, planner creates WORK-01 with 5 TASKs, pipeline executes
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Usage
|
|
166
|
+
|
|
167
|
+
### Trivial Fix (direct mode)
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
> [bugfix] Fix typo in login error message
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Main Claude calls specifier, which selects `execution-mode: direct` and returns a dispatch XML. Main Claude then calls builder (implements the change) and committer (commits). Creates WORK-NN directory + PLAN + result.md + commit.
|
|
174
|
+
|
|
175
|
+
### Quick Task (pipeline mode)
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
> [bugfix] Fix the login button not responding on mobile
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Main Claude calls specifier, which selects `execution-mode: pipeline` and creates PLAN. Then Main Claude calls builder → verifier → committer in sequence.
|
|
182
|
+
|
|
183
|
+
### Complex Feature (WORK)
|
|
184
|
+
|
|
185
|
+
#### 1. Create WORK (Planning)
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
> [new-feature] Build a user authentication feature. Plan it.
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The planner analyzes the project and creates WORK-01:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
WORK-01: User Authentication
|
|
195
|
+
|
|
196
|
+
WORK-01: TASK-00: Project initialization ← no dependencies
|
|
197
|
+
WORK-01: TASK-01: DB schema design ← TASK-00
|
|
198
|
+
WORK-01: TASK-02: JWT auth API ← TASK-01
|
|
199
|
+
WORK-01: TASK-03: User CRUD ← TASK-02
|
|
200
|
+
WORK-01: TASK-04: Tests + documentation ← TASK-03
|
|
201
|
+
|
|
202
|
+
Do you approve this plan?
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
#### 2. Execute WORK
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
> Run WORK-01 pipeline
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The scheduler executes WORK-01's TASKs in dependency order.
|
|
212
|
+
|
|
213
|
+
#### 3. Add to Existing WORK
|
|
214
|
+
|
|
215
|
+
If WORK-01 is IN_PROGRESS, the specifier asks:
|
|
216
|
+
> "WORK-01 (User Authentication) is in progress. Add as a new TASK or create a new WORK?"
|
|
217
|
+
|
|
218
|
+
#### 4. Check Status
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
> WORK list
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
WORK Status
|
|
226
|
+
WORK-01: User Authentication ✅ 5/5 completed
|
|
227
|
+
WORK-02: Payment Integration 🔄 2/4 in progress
|
|
228
|
+
WORK-03: Admin Dashboard ⬜ 0/6 pending
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
#### 5. Auto Mode / Resume
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
> Run WORK-02 automatically
|
|
235
|
+
> Resume WORK-02
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### 6. Run a Specific TASK
|
|
239
|
+
|
|
240
|
+
Skip to a specific TASK within a WORK (e.g., retry after a failure):
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
> Run WORK-02: TASK-02
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
The scheduler returns the next TASK, then Main Claude calls builder → verifier → committer in sequence.
|
|
247
|
+
|
|
248
|
+
#### 7. Force WORK Creation (Skip Complexity Check)
|
|
249
|
+
|
|
250
|
+
Use the `[new-work]` tag to always create a new WORK regardless of complexity:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
> [new-work] Refactor the auth module
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### 8. Handle Failure / Retry
|
|
257
|
+
|
|
258
|
+
If a TASK fails during the pipeline, the scheduler retries up to 3 times automatically.
|
|
259
|
+
If it still fails, you can inspect the result file and retry manually:
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
> WORK-02: TASK-01 failed. Retry it.
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Or fix the issue and re-run:
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
> Fix the issue in src/auth.ts, then retry WORK-02: TASK-01
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### 9. Add a TASK to an In-Progress WORK
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
> [enhancement] Add rate limiting to the auth API
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
If WORK-02 is `IN_PROGRESS`, the specifier asks:
|
|
278
|
+
> "WORK-02 (Auth Module) is in progress. Add as a new TASK, or create a new WORK?"
|
|
279
|
+
|
|
280
|
+
#### 10. Check Individual TASK Status
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
> Show WORK-02 progress
|
|
284
|
+
> What's the status of WORK-03: TASK-02?
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
The scheduler reads `PROGRESS.md` and `result.md` files to report current state.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## The `[]` Tag System
|
|
292
|
+
|
|
293
|
+
Prefix your request with a `[]` tag to trigger the pipeline:
|
|
294
|
+
|
|
295
|
+
| Tag | Meaning |
|
|
296
|
+
|-----|---------|
|
|
297
|
+
| `[new-feature]` | New feature |
|
|
298
|
+
| `[enhancement]` | Enhancement |
|
|
299
|
+
| `[bugfix]` | Bug fix |
|
|
300
|
+
| `[new-work]` | Always create new WORK (skip complexity check) |
|
|
301
|
+
|
|
302
|
+
No `[]` tag = handled directly without pipeline.
|
|
303
|
+
|
|
304
|
+
To register this rule in your project, add the following to your `CLAUDE.md`:
|
|
305
|
+
|
|
306
|
+
```markdown
|
|
307
|
+
## Agent 호출 규칙
|
|
308
|
+
|
|
309
|
+
`[]` 태그로 시작하는 요청 → specifier 에이전트 호출 (WORK 파이프라인 시작)
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
This ensures Claude automatically delegates `[]`-tagged requests to the specifier agent without manual invocation.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Installation
|
|
317
|
+
|
|
318
|
+
### npm CLI — v1.5.0
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
npm install -g uctm
|
|
322
|
+
|
|
323
|
+
# Per-project (copies agents + config + updates CLAUDE.md)
|
|
324
|
+
cd your-project
|
|
325
|
+
uctm init --lang en # English agents
|
|
326
|
+
uctm init --lang ko # 한국어 에이전트
|
|
327
|
+
uctm init # Interactive language selection
|
|
328
|
+
|
|
329
|
+
# Global (copies agents to ~/.claude/agents/)
|
|
330
|
+
uctm init --global --lang en
|
|
331
|
+
|
|
332
|
+
# Update agents after upgrading uctm (--lang required)
|
|
333
|
+
uctm update --lang en
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Manual
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
git clone https://github.com/UCJung/uc-taskmanager-claude-agent.git /tmp/uc-tm
|
|
340
|
+
mkdir -p .claude/agents
|
|
341
|
+
cp /tmp/uc-tm/agents/en/*.md .claude/agents/ # or agents/ko/ for Korean
|
|
342
|
+
rm -rf /tmp/uc-tm
|
|
343
|
+
git add .claude/agents/ && git commit -m "chore: add uc-taskmanager agents"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Local Plugin Test
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# Test plugin locally
|
|
350
|
+
claude --plugin-dir ./
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Verify
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
claude
|
|
357
|
+
> /agents
|
|
358
|
+
# specifier, planner, scheduler, builder, verifier, committer → confirm all 6
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## Concept: Three Execution Modes
|
|
364
|
+
|
|
365
|
+
Main Claude detects the `[]` tag and calls the **specifier** subagent, which selects one of three `execution-mode` values:
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
User Request → Main Claude (orchestrator)
|
|
369
|
+
│
|
|
370
|
+
▼
|
|
371
|
+
┌───────────┐
|
|
372
|
+
│ specifier │ (called by Main Claude)
|
|
373
|
+
└─────┬─────┘
|
|
374
|
+
│
|
|
375
|
+
execution-mode returned
|
|
376
|
+
│
|
|
377
|
+
├─ direct (no build/test required)
|
|
378
|
+
│ → specifier returns dispatch XML → Main Claude calls builder → [verifier+committer]
|
|
379
|
+
│
|
|
380
|
+
├─ pipeline (build/test required, single domain, sequential)
|
|
381
|
+
│ → Main Claude calls: [specifier+planner] → builder → [verifier+committer]
|
|
382
|
+
│
|
|
383
|
+
└─ full (multi-domain / complex DAG / new module / 5+ tasks)
|
|
384
|
+
→ Main Claude calls: [specifier+planner] → scheduler → [builder → verifier+committer] × N
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Sub-agent Spawn Count by Mode:**
|
|
388
|
+
|
|
389
|
+
| Mode | Spawns | Agents |
|
|
390
|
+
|------|--------|--------|
|
|
391
|
+
| direct | 3 | specifier + builder + verifier+committer |
|
|
392
|
+
| pipeline | 3 | specifier+planner + builder + verifier+committer |
|
|
393
|
+
| full (N TASKs) | 2+2N | specifier+planner + scheduler + [builder + verifier+committer] × N |
|
|
394
|
+
|
|
395
|
+
Compared to the previous approach (separate spawns): **6 TASKs: 20 → 14 spawns (-30%)**.
|
|
396
|
+
|
|
397
|
+
All three modes output to `works/WORK-NN/` and guarantee `result.md` + `COMMITTER DONE` callback.
|
|
398
|
+
|
|
399
|
+
### WORK (Multi-Task, full mode)
|
|
400
|
+
|
|
401
|
+
A two-level hierarchy for complex features:
|
|
402
|
+
|
|
403
|
+
```
|
|
404
|
+
WORK (unit of work) A single goal. The unit requested by the user.
|
|
405
|
+
└── TASK (unit of task) An individual execution unit to achieve the WORK.
|
|
406
|
+
└── result Completion proof. Auto-generated after verification.
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### pipeline mode (Single Task, Delegated)
|
|
410
|
+
|
|
411
|
+
Subagent-delegated path for moderate single tasks. specifier+planner run in a single spawn, then builder, then verifier+committer.
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
Main Claude → [specifier+planner](opus) → builder(sonnet) → [verifier+committer](haiku)
|
|
415
|
+
(each group called as a single spawn by Main Claude)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### direct mode (Trivial)
|
|
419
|
+
|
|
420
|
+
Main Claude calls specifier, which determines direct mode and returns a dispatch XML. Main Claude then calls builder (implements the change) and verifier+committer (verifies and commits) as a single spawn.
|
|
421
|
+
|
|
422
|
+
```
|
|
423
|
+
Main Claude → specifier: Analyze → return dispatch XML → [back to Main Claude]
|
|
424
|
+
Main Claude → builder: Implement → Self-check → [back to Main Claude]
|
|
425
|
+
Main Claude → [verifier+committer]: Verify → Commit → result.md
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## Pipeline
|
|
431
|
+
|
|
432
|
+
### WORK Pipeline (Complex)
|
|
433
|
+
|
|
434
|
+
> Subagents cannot nest — Main Claude (CLI terminal) orchestrates every call.
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
Main Claude (orchestrator)
|
|
438
|
+
┌─────────────┼──────────────────────┐
|
|
439
|
+
│ │ │
|
|
440
|
+
specifier planner scheduler builder verifier committer
|
|
441
|
+
┌──────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
442
|
+
│Request │────▶│Create │────▶│Dependency│────▶│Code │────▶│Build/Test│────▶│Result │
|
|
443
|
+
│Analysis │ │WORK/TASK│ │DAG+Order │ │Implement │ │Verify │ │→ git │
|
|
444
|
+
└──────────┘ └─────────┘ └──────────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
445
|
+
│ │ │
|
|
446
|
+
└── Retry on fail┘ │
|
|
447
|
+
(max 3 times) │
|
|
448
|
+
Next TASK loop ◀┘
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### pipeline mode (Simple → Delegated)
|
|
452
|
+
|
|
453
|
+
```
|
|
454
|
+
specifier+planner builder verifier+committer
|
|
455
|
+
┌──────────────┐ ┌──────────┐ ┌────────────────┐
|
|
456
|
+
│PLAN │────▶│Code │────▶│Build/Test │
|
|
457
|
+
│+TASK │ │Implement │ │Verify→ git │
|
|
458
|
+
└──────────────┘ └──────────┘ └────────────────┘
|
|
459
|
+
(opus, 1 spawn) (sonnet) (haiku, 1 spawn)
|
|
460
|
+
← each group called by Main Claude →
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### direct mode (Trivial)
|
|
464
|
+
|
|
465
|
+
```
|
|
466
|
+
specifier builder verifier+committer
|
|
467
|
+
┌──────────┐ ┌──────────────────────┐ ┌──────────────┐
|
|
468
|
+
│ Analyze │────▶│ Implement → Self-chk │────▶│Verify→Commit │
|
|
469
|
+
│ dispatch │ └──────────────────────┘ │→ result │
|
|
470
|
+
└──────────┘ (no build/test required) └──────────────┘
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### Agents
|
|
474
|
+
|
|
475
|
+
Six agents work together in a clean, isolated pipeline:
|
|
476
|
+
|
|
477
|
+
| Agent | Role | Model | Permission | MCP | Spawn |
|
|
478
|
+
|-------|------|-------|------------|-----|-------|
|
|
479
|
+
| **specifier** | `[]` tag detection, execution-mode selection (direct/pipeline/full), PLAN creation, WORK-LIST management, returns dispatch XML for all modes | **opus** | read + dispatch | Serena (codebase exploration), sequential-thinking (complexity check) | combined with planner (pipeline/full) |
|
|
480
|
+
| **planner** | Create WORK + decompose TASKs + generate PLAN.md (full mode) + pre-create progress templates | **opus** | read-only | Serena (codebase exploration), sequential-thinking (task decomposition) | combined with specifier |
|
|
481
|
+
| **scheduler** | Manage DAG for a specific WORK + run pipeline with sliding window context | **haiku** | read + dispatch | — | standalone (full mode only) |
|
|
482
|
+
| **builder** | Code implementation + progress.md checkpoint recording | **sonnet** | full access | Serena (symbol-level explore/edit) | standalone |
|
|
483
|
+
| **verifier** | Progress gate (Status=COMPLETED) → build/lint/test verification (read-only) | **haiku** | read + execute | — | combined with committer |
|
|
484
|
+
| **committer** | Gate check (progress.md) → write result.md → git commit → COMMITTER DONE callback | **haiku** | read + write + git | — | combined with verifier |
|
|
485
|
+
|
|
486
|
+
### Support Files (included in Plugin)
|
|
487
|
+
|
|
488
|
+
In addition to the 6 pipeline agents, the plugin includes 6 support files that agents reference at startup.
|
|
489
|
+
These are located in `plugin/skills/sdd-pipeline/references/` (synced from `agents/en/`):
|
|
490
|
+
|
|
491
|
+
| File | Purpose |
|
|
492
|
+
|------|---------|
|
|
493
|
+
| `agent-flow.md` | Pipeline orchestration rules — how Main Claude calls each agent in sequence |
|
|
494
|
+
| `file-content-schema.md` | Single source of truth for all file formats (PLAN.md, TASK.md, progress.md, result.md) |
|
|
495
|
+
| `shared-prompt-sections.md` | Shared prompt sections with cache_control — reduces repeated token cost up to 90% |
|
|
496
|
+
| `context-policy.md` | Sliding window context transfer rules between agents |
|
|
497
|
+
| `work-activity-log.md` | Activity log format for builder stage tracking |
|
|
498
|
+
| `xml-schema.md` | XML communication format for dispatch and task-result messages |
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## File Structure
|
|
503
|
+
|
|
504
|
+
```
|
|
505
|
+
works/
|
|
506
|
+
├── WORK-LIST.md ← Master list of all WORKs (managed by specifier)
|
|
507
|
+
├── WORK-01/ ← "User Authentication"
|
|
508
|
+
│ ├── PLAN.md ← Plan + dependency graph
|
|
509
|
+
│ ├── PROGRESS.md ← Progress tracking (auto-updated)
|
|
510
|
+
│ ├── TASK-00.md ← Task specification
|
|
511
|
+
│ ├── TASK-00_progress.md ← Real-time checkpoint (builder writes)
|
|
512
|
+
│ ├── TASK-00_result.md ← Completion report (committer writes)
|
|
513
|
+
│ ├── TASK-01.md
|
|
514
|
+
│ └── ...
|
|
515
|
+
└── WORK-02/
|
|
516
|
+
└── ...
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### File Naming Convention
|
|
520
|
+
|
|
521
|
+
| File | Naming Rule |
|
|
522
|
+
|------|-------------|
|
|
523
|
+
| Task spec | `TASK-NN.md` (no prefix) |
|
|
524
|
+
| Progress checkpoint | `TASK-NN_progress.md` (underscore separator) |
|
|
525
|
+
| Completion report | `TASK-NN_result.md` |
|
|
526
|
+
| Plan | `PLAN.md` |
|
|
527
|
+
| Work progress | `PROGRESS.md` |
|
|
528
|
+
|
|
529
|
+
### WORK-LIST.md
|
|
530
|
+
|
|
531
|
+
The specifier maintains `works/WORK-LIST.md` as the master index:
|
|
532
|
+
|
|
533
|
+
| WORK ID | Title | Status | Created |
|
|
534
|
+
|---------|-------|--------|---------|
|
|
535
|
+
| WORK-01 | User Authentication | DONE | 2026-03-01 | 2026-03-01 |
|
|
536
|
+
| WORK-02 | Payment Integration | IN_PROGRESS | 2026-03-05 | |
|
|
537
|
+
|
|
538
|
+
| Status | Meaning |
|
|
539
|
+
|--------|---------|
|
|
540
|
+
| `IN_PROGRESS` | WORK created, TASKs in progress |
|
|
541
|
+
| `DONE` | All TASKs committed — set automatically by committer on last TASK |
|
|
542
|
+
| `COMPLETED` | Archived to `_COMPLETED/` — set during push procedure |
|
|
543
|
+
|
|
544
|
+
- **IN_PROGRESS**: specifier checks this before creating new WORKs
|
|
545
|
+
- **DONE**: committer automatically changes IN_PROGRESS → DONE when the last TASK completes
|
|
546
|
+
- **COMPLETED**: during push, DONE WORKs are batch-processed — rows removed from WORK-LIST and folders moved to `works/_COMPLETED/`
|
|
547
|
+
|
|
548
|
+
#### git push Procedure
|
|
549
|
+
|
|
550
|
+
When you ask Claude to push (`"push this"`, `"git push"`), Claude handles the full sequence automatically:
|
|
551
|
+
|
|
552
|
+
```
|
|
553
|
+
1. Agent sync — copy agents/ source to npm/agents/ and plugin/agents/
|
|
554
|
+
2. DONE WORK batch completion — remove DONE rows from WORK-LIST, move folders to _COMPLETED/
|
|
555
|
+
3. Check README.md — update if changes are missing
|
|
556
|
+
4. git push
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
> **DONE is set by committer** when the last TASK completes. **COMPLETED** happens at push time when DONE WORKs are archived to `_COMPLETED/`.
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
## Tips
|
|
564
|
+
|
|
565
|
+
### Keep CLAUDE.md Up to Date
|
|
566
|
+
|
|
567
|
+
The language setting and project context live in `CLAUDE.md`. Agents read this on every invocation — keeping it accurate reduces back-and-forth.
|
|
568
|
+
|
|
569
|
+
### Use `[]` Tags Consistently
|
|
570
|
+
|
|
571
|
+
Requests without `[]` tags are handled directly by Claude without routing. If you want guaranteed pipeline behavior, always use a tag.
|
|
572
|
+
|
|
573
|
+
### Parallel TASKs
|
|
574
|
+
|
|
575
|
+
The planner creates dependency-aware TASK graphs. Independent TASKs (same `blockedBy` set) can be dispatched concurrently by the scheduler — mention it when approving:
|
|
576
|
+
|
|
577
|
+
```
|
|
578
|
+
> Approve. Run independent tasks in parallel.
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### Resume After Context Reset
|
|
582
|
+
|
|
583
|
+
If Claude loses context mid-pipeline, you can always resume:
|
|
584
|
+
|
|
585
|
+
```
|
|
586
|
+
> Resume WORK-02 from where it stopped
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
The scheduler reads `PROGRESS.md` to determine the last completed TASK and continues.
|
|
590
|
+
|
|
591
|
+
---
|
|
592
|
+
|
|
593
|
+
## Example Session
|
|
594
|
+
|
|
595
|
+
```
|
|
596
|
+
User: [new-feature] Build a comment feature for the blog system.
|
|
597
|
+
|
|
598
|
+
Claude: [specifier → WORK path]
|
|
599
|
+
Complexity: 4+ files, DB schema change, multiple modules
|
|
600
|
+
→ Creating new WORK
|
|
601
|
+
|
|
602
|
+
Claude: [planner]
|
|
603
|
+
Project analysis
|
|
604
|
+
Tech Stack: Next.js + Prisma + PostgreSQL
|
|
605
|
+
Existing code: Post CRUD done, Auth done
|
|
606
|
+
|
|
607
|
+
WORK-03: Comment Feature
|
|
608
|
+
|
|
609
|
+
WORK-03: TASK-00: Comment model + migration ← no dependencies
|
|
610
|
+
WORK-03: TASK-01: Comment CRUD API ← TASK-00
|
|
611
|
+
WORK-03: TASK-02: Nested comments (self-relation) ← TASK-01
|
|
612
|
+
WORK-03: TASK-03: Frontend comment component ← TASK-00 (parallelizable)
|
|
613
|
+
WORK-03: TASK-04: Integration + notifications ← TASK-02, TASK-03
|
|
614
|
+
|
|
615
|
+
Do you approve?
|
|
616
|
+
|
|
617
|
+
User: Approve. Run automatically.
|
|
618
|
+
|
|
619
|
+
Claude: [scheduler → auto mode]
|
|
620
|
+
WORK-03: TASK-00 → builder → verifier ✅ → committer [a1b2c3d]
|
|
621
|
+
WORK-03: TASK-01 → builder → verifier ✅ → committer [d4e5f6g]
|
|
622
|
+
WORK-03: TASK-02 → builder → verifier ✅ → committer [h7i8j9k]
|
|
623
|
+
WORK-03: TASK-03 → builder → verifier ✅ → committer [l0m1n2o]
|
|
624
|
+
WORK-03: TASK-04 → builder → verifier ✅ → committer [p3q4r5s]
|
|
625
|
+
|
|
626
|
+
🎉 WORK-03 completed! 5 tasks, 5 commits
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## Why This Approach?
|
|
632
|
+
|
|
633
|
+
### Agent File Design
|
|
634
|
+
|
|
635
|
+
All agent files (`agents/*.md`) are written with a single principle: **core content only, no decoration**. Descriptions, emphasis markers, and redundant examples have been removed. The result is ~1,600 lines total across all agents — less than half the original size — while covering the same functional scope.
|
|
636
|
+
|
|
637
|
+
Agent prompts avoid pipe (`|`) commands in Bash sequences for cross-platform compatibility (Windows, Linux, macOS). Each command runs as a single call without shell pipelines.
|
|
638
|
+
|
|
639
|
+
Each agent file follows a consistent four-section structure:
|
|
640
|
+
|
|
641
|
+
```
|
|
642
|
+
## 1. 역할 (Role)
|
|
643
|
+
Agent's purpose and responsibility declaration.
|
|
644
|
+
Single paragraph stating what the agent is and what it owns.
|
|
645
|
+
|
|
646
|
+
## 2. 수행업무 (Responsibilities)
|
|
647
|
+
Flat table of owned tasks.
|
|
648
|
+
| 업무 (Task) | 설명 (Description) |
|
|
649
|
+
|
|
650
|
+
## 3. 업무수행단계 및 내용 (Execution Steps)
|
|
651
|
+
Step-by-step procedure for each task listed in § 2.
|
|
652
|
+
Always starts with a STARTUP block listing required files to read on boot.
|
|
653
|
+
References file formats via file-content-schema.md (single source of truth).
|
|
654
|
+
References inter-agent communication via xml-schema.md.
|
|
655
|
+
|
|
656
|
+
## 4. 제약사항 및 금지사항 (Constraints and Prohibitions)
|
|
657
|
+
Immutable rules the agent must always follow.
|
|
658
|
+
Written as a flat prohibition/constraint list.
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
`file-content-schema.md` is the single authoritative definition for all file formats (PLAN.md, TASK.md, progress.md, result.md). Agents reference it instead of embedding format specs inline — eliminating duplication across 6 agent files.
|
|
662
|
+
|
|
663
|
+
### ref-cache: Reference File Caching
|
|
664
|
+
|
|
665
|
+
Each agent reads 4-5 shared reference files (shared-prompt-sections.md, file-content-schema.md, xml-schema.md, etc.) on startup — totaling ~26 file reads across a full pipeline. **ref-cache** eliminates this redundancy:
|
|
666
|
+
|
|
667
|
+
1. **First agent** reads reference files normally and returns `<ref-cache>` in its result XML
|
|
668
|
+
2. **Main Claude** copies ref-cache into the next agent's dispatch
|
|
669
|
+
3. **Subsequent agents** use cached content instead of reading files from disk
|
|
670
|
+
|
|
671
|
+
Phase 2 (selective delivery) further reduces token usage by passing only the sections each agent needs — not the full file contents. The section mapping per agent is defined in `agent-flow.md`.
|
|
672
|
+
|
|
673
|
+
**Measured impact** (direct mode, 3 agents):
|
|
674
|
+
- File reads: 14 → 5 (**-64%**)
|
|
675
|
+
- Token usage: ~85K → ~72K (**-15%**)
|
|
676
|
+
|
|
677
|
+
### WORK ID Assignment Strategy
|
|
678
|
+
|
|
679
|
+
WORK IDs are assigned based on a **filesystem-first approach**:
|
|
680
|
+
|
|
681
|
+
1. **Filesystem Source**: The planner scans `works/` directory to find existing WORK directories and determines the next WORK ID based on the latest directory found.
|
|
682
|
+
2. **MEMORY.md NOT used**: Project memory (MEMORY.md) is never referenced for WORK numbering. Only the filesystem is the authoritative source.
|
|
683
|
+
3. **Consistency Check**: The specifier validates WORK ID consistency by checking both the filesystem and WORK-LIST.md before dispatching to the planner.
|
|
684
|
+
|
|
685
|
+
This ensures:
|
|
686
|
+
- No duplicate WORK IDs even if MEMORY.md is stale or corrupted
|
|
687
|
+
- Reliable resumption across sessions
|
|
688
|
+
- Clear traceability: WORK-NN directly corresponds to `works/WORK-NN/`
|
|
689
|
+
|
|
690
|
+
### Context Isolation
|
|
691
|
+
|
|
692
|
+
Each subagent runs in an independent context. Even if the builder creates 50 files using 20,000 tokens, the scheduler only receives a 3-line summary.
|
|
693
|
+
|
|
694
|
+
```
|
|
695
|
+
scheduler's context after 5 TASKs:
|
|
696
|
+
|
|
697
|
+
PLAN.md (loaded once) ~500 tokens
|
|
698
|
+
WORK-01: TASK-00 result: "20 files, PASS" ~200 tokens
|
|
699
|
+
WORK-01: TASK-01 result: "15 files, PASS" ~200 tokens
|
|
700
|
+
WORK-01: TASK-02 result: "8 files, PASS" ~200 tokens
|
|
701
|
+
WORK-01: TASK-03 result: "12 files, PASS" ~200 tokens
|
|
702
|
+
WORK-01: TASK-04 result: "5 files, PASS" ~200 tokens
|
|
703
|
+
────────────────────────────────────────
|
|
704
|
+
Total: ~1,500 tokens (stays flat)
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
### Single Session vs uc-taskmanager
|
|
708
|
+
|
|
709
|
+
| | Single Session | uc-taskmanager |
|
|
710
|
+
|---|---|---|
|
|
711
|
+
| Context per TASK | All code + logs stacked | Summary only (~200 tokens) |
|
|
712
|
+
| After 10 TASKs | 50K~100K tokens, quality degrades | ~3K tokens, quality stable |
|
|
713
|
+
| Failure recovery | Start over | Resume from last result file |
|
|
714
|
+
| Tracking | Scroll chat history | File-based (PLAN.md, result.md) |
|
|
715
|
+
| Verification | Manual | Automated (build/lint/test) |
|
|
716
|
+
|
|
717
|
+
### Router Rule Config (`.agent/router_rule_config.json`)
|
|
718
|
+
|
|
719
|
+
The specifier reads `.agent/router_rule_config.json` from the project root to determine routing criteria. If the file is absent, the specifier uses its built-in defaults.
|
|
720
|
+
|
|
721
|
+
**File location:**
|
|
722
|
+
```
|
|
723
|
+
{project-root}/.agent/router_rule_config.json
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
**JSON structure:**
|
|
727
|
+
```json
|
|
728
|
+
{
|
|
729
|
+
"$schema": "http://uc-taskmanager.local/schemas/specifier-rules/v1.0.json",
|
|
730
|
+
"version": "1.1.0",
|
|
731
|
+
"description": "Specifier execution-mode decision criteria. Customize per project.",
|
|
732
|
+
"decision_flow": [
|
|
733
|
+
"1. build_test_required? → false → direct",
|
|
734
|
+
"2. single_domain + sequential DAG → pipeline",
|
|
735
|
+
"3. any full_conditions met → full"
|
|
736
|
+
],
|
|
737
|
+
"rules": {
|
|
738
|
+
"direct": {
|
|
739
|
+
"criteria": {
|
|
740
|
+
"build_test_required": false,
|
|
741
|
+
"note": "File/line count irrelevant. If no build/test needed → direct (text edits, config changes, simple substitutions)"
|
|
742
|
+
}
|
|
743
|
+
},
|
|
744
|
+
"pipeline": {
|
|
745
|
+
"criteria": {
|
|
746
|
+
"build_test_required": true,
|
|
747
|
+
"single_domain_only": true,
|
|
748
|
+
"max_tasks": 5,
|
|
749
|
+
"dag_complexity": "sequential"
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
"full": {
|
|
753
|
+
"criteria": {
|
|
754
|
+
"any_of": [
|
|
755
|
+
"task_count > 5",
|
|
756
|
+
"dag_complexity == complex (2+ dependency levels)",
|
|
757
|
+
"multi_domain == true (BE + FE simultaneously)",
|
|
758
|
+
"new_module == true (design → implement → verify multi-phase)",
|
|
759
|
+
"partial_rollback_needed == true"
|
|
760
|
+
]
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
},
|
|
764
|
+
"customization_guide": {
|
|
765
|
+
"doc-heavy projects (md edits)": "Widen direct scope. Most build_test_required=false cases → direct",
|
|
766
|
+
"code-heavy projects": "Center on pipeline/full. Simple bug fixes → pipeline, multi-domain → full",
|
|
767
|
+
"max_tasks tuning": "Adjust pipeline max_tasks between 3–7 based on team size or context limits"
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
**Key fields:**
|
|
773
|
+
| Field | Description |
|
|
774
|
+
|-------|-------------|
|
|
775
|
+
| `rules.direct.criteria.build_test_required` | `false` → specifier handles implementation, then committer commits |
|
|
776
|
+
| `rules.pipeline.criteria.max_tasks` | Max task count before escalating to full (default: 5) |
|
|
777
|
+
| `rules.pipeline.criteria.dag_complexity` | `sequential` only; complex DAG → escalates to full |
|
|
778
|
+
| `rules.full.criteria.any_of` | List of conditions — any match triggers full mode |
|
|
779
|
+
|
|
780
|
+
**Fallback behavior:** If `.agent/router_rule_config.json` is absent or malformed, the specifier falls back to its built-in defaults (equivalent to the structure above).
|
|
781
|
+
|
|
782
|
+
**Per-project customization example:**
|
|
783
|
+
|
|
784
|
+
For a documentation-heavy project where most changes are text edits:
|
|
785
|
+
```json
|
|
786
|
+
{
|
|
787
|
+
"rules": {
|
|
788
|
+
"direct": {
|
|
789
|
+
"criteria": { "build_test_required": false }
|
|
790
|
+
},
|
|
791
|
+
"pipeline": {
|
|
792
|
+
"criteria": { "max_tasks": 3, "single_domain_only": true, "dag_complexity": "sequential" }
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
For a monorepo with strict build requirements:
|
|
799
|
+
```json
|
|
800
|
+
{
|
|
801
|
+
"rules": {
|
|
802
|
+
"pipeline": {
|
|
803
|
+
"criteria": { "max_tasks": 7 }
|
|
804
|
+
},
|
|
805
|
+
"full": {
|
|
806
|
+
"criteria": {
|
|
807
|
+
"any_of": ["task_count > 7", "multi_domain == true"]
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
```
|
|
813
|
+
|
|
814
|
+
### Three Execution Modes
|
|
815
|
+
|
|
816
|
+
The specifier matches effort to complexity via `execution-mode`:
|
|
817
|
+
- **direct**: 1-line typo fix — Main Claude calls specifier, which returns a dispatch XML. Main Claude then calls builder (implements) + [verifier+committer] (verifies and commits). 3 spawns total.
|
|
818
|
+
- **pipeline**: Moderate fix — Main Claude calls [specifier+planner] → builder → [verifier+committer] in sequence. 3 spawns total.
|
|
819
|
+
- **full**: Complex features — [specifier+planner] → scheduler → [builder + verifier+committer] × N. 2+2N spawns total.
|
|
820
|
+
|
|
821
|
+
Agent pairs are combined into a single spawn to eliminate redundant context loading. This reduces total spawns by **~30%** across all modes.
|
|
822
|
+
|
|
823
|
+
All three modes output to `works/WORK-NN/` with identical artifact structure (PLAN.md + result.md + COMMITTER DONE callback), ensuring Runner integration works regardless of mode.
|
|
824
|
+
|
|
825
|
+
### Structured Agent Communication
|
|
826
|
+
|
|
827
|
+
Instead of ambiguous natural language prompts, agents communicate using structured XML format:
|
|
828
|
+
|
|
829
|
+
**Dispatch Format** (Caller → Receiver):
|
|
830
|
+
```xml
|
|
831
|
+
<dispatch to="builder" work="WORK-03" task="TASK-00" execution-mode="pipeline">
|
|
832
|
+
<context>
|
|
833
|
+
<project>uc-taskmanager</project>
|
|
834
|
+
<language>ko</language>
|
|
835
|
+
<plan-file>works/WORK-03/PLAN.md</plan-file>
|
|
836
|
+
</context>
|
|
837
|
+
<task-spec>
|
|
838
|
+
<file>works/WORK-03/TASK-00.md</file>
|
|
839
|
+
<title>공통 시스템 프롬프트 섹션 식별 및 XML 스키마 설계</title>
|
|
840
|
+
<action>implement</action>
|
|
841
|
+
</task-spec>
|
|
842
|
+
<cache-hint sections="output-language-rule,build-commands"/>
|
|
843
|
+
</dispatch>
|
|
844
|
+
```
|
|
845
|
+
|
|
846
|
+
**Result Format** (Receiver → Caller):
|
|
847
|
+
```xml
|
|
848
|
+
<task-result work="WORK-03" task="TASK-00" agent="builder" status="PASS">
|
|
849
|
+
<summary>Created shared-prompt-sections.md and xml-schema.md</summary>
|
|
850
|
+
<files-changed>
|
|
851
|
+
<file action="created" path="agents/shared-prompt-sections.md">Common sections with cache_control</file>
|
|
852
|
+
</files-changed>
|
|
853
|
+
<verification>
|
|
854
|
+
<check name="file_existence" status="PASS">Both files created</check>
|
|
855
|
+
</verification>
|
|
856
|
+
</task-result>
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
**Benefits**:
|
|
860
|
+
- **Clarity**: Explicit XML structure eliminates ambiguous natural language ("Pass the context" ← confusing vs. `<context>` ← explicit)
|
|
861
|
+
- **Lower Output Tokens**: Agents don't generate clarification questions; receivers parse XML directly
|
|
862
|
+
- **Prompt Caching**: Common sections (Output Language Rule, Build Commands) are marked with Anthropic API `cache_control`, saving up to **90% on repeated tokens**
|
|
863
|
+
- **Scalability**: Cache hit rates improve with WORK count (5 TASKs at ~0.03 tokens/token vs 2K+ tokens without cache)
|
|
864
|
+
|
|
865
|
+
See `agents/xml-schema.md` for complete format, and `agents/shared-prompt-sections.md` for cacheable sections.
|
|
866
|
+
|
|
867
|
+
### Sliding Window Context Transfer
|
|
868
|
+
|
|
869
|
+
Each subagent starts with an empty context — the cost of isolation. The **sliding window** system minimizes token waste when passing context between agents and across dependent TASKs.
|
|
870
|
+
|
|
871
|
+
**Rule**: the further back, the less detail:
|
|
872
|
+
|
|
873
|
+
| Distance | Detail Level | Content |
|
|
874
|
+
|----------|-------------|---------|
|
|
875
|
+
| Immediate predecessor | `FULL` | what + why + caution + incomplete |
|
|
876
|
+
| 2 steps back | `SUMMARY` | what only (1–3 lines) |
|
|
877
|
+
| 3+ steps back | `DROP` | not transmitted |
|
|
878
|
+
|
|
879
|
+
Each agent outputs a **context-handoff** — a structured reasoning document, not just a result log:
|
|
880
|
+
|
|
881
|
+
```xml
|
|
882
|
+
<context-handoff from="builder" detail-level="FULL">
|
|
883
|
+
<what>auth.ts modified — added JWT silent refresh logic</what>
|
|
884
|
+
<why>Previous code returned 401 immediately on expiry. Silent refresh improves UX.</why>
|
|
885
|
+
<caution>Coupled to session.ts setSession(). Changes there may cause side effects.</caution>
|
|
886
|
+
<incomplete>Unit tests not written. Verifier should check.</incomplete>
|
|
887
|
+
</context-handoff>
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
**Result responsibility shift**: builder focuses on implementation only, writing a `progress.md` checkpoint. The **committer** synthesizes builder + verifier context-handoffs into the final `result.md`. This prevents result files from being skipped when builder is context-pressured.
|
|
891
|
+
|
|
892
|
+
**Estimated token savings**: ~48% on a 3-TASK dependency chain vs. the naive approach of passing full results forward.
|
|
893
|
+
|
|
894
|
+
See `docs/spec_sliding-window-context.md` for full design details.
|
|
895
|
+
|
|
896
|
+
### External System Callback (Optional)
|
|
897
|
+
|
|
898
|
+
uc-taskmanager is generic by default. To integrate with an external system (e.g., a CI/CD backend), add callback URLs to `CLAUDE.md`:
|
|
899
|
+
|
|
900
|
+
```markdown
|
|
901
|
+
## Task Callbacks
|
|
902
|
+
TaskCallback: http://localhost:3000/api/v1/runner/{{executionId}}/task-result
|
|
903
|
+
ProgressCallback: http://localhost:3000/api/v1/runner/{{executionId}}/task-progress
|
|
904
|
+
CallbackToken: <your-token>
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
- **No config** → works as-is, no external calls made
|
|
908
|
+
- **TaskCallback** → committer POSTs result after each TASK commit
|
|
909
|
+
- **ProgressCallback** → builder POSTs checkpoint after each progress.md update
|
|
910
|
+
- Callback failures are non-fatal — a warning is printed and the pipeline continues
|
|
911
|
+
|
|
912
|
+
See `docs/spec_callback-integration.md` for payload schema and implementation guide.
|
|
913
|
+
|
|
914
|
+
---
|
|
915
|
+
|
|
916
|
+
## Output Language
|
|
917
|
+
|
|
918
|
+
Output language is resolved from **CLAUDE.md** in your project. No manual configuration needed after first setup.
|
|
919
|
+
|
|
920
|
+
```
|
|
921
|
+
1. Check CLAUDE.md for "Language: xx"
|
|
922
|
+
├─ Found → use that language
|
|
923
|
+
└─ Not found ↓
|
|
924
|
+
|
|
925
|
+
2. Ask: "Would you like to set the output language? (e.g., ko, en, ja)"
|
|
926
|
+
├─ User specifies → write to CLAUDE.md + use it
|
|
927
|
+
└─ User declines ↓
|
|
928
|
+
|
|
929
|
+
3. Auto-detect system locale → write to CLAUDE.md as default
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
Once set, stored in CLAUDE.md and never asked again. Priority: `PLAN.md > CLAUDE.md > en`
|
|
933
|
+
|
|
934
|
+
By default, **all output** including git commit messages and code comments uses the configured language:
|
|
935
|
+
|
|
936
|
+
| Item | Default | Override |
|
|
937
|
+
|------|---------|----------|
|
|
938
|
+
| PLAN.md / TASK descriptions | Language | — |
|
|
939
|
+
| Result reports | Language | — |
|
|
940
|
+
| Git commit messages (title/body) | Language | `CommitLanguage: en` |
|
|
941
|
+
| Code comments | Language | `CommentLanguage: en` |
|
|
942
|
+
| Commit type prefix (`feat`, `fix`...) | Always English | — |
|
|
943
|
+
| File names, paths, commands | Always English | — |
|
|
944
|
+
|
|
945
|
+
### Per-Category Override
|
|
946
|
+
|
|
947
|
+
Add to CLAUDE.md to override specific categories:
|
|
948
|
+
|
|
949
|
+
```markdown
|
|
950
|
+
## Language
|
|
951
|
+
ko
|
|
952
|
+
CommitLanguage: en
|
|
953
|
+
CommentLanguage: en
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
This gives you `ko` for plans/reports but `en` for commits and code comments — useful for open-source projects or global teams.
|
|
957
|
+
|
|
958
|
+
---
|
|
959
|
+
|
|
960
|
+
## Customization
|
|
961
|
+
|
|
962
|
+
Place a file with the same name in `.claude/agents/` to override.
|
|
963
|
+
|
|
964
|
+
| What | File | Section |
|
|
965
|
+
|------|------|---------|
|
|
966
|
+
| Routing criteria | `specifier.md` | 3-2. Execution-Mode 결정 |
|
|
967
|
+
| Approval policy | `scheduler.md` | Phase 1: User Approval |
|
|
968
|
+
| Commit message format | `committer.md` | Step 3: Stage + Commit |
|
|
969
|
+
| Verification steps | `verifier.md` | Verification Pipeline |
|
|
970
|
+
| Task granularity | `planner.md` | Task Decomposition Rules |
|
|
971
|
+
| Build/lint commands | `builder.md` + `verifier.md` | Self-Check / Step 1-2 |
|
|
972
|
+
| Output language | `planner.md` | Output Language Rule |
|
|
973
|
+
|
|
974
|
+
---
|
|
975
|
+
|
|
976
|
+
## Supported Stacks
|
|
977
|
+
|
|
978
|
+
Auto-detected from project files. No configuration needed.
|
|
979
|
+
|
|
980
|
+
| File | Stack |
|
|
981
|
+
|------|-------|
|
|
982
|
+
| `package.json` | Node.js / TypeScript / React / NestJS / Next.js |
|
|
983
|
+
| `pyproject.toml` / `setup.py` | Python / FastAPI / Django |
|
|
984
|
+
| `Cargo.toml` | Rust |
|
|
985
|
+
| `go.mod` | Go |
|
|
986
|
+
| `build.gradle` / `pom.xml` | Java / Kotlin |
|
|
987
|
+
| `Gemfile` | Ruby |
|
|
988
|
+
| `Makefile` | Generic |
|
|
989
|
+
|
|
990
|
+
---
|
|
991
|
+
|
|
992
|
+
## Repository Structure
|
|
993
|
+
|
|
994
|
+
```
|
|
995
|
+
uc-taskmanager/
|
|
996
|
+
├── agents/ ← Agent source (edit here — authoritative)
|
|
997
|
+
│ ├── en/ ← English agent prompts (12 files)
|
|
998
|
+
│ │ ├── specifier.md ← [] tag detection + execution-mode routing
|
|
999
|
+
│ │ ├── planner.md ← WORK creation + TASK decomposition
|
|
1000
|
+
│ │ ├── scheduler.md ← DAG management + pipeline orchestration
|
|
1001
|
+
│ │ ├── builder.md ← Code implementation
|
|
1002
|
+
│ │ ├── verifier.md ← Build/lint/test verification
|
|
1003
|
+
│ │ ├── committer.md ← git commit + result.md
|
|
1004
|
+
│ │ ├── agent-flow.md ← Pipeline orchestration rules
|
|
1005
|
+
│ │ ├── file-content-schema.md ← File format definitions
|
|
1006
|
+
│ │ ├── shared-prompt-sections.md ← Cacheable shared sections
|
|
1007
|
+
│ │ ├── context-policy.md ← Sliding window context rules
|
|
1008
|
+
│ │ ├── work-activity-log.md ← Activity log format
|
|
1009
|
+
│ │ └── xml-schema.md ← XML communication format
|
|
1010
|
+
│ └── ko/ ← Korean agent prompts (12 files)
|
|
1011
|
+
├── npm/ ← npm package (published as `uctm`)
|
|
1012
|
+
│ ├── agents/ ← Synced from agents/en/ (+ ko/ subfolder)
|
|
1013
|
+
│ │ └── ko/ ← Synced from agents/ko/
|
|
1014
|
+
│ ├── bin/cli.mjs ← CLI entry point (uctm init/update)
|
|
1015
|
+
│ ├── lib/ ← CLI implementation (constants.mjs, init.mjs, update.mjs)
|
|
1016
|
+
│ ├── .agent/ ← Default router config bundled with npm
|
|
1017
|
+
│ │ └── router_rule_config.json
|
|
1018
|
+
│ ├── package.json ← npm package config
|
|
1019
|
+
│ ├── .npmignore
|
|
1020
|
+
│ └── LICENSE
|
|
1021
|
+
├── plugin/ ← Claude Plugin (local testing)
|
|
1022
|
+
│ ├── agents/ ← Synced from agents/en/ (6 core agents)
|
|
1023
|
+
│ ├── skills/ ← Plugin skills (reference docs)
|
|
1024
|
+
│ │ ├── sdd-pipeline/
|
|
1025
|
+
│ │ │ ├── SKILL.md ← Skill manifest
|
|
1026
|
+
│ │ │ └── references/ ← Synced from agents/en/ (6 support files)
|
|
1027
|
+
│ │ ├── work-pipeline/
|
|
1028
|
+
│ │ │ └── SKILL.md
|
|
1029
|
+
│ │ ├── work-status/
|
|
1030
|
+
│ │ │ └── SKILL.md
|
|
1031
|
+
│ │ └── init/
|
|
1032
|
+
│ │ └── SKILL.md ← /uctm-init (setup works/, CLAUDE.md, permissions)
|
|
1033
|
+
│ ├── .claude-plugin/
|
|
1034
|
+
│ │ └── plugin.json ← Plugin manifest (name, version, agents array)
|
|
1035
|
+
│ └── README.md
|
|
1036
|
+
├── .claude/ ← Local Claude settings (not committed)
|
|
1037
|
+
│ └── settings.local.json
|
|
1038
|
+
├── README.md ← English (default, this file)
|
|
1039
|
+
├── README_KO.md ← Korean
|
|
1040
|
+
├── CLAUDE.md ← Project-level Claude instructions (push procedure, language, agent call rules)
|
|
1041
|
+
├── LICENSE
|
|
1042
|
+
├── docs/ ← Design specifications
|
|
1043
|
+
│ ├── spec_pipeline-architecture_v1.3.md ← Pipeline architecture v1.3 (ref-cache, Specifier-based)
|
|
1044
|
+
│ ├── spec_sliding-window-context.md ← Sliding window context design
|
|
1045
|
+
│ ├── spec_callback-integration.md ← External system callback integration
|
|
1046
|
+
│ ├── spec_SDD_with_ucagent_requirement.md ← SDD v1.5 requirement management system design
|
|
1047
|
+
│ ├── pipeline-architecture-v1.3-visual.html ← Interactive pipeline visualization (with ref-cache tab)
|
|
1048
|
+
│ ├── SDD-requirement-visual.html ← Interactive SDD visualization (with ref-cache tab)
|
|
1049
|
+
│ ├── callback-integration-visual.html ← Interactive callback visualization
|
|
1050
|
+
│ ├── sliding-window-context-visual.html ← Interactive sliding window visualization
|
|
1051
|
+
│ └── _archive/ ← Legacy docs (Router-based)
|
|
1052
|
+
└── works/ ← WORK directories (auto-generated)
|
|
1053
|
+
├── WORK-LIST.md ← Master index
|
|
1054
|
+
├── WORK-01/ ← all modes output here (direct/pipeline/full)
|
|
1055
|
+
└── ...
|
|
1056
|
+
```
|
|
1057
|
+
|
|
1058
|
+
---
|
|
1059
|
+
|
|
1060
|
+
## Requirements
|
|
1061
|
+
|
|
1062
|
+
- [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
|
|
1063
|
+
- Git initialized (`git init`)
|
|
1064
|
+
- No other dependencies.
|
|
1065
|
+
|
|
1066
|
+
---
|
|
1067
|
+
|
|
1068
|
+
## Optional: MCP Configuration
|
|
1069
|
+
|
|
1070
|
+
### Serena MCP — Symbol-Level Code Navigation
|
|
1071
|
+
|
|
1072
|
+
Special thanks to the [Oraios](https://github.com/oraios) team for building and open-sourcing [Serena](https://github.com/oraios/serena). Their symbol-level code navigation tools make a real difference in reducing token usage and improving edit precision for AI agents.
|
|
1073
|
+
|
|
1074
|
+
The **builder** agent integrates with [Serena MCP](https://github.com/oraios/serena) for symbol-level code exploration. When Serena is available, builder follows this exploration hierarchy instead of reading entire files:
|
|
1075
|
+
|
|
1076
|
+
| Step | Tool | Purpose |
|
|
1077
|
+
|------|------|---------|
|
|
1078
|
+
| 1 | `list_dir` | Directory structure (replaces `find`) |
|
|
1079
|
+
| 2 | `get_symbols_overview` | File symbol map before any file read |
|
|
1080
|
+
| 3 | `find_symbol(depth=1)` | Class/module method list |
|
|
1081
|
+
| 4 | `find_symbol(include_body=true)` | Precise body read for target symbol only |
|
|
1082
|
+
| 5 | `find_referencing_symbols` | Impact analysis before editing |
|
|
1083
|
+
| 6 | `Read` | Last resort when above tools are insufficient |
|
|
1084
|
+
|
|
1085
|
+
This reduces read tokens by 30–50% on large codebases by reading only the symbols needed, not entire files.
|
|
1086
|
+
|
|
1087
|
+
#### Disable Auto Browser Launch
|
|
1088
|
+
|
|
1089
|
+
Serena opens a web dashboard in your browser on every startup. To disable this, add `--open-web-dashboard False` to your `~/.claude.json`:
|
|
1090
|
+
|
|
1091
|
+
```json
|
|
1092
|
+
{
|
|
1093
|
+
"mcpServers": {
|
|
1094
|
+
"serena": {
|
|
1095
|
+
"command": "uvx",
|
|
1096
|
+
"args": [
|
|
1097
|
+
"--from", "git+https://github.com/oraios/serena",
|
|
1098
|
+
"serena", "start-mcp-server",
|
|
1099
|
+
"--context", "ide-assistant",
|
|
1100
|
+
"--project", ".",
|
|
1101
|
+
"--open-web-dashboard", "False"
|
|
1102
|
+
]
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
The dashboard is still available at `http://localhost:PORT` — it just won't auto-open on startup.
|
|
1109
|
+
|
|
1110
|
+
---
|
|
1111
|
+
|
|
1112
|
+
## The Bigger Picture
|
|
1113
|
+
|
|
1114
|
+
This agent is designed to work with an **SDD-based requirement management and automated development system** — a server application that links requirement management → automated development → plans and artifacts. The full system architecture is documented in [`docs/spec_SDD_with_ucagent_requirement.md`](docs/spec_SDD_with_ucagent_requirement.md). Use it as a reference to build your own system tailored to your needs.
|
|
1115
|
+
|
|
1116
|
+
---
|
|
1117
|
+
|
|
1118
|
+
## License
|
|
1119
|
+
|
|
1120
|
+
GPL-3.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uctm",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Universal Claude Task Manager — SDD-based task pipeline subagent system for Claude Code CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -33,5 +33,8 @@
|
|
|
33
33
|
"type": "git",
|
|
34
34
|
"url": "git+https://github.com/UCJung/uc-taskmanager-claude-agent.git"
|
|
35
35
|
},
|
|
36
|
-
"homepage": "https://github.com/UCJung/uc-taskmanager-claude-agent#readme"
|
|
36
|
+
"homepage": "https://github.com/UCJung/uc-taskmanager-claude-agent#readme",
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"uctm": "^1.5.0"
|
|
39
|
+
}
|
|
37
40
|
}
|