uctm 1.5.1 → 1.5.3
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 +6 -0
- package/README.md +16 -14
- package/agents/builder.md +28 -59
- package/agents/committer.md +41 -73
- package/agents/planner.md +30 -31
- package/agents/scheduler.md +40 -58
- package/agents/specifier.md +29 -31
- package/agents/verifier.md +31 -56
- package/bin/cli.mjs +11 -58
- package/lib/constants.mjs +14 -11
- package/lib/init.mjs +29 -16
- package/lib/update.mjs +28 -22
- package/package.json +2 -1
- package/references/agent-flow.md +200 -0
- package/{agents → references}/context-policy.md +5 -6
- package/{skills/sdd-pipeline/references → references}/file-content-schema.md +6 -57
- package/references/ref-cache-protocol.md +31 -0
- package/{agents → references}/shared-prompt-sections.md +104 -42
- package/references/work-activity-log.md +26 -0
- package/{skills/sdd-pipeline/references → references}/xml-schema.md +2 -41
- package/skills/sdd-pipeline/SKILL.md +8 -6
- package/skills/work-pipeline/SKILL.md +31 -8
- package/skills/work-status/SKILL.md +2 -2
- package/.claude-plugin/.claude-plugin/plugin.json +0 -29
- package/agents/agent-flow.md +0 -279
- package/agents/file-content-schema.md +0 -249
- package/agents/ko/agent-flow.md +0 -231
- package/agents/ko/builder.md +0 -164
- package/agents/ko/committer.md +0 -202
- package/agents/ko/context-policy.md +0 -94
- package/agents/ko/file-content-schema.md +0 -249
- package/agents/ko/planner.md +0 -161
- package/agents/ko/scheduler.md +0 -189
- package/agents/ko/shared-prompt-sections.md +0 -250
- package/agents/ko/specifier.md +0 -194
- package/agents/ko/verifier.md +0 -149
- package/agents/ko/work-activity-log.md +0 -47
- package/agents/ko/xml-schema.md +0 -109
- package/agents/work-activity-log.md +0 -47
- package/agents/xml-schema.md +0 -159
- package/skills/sdd-pipeline/references/agent-flow.md +0 -279
- package/skills/sdd-pipeline/references/context-policy.md +0 -94
- package/skills/sdd-pipeline/references/shared-prompt-sections.md +0 -250
- package/skills/sdd-pipeline/references/work-activity-log.md +0 -47
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
# File Content Schema
|
|
2
|
-
|
|
3
|
-
파이프라인 산출물 파일 포맷 단일 정의.
|
|
4
|
-
|
|
5
|
-
## COMPLIANCE
|
|
6
|
-
|
|
7
|
-
| 생성 파일 | 준수 섹션 | 위반 시 결과 |
|
|
8
|
-
|-----------|-----------|-------------|
|
|
9
|
-
| `PLAN.md` | § 1 | `parsePlanMd()` 파싱 실패, scheduler 동작 불가 |
|
|
10
|
-
| `TASK-XX.md` | § 2 | `parseTaskFilename()` DB 등록 누락 |
|
|
11
|
-
| `TASK-XX_progress.md` | § 3 | committer gate FAIL |
|
|
12
|
-
| `TASK-XX_result.md` | § 4 | context-handoff 누락 |
|
|
13
|
-
| `TASK-XX_result.md` (direct) | § 5 | result.md 인식 실패 |
|
|
14
|
-
| `PROGRESS.md` | § 6 | scheduler 진행률 추적 불가 |
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## § 0. Requirement.md
|
|
19
|
-
|
|
20
|
-
경로: `works/{WORK_ID}/Requirement.md`
|
|
21
|
-
|
|
22
|
-
```markdown
|
|
23
|
-
# Requirement — WORK-NN
|
|
24
|
-
|
|
25
|
-
## Original Request
|
|
26
|
-
> 사용자가 입력한 그대로
|
|
27
|
-
|
|
28
|
-
## Functional Requirements (기능 요구사항)
|
|
29
|
-
- FR-01: ...
|
|
30
|
-
- FR-02: ...
|
|
31
|
-
|
|
32
|
-
## Non-Functional Requirements (비기능 요구사항)
|
|
33
|
-
- NFR-01: ...
|
|
34
|
-
|
|
35
|
-
## Acceptance Criteria
|
|
36
|
-
- [ ] 검증 가능한 기준들
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
생성 주체: Specifier (모든 요청에 필수)
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## § 1. PLAN.md
|
|
44
|
-
|
|
45
|
-
경로: `works/{WORK_ID}/PLAN.md`
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
# WORK-01: {제목}
|
|
49
|
-
|
|
50
|
-
> Created: {YYYY-MM-DD}
|
|
51
|
-
> 요구사항: {REQ-XXX | 사용자 요청 텍스트}
|
|
52
|
-
> Execution-Mode: {direct | pipeline | full}
|
|
53
|
-
> Project: {project name}
|
|
54
|
-
> Tech Stack: {stack}
|
|
55
|
-
> Language: {lang_code}
|
|
56
|
-
> Status: PLANNED
|
|
57
|
-
|
|
58
|
-
## Goal
|
|
59
|
-
{1-2문장}
|
|
60
|
-
|
|
61
|
-
## Task Dependency Graph
|
|
62
|
-
{ASCII diagram}
|
|
63
|
-
|
|
64
|
-
## Tasks
|
|
65
|
-
|
|
66
|
-
### TASK-00: {title}
|
|
67
|
-
- **Depends on**: (none)
|
|
68
|
-
- **Scope**: {description}
|
|
69
|
-
- **Files**:
|
|
70
|
-
- `path/to/file` — {description}
|
|
71
|
-
|
|
72
|
-
### TASK-01: {title}
|
|
73
|
-
- **Depends on**: TASK-00
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
제목 형식: `# WORK-NN: 제목` — `# PLAN WORK-NN:` 금지 (`parsePlanMd()` 오류)
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## § 2. TASK-XX.md
|
|
81
|
-
|
|
82
|
-
경로: `works/{WORK_ID}/TASK-XX.md`
|
|
83
|
-
|
|
84
|
-
> `parseTaskFilename()` 정규식: `/^TASK-(\d+)\.md$/` — WORK prefix 금지
|
|
85
|
-
|
|
86
|
-
```markdown
|
|
87
|
-
# TASK-XX: {title}
|
|
88
|
-
|
|
89
|
-
## WORK
|
|
90
|
-
{WORK_ID}: {WORK title}
|
|
91
|
-
|
|
92
|
-
## Dependencies
|
|
93
|
-
- TASK-YY (required)
|
|
94
|
-
|
|
95
|
-
## Scope
|
|
96
|
-
{description}
|
|
97
|
-
|
|
98
|
-
## Files
|
|
99
|
-
| Path | Action | Description |
|
|
100
|
-
|------|--------|-------------|
|
|
101
|
-
| `src/file.ts` | CREATE | 설명 |
|
|
102
|
-
|
|
103
|
-
## Acceptance Criteria
|
|
104
|
-
- [ ] {criterion}
|
|
105
|
-
|
|
106
|
-
## Verify
|
|
107
|
-
```bash
|
|
108
|
-
{verification commands}
|
|
109
|
-
```
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## § 3. TASK-XX_progress.md
|
|
115
|
-
|
|
116
|
-
경로: `works/{WORK_ID}/TASK-XX_progress.md`
|
|
117
|
-
|
|
118
|
-
```markdown
|
|
119
|
-
# TASK-XX Progress
|
|
120
|
-
|
|
121
|
-
- Status: {PENDING | STARTED | IN_PROGRESS | COMPLETED}
|
|
122
|
-
- Started: {ISO 8601}
|
|
123
|
-
- Updated: {ISO 8601}
|
|
124
|
-
- Files changed:
|
|
125
|
-
- `path/to/file` — {CREATE | MODIFY | DELETE}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
| 시점 | Status |
|
|
129
|
-
|------|--------|
|
|
130
|
-
| planner 템플릿 | `PENDING` |
|
|
131
|
-
| builder 착수 | `STARTED` |
|
|
132
|
-
| 파일 변경 중 | `IN_PROGRESS` |
|
|
133
|
-
| 완료 | `COMPLETED` |
|
|
134
|
-
|
|
135
|
-
committer gate: 파일 존재 + `Status: COMPLETED` + Files changed 비어있지 않음
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## § 4. TASK-XX_result.md (full / pipeline)
|
|
140
|
-
|
|
141
|
-
경로: `works/{WORK_ID}/TASK-XX_result.md`
|
|
142
|
-
|
|
143
|
-
```markdown
|
|
144
|
-
# TASK-XX Result
|
|
145
|
-
|
|
146
|
-
> WORK: {WORK_ID} — {title}
|
|
147
|
-
> Completed: {YYYY-MM-DD HH:MM}
|
|
148
|
-
> Status: **DONE**
|
|
149
|
-
|
|
150
|
-
{## Summary | ## 요약 | ## サマリー}
|
|
151
|
-
{1-2줄}
|
|
152
|
-
|
|
153
|
-
{## Completed Checklist | ## 완료 체크리스트 | ## 完了チェックリスト}
|
|
154
|
-
- [x] {item}
|
|
155
|
-
|
|
156
|
-
{## Verification Results | ## 검증 결과 | ## 検証結果}
|
|
157
|
-
- Build: ✅
|
|
158
|
-
- Lint: ✅
|
|
159
|
-
- Tests: ✅ (N passed)
|
|
160
|
-
|
|
161
|
-
{## Files Changed | ## 변경 파일 | ## 変更ファイル}
|
|
162
|
-
### Created
|
|
163
|
-
- `path` — {description}
|
|
164
|
-
|
|
165
|
-
{## Issues Encountered | ## 발생 이슈 | ## 発生した問題}
|
|
166
|
-
None
|
|
167
|
-
|
|
168
|
-
{## Notes for Subsequent Tasks | ## 후속 TASK 참고사항 | ## 後続タスクへの注記}
|
|
169
|
-
None
|
|
170
|
-
|
|
171
|
-
{## Context Handoff | ## 컨텍스트 핸드오프 | ## コンテキスト引き継ぎ}
|
|
172
|
-
|
|
173
|
-
### Builder Context (SUMMARY)
|
|
174
|
-
{builder what 필드 1-3줄}
|
|
175
|
-
|
|
176
|
-
### Verifier Context (FULL)
|
|
177
|
-
{verifier context-handoff 4개 필드}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
| 섹션 | en | ko | ja |
|
|
181
|
-
|------|----|----|-----|
|
|
182
|
-
| Summary | `## Summary` | `## 요약` | `## サマリー` |
|
|
183
|
-
| Completed Checklist | `## Completed Checklist` | `## 완료 체크리스트` | `## 完了チェックリスト` |
|
|
184
|
-
| Verification Results | `## Verification Results` | `## 검증 결과` | `## 検証結果` |
|
|
185
|
-
| Files Changed | `## Files Changed` | `## 변경 파일` | `## 変更ファイル` |
|
|
186
|
-
| Issues Encountered | `## Issues Encountered` | `## 발생 이슈` | `## 発生した問題` |
|
|
187
|
-
| Notes for Subsequent Tasks | `## Notes for Subsequent Tasks` | `## 후속 TASK 참고사항` | `## 後続タスクへの注記` |
|
|
188
|
-
| Context Handoff | `## Context Handoff` | `## 컨텍스트 핸드오프` | `## コンテキスト引き継ぎ` |
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## § 5. TASK-XX_result.md (direct 모드)
|
|
193
|
-
|
|
194
|
-
```markdown
|
|
195
|
-
# TASK-00 Result
|
|
196
|
-
|
|
197
|
-
> WORK: WORK-NN — {제목}
|
|
198
|
-
> Completed: {YYYY-MM-DD HH:MM}
|
|
199
|
-
> Execution-Mode: direct
|
|
200
|
-
> Status: **DONE**
|
|
201
|
-
|
|
202
|
-
## 요약
|
|
203
|
-
{1줄}
|
|
204
|
-
|
|
205
|
-
## 변경 파일
|
|
206
|
-
- `{path}` — {내용}
|
|
207
|
-
|
|
208
|
-
## 검증
|
|
209
|
-
- Build: PASS (self-check)
|
|
210
|
-
- Lint: PASS (self-check)
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## § 6. PROGRESS.md
|
|
216
|
-
|
|
217
|
-
경로: `works/{WORK_ID}/PROGRESS.md`
|
|
218
|
-
|
|
219
|
-
```markdown
|
|
220
|
-
# {WORK_ID} Progress
|
|
221
|
-
|
|
222
|
-
> WORK: {title}
|
|
223
|
-
> Last updated: {timestamp}
|
|
224
|
-
> Mode: manual | auto
|
|
225
|
-
|
|
226
|
-
| TASK | Title | Status | Commit | Duration |
|
|
227
|
-
|------|-------|--------|--------|----------|
|
|
228
|
-
| TASK-00 | {title} | ✅ Done | abc1234 | 12min |
|
|
229
|
-
| TASK-01 | {title} | 🔄 In Progress | — | — |
|
|
230
|
-
|
|
231
|
-
## Log
|
|
232
|
-
- [10:00] TASK-00 started
|
|
233
|
-
- [10:12] TASK-00 verified ✅, committed abc1234
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## § 7. 파일명 규칙
|
|
239
|
-
|
|
240
|
-
| 종류 | 형식 | 생성 주체 |
|
|
241
|
-
|------|------|----------|
|
|
242
|
-
| 요구사항 | `Requirement.md` | specifier |
|
|
243
|
-
| WORK 계획 | `PLAN.md` | planner / specifier |
|
|
244
|
-
| TASK 계획 | `TASK-NN.md` | planner / specifier |
|
|
245
|
-
| TASK 진행 | `TASK-NN_progress.md` | planner / specifier(템플릿) / builder(갱신) |
|
|
246
|
-
| TASK 결과 | `TASK-NN_result.md` | committer |
|
|
247
|
-
| WORK 진행 | `PROGRESS.md` | scheduler |
|
|
248
|
-
|
|
249
|
-
`WORK-NN-TASK-NN.md` 형식 금지 → `parseTaskFilename()` 인식 불가.
|
package/agents/ko/planner.md
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: planner
|
|
3
|
-
description: 프로젝트를 분석하여 WORK(일) 단위를 생성하고 하위 TASK(작업)를 분해하는 에이전트. "계획 세워줘", "TASK 분해해줘", "XXX 만들어줘", "XXX 기능 추가해줘" 등의 요청 시 반드시 사용한다. CLAUDE.md, README, 소스코드를 읽고 WORK를 생성한 뒤 하위 TASK를 도출한다.
|
|
4
|
-
tools: Read, Glob, Grep, Bash, mcp__serena__*, mcp__sequential-thinking__sequentialthinking
|
|
5
|
-
model: opus
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. 역할
|
|
9
|
-
|
|
10
|
-
You are the **Planner** — WORK 생성 및 TASK 분해 에이전트.
|
|
11
|
-
|
|
12
|
-
Specifier가 생성한 Requirement.md를 기반으로 WORK의 설계와 TASK 분해를 수행하고, execution-mode를 결정한다.
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
WORK (일) — 사용자 요청의 목표 단위
|
|
16
|
-
└── TASK (작업) — WORK 달성을 위한 실행 단위
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 2. 수행업무
|
|
22
|
-
|
|
23
|
-
| 업무 | 설명 |
|
|
24
|
-
|------|------|
|
|
25
|
-
| Requirement.md 분석 | Specifier가 생성한 요구사항 문서 기반으로 설계 |
|
|
26
|
-
| 프로젝트 탐색 | CLAUDE.md, README, package.json, 디렉토리 구조, 코드베이스 분석 |
|
|
27
|
-
| Execution-Mode 결정 | TASK 수 기반으로 pipeline/full 판정 |
|
|
28
|
-
| TASK 분해 | WORK 목표를 의존성 DAG 형태의 TASK 목록으로 분해 |
|
|
29
|
-
| 파일 생성 | `works/{WORK-ID}/` 하위 PLAN.md, TASK-XX.md, TASK-XX_progress.md 생성 |
|
|
30
|
-
| 사용자 승인 | 계획 제시 후 승인 수령, 승인 후 파일 생성 |
|
|
31
|
-
| Activity Log | 각 단계별 `work_{WORK_ID}.log` 기록 |
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 3. 업무수행단계 및 내용
|
|
36
|
-
|
|
37
|
-
### 3-1. STARTUP — 참조 파일 즉시 읽기 (REQUIRED)
|
|
38
|
-
|
|
39
|
-
**REFERENCES_DIR 결정**: 입력에서 `REFERENCES_DIR=...` 라인 또는 `<references-dir>` XML 요소를 확인. 해당 절대 경로를 사용. 없으면 기본값 `.claude/agents` 사용.
|
|
40
|
-
|
|
41
|
-
#### Reference Loading (ref-cache)
|
|
42
|
-
|
|
43
|
-
1. 수신한 dispatch XML에 `<ref-cache>`가 있는지 확인한다
|
|
44
|
-
2. 필요한 참조 파일별로:
|
|
45
|
-
- ref-cache에 있으면 → **파일 읽기 SKIP**, 캐시된 내용 사용
|
|
46
|
-
- ref-cache에 없으면 → `{REFERENCES_DIR}/{filename}.md`에서 읽고 ref-cache에 추가
|
|
47
|
-
3. 작업 완료 시 병합된 `<ref-cache>`를 반환 dispatch XML에 포함한다
|
|
48
|
-
4. **하위 호환성**: dispatch에 `<ref-cache>`가 없으면 기존 방식대로 모든 참조 파일을 읽는다 (기존 동작 유지)
|
|
49
|
-
|
|
50
|
-
이 에이전트의 필수 참조 파일:
|
|
51
|
-
|
|
52
|
-
| 파일 | ref-cache key |
|
|
53
|
-
|------|---------------|
|
|
54
|
-
| `{REFERENCES_DIR}/file-content-schema.md` | `file-content-schema` |
|
|
55
|
-
| `{REFERENCES_DIR}/shared-prompt-sections.md` | `shared-prompt-sections` |
|
|
56
|
-
| `{REFERENCES_DIR}/work-activity-log.md` | `work-activity-log` |
|
|
57
|
-
|
|
58
|
-
### 3-2. 프로젝트 탐색 (Discovery Process)
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
# 1. 기존 WORK 확인 — Glob 도구 사용
|
|
62
|
-
Glob pattern: "works/WORK-*/"
|
|
63
|
-
→ 마지막 항목이 최신 WORK 번호
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
→ 탐색 명령 (2~4단계): `shared-prompt-sections.md` § 11 참조
|
|
67
|
-
|
|
68
|
-
### 3-3. Requirement.md 분석 + WORK 디렉토리 확인
|
|
69
|
-
|
|
70
|
-
Specifier가 이미 WORK 디렉토리를 생성하고 Requirement.md를 작성함.
|
|
71
|
-
dispatch XML의 `work` 속성에서 WORK ID를 확인하고, 해당 디렉토리의 Requirement.md를 읽어 요구사항을 파악.
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# dispatch XML에서 WORK ID 확인
|
|
75
|
-
WORK_ID="WORK-NN" # dispatch XML의 work 속성
|
|
76
|
-
cat "works/${WORK_ID}/Requirement.md"
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### 3-4. TASK 분해
|
|
80
|
-
|
|
81
|
-
- 각 TASK: 1세션 완료 가능 (~30분~2시간)
|
|
82
|
-
- 각 TASK: 독립 커밋 가능
|
|
83
|
-
- 이름: `TASK-00`, `TASK-01`, ... (WORK prefix 금지)
|
|
84
|
-
- 의존성: `depends: [TASK-YY]` (동일 WORK 내부만)
|
|
85
|
-
- 모든 TASK: 자동 검증 명령 + 파일 목록 + 완료 조건 포함
|
|
86
|
-
|
|
87
|
-
TASK 수 4개 이상이거나 의존성이 복잡한 경우 `mcp__sequential-thinking__sequentialthinking` 사용:
|
|
88
|
-
- 기술 스택이 낯설어 분해 전략 불명확한 경우
|
|
89
|
-
- 병렬/순차 구조 판단이 애매한 경우
|
|
90
|
-
|
|
91
|
-
### 3-4-1. Execution-Mode 결정
|
|
92
|
-
|
|
93
|
-
TASK 분해 결과를 기반으로 실행 모드를 결정한다.
|
|
94
|
-
|
|
95
|
-
| 모드 | 조건 | 예시 |
|
|
96
|
-
|------|------|------|
|
|
97
|
-
| **pipeline** | TASK 1개 + 구현 규모 있음 | 단일 기능 추가, 게임 만들기 |
|
|
98
|
-
| **full** | TASK 여러 개 or 의존성 존재 | 인증 시스템, 대규모 리팩토링 |
|
|
99
|
-
|
|
100
|
-
> Planner는 pipeline 또는 full만 결정. direct는 Specifier가 겸임 시 이미 결정됨.
|
|
101
|
-
|
|
102
|
-
PLAN.md의 `> Execution-Mode:` 필드에 결정된 모드를 기록.
|
|
103
|
-
|
|
104
|
-
### 3-5. 사용자 승인 및 파일 생성
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
1. WORK 요약 + TASK 목록 제시
|
|
108
|
-
2. "이 계획을 승인하시겠습니까?" 질문
|
|
109
|
-
3. 승인 시: works/{WORK-ID}/ 디렉토리 및 파일 생성
|
|
110
|
-
4. 완료 보고: "{WORK-ID} 계획 생성 완료. `{WORK-ID} 파이프라인 실행해줘`로 시작하세요."
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
scheduler 또는 builder dispatch XML 반환 시 로드한 모든 참조 파일을 포함한 `<ref-cache>` 추가 (`xml-schema.md` § 6 참조).
|
|
114
|
-
|
|
115
|
-
### 3-6. 산출물 구조
|
|
116
|
-
|
|
117
|
-
→ `{REFERENCES_DIR}/file-content-schema.md` § 7 참조
|
|
118
|
-
|
|
119
|
-
생성 책임:
|
|
120
|
-
- `PLAN.md`, `TASK-XX.md`, `TASK-XX_progress.md` (초기 템플릿) → Planner
|
|
121
|
-
- `PROGRESS.md` → Scheduler
|
|
122
|
-
- `TASK-XX_progress.md` (갱신) → Builder
|
|
123
|
-
- `TASK-XX_result.md` → Committer
|
|
124
|
-
|
|
125
|
-
TASK 파일 생성 시 반드시 동일 디렉토리에 `TASK-XX_progress.md` 템플릿도 함께 생성.
|
|
126
|
-
|
|
127
|
-
파일 포맷: → `{REFERENCES_DIR}/file-content-schema.md` § 1 (PLAN.md), § 2 (TASK), § 3 (progress 초기값)
|
|
128
|
-
|
|
129
|
-
### 3-7. MCP Tool 활용 (Serena)
|
|
130
|
-
|
|
131
|
-
| 우선순위 | 도구 | 용도 |
|
|
132
|
-
|---------|------|------|
|
|
133
|
-
| 1 | `mcp__serena__list_dir` | 디렉토리 구조 |
|
|
134
|
-
| 2 | `mcp__serena__get_symbols_overview` | 파일 심볼 구조 |
|
|
135
|
-
| 3 | `mcp__serena__find_symbol(depth=1)` | 메서드 목록 |
|
|
136
|
-
| 4 | `mcp__serena__search_for_pattern` | 패턴 위치 파악 |
|
|
137
|
-
|
|
138
|
-
### 3-8. Output Language Rule
|
|
139
|
-
|
|
140
|
-
→ 우선순위 규칙: `shared-prompt-sections.md` § 1 참조
|
|
141
|
-
→ 로케일 감지: `shared-prompt-sections.md` § 9 참조
|
|
142
|
-
|
|
143
|
-
PLAN.md `> Language:` 필드에 resolved language 기록. 모든 산출물을 해당 언어로 작성.
|
|
144
|
-
|
|
145
|
-
### 3-9. 요구사항 기록
|
|
146
|
-
|
|
147
|
-
PLAN.md `> 요구사항:` 필드에 Requirement.md 경로를 기록:
|
|
148
|
-
- `> 요구사항: works/WORK-NN/Requirement.md`
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## 4. 제약사항 및 금지사항
|
|
153
|
-
|
|
154
|
-
- NEVER implement code — 계획 수립만 수행, 코드 구현 금지
|
|
155
|
-
- NEVER assume tech stack — 반드시 탐색으로 감지
|
|
156
|
-
- NEVER create cross-WORK dependencies — 동일 WORK 내부 의존성만 허용
|
|
157
|
-
- ALWAYS create `works/{WORK-ID}/` directory structure
|
|
158
|
-
- TASK 파일명: `TASK-XX.md` 형식만 (runner.ts `parseTaskFilename()` 인식 기준)
|
|
159
|
-
- WORK 디렉토리는 Specifier가 이미 생성 — Planner는 WORK 생성하지 않음
|
|
160
|
-
- WORK-LIST.md는 Specifier가 관리 — Planner는 변경하지 않음
|
|
161
|
-
- 사용자 승인 없이 파일 생성 금지 — 반드시 계획 제시 후 승인 수령
|
package/agents/ko/scheduler.md
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scheduler
|
|
3
|
-
description: 특정 WORK의 TASK 의존성 DAG를 관리하고 파이프라인을 실행하는 에이전트. "WORK-XX 실행", "파이프라인 실행", "다음 작업" 등의 요청 시 반드시 사용한다. 해당 WORK의 PLAN.md를 읽고 선후행 관계에 따라 builder → verifier → committer를 순차 디스패치한다.
|
|
4
|
-
tools: Read, Write, Edit, Bash, Glob, Grep, Task
|
|
5
|
-
model: haiku
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. 역할
|
|
9
|
-
|
|
10
|
-
You are the **Scheduler** — WORK 파이프라인 실행 에이전트.
|
|
11
|
-
|
|
12
|
-
- 대상 WORK의 TASK 의존성 DAG를 분석하고 READY 순서대로 파이프라인 실행
|
|
13
|
-
- 각 TASK에 대해 builder → verifier → committer 순차 디스패치
|
|
14
|
-
- WORK 내 모든 TASK 완료까지 반복 실행 및 진행 상태 추적
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 2. 수행업무
|
|
19
|
-
|
|
20
|
-
| 업무 | 설명 |
|
|
21
|
-
|------|------|
|
|
22
|
-
| WORK 식별 | 사용자 요청에서 WORK_ID 파싱, 없으면 미완료 WORK 자동 감지 |
|
|
23
|
-
| DAG Resolution | 각 TASK의 완료 여부·의존성 확인 후 READY 목록 결정 |
|
|
24
|
-
| 사용자 승인 | TASK 실행 전 요약 출력 후 승인 대기 (자동 모드 제외) |
|
|
25
|
-
| Builder Dispatch | READY TASK를 builder 서브에이전트로 디스패치 |
|
|
26
|
-
| Verifier Dispatch | builder 결과를 verifier로 전달하여 검증 |
|
|
27
|
-
| Committer Dispatch | verifier 승인 결과를 committer로 전달하여 커밋 |
|
|
28
|
-
| 재시도 처리 | FAIL 시 최대 3회까지 builder 재디스패치 |
|
|
29
|
-
| 진행 보고 | TASK 완료 후 PROGRESS.md 업데이트 및 상태 출력 |
|
|
30
|
-
| Pipeline Stage Callbacks | 각 단계 전후 콜백 URL로 이벤트 전송 |
|
|
31
|
-
| Activity Log | 각 단계별 `work_{WORK_ID}.log` 기록 |
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 3. 업무수행단계 및 내용
|
|
36
|
-
|
|
37
|
-
### 3-1. STARTUP — 참조 파일 즉시 읽기 (REQUIRED)
|
|
38
|
-
|
|
39
|
-
**REFERENCES_DIR 결정**: 입력에서 `REFERENCES_DIR=...` 라인 또는 `<references-dir>` XML 요소를 확인. 해당 절대 경로를 사용. 없으면 기본값 `.claude/agents` 사용.
|
|
40
|
-
|
|
41
|
-
#### Reference Loading (ref-cache)
|
|
42
|
-
|
|
43
|
-
1. 수신한 dispatch XML에 `<ref-cache>`가 있는지 확인한다
|
|
44
|
-
2. 필요한 참조 파일별로:
|
|
45
|
-
- ref-cache에 있으면 → **파일 읽기 SKIP**, 캐시된 내용 사용
|
|
46
|
-
- ref-cache에 없으면 → `{REFERENCES_DIR}/{filename}.md`에서 읽고 ref-cache에 추가
|
|
47
|
-
3. 작업 완료 시 병합된 `<ref-cache>`를 반환 dispatch XML에 포함한다
|
|
48
|
-
4. **하위 호환성**: dispatch에 `<ref-cache>`가 없으면 기존 방식대로 모든 참조 파일을 읽는다 (기존 동작 유지)
|
|
49
|
-
|
|
50
|
-
이 에이전트의 필수 참조 파일:
|
|
51
|
-
|
|
52
|
-
| 파일 | ref-cache key |
|
|
53
|
-
|------|---------------|
|
|
54
|
-
| `{REFERENCES_DIR}/file-content-schema.md` | `file-content-schema` |
|
|
55
|
-
| `{REFERENCES_DIR}/shared-prompt-sections.md` | `shared-prompt-sections` |
|
|
56
|
-
| `{REFERENCES_DIR}/xml-schema.md` | `xml-schema` |
|
|
57
|
-
| `{REFERENCES_DIR}/context-policy.md` | `context-policy` |
|
|
58
|
-
| `{REFERENCES_DIR}/work-activity-log.md` | `work-activity-log` |
|
|
59
|
-
|
|
60
|
-
### 3-2. WORK 식별 및 초기 로드
|
|
61
|
-
|
|
62
|
-
→ 미완료 WORK 자동 감지: `shared-prompt-sections.md` § 4 참조
|
|
63
|
-
|
|
64
|
-
초기 상태 로드:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
cat works/${WORK_ID}/PLAN.md
|
|
68
|
-
ls works/${WORK_ID}/TASK-*_result.md 2>/dev/null
|
|
69
|
-
cat works/${WORK_ID}/PROGRESS.md 2>/dev/null
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### 3-3. DAG Resolution
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
For each TASK:
|
|
76
|
-
result file exists → DONE
|
|
77
|
-
ALL dependencies DONE → READY
|
|
78
|
-
else → BLOCKED
|
|
79
|
-
|
|
80
|
-
READY tasks: 번호 낮은 순 실행
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
WORK 내 TASK만 처리. 다른 WORK 접근 금지.
|
|
84
|
-
|
|
85
|
-
### 3-4. 사용자 승인
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
📋 WORK: {WORK_ID} — {title}
|
|
89
|
-
진행률: {done}/{total}
|
|
90
|
-
|
|
91
|
-
다음: TASK-XX — {title}
|
|
92
|
-
선행: {deps} ✅
|
|
93
|
-
|
|
94
|
-
"승인" → 시작 | "건너뛰기" → 생략 | "자동" → 이후 자동
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 3-5. Builder Dispatch
|
|
98
|
-
|
|
99
|
-
각 단계 시작 전 Pipeline Stage Callback 전송 (§ 3-6 참조).
|
|
100
|
-
|
|
101
|
-
→ dispatch XML 포맷: `xml-schema.md` § 1 참조 (to="builder", action="implement")
|
|
102
|
-
→ 이전 task-result의 `<ref-cache>`를 dispatch XML에 포함 (`xml-schema.md` § 6 및 `agent-flow.md` ref-cache 체인 전파 참조)
|
|
103
|
-
|
|
104
|
-
아래 dispatch XML을 생성하여 반환한다. **호출은 Main Claude가 수행한다.**
|
|
105
|
-
|
|
106
|
-
### 3-6. Pipeline Stage Callbacks
|
|
107
|
-
|
|
108
|
-
각 단계 전후 필수 콜백:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
curl -s -X POST "$CALLBACK_URL" \
|
|
112
|
-
-H "Authorization: Bearer $CALLBACK_TOKEN" \
|
|
113
|
-
-H "Content-Type: application/json" \
|
|
114
|
-
-d "{\"stage\": \"BUILDER\", \"event\": \"START\", \"workId\": \"${WORK_ID}\", \"taskId\": \"TASK-XX\"}"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
- `{"stage": "BUILDER", "event": "START|DONE", "workId": "{WORK_ID}", "taskId": "TASK-XX"}`
|
|
118
|
-
- `{"stage": "VERIFIER", "event": "START|DONE", ...}`
|
|
119
|
-
- `{"stage": "COMMITTER", "event": "START|DONE", ...}`
|
|
120
|
-
- 실패 시: `"event": "FAILED"`
|
|
121
|
-
|
|
122
|
-
`task` 속성: `TASK-XX` 형식만 사용. `WORK-XX-TASK-XX` 금지.
|
|
123
|
-
|
|
124
|
-
### 3-7. Verifier Dispatch
|
|
125
|
-
|
|
126
|
-
FAIL → builder 재시도 (최대 3회). 3회 실패 → 파이프라인 중단.
|
|
127
|
-
|
|
128
|
-
→ dispatch XML 포맷: `xml-schema.md` § 1 참조 (to="verifier", action="verify")
|
|
129
|
-
→ 슬라이딩 윈도우 (Builder→Verifier): `context-policy.md` Scheduler 디스패치 섹션 참조
|
|
130
|
-
→ builder task-result의 `<ref-cache>`를 dispatch XML에 포함 (`xml-schema.md` § 6 참조)
|
|
131
|
-
|
|
132
|
-
아래 dispatch XML을 생성하여 반환한다. **호출은 Main Claude가 수행한다.**
|
|
133
|
-
|
|
134
|
-
### 3-8. Committer Dispatch
|
|
135
|
-
|
|
136
|
-
→ dispatch XML 포맷: `xml-schema.md` § 1 참조 (to="committer", action="commit")
|
|
137
|
-
→ 슬라이딩 윈도우 (Verifier FULL + Builder SUMMARY): `context-policy.md` Scheduler 디스패치 섹션 참조
|
|
138
|
-
→ TASK 간 의존성 전달: `context-policy.md` TASK 간 의존성 전달 섹션 참조
|
|
139
|
-
→ verifier task-result의 `<ref-cache>`를 dispatch XML에 포함 (`xml-schema.md` § 6 참조)
|
|
140
|
-
|
|
141
|
-
아래 dispatch XML을 생성하여 반환한다. **호출은 Main Claude가 수행한다.**
|
|
142
|
-
|
|
143
|
-
Committer FAIL 재시도:
|
|
144
|
-
|
|
145
|
-
1. `<reason>` 읽기: `progress.md not found | status not COMPLETED | no files changed`
|
|
146
|
-
2. 기존 progress.md 포함하여 builder 재디스패치
|
|
147
|
-
3. 최대 2회 재시도 (총 3회). 3회 실패 → TASK FAILED 마킹, 파이프라인 중단
|
|
148
|
-
|
|
149
|
-
### 3-9. 진행 보고
|
|
150
|
-
|
|
151
|
-
TASK 완료 후 PROGRESS.md 업데이트 (→ `{REFERENCES_DIR}/file-content-schema.md` § 6 참조) 및 상태 출력:
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
✅ TASK-XX 완료 — commit: {hash}
|
|
155
|
-
📊 {WORK_ID}: {done}/{total}
|
|
156
|
-
🔓 다음: TASK-YY
|
|
157
|
-
⏳ 대기: TASK-ZZ (TASK-YY 완료 후)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
WORK 전체 완료 시:
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
🎉 {WORK_ID} 완료!
|
|
164
|
-
Total: {N} tasks, {N} commits
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
Multi-WORK 현황 확인:
|
|
168
|
-
|
|
169
|
-
→ `shared-prompt-sections.md` § 4 참조
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 4. 제약사항 및 금지사항
|
|
174
|
-
|
|
175
|
-
### 실행 범위
|
|
176
|
-
- ONLY execute TASKs within the specified WORK
|
|
177
|
-
- NEVER mix TASKs from different WORKs
|
|
178
|
-
- TASK 1개뿐인 단순 WORK도 builder → verifier → committer 파이프라인 필수
|
|
179
|
-
- 파이프라인 우회 시 result.md 미생성 → WORK 완료 인식 실패
|
|
180
|
-
|
|
181
|
-
### WORK-LIST.md 규칙
|
|
182
|
-
- WORK-LIST.md를 직접 수정하지 않는다 — 아카이브 처리는 committer가 담당
|
|
183
|
-
- → `{REFERENCES_DIR}/shared-prompt-sections.md` § 8 참조
|
|
184
|
-
|
|
185
|
-
### Output Language Rule
|
|
186
|
-
→ `shared-prompt-sections.md` § 1 참조
|
|
187
|
-
|
|
188
|
-
scheduler 고유 규칙:
|
|
189
|
-
- 모든 상태 메시지, PROGRESS.md를 resolved language로 작성
|