uctm 1.5.4 → 2.0.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/plugin.json +2 -2
- package/README.md +179 -287
- package/agents/builder.md +10 -24
- package/agents/committer.md +13 -33
- package/agents/orchestrator.md +310 -0
- package/agents/planner.md +10 -24
- package/agents/specifier.md +27 -50
- package/agents/verifier.md +5 -24
- package/lib/constants.mjs +31 -7
- package/lib/init.mjs +9 -15
- package/lib/update.mjs +10 -2
- package/package.json +2 -6
- package/references/agent-flow.md +159 -118
- package/references/context-policy.md +26 -7
- package/references/file-content-schema.md +58 -18
- package/references/shared-prompt-sections.md +46 -17
- package/references/work-activity-log.md +40 -16
- package/references/xml-schema.md +211 -39
- package/skills/sdd-pipeline/SKILL.md +1 -1
- package/skills/uctm-init/SKILL.md +1 -2
- package/skills/work-pipeline/SKILL.md +38 -22
- package/.agent/router_rule_config.json +0 -47
- package/agents/scheduler.md +0 -152
- package/references/callback-protocol.md +0 -40
- package/references/ref-cache-protocol.md +0 -31
- package/skills/init/SKILL.md +0 -95
package/README.md
CHANGED
|
@@ -70,14 +70,14 @@ The agents analyze your request, plan the work, and execute through isolated sub
|
|
|
70
70
|
[game-dev] Build a brick breaker game in HTML
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
* **Requirement Analysis**:
|
|
73
|
+
* **Requirement Analysis**: Main Claude spawns a single `orchestrator` agent (`mode=gated` by default), which nests a `specifier` call to analyze your requirement. Orchestrator pauses at **[GATE-1]** and returns a summary for approval. Review `works/WORK-NN/Requirement.md` and type **"approve"** to proceed.
|
|
74
74
|
```
|
|
75
75
|
{Requirement specification content}
|
|
76
|
-
If you approve Requirement.md,
|
|
76
|
+
If you approve Requirement.md, orchestrator will nest-spawn the Planner to create PLAN.md + TASK decomposition.
|
|
77
77
|
Let me know if you want to modify anything.
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
* **WORK Execution Plan**:
|
|
80
|
+
* **WORK Execution Plan**: Orchestrator nests a `planner` call to build an execution plan, then pauses again at **[GATE-2]**. Review `works/WORK-NN/PLAN.md` and `TASK-NN.md`, then type **"approve"** to proceed.
|
|
81
81
|
```
|
|
82
82
|
WORK-31 Development Approval Request
|
|
83
83
|
|
|
@@ -86,8 +86,6 @@ WORK-31 Development Approval Request
|
|
|
86
86
|
┌─────────┬─────────────────────────┐
|
|
87
87
|
│ Item │ Details │
|
|
88
88
|
├─────────┼─────────────────────────┤
|
|
89
|
-
│ Mode │ full │
|
|
90
|
-
├─────────┼─────────────────────────┤
|
|
91
89
|
│ TASKs │ 6 (TASK-00 ~ TASK-05) │
|
|
92
90
|
└─────────┴─────────────────────────┘
|
|
93
91
|
|
|
@@ -99,11 +97,11 @@ WORK-31 Development Approval Request
|
|
|
99
97
|
└─────────────────────────────────→ TASK-05 ($$$$$$$$$)
|
|
100
98
|
|
|
101
99
|
- TASK-01/02 parallel, TASK-03/04 parallel, TASK-05 final integration
|
|
102
|
-
- If approved,
|
|
100
|
+
- If approved, orchestrator schedules the TASK DAG itself and nest-spawns builder → verifier → committer for each TASK — no further approval gates in this phase.
|
|
103
101
|
|
|
104
102
|
Proceed?
|
|
105
103
|
```
|
|
106
|
-
* Per-TASK: build → verify → commit repeats automatically for each TASK.
|
|
104
|
+
* Per-TASK: build → verify → commit repeats automatically for each TASK, all inside the same nested orchestrator run.
|
|
107
105
|
```
|
|
108
106
|
● TASK-05 committed. Updating PROGRESS.md and finalizing WORK-31.
|
|
109
107
|
```
|
|
@@ -118,7 +116,7 @@ WORK-31 Development Approval Request
|
|
|
118
116
|
```
|
|
119
117
|
[WORK start] Change the submit button label to "Send" — auto
|
|
120
118
|
```
|
|
121
|
-
Add "auto" to
|
|
119
|
+
Add "auto" to run orchestrator in `mode=auto` — it completes the entire WORK in one nested spawn with **zero approval gates**, and records every judgment call it had to make on your behalf in `works/WORK-NN/DECISIONS.md` and the final report's `## 자동 결정 사항` section.
|
|
122
120
|
|
|
123
121
|
### 2. Token Economy
|
|
124
122
|
|
|
@@ -127,11 +125,10 @@ I'm cost-conscious (honestly). So this agent applies four token-saving strategie
|
|
|
127
125
|
**(1) Serena MCP for codebase analysis.**
|
|
128
126
|
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
127
|
|
|
130
|
-
**(2)
|
|
128
|
+
**(2) A single nested orchestrator instead of per-stage round-trips.** The WORK-PIPELINE has up to 6 agent stages. Instead of Main Claude calling each stage one at a time, Main Claude spawns a single `orchestrator` agent **once**, which nests specifier → planner → builder → verifier → committer as sub-spawns of its own (Claude Code sub-agent nesting, depth 2). The orchestrator schedules the TASK DAG itself instead of round-tripping through Main Claude for every stage. See [Concept: Orchestrator Modes](#concept-orchestrator-modes-gated-vs-auto).
|
|
131
129
|
|
|
132
|
-
**(3) Structured XML communication.**
|
|
133
|
-
*
|
|
134
|
-
* The receiving side has to parse it again. So we standardized the communication format as XML.
|
|
130
|
+
**(3) Structured XML communication.** Even with nesting, every hop between agents is still a text boundary — gate summaries and hand-offs are still just blobs of text.
|
|
131
|
+
* Whichever side receives it has to parse it again. So we standardized the communication format as XML.
|
|
135
132
|
* Every bit helps.
|
|
136
133
|
* (This also made agent log monitoring much easier.) See [Structured Agent Communication](#structured-agent-communication).
|
|
137
134
|
|
|
@@ -164,23 +161,15 @@ Six subagents work across any project and any language, automatically handling *
|
|
|
164
161
|
|
|
165
162
|
## Usage
|
|
166
163
|
|
|
167
|
-
###
|
|
164
|
+
### Small Fix
|
|
168
165
|
|
|
169
166
|
```
|
|
170
167
|
> [bugfix] Fix typo in login error message
|
|
171
168
|
```
|
|
172
169
|
|
|
173
|
-
Main Claude
|
|
174
|
-
|
|
175
|
-
### Quick Task (pipeline mode)
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
> [bugfix] Fix the login button not responding on mobile
|
|
179
|
-
```
|
|
170
|
+
Main Claude spawns `orchestrator` once (`mode=gated` by default). Orchestrator nests specifier → **[GATE-1]** → planner → **[GATE-2]** → builder → verifier → committer. Creates WORK-NN directory + PLAN + result.md + commit — all inside the same orchestrator run. Every WORK takes this path, so even a one-line change is planned and recorded.
|
|
180
171
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
### Complex Feature (WORK)
|
|
172
|
+
### Feature (WORK)
|
|
184
173
|
|
|
185
174
|
#### 1. Create WORK (Planning)
|
|
186
175
|
|
|
@@ -188,7 +177,7 @@ Main Claude calls specifier, which selects `execution-mode: pipeline` and create
|
|
|
188
177
|
> [new-feature] Build a user authentication feature. Plan it.
|
|
189
178
|
```
|
|
190
179
|
|
|
191
|
-
|
|
180
|
+
Orchestrator nests specifier → planner, which analyzes the project and creates WORK-01:
|
|
192
181
|
|
|
193
182
|
```
|
|
194
183
|
WORK-01: User Authentication
|
|
@@ -208,7 +197,7 @@ WORK-01: User Authentication
|
|
|
208
197
|
> Run WORK-01 pipeline
|
|
209
198
|
```
|
|
210
199
|
|
|
211
|
-
|
|
200
|
+
Orchestrator's internal DAG scheduling (STEP C) executes WORK-01's TASKs in dependency order, nesting builder → verifier → committer for each TASK — this phase has no approval gates.
|
|
212
201
|
|
|
213
202
|
#### 3. Add to Existing WORK
|
|
214
203
|
|
|
@@ -235,6 +224,8 @@ WORK Status
|
|
|
235
224
|
> Resume WORK-02
|
|
236
225
|
```
|
|
237
226
|
|
|
227
|
+
"automatically" triggers `mode=auto` — orchestrator completes in a single nested spawn without gates. "Resume" reattaches to the parked orchestrator via `SendMessage` (context preserved), or falls back to a fresh nested re-spawn reconstructed from `work_{WORK}.log` if the handle was lost.
|
|
228
|
+
|
|
238
229
|
#### 6. Run a Specific TASK
|
|
239
230
|
|
|
240
231
|
Skip to a specific TASK within a WORK (e.g., retry after a failure):
|
|
@@ -243,7 +234,7 @@ Skip to a specific TASK within a WORK (e.g., retry after a failure):
|
|
|
243
234
|
> Run WORK-02: TASK-02
|
|
244
235
|
```
|
|
245
236
|
|
|
246
|
-
|
|
237
|
+
Orchestrator's DAG scheduling (STEP C) identifies the next READY TASK, then nests builder → verifier → committer in sequence.
|
|
247
238
|
|
|
248
239
|
#### 7. Force WORK Creation (Skip Complexity Check)
|
|
249
240
|
|
|
@@ -255,7 +246,7 @@ Use the `[new-work]` tag to always create a new WORK regardless of complexity:
|
|
|
255
246
|
|
|
256
247
|
#### 8. Handle Failure / Retry
|
|
257
248
|
|
|
258
|
-
If a TASK fails during the pipeline,
|
|
249
|
+
If a TASK fails during the pipeline, orchestrator re-dispatches builder up to 3 times automatically (STEP C). If all 3 attempts fail, it escalates via `<needs-decision>` — a `<gate type="decision">` in `mode=gated`, or an auto-decision recorded in `DECISIONS.md` in `mode=auto`.
|
|
259
250
|
If it still fails, you can inspect the result file and retry manually:
|
|
260
251
|
|
|
261
252
|
```
|
|
@@ -284,7 +275,7 @@ If WORK-02 is `IN_PROGRESS`, the specifier asks:
|
|
|
284
275
|
> What's the status of WORK-03: TASK-02?
|
|
285
276
|
```
|
|
286
277
|
|
|
287
|
-
|
|
278
|
+
Orchestrator reads `PROGRESS.md` and `result.md` files to report current state.
|
|
288
279
|
|
|
289
280
|
---
|
|
290
281
|
|
|
@@ -337,10 +328,11 @@ uctm update --lang en
|
|
|
337
328
|
|
|
338
329
|
```bash
|
|
339
330
|
git clone https://github.com/UCJung/uc-taskmanager-claude-agent.git /tmp/uc-tm
|
|
340
|
-
mkdir -p .claude/agents
|
|
341
|
-
cp /tmp/uc-tm/npm/agents/*.md .claude/agents/
|
|
331
|
+
mkdir -p .claude/agents .claude/references
|
|
332
|
+
cp /tmp/uc-tm/npm/agents/*.md .claude/agents/ # 6 agents (orchestrator, specifier, planner, builder, verifier, committer)
|
|
333
|
+
cp /tmp/uc-tm/npm/references/*.md .claude/references/ # 7 reference files
|
|
342
334
|
rm -rf /tmp/uc-tm
|
|
343
|
-
git add .claude/agents/ && git commit -m "chore: add uc-taskmanager agents"
|
|
335
|
+
git add .claude/agents/ .claude/references/ && git commit -m "chore: add uc-taskmanager agents"
|
|
344
336
|
```
|
|
345
337
|
|
|
346
338
|
### Local Plugin Test
|
|
@@ -355,50 +347,48 @@ claude --plugin-dir ./
|
|
|
355
347
|
```bash
|
|
356
348
|
claude
|
|
357
349
|
> /agents
|
|
358
|
-
# specifier, planner,
|
|
350
|
+
# orchestrator, specifier, planner, builder, verifier, committer → confirm all 6
|
|
359
351
|
```
|
|
360
352
|
|
|
361
353
|
---
|
|
362
354
|
|
|
363
|
-
## Concept:
|
|
355
|
+
## Concept: Orchestrator Modes (Gated vs Auto)
|
|
364
356
|
|
|
365
|
-
Main Claude detects the `[]` tag and
|
|
357
|
+
Main Claude detects the `[]` tag and spawns a single **orchestrator** subagent, passing `mode=gated` (default) or `mode=auto` (when the request contains "auto"/"자동으로"). Orchestrator nests every other agent itself — Main Claude never calls specifier/planner/builder/verifier/committer directly:
|
|
366
358
|
|
|
367
359
|
```
|
|
368
|
-
User Request → Main Claude
|
|
369
|
-
│
|
|
370
|
-
▼
|
|
371
|
-
┌───────────┐
|
|
372
|
-
│ specifier │ (called by Main Claude)
|
|
373
|
-
└─────┬─────┘
|
|
374
|
-
│
|
|
375
|
-
execution-mode returned
|
|
360
|
+
User Request → Main Claude
|
|
376
361
|
│
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
362
|
+
▼ spawn once, mode=gated|auto
|
|
363
|
+
┌──────────────┐
|
|
364
|
+
│ orchestrator │ ← TASK DAG scheduling + gate/decision mediation
|
|
365
|
+
└──────┬───────┘
|
|
366
|
+
│ nested spawn (depth 2)
|
|
367
|
+
▼
|
|
368
|
+
specifier → Requirement.md ← [GATE-1]
|
|
369
|
+
│
|
|
370
|
+
planner → PLAN.md + TASK DAG ← [GATE-2]
|
|
371
|
+
│
|
|
372
|
+
STEP C: DAG-ordered [builder → verifier → committer] × N (parallel where READY)
|
|
385
373
|
```
|
|
386
374
|
|
|
387
|
-
**
|
|
375
|
+
- `mode=gated`: pauses with `<gate type="stage">` after specifier (**[GATE-1]**) and after planner (**[GATE-2]**); also pauses anytime with `<gate type="decision">` (background + options + recommendation) when orchestrator or a nested child needs a user call. Main Claude relays the gate, waits for approval/choice, then resumes the parked orchestrator with `SendMessage` (falls back to a log-based re-spawn if the handle is gone).
|
|
376
|
+
- `mode=auto`: **one spawn, zero gates** — every judgment point is resolved with the recommended option and logged to `works/{WORK}/DECISIONS.md` plus the final report's `## 자동 결정 사항` section.
|
|
377
|
+
- Execution (STEP C: builder → verifier → committer) never gates on the user — only WORK creation (specifier) and planning (planner) do.
|
|
388
378
|
|
|
389
|
-
|
|
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 |
|
|
379
|
+
**Sub-agent Spawn Count:**
|
|
394
380
|
|
|
395
|
-
|
|
381
|
+
| Main → Orchestrator | → Specifier | → Planner | → Builder | → Verifier | → Committer | Total |
|
|
382
|
+
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
383
|
+
| 1 | 1 | 1 | N | N | N | **3 + 3N** |
|
|
396
384
|
|
|
397
|
-
|
|
385
|
+
`gated` vs `auto` doesn't change the spawn count — only whether execution pauses for approval (see [Approval Gates, Nested Autonomy, and DECISIONS.md](#approval-gates-nested-autonomy-and-decisionsmd) below, `agent-flow.md` § 4).
|
|
398
386
|
|
|
399
|
-
|
|
387
|
+
Every WORK outputs to `works/WORK-NN/` and guarantees `result.md` + `DECISIONS.md`.
|
|
400
388
|
|
|
401
|
-
|
|
389
|
+
### WORK and TASK
|
|
390
|
+
|
|
391
|
+
A two-level hierarchy:
|
|
402
392
|
|
|
403
393
|
```
|
|
404
394
|
WORK (unit of work) A single goal. The unit requested by the user.
|
|
@@ -406,96 +396,100 @@ WORK (unit of work) A single goal. The unit requested by the user.
|
|
|
406
396
|
└── result Completion proof. Auto-generated after verification.
|
|
407
397
|
```
|
|
408
398
|
|
|
409
|
-
|
|
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.
|
|
399
|
+
Orchestrator nests planner once, then loops builder → verifier → committer per TASK in DAG order.
|
|
421
400
|
|
|
422
401
|
```
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
402
|
+
orchestrator → planner(opus, nested) → PLAN.md + TASK DAG
|
|
403
|
+
→ [builder(sonnet) → verifier(haiku) → committer(haiku)] × N ← STEP C, no gates
|
|
404
|
+
(each nested spawn made by orchestrator, not Main Claude)
|
|
426
405
|
```
|
|
427
406
|
|
|
428
407
|
---
|
|
429
408
|
|
|
430
409
|
## Pipeline
|
|
431
410
|
|
|
432
|
-
### WORK Pipeline (
|
|
411
|
+
### WORK Pipeline (Nested)
|
|
433
412
|
|
|
434
|
-
>
|
|
413
|
+
> Main Claude spawns `orchestrator` **once**. Every other call below is a *nested* sub-agent spawn made by orchestrator itself — Main Claude is not in this loop.
|
|
435
414
|
|
|
436
415
|
```
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
│
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
416
|
+
Main Claude ── spawn once (mode=gated|auto) ──▶ orchestrator
|
|
417
|
+
│ nested spawn (depth 2)
|
|
418
|
+
┌─────────────┬──────────────────┴──────────────────┐
|
|
419
|
+
│ │ │
|
|
420
|
+
specifier planner builder verifier committer
|
|
421
|
+
┌──────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
422
|
+
│Request │────▶│Create │──────────────▶│Code │────▶│Build/Test│────▶│Result │
|
|
423
|
+
│Analysis │ │WORK/TASK│ │Implement │ │Verify │ │→ git │
|
|
424
|
+
└────┬─────┘ └────┬────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
425
|
+
│ │ │ │ │
|
|
426
|
+
[GATE-1] [GATE-2] └── Retry on fail┘ │
|
|
427
|
+
(gated mode (gated mode (max 3 times, then │
|
|
428
|
+
only; yield only; yield <needs-decision> escalation) │
|
|
429
|
+
+ SendMessage + SendMessage) Next READY TASK loop ◀┘
|
|
430
|
+
to resume) (orchestrator schedules the DAG itself — STEP C, no gate)
|
|
449
431
|
```
|
|
450
432
|
|
|
451
|
-
|
|
433
|
+
- `mode=gated` (default): pause + yield at **[GATE-1]** (after specifier) and **[GATE-2]** (after planner); resume via `SendMessage(agentId, decision)`, fallback to log-based re-spawn.
|
|
434
|
+
- `mode=auto`: no gates — orchestrator completes the entire diagram in one spawn and records any judgment calls to `DECISIONS.md`.
|
|
435
|
+
- STEP C (the builder → verifier → committer loop) never gates on the user, in either mode.
|
|
452
436
|
|
|
437
|
+
### Degraded Mode (nested spawn unavailable)
|
|
438
|
+
|
|
439
|
+
Some CLI builds do not inject the `Agent` tool into sub-agents, which makes the nested spawn above impossible. Before reading any file, orchestrator checks its own tool list and — if `Agent` is missing — returns immediately without creating a single artifact:
|
|
440
|
+
|
|
441
|
+
```xml
|
|
442
|
+
<capability-degraded reason="no-agent-tool">
|
|
443
|
+
<detail>Agent tool not injected into sub-agent; nested spawn unavailable</detail>
|
|
444
|
+
</capability-degraded>
|
|
453
445
|
```
|
|
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
446
|
|
|
463
|
-
|
|
447
|
+
**Main Claude then takes over the orchestrator role**: it reads `orchestrator.md` plus the 5 reference files and runs the same procedure, spawning the five children directly at depth 1. ref-cache assembly, the activity log, TASK DAG scheduling, and the retry rules are all unchanged; gates are raised by asking the user directly instead of via `<gate>` XML.
|
|
448
|
+
|
|
449
|
+
> This check exists because the failure is silent otherwise. Without it, orchestrator performs every role inline and reports success — the WORK looks complete while role separation and verification independence are gone.
|
|
450
|
+
|
|
451
|
+
### Stage Detail
|
|
464
452
|
|
|
465
453
|
```
|
|
466
|
-
specifier
|
|
467
|
-
┌──────────┐
|
|
468
|
-
│
|
|
469
|
-
│
|
|
470
|
-
└──────────┘
|
|
454
|
+
specifier → planner → [builder → verifier → committer] × N
|
|
455
|
+
┌──────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐
|
|
456
|
+
│Request │──▶│PLAN │──▶│Code │─▶│Build/Test│─▶│Result→ git │
|
|
457
|
+
│Analysis │ │+TASK DAG│ │Implement │ │Verify │ │ │
|
|
458
|
+
└──────────┘ └─────────┘ └──────────┘ └──────────┘ └────────────┘
|
|
459
|
+
(opus) (opus) (sonnet) (haiku) (haiku)
|
|
460
|
+
← all nested spawns made by orchestrator →
|
|
471
461
|
```
|
|
472
462
|
|
|
473
463
|
### Agents
|
|
474
464
|
|
|
475
|
-
Six agents work together in a clean, isolated pipeline:
|
|
465
|
+
Six agents work together in a clean, isolated pipeline — Main Claude spawns only `orchestrator`; orchestrator nests the rest:
|
|
476
466
|
|
|
477
467
|
| Agent | Role | Model | Permission | MCP | Spawn |
|
|
478
468
|
|-------|------|-------|------------|-----|-------|
|
|
479
|
-
| **
|
|
480
|
-
| **
|
|
481
|
-
| **
|
|
482
|
-
| **builder** | Code implementation + progress.md checkpoint recording | **sonnet** | full access | Serena (symbol-level explore/edit) |
|
|
483
|
-
| **verifier** | Progress gate (Status=COMPLETED) → build/lint/test verification (read-only) | **haiku** | read + execute | — |
|
|
484
|
-
| **committer** | Gate check (progress.md) → write result.md → git commit
|
|
469
|
+
| **orchestrator** | Nests specifier→(planner)→builder→verifier→committer; schedules the TASK DAG (STEP C); mediates fixed/dynamic gates; batch-records the activity log | **opus** | read + nested spawn | Serena (optional) | spawned **once** by Main Claude per WORK |
|
|
470
|
+
| **specifier** | `[]` tag detection, requirement analysis, complexity assessment, WORK-LIST management, returns dispatch XML | **opus** | read + dispatch | Serena (codebase exploration), sequential-thinking (complexity check) | nested by orchestrator |
|
|
471
|
+
| **planner** | Create WORK + decompose TASKs + generate PLAN.md + pre-create progress templates | **opus** | read-only | Serena (codebase exploration), sequential-thinking (task decomposition) | nested by orchestrator |
|
|
472
|
+
| **builder** | Code implementation + progress.md checkpoint recording | **sonnet** | full access | Serena (symbol-level explore/edit) | nested by orchestrator, per TASK |
|
|
473
|
+
| **verifier** | Progress gate (Status=COMPLETED) → build/lint/test verification (read-only) | **haiku** | read + execute | — | nested by orchestrator, per TASK |
|
|
474
|
+
| **committer** | Gate check (progress.md) → write result.md → git commit | **haiku** | read + write + git | — | nested by orchestrator, per TASK |
|
|
475
|
+
|
|
476
|
+
> Activity-log recording is done **once, by orchestrator**, on behalf of the agent it just nested — child agents do not write logs themselves.
|
|
485
477
|
|
|
486
478
|
### Support Files (included in Plugin)
|
|
487
479
|
|
|
488
|
-
In addition to the 6 pipeline agents, the plugin includes 6 support files
|
|
489
|
-
These are located in `plugin/
|
|
480
|
+
In addition to the 6 pipeline agents, the plugin includes 6 support files. **Only the orchestrator reads them** — child agents receive the sections they need via ref-cache (see below).
|
|
481
|
+
These are located in `plugin/references/` (synced from `develop/references/`); when installed via npm they land in `.claude/references/`:
|
|
490
482
|
|
|
491
483
|
| File | Purpose |
|
|
492
484
|
|------|---------|
|
|
493
|
-
| `agent-flow.md` | Pipeline orchestration rules —
|
|
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% |
|
|
485
|
+
| `agent-flow.md` | Pipeline orchestration rules — Main Claude's trigger/gate boundary + orchestrator's internal nested-spawn flow |
|
|
496
486
|
| `context-policy.md` | Sliding window context transfer rules between agents |
|
|
487
|
+
| `file-content-schema.md` | Single source of truth for all file formats (PLAN.md, TASK.md, progress.md, result.md) |
|
|
488
|
+
| `shared-prompt-sections.md` | Shared prompt sections reused across agents |
|
|
497
489
|
| `work-activity-log.md` | Activity log format for builder stage tracking |
|
|
498
|
-
| `xml-schema.md` | XML communication format for dispatch and task-result messages |
|
|
490
|
+
| `xml-schema.md` | XML communication format for dispatch and task-result messages — also the normative ref-cache protocol (§ 4) |
|
|
491
|
+
|
|
492
|
+
Each of the five files consumed via ref-cache (`context-policy`, `file-content-schema`, `shared-prompt-sections`, `work-activity-log`, `xml-schema`) carries a **section consumption matrix** at the top, declaring which agents need which `§` sections. That matrix is what the orchestrator slices against.
|
|
499
493
|
|
|
500
494
|
---
|
|
501
495
|
|
|
@@ -507,6 +501,8 @@ works/
|
|
|
507
501
|
├── WORK-01/ ← "User Authentication"
|
|
508
502
|
│ ├── PLAN.md ← Plan + dependency graph
|
|
509
503
|
│ ├── PROGRESS.md ← Progress tracking (auto-updated)
|
|
504
|
+
│ ├── work_WORK-01.log ← Orchestrator activity log (STAGE_*/GATE_WAIT/DECISION_WAIT/DECISION)
|
|
505
|
+
│ ├── DECISIONS.md ← Auto-decisions + resolved gate decisions (PENDING to RESOLVED)
|
|
510
506
|
│ ├── TASK-00.md ← Task specification
|
|
511
507
|
│ ├── TASK-00_progress.md ← Real-time checkpoint (builder writes)
|
|
512
508
|
│ ├── TASK-00_result.md ← Completion report (committer writes)
|
|
@@ -525,6 +521,8 @@ works/
|
|
|
525
521
|
| Completion report | `TASK-NN_result.md` |
|
|
526
522
|
| Plan | `PLAN.md` |
|
|
527
523
|
| Work progress | `PROGRESS.md` |
|
|
524
|
+
| Activity log | `work_{WORK_ID}.log` (orchestrator writes; drives gate resume) |
|
|
525
|
+
| Decision log | `DECISIONS.md` (auto-decisions + user-approved decisions, `PENDING`/`RESOLVED`) |
|
|
528
526
|
|
|
529
527
|
### WORK-LIST.md
|
|
530
528
|
|
|
@@ -572,7 +570,7 @@ Requests without `[]` tags are handled directly by Claude without routing. If yo
|
|
|
572
570
|
|
|
573
571
|
### Parallel TASKs
|
|
574
572
|
|
|
575
|
-
The planner creates dependency-aware TASK graphs. Independent TASKs (same `blockedBy` set)
|
|
573
|
+
The planner creates dependency-aware TASK graphs. Independent TASKs (same `blockedBy` set) are dispatched concurrently by orchestrator's DAG scheduling (STEP C) — mention it when approving:
|
|
576
574
|
|
|
577
575
|
```
|
|
578
576
|
> Approve. Run independent tasks in parallel.
|
|
@@ -586,7 +584,7 @@ If Claude loses context mid-pipeline, you can always resume:
|
|
|
586
584
|
> Resume WORK-02 from where it stopped
|
|
587
585
|
```
|
|
588
586
|
|
|
589
|
-
|
|
587
|
+
Orchestrator reads `work_{WORK}.log` (and `PROGRESS.md`) to determine the last completed stage/TASK and continues — reattaching via `SendMessage` if its parked handle is still alive, or a fresh nested re-spawn reconstructed from the log otherwise. An unresolved `GATE_WAIT`/`DECISION_WAIT` is always re-presented rather than skipped.
|
|
590
588
|
|
|
591
589
|
---
|
|
592
590
|
|
|
@@ -595,11 +593,15 @@ The scheduler reads `PROGRESS.md` to determine the last completed TASK and conti
|
|
|
595
593
|
```
|
|
596
594
|
User: [new-feature] Build a comment feature for the blog system.
|
|
597
595
|
|
|
598
|
-
Claude: [
|
|
599
|
-
|
|
596
|
+
Claude: [Main Claude spawns orchestrator once, mode=gated]
|
|
597
|
+
|
|
598
|
+
Claude: [orchestrator nests specifier → WORK path]
|
|
599
|
+
Complexity: 4+ files, DB schema change, multiple modules → Large
|
|
600
600
|
→ Creating new WORK
|
|
601
601
|
|
|
602
|
-
|
|
602
|
+
[GATE-1] Requirement approved — continuing to planner
|
|
603
|
+
|
|
604
|
+
Claude: [orchestrator nests planner]
|
|
603
605
|
Project analysis
|
|
604
606
|
Tech Stack: Next.js + Prisma + PostgreSQL
|
|
605
607
|
Existing code: Post CRUD done, Auth done
|
|
@@ -612,11 +614,11 @@ Claude: [planner]
|
|
|
612
614
|
WORK-03: TASK-03: Frontend comment component ← TASK-00 (parallelizable)
|
|
613
615
|
WORK-03: TASK-04: Integration + notifications ← TASK-02, TASK-03
|
|
614
616
|
|
|
615
|
-
Do you approve?
|
|
617
|
+
[GATE-2] Do you approve this plan?
|
|
616
618
|
|
|
617
|
-
User: Approve.
|
|
619
|
+
User: Approve.
|
|
618
620
|
|
|
619
|
-
Claude: [
|
|
621
|
+
Claude: [orchestrator resumed via SendMessage → STEP C: DAG execution, no further gates]
|
|
620
622
|
WORK-03: TASK-00 → builder → verifier ✅ → committer [a1b2c3d]
|
|
621
623
|
WORK-03: TASK-01 → builder → verifier ✅ → committer [d4e5f6g]
|
|
622
624
|
WORK-03: TASK-02 → builder → verifier ✅ → committer [h7i8j9k]
|
|
@@ -624,6 +626,7 @@ Claude: [scheduler → auto mode]
|
|
|
624
626
|
WORK-03: TASK-04 → builder → verifier ✅ → committer [p3q4r5s]
|
|
625
627
|
|
|
626
628
|
🎉 WORK-03 completed! 5 tasks, 5 commits
|
|
629
|
+
## 자동 결정 사항: 없음 (both gates required explicit approval)
|
|
627
630
|
```
|
|
628
631
|
|
|
629
632
|
---
|
|
@@ -662,17 +665,17 @@ Each agent file follows a consistent four-section structure:
|
|
|
662
665
|
|
|
663
666
|
### ref-cache: Reference File Caching
|
|
664
667
|
|
|
665
|
-
|
|
668
|
+
Without caching, every agent re-reads 3-5 shared reference files at startup — roughly 40+ reads across a 3-TASK pipeline. **ref-cache** makes the orchestrator the single reader:
|
|
666
669
|
|
|
667
|
-
1. **
|
|
668
|
-
2. **
|
|
669
|
-
3. **
|
|
670
|
+
1. **Orchestrator** reads the 5 reference files once at startup, and parses each file's section consumption matrix
|
|
671
|
+
2. **Before every nested spawn**, it slices out only the `§` sections that specific child needs and assembles a `<ref-cache>` with a `sections="..."` attribute per file
|
|
672
|
+
3. **Child agents never touch disk** for references — reading anything under `{REFERENCES_DIR}` is prohibited. Each child cross-checks the received `sections` against its own required-section list, and escalates a `<needs-decision>` if anything is missing rather than falling back to a disk read
|
|
670
673
|
|
|
671
|
-
|
|
674
|
+
The protocol is normatively defined in `references/xml-schema.md` § 4. The per-agent section mapping lives in the **section consumption matrix at the top of each reference file** — not in a separate mapping document, so a file and its distribution rules stay together.
|
|
672
675
|
|
|
673
|
-
**
|
|
674
|
-
-
|
|
675
|
-
- Token usage:
|
|
676
|
+
**Design target** (3-TASK WORK):
|
|
677
|
+
- Reference file reads: ~42 → **5** (orchestrator startup only)
|
|
678
|
+
- Token usage: reduced proportionally to section slicing — each child receives only its own sections instead of whole files
|
|
676
679
|
|
|
677
680
|
### WORK ID Assignment Strategy
|
|
678
681
|
|
|
@@ -689,10 +692,10 @@ This ensures:
|
|
|
689
692
|
|
|
690
693
|
### Context Isolation
|
|
691
694
|
|
|
692
|
-
Each subagent runs in an independent context. Even if the builder creates 50 files using 20,000 tokens,
|
|
695
|
+
Each subagent runs in an independent context. Even if the builder creates 50 files using 20,000 tokens, orchestrator (which nested it) only receives a 3-line summary via the sliding-window context-handoff.
|
|
693
696
|
|
|
694
697
|
```
|
|
695
|
-
|
|
698
|
+
orchestrator's context after 5 TASKs:
|
|
696
699
|
|
|
697
700
|
PLAN.md (loaded once) ~500 tokens
|
|
698
701
|
WORK-01: TASK-00 result: "20 files, PASS" ~200 tokens
|
|
@@ -714,113 +717,19 @@ scheduler's context after 5 TASKs:
|
|
|
714
717
|
| Tracking | Scroll chat history | File-based (PLAN.md, result.md) |
|
|
715
718
|
| Verification | Manual | Automated (build/lint/test) |
|
|
716
719
|
|
|
717
|
-
###
|
|
720
|
+
### Approval Gates, Nested Autonomy, and DECISIONS.md
|
|
718
721
|
|
|
719
|
-
|
|
722
|
+
Main Claude spawns `orchestrator` exactly once per WORK; orchestrator alone decides when to nest specifier/planner/builder/verifier/committer, and when to pause and ask a human. Since nested sub-agents cannot prompt the user directly, **every approval or decision is surfaced at the Main Claude boundary**:
|
|
720
723
|
|
|
721
|
-
**
|
|
722
|
-
|
|
723
|
-
{
|
|
724
|
-
|
|
724
|
+
- **Fixed gates** (`<gate type="stage">`) — exactly two, and only in `mode=gated` (the default): **[GATE-1]** right after specifier (Requirement.md ready), and **[GATE-2]** right after planner (PLAN.md + TASK DAG ready).
|
|
725
|
+
- **Dynamic gates** (`<gate type="decision">`) — raised by orchestrator or any nested child, at *any* point (design trade-off, scope creep, destructive change, 3 failed retries, ambiguous requirement…), carrying `<context>` + `<options>` + `<recommended>`.
|
|
726
|
+
- At a gate, orchestrator **yields (parks)** rather than exiting. Main Claude presents the gate, waits for the human, then resumes the parked orchestrator with `SendMessage(agentId, decision)` — context is preserved, no re-reading of files. If the handle is lost (new session, crashed terminal), Main Claude re-spawns orchestrator with the `WORK_ID`; orchestrator replays `work_{WORK}.log` and re-presents the exact same unresolved gate — **an unapproved gate is never silently skipped**, because `STAGE_DONE` is only ever written *after* the gate resolves.
|
|
727
|
+
- Once the final report lands, Main Claude calls `TaskStop(agentId)` to release the parked handle.
|
|
728
|
+
- `mode=auto` ("auto"/"자동으로" in the request) skips every gate: orchestrator resolves each judgment point with its own recommended option and completes in a single spawn.
|
|
725
729
|
|
|
726
|
-
|
|
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 |
|
|
730
|
+
Every decision — whether a human approved it or orchestrator auto-resolved it — is written to `works/{WORK_ID}/DECISIONS.md` (status `PENDING` while parked, `RESOLVED` once settled) and summarized in the final report's `## 자동 결정 사항` section. STEP C itself (the builder → verifier → committer TASK loop) never gates, in either mode — it's the part of the pipeline nobody needs to approve.
|
|
779
731
|
|
|
780
|
-
|
|
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.
|
|
732
|
+
Both modes (gated/auto) output to `works/WORK-NN/` with identical artifact structure (PLAN.md + result.md + `DECISIONS.md`), ensuring downstream integration works regardless of mode.
|
|
824
733
|
|
|
825
734
|
### Structured Agent Communication
|
|
826
735
|
|
|
@@ -828,7 +737,7 @@ Instead of ambiguous natural language prompts, agents communicate using structur
|
|
|
828
737
|
|
|
829
738
|
**Dispatch Format** (Caller → Receiver):
|
|
830
739
|
```xml
|
|
831
|
-
<dispatch to="builder" work="WORK-03" task="TASK-00"
|
|
740
|
+
<dispatch to="builder" work="WORK-03" task="TASK-00">
|
|
832
741
|
<context>
|
|
833
742
|
<project>uc-taskmanager</project>
|
|
834
743
|
<language>ko</language>
|
|
@@ -848,7 +757,7 @@ Instead of ambiguous natural language prompts, agents communicate using structur
|
|
|
848
757
|
<task-result work="WORK-03" task="TASK-00" agent="builder" status="PASS">
|
|
849
758
|
<summary>Created shared-prompt-sections.md and xml-schema.md</summary>
|
|
850
759
|
<files-changed>
|
|
851
|
-
<file action="created" path="
|
|
760
|
+
<file action="created" path="references/shared-prompt-sections.md">Common sections with cache_control</file>
|
|
852
761
|
</files-changed>
|
|
853
762
|
<verification>
|
|
854
763
|
<check name="file_existence" status="PASS">Both files created</check>
|
|
@@ -862,7 +771,7 @@ Instead of ambiguous natural language prompts, agents communicate using structur
|
|
|
862
771
|
- **Prompt Caching**: Common sections (Output Language Rule, Build Commands) are marked with Anthropic API `cache_control`, saving up to **90% on repeated tokens**
|
|
863
772
|
- **Scalability**: Cache hit rates improve with WORK count (5 TASKs at ~0.03 tokens/token vs 2K+ tokens without cache)
|
|
864
773
|
|
|
865
|
-
See `
|
|
774
|
+
See `references/xml-schema.md` for complete format, and `references/shared-prompt-sections.md` for cacheable sections.
|
|
866
775
|
|
|
867
776
|
### Sliding Window Context Transfer
|
|
868
777
|
|
|
@@ -893,24 +802,6 @@ Each agent outputs a **context-handoff** — a structured reasoning document, no
|
|
|
893
802
|
|
|
894
803
|
See `docs/spec_sliding-window-context.md` for full design details.
|
|
895
804
|
|
|
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
805
|
---
|
|
915
806
|
|
|
916
807
|
## Output Language
|
|
@@ -963,8 +854,9 @@ Place a file with the same name in `.claude/agents/` to override.
|
|
|
963
854
|
|
|
964
855
|
| What | File | Section |
|
|
965
856
|
|------|------|---------|
|
|
966
|
-
|
|
|
967
|
-
| Approval
|
|
857
|
+
| Complexity criteria | `specifier.md` | 4. 역할 결정 |
|
|
858
|
+
| Approval gates / mode handling | `orchestrator.md` | 3-3. 게이트 및 동적 의사결정 |
|
|
859
|
+
| TASK DAG scheduling / retries | `orchestrator.md` | STEP C: TASK DAG 실행 |
|
|
968
860
|
| Commit message format | `committer.md` | Step 3: Stage + Commit |
|
|
969
861
|
| Verification steps | `verifier.md` | Verification Pipeline |
|
|
970
862
|
| Task granularity | `planner.md` | Task Decomposition Rules |
|
|
@@ -995,27 +887,31 @@ Auto-detected from project files. No configuration needed.
|
|
|
995
887
|
uc-taskmanager/
|
|
996
888
|
├── develop/ ← Source of truth (edit here)
|
|
997
889
|
│ ├── agents/ ← 6 agent prompts (language-agnostic)
|
|
998
|
-
│ │ ├──
|
|
890
|
+
│ │ ├── orchestrator.md ← Nested spawn coordinator: specifier→(planner)→builder→verifier→committer, TASK DAG scheduling, gates/decisions, batch log
|
|
891
|
+
│ │ ├── specifier.md ← [] tag detection + requirement analysis
|
|
999
892
|
│ │ ├── planner.md ← WORK creation + TASK decomposition
|
|
1000
|
-
│ │ ├── scheduler.md ← DAG management + pipeline orchestration
|
|
1001
893
|
│ │ ├── builder.md ← Code implementation
|
|
1002
894
|
│ │ ├── verifier.md ← Build/lint/test verification
|
|
1003
895
|
│ │ └── committer.md ← git commit + result.md
|
|
1004
|
-
│ ├── references/ ← 6 support files (
|
|
1005
|
-
│ │ ├── agent-flow.md
|
|
1006
|
-
│ │ ├──
|
|
1007
|
-
│ │ ├──
|
|
1008
|
-
│ │ ├──
|
|
1009
|
-
│ │ ├── work-activity-log.md
|
|
1010
|
-
│ │ └── xml-schema.md
|
|
1011
|
-
│ ├── skills/ ← Skill definitions
|
|
1012
|
-
│ └──
|
|
896
|
+
│ ├── references/ ← 6 support files (read by the orchestrator only)
|
|
897
|
+
│ │ ├── agent-flow.md ← Pipeline orchestration rules
|
|
898
|
+
│ │ ├── context-policy.md ← Sliding window context rules
|
|
899
|
+
│ │ ├── file-content-schema.md ← File format definitions
|
|
900
|
+
│ │ ├── shared-prompt-sections.md ← Shared reusable sections
|
|
901
|
+
│ │ ├── work-activity-log.md ← Activity log format
|
|
902
|
+
│ │ └── xml-schema.md ← XML communication format + ref-cache protocol (§ 4)
|
|
903
|
+
│ ├── skills/ ← Skill definitions (sdd-pipeline, uctm-init, work-pipeline, work-status)
|
|
904
|
+
│ └── .claude-plugin/
|
|
905
|
+
│ └── plugin.json ← Plugin manifest source (name, version, agents array)
|
|
1013
906
|
├── npm/ ← npm package (published as `uctm`)
|
|
1014
|
-
│ ├── agents/ ← Synced from develop/agents/
|
|
907
|
+
│ ├── agents/ ← Synced from develop/agents/
|
|
908
|
+
│ ├── references/ ← Synced from develop/references/ (7 files)
|
|
909
|
+
│ ├── skills/ ← Synced from develop/skills/ (4 SKILL.md)
|
|
1015
910
|
│ ├── bin/cli.mjs ← CLI entry point (uctm init/update)
|
|
1016
911
|
│ ├── lib/ ← CLI implementation (constants.mjs, init.mjs, update.mjs)
|
|
1017
|
-
│ ├── .
|
|
1018
|
-
│ │ └──
|
|
912
|
+
│ ├── .claude-plugin/
|
|
913
|
+
│ │ └── plugin.json ← Synced from develop/.claude-plugin/plugin.json
|
|
914
|
+
│ ├── README.md ← Synced from README.md (exposed on npmjs.com)
|
|
1019
915
|
│ ├── package.json ← npm package config
|
|
1020
916
|
│ ├── .npmignore
|
|
1021
917
|
│ └── LICENSE
|
|
@@ -1024,17 +920,15 @@ uc-taskmanager/
|
|
|
1024
920
|
│ ├── references/ ← Synced from develop/references/
|
|
1025
921
|
│ ├── skills/ ← Plugin skills
|
|
1026
922
|
│ │ ├── sdd-pipeline/
|
|
1027
|
-
│ │ │
|
|
1028
|
-
│ │
|
|
923
|
+
│ │ │ └── SKILL.md ← Skill manifest
|
|
924
|
+
│ │ ├── uctm-init/
|
|
925
|
+
│ │ │ └── SKILL.md ← /uctm-init (setup works/, CLAUDE.md, permissions)
|
|
1029
926
|
│ │ ├── work-pipeline/
|
|
1030
927
|
│ │ │ └── SKILL.md
|
|
1031
|
-
│ │
|
|
1032
|
-
│ │
|
|
1033
|
-
│
|
|
1034
|
-
│
|
|
1035
|
-
│ ├── .claude-plugin/
|
|
1036
|
-
│ │ └── plugin.json ← Plugin manifest (name, version, agents array)
|
|
1037
|
-
│ └── README.md
|
|
928
|
+
│ │ └── work-status/
|
|
929
|
+
│ │ └── SKILL.md
|
|
930
|
+
│ └── .claude-plugin/
|
|
931
|
+
│ └── plugin.json ← Plugin manifest (name, version, agents array)
|
|
1038
932
|
├── .claude/ ← Local Claude settings (not committed)
|
|
1039
933
|
│ └── settings.local.json
|
|
1040
934
|
├── README.md ← English (default, this file)
|
|
@@ -1044,16 +938,14 @@ uc-taskmanager/
|
|
|
1044
938
|
├── docs/ ← Design specifications
|
|
1045
939
|
│ ├── spec_pipeline-architecture_v1.3.md ← Pipeline architecture v1.3 (ref-cache, Specifier-based)
|
|
1046
940
|
│ ├── spec_sliding-window-context.md ← Sliding window context design
|
|
1047
|
-
│ ├── spec_callback-integration.md ← External system callback integration
|
|
1048
941
|
│ ├── spec_SDD_with_ucagent_requirement.md ← SDD v1.5 requirement management system design
|
|
1049
942
|
│ ├── pipeline-architecture-v1.3-visual.html ← Interactive pipeline visualization (with ref-cache tab)
|
|
1050
943
|
│ ├── SDD-requirement-visual.html ← Interactive SDD visualization (with ref-cache tab)
|
|
1051
|
-
│ ├── callback-integration-visual.html ← Interactive callback visualization
|
|
1052
944
|
│ ├── sliding-window-context-visual.html ← Interactive sliding window visualization
|
|
1053
945
|
│ └── _archive/ ← Legacy docs (Router-based)
|
|
1054
946
|
└── works/ ← WORK directories (auto-generated)
|
|
1055
947
|
├── WORK-LIST.md ← Master index
|
|
1056
|
-
├── WORK-01/ ←
|
|
948
|
+
├── WORK-01/ ← every WORK outputs here
|
|
1057
949
|
└── ...
|
|
1058
950
|
```
|
|
1059
951
|
|