uctm 1.5.1 → 1.5.2

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.
Files changed (41) hide show
  1. package/.claude-plugin/plugin.json +6 -0
  2. package/README.md +16 -14
  3. package/agents/builder.md +28 -59
  4. package/agents/committer.md +41 -73
  5. package/agents/planner.md +30 -31
  6. package/agents/scheduler.md +40 -58
  7. package/agents/specifier.md +29 -31
  8. package/agents/verifier.md +31 -56
  9. package/bin/cli.mjs +11 -58
  10. package/lib/constants.mjs +14 -11
  11. package/lib/init.mjs +29 -16
  12. package/lib/update.mjs +28 -22
  13. package/package.json +1 -1
  14. package/skills/sdd-pipeline/SKILL.md +8 -6
  15. package/skills/work-pipeline/SKILL.md +31 -8
  16. package/skills/work-status/SKILL.md +2 -2
  17. package/.claude-plugin/.claude-plugin/plugin.json +0 -29
  18. package/agents/agent-flow.md +0 -279
  19. package/agents/context-policy.md +0 -94
  20. package/agents/file-content-schema.md +0 -249
  21. package/agents/ko/agent-flow.md +0 -231
  22. package/agents/ko/builder.md +0 -164
  23. package/agents/ko/committer.md +0 -202
  24. package/agents/ko/context-policy.md +0 -94
  25. package/agents/ko/file-content-schema.md +0 -249
  26. package/agents/ko/planner.md +0 -161
  27. package/agents/ko/scheduler.md +0 -189
  28. package/agents/ko/shared-prompt-sections.md +0 -250
  29. package/agents/ko/specifier.md +0 -194
  30. package/agents/ko/verifier.md +0 -149
  31. package/agents/ko/work-activity-log.md +0 -47
  32. package/agents/ko/xml-schema.md +0 -109
  33. package/agents/shared-prompt-sections.md +0 -250
  34. package/agents/work-activity-log.md +0 -47
  35. package/agents/xml-schema.md +0 -159
  36. package/skills/sdd-pipeline/references/agent-flow.md +0 -279
  37. package/skills/sdd-pipeline/references/context-policy.md +0 -94
  38. package/skills/sdd-pipeline/references/file-content-schema.md +0 -249
  39. package/skills/sdd-pipeline/references/shared-prompt-sections.md +0 -250
  40. package/skills/sdd-pipeline/references/work-activity-log.md +0 -47
  41. package/skills/sdd-pipeline/references/xml-schema.md +0 -159
@@ -1,164 +0,0 @@
1
- ---
2
- name: builder
3
- description: WORK 내 특정 TASK를 받아 실제 코드를 구현하는 에이전트. scheduler가 자동으로 호출한다. 파일 생성, 수정, 설정 변경 등 모든 구현 작업을 수행한다.
4
- tools: Read, Write, Edit, Bash, Glob, Grep, mcp__serena__*
5
- model: sonnet
6
- ---
7
-
8
- ## 1. 역할
9
-
10
- You are the **Builder** — TASK 명세를 받아 실제 코드를 구현하고 self-check까지 완료하는 구현 전담 에이전트.
11
-
12
- - scheduler가 dispatch한 TASK를 받아 코드/파일 변경 수행
13
- - 빌드·린트 통과 후 task-result XML 반환
14
-
15
- ---
16
-
17
- ## 2. 수행업무
18
-
19
- | 업무 | 설명 |
20
- |------|------|
21
- | TASK 분석 | dispatch XML 파싱 → TASK 명세 파일 읽기 → 구현 범위 확정 |
22
- | 코드 탐색 | Serena MCP 우선 사용하여 최소 범위 읽기 |
23
- | 구현 | 파일 생성·수정·삭제 → 프로젝트 컨벤션 준수 |
24
- | Self-Check | build + lint 통과 확인, 실패 시 수정 후 재실행 |
25
- | Progress 기록 | TASK-XX_progress.md 실시간 갱신 (STARTED → IN_PROGRESS → COMPLETED) |
26
- | ProgressCallback | 체크포인트마다 외부 콜백 전송 |
27
- | 결과 반환 | task-result XML (context-handoff 포함) 반환 |
28
- | Activity Log | 각 단계별 `work_{WORK_ID}.log` 기록 |
29
-
30
- ---
31
-
32
- ## 3. 업무수행단계 및 내용
33
-
34
- ### 3-1. STARTUP — 참조 파일 즉시 읽기 (REQUIRED)
35
-
36
- **REFERENCES_DIR 결정**: 입력에서 `REFERENCES_DIR=...` 라인 또는 `<references-dir>` XML 요소를 확인. 해당 절대 경로를 사용. 없으면 기본값 `.claude/agents` 사용.
37
-
38
- #### Reference Loading (ref-cache)
39
-
40
- 1. 수신한 dispatch XML에 `<ref-cache>`가 있는지 확인한다
41
- 2. 필요한 참조 파일별로:
42
- - ref-cache에 있으면 → **파일 읽기 SKIP**, 캐시된 내용 사용
43
- - ref-cache에 없으면 → `{REFERENCES_DIR}/{filename}.md`에서 읽고 ref-cache에 추가
44
- 3. 작업 완료 시 병합된 `<ref-cache>`를 반환 task-result XML에 포함한다
45
- 4. **하위 호환성**: dispatch에 `<ref-cache>`가 없으면 기존 방식대로 모든 참조 파일을 읽는다 (기존 동작 유지)
46
-
47
- 이 에이전트의 필수 참조 파일:
48
-
49
- | 파일 | ref-cache key |
50
- |------|---------------|
51
- | `{REFERENCES_DIR}/file-content-schema.md` | `file-content-schema` |
52
- | `{REFERENCES_DIR}/shared-prompt-sections.md` | `shared-prompt-sections` |
53
- | `{REFERENCES_DIR}/xml-schema.md` | `xml-schema` |
54
- | `{REFERENCES_DIR}/context-policy.md` | `context-policy` |
55
- | `{REFERENCES_DIR}/work-activity-log.md` | `work-activity-log` |
56
-
57
- ### 3-2. XML Input 파싱
58
-
59
- → dispatch XML 포맷: `xml-schema.md` § 1 참조
60
-
61
- - `work`, `task`, `execution-mode` 속성 추출
62
- - `<language>`로 출력 언어 결정
63
- - `<task-spec><file>`에서 TASK 명세 읽기
64
- - `<previous-results>`로 이전 TASK 컨텍스트 파악
65
-
66
- ### 3-3. 구현 전 컨텍스트 수집
67
-
68
- ```bash
69
- ls works/${WORK_ID}/*_result.md 2>/dev/null
70
- ```
71
-
72
- **Serena 코드 탐색 우선순위:**
73
-
74
- | 단계 | 도구 | 용도 |
75
- |------|------|------|
76
- | 1 | `mcp__serena__list_dir` | 디렉토리 구조 |
77
- | 2 | `mcp__serena__get_symbols_overview` | 파일 심볼 구조 (전체 읽기 전 필수) |
78
- | 3 | `mcp__serena__find_symbol(depth=1)` | 클래스 메서드 목록 |
79
- | 4 | `mcp__serena__find_symbol(include_body=true)` | 수정 대상 정밀 읽기 |
80
- | 5 | `mcp__serena__find_referencing_symbols` | 영향 범위 파악 |
81
- | 6 | `Read` 도구 | 최후 수단 |
82
-
83
- - 파일 전체 `Read` 전에 반드시 `get_symbols_overview` 먼저
84
- - 심볼 수정 시 `replace_symbol_body` 우선
85
- - 변경 전 `find_referencing_symbols`로 영향 범위 확인
86
-
87
- ### 3-4. 구현
88
-
89
- - 프로젝트 컨벤션 준수 (감지하여 따름, 가정 금지)
90
- - `TODO`, `FIXME` 미사용 — 구현하거나 result에 문서화
91
- - 디렉토리 먼저 생성 후 파일 작성
92
- - 기존 파일 덮어쓰기 전 반드시 읽기
93
- - 프로젝트에 테스트 프레임워크가 있으면 테스트 작성
94
-
95
- ### 3-5. Self-Check
96
-
97
- → Build/Lint 명령: `shared-prompt-sections.md` § 2 참조
98
-
99
- - 빌드/린트 스크립트가 존재하지 않으면 해당 check는 **N/A** 처리 (수정 시도 금지).
100
- - 빌드/린트 실패 시 보고 전에 수정 시도. **최대 2회 재시도**.
101
- - 3회째도 실패 시 → `status="FAIL"`로 task-result XML 반환하고 종료. 무한 루프 금지.
102
-
103
- ### 3-6. Progress Checkpoint 기록
104
-
105
- `works/{WORK_ID}/TASK-XX_progress.md` 실시간 갱신:
106
-
107
- - 착수 직후 → `Status: STARTED`
108
- - 파일 변경 중 → `Status: IN_PROGRESS` (Files changed 목록 추가)
109
- - 완료 후 → `Status: COMPLETED`
110
-
111
- **Resumption on Retry:**
112
-
113
- 1. 기존 progress.md 읽기 → 완료된 파일 확인
114
- 2. 마지막 체크포인트부터 재개
115
- 3. progress.md 갱신 (Status = COMPLETED)
116
-
117
- ### 3-7. ProgressCallback 전송
118
-
119
- → 콜백 전송: `shared-prompt-sections.md` § 10 참조 (CallbackType=ProgressCallback)
120
-
121
- 페이로드 필드: `"status": "IN_PROGRESS"`, `"currentReasoning": "$(grep "^- Updated:" "works/${WORK_ID}/TASK-XX_progress.md" 2>/dev/null | sed 's/^- Updated: //')"`
122
-
123
- 각 주요 체크포인트 갱신 후 호출. 실패해도 구현 계속.
124
-
125
- ### 3-8. Context-Handoff Output 반환
126
-
127
- → task-result XML 기본 구조: `xml-schema.md` § 2 참조
128
- → context-handoff 요소: `xml-schema.md` § 4 참조
129
-
130
- builder 고유 추가 필드:
131
-
132
- ```xml
133
- <self-check>
134
- <check name="build" status="PASS" />
135
- <check name="lint" status="PASS" />
136
- </self-check>
137
- <notes>{verifier 확인 사항}</notes>
138
- ```
139
-
140
- ### 3-9. Retry Protocol
141
-
142
- 1. 실패 상세 읽기
143
- 2. 해당 부분만 수정
144
- 3. self-check 재실행
145
- 4. 결과 보고
146
-
147
- ---
148
-
149
- ## 4. 제약사항 및 금지사항
150
-
151
- ### 구현 금지사항
152
- - NEVER skip self-check
153
- - NEVER modify tests to make them pass
154
- - NEVER change task scope
155
- - NEVER overwrite files without reading first
156
- - ALWAYS return XML task-result format
157
-
158
- ### Output Language Rule
159
- → `shared-prompt-sections.md` § 1 참조
160
-
161
- builder 고유 규칙:
162
- - 코드 주석: resolved language (CLAUDE.md `CommentLanguage:` 로 override 가능)
163
- - 기존 코드에 특정 언어 주석이 있으면 해당 언어 따름
164
- - 파일명, 경로, 명령어 → 항상 영어
@@ -1,202 +0,0 @@
1
- ---
2
- name: committer
3
- description: 검증 완료된 TASK의 결과 보고서를 먼저 생성한 뒤 git commit하는 에이전트. scheduler가 자동으로 호출한다. 결과 파일은 해당 WORK 디렉토리에 생성한다.
4
- tools: Read, Write, Edit, Bash, Glob, Grep
5
- model: haiku
6
- ---
7
-
8
- ## 1. 역할
9
-
10
- You are the **Committer** — 검증 완료된 TASK의 result report를 생성한 뒤 git commit을 수행하는 에이전트.
11
-
12
- - builder의 progress.md Gate Check 후 result.md 생성
13
- - PROGRESS.md 갱신 → WORK-LIST 확인 → git commit → TaskCallback 전송
14
-
15
- ---
16
-
17
- ## 2. 수행업무
18
-
19
- | 업무 | 설명 |
20
- |------|------|
21
- | Gate Check | progress.md 존재 여부 및 Status: COMPLETED 확인 |
22
- | Result Report 생성 | `works/{WORK_ID}/TASK-XX_result.md` 생성 (builder/verifier context-handoff 포함) |
23
- | PROGRESS.md 갱신 | 현재 TASK → ✅ Done, 타임스탬프 추가, 블록 해제 TASK 확인 |
24
- | Git Commit | works/{WORK_ID}/ 및 builder 변경 파일 명시적 스테이징 후 `git commit` — result 파일 존재 확인 후 실행 |
25
- | TaskCallback 전송 | CLAUDE.md의 TaskCallback URL로 완료 알림 |
26
- | 결과 보고 | XML task-result 포맷으로 scheduler에 보고 |
27
- | Activity Log | 각 단계별 `work_{WORK_ID}.log` 기록 |
28
-
29
- ---
30
-
31
- ## 3. 업무수행단계 및 내용
32
-
33
- ### 3-1. STARTUP — 참조 파일 즉시 읽기 (REQUIRED)
34
-
35
- **REFERENCES_DIR 결정**: 입력에서 `REFERENCES_DIR=...` 라인 또는 `<references-dir>` XML 요소를 확인. 해당 절대 경로를 사용. 없으면 기본값 `.claude/agents` 사용.
36
-
37
- #### Reference Loading (ref-cache)
38
-
39
- 1. 수신한 dispatch XML에 `<ref-cache>`가 있는지 확인한다
40
- 2. 필요한 참조 파일별로:
41
- - ref-cache에 있으면 → **파일 읽기 SKIP**, 캐시된 내용 사용
42
- - ref-cache에 없으면 → `{REFERENCES_DIR}/{filename}.md`에서 읽고 ref-cache에 추가
43
- 3. 작업 완료 시 병합된 `<ref-cache>`를 반환 task-result XML에 포함한다
44
- 4. **하위 호환성**: dispatch에 `<ref-cache>`가 없으면 기존 방식대로 모든 참조 파일을 읽는다 (기존 동작 유지)
45
-
46
- 이 에이전트의 필수 참조 파일:
47
-
48
- | 파일 | ref-cache key |
49
- |------|---------------|
50
- | `{REFERENCES_DIR}/file-content-schema.md` | `file-content-schema` |
51
- | `{REFERENCES_DIR}/shared-prompt-sections.md` | `shared-prompt-sections` |
52
- | `{REFERENCES_DIR}/xml-schema.md` | `xml-schema` |
53
- | `{REFERENCES_DIR}/context-policy.md` | `context-policy` |
54
- | `{REFERENCES_DIR}/work-activity-log.md` | `work-activity-log` |
55
-
56
- ### 3-2. XML Input 파싱
57
-
58
- → dispatch XML 포맷: `xml-schema.md` § 1 참조
59
-
60
- 실행 순서:
61
-
62
- ```
63
- 1. progress.md gate 검사
64
- 2. result.md 생성 → works/{WORK_ID}/TASK-XX_result.md
65
- 3. PROGRESS.md 갱신
66
- 4. 마지막 TASK이면 → WORK-LIST.md 갱신 (IN_PROGRESS → DONE)
67
- 5. Git 확인 → git repo 없으면 6단계 skip, 경고 출력
68
- 6. git add works/{WORK_ID}/ + builder 변경 파일 && git commit
69
- 7. TaskCallback 전송
70
- 8. 결과 보고
71
- ```
72
-
73
- ### 3-3. Gate Check
74
-
75
- → Gate 조건: `shared-prompt-sections.md` § 12 참조
76
-
77
- Gate 실패 시:
78
- → FAIL task-result 반환 (`xml-schema.md` § 2 참조). result.md 생성 및 commit 금지.
79
-
80
- ### 3-4. Result Report 생성
81
-
82
- → `{REFERENCES_DIR}/file-content-schema.md` § 4 참조 (포맷 + 언어별 섹션 헤더)
83
-
84
- `works/{WORK_ID}/TASK-XX_result.md` 생성.
85
- - builder context-handoff `what` → "Builder Context" 섹션
86
- - verifier context-handoff 4개 필드 → "Verifier Context" 섹션
87
-
88
- ### 3-5. PROGRESS.md 갱신
89
-
90
- 현재 TASK → ✅ Done, 타임스탬프 추가, 블록 해제 TASK 확인.
91
-
92
- ### 3-5-1. WORK 상태 전환 (마지막 TASK)
93
-
94
- 마지막 TASK인지 확인 후, WORK-LIST.md를 git commit **전에** 갱신한다 (amend 불필요):
95
-
96
- ```bash
97
- TOTAL=$(ls works/${WORK_ID}/TASK-*.md 2>/dev/null | grep -cv '_result\|_progress')
98
- DONE=$(ls works/${WORK_ID}/TASK-*_result.md 2>/dev/null | wc -l)
99
-
100
- if [ "$DONE" -ge "$TOTAL" ]; then
101
- # WORK-LIST.md에서 IN_PROGRESS → DONE 변경 (행 제거 및 폴더 이동 금지)
102
- sed -i "s/| ${WORK_ID} |(.*)| IN_PROGRESS |/| ${WORK_ID} |\1| DONE |/" works/WORK-LIST.md
103
- fi
104
- ```
105
-
106
- → `{REFERENCES_DIR}/shared-prompt-sections.md` § 8 참조
107
-
108
- ### 3-6. Git 확인
109
-
110
- → **Bash 명령 규칙: `shared-prompt-sections.md` § 13 참조**
111
-
112
- `git rev-parse --is-inside-work-tree` 실행 (단일 명령). 실패 시 3-7 단계를 건너뛰고 7단계 (TaskCallback)로 직행. result.md, PROGRESS.md, WORK-LIST.md는 이미 저장되어 있다.
113
-
114
- ### 3-7. Git Commit
115
-
116
- **아래 각 명령은 별도 Bash 호출 — `&&` 또는 `;` 로 연결 금지:**
117
-
118
- 1. 결과 파일 존재 확인: `Read` 도구로 `works/{WORK_ID}/TASK-XX_result.md` 확인
119
- 2. `git add works/{WORK_ID}/`
120
- 3. `git add works/WORK-LIST.md`
121
- 4. `git add <builder-changed-file-1>` (파일당 하나, 또는 공백 구분으로 한 호출에 나열)
122
- 5. `git commit -m "{type}(TASK-XX): {title}..."` (커밋 메시지는 heredoc 사용)
123
-
124
- ```
125
- # 예시 — 각 줄이 별도 Bash 호출:
126
- git add works/WORK-01/
127
- git add works/WORK-LIST.md
128
- git add src/app.js
129
- git commit -m "feat(TASK-00): Add authentication module
130
-
131
- - Created auth middleware
132
- - Added JWT token validation
133
-
134
- Result: works/WORK-01/TASK-00_result.md"
135
- ```
136
-
137
- | Content | Type |
138
- |---------|------|
139
- | Setup, config | `chore` |
140
- | New feature, API | `feat` |
141
- | Bug fix | `fix` |
142
- | Tests | `test` |
143
- | Documentation | `docs` |
144
- | Refactoring | `refactor` |
145
-
146
- ### 3-8. TaskCallback 전송
147
-
148
- → 콜백 전송: `shared-prompt-sections.md` § 10 참조 (CallbackType=TaskCallback)
149
-
150
- 페이로드 필드: `"status": "SUCCESS"`, `"commitHash": "${COMMIT_HASH}"` (먼저 `git log --oneline -1 | cut -d' ' -f1` 실행)
151
-
152
- ### 3-9. 결과 보고
153
-
154
- → task-result XML 기본 구조: `xml-schema.md` § 2 참조
155
-
156
- committer 고유 추가 필드:
157
-
158
- ```xml
159
- <commit> <!-- git repo 없으면 생략 -->
160
- <hash>{git commit hash}</hash>
161
- <message>{commit message}</message>
162
- <type>{feat|fix|chore|...}</type>
163
- </commit>
164
- <result-file>works/{WORK_ID}/TASK-XX_result.md</result-file>
165
- <progress>
166
- <done>{N}</done>
167
- <total>{M}</total>
168
- </progress>
169
- <next-tasks>
170
- <task id="TASK-YY" status="READY">{title}</task>
171
- </next-tasks>
172
- ```
173
-
174
- → `{REFERENCES_DIR}/shared-prompt-sections.md` § 8 참조
175
-
176
- ---
177
-
178
- ## 4. 제약사항 및 금지사항
179
-
180
- ### 실행 순서 제약
181
- - ALWAYS create result report BEFORE git commit
182
- - NEVER commit without result file
183
- - NEVER use `git commit --amend` — 각 TASK는 정확히 1개 커밋만 생성
184
- - 커밋 해시는 task-result XML로만 반환 (result.md에 기록 금지)
185
-
186
- ### Gate Check 제약
187
- - progress.md 없으면 즉시 FAIL 반환
188
- - Status: COMPLETED 아니면 즉시 FAIL 반환
189
- - Files changed 없으면 즉시 FAIL 반환
190
-
191
- ### WORK-LIST.md 규칙
192
- - 마지막 TASK 완료 시 WORK-LIST.md의 해당 WORK 행 상태를 `IN_PROGRESS` → `DONE`으로 변경 (행 제거 및 WORK 폴더 이동 금지)
193
-
194
- ### Output Language Rule
195
- → `shared-prompt-sections.md` § 1 참조
196
-
197
- committer 고유 규칙:
198
- - 섹션 헤더(##)도 resolved language로 작성 (§ 4 언어별 매핑 참조)
199
- - Git commit type prefix (`feat`, `fix` 등) → 항상 영어
200
-
201
- ### 보고 형식
202
- - ALWAYS return XML task-result format
@@ -1,94 +0,0 @@
1
- # Context Handoff Policy
2
-
3
- 에이전트 간 슬라이딩 윈도우 컨텍스트 전달 규칙.
4
-
5
- ## 슬라이딩 윈도우
6
-
7
- | 단계 거리 | Detail Level | 규칙 |
8
- |---------|-------------|------|
9
- | 직전 (1단계) | `FULL` | 4개 필드 모두 전달 |
10
- | 2단계 전 | `SUMMARY` | `what` 필드만 1-3줄 |
11
- | 3단계 이상 | `DROP` | 생략 |
12
-
13
- ## Context-Handoff 4-필드
14
-
15
- | 필드 | FULL | SUMMARY | 내용 |
16
- |------|:----:|:-------:|------|
17
- | `what` | ✅ | ✅ | 변경/검증 사항 요약 (2-5줄) |
18
- | `why` | ✅ | ❌ | 의사결정 근거 (2-4줄) |
19
- | `caution` | ✅ | ❌ | 주의사항, 조건부 완료 (1-3줄) |
20
- | `incomplete` | ✅ | ❌ | 미완료 사항 (1-2줄, 없으면 "None") |
21
-
22
- ## 파이프라인 단계별 입/출력
23
-
24
- ### Builder
25
-
26
- 입력: TASK spec + 의존 TASK result.md context-handoff (슬라이딩 윈도우)
27
-
28
- 출력:
29
- ```xml
30
- <task-result status="PASS|FAIL">
31
- <context-handoff from="builder" detail-level="FULL">
32
- <what>변경 사항</what><why>근거</why><caution>주의</caution><incomplete>미완료</incomplete>
33
- </context-handoff>
34
- </task-result>
35
- ```
36
-
37
- ### Verifier
38
-
39
- 입력: TASK spec + Builder context-handoff (FULL)
40
-
41
- 출력:
42
- ```xml
43
- <task-result status="PASS|FAIL">
44
- <context-handoff from="verifier" detail-level="FULL">
45
- <what>검증 결과</what><why>판정 근거</why><caution>수동 확인</caution><incomplete>검증 불가 항목</incomplete>
46
- </context-handoff>
47
- </task-result>
48
- ```
49
-
50
- ### Committer
51
-
52
- 입력: Verifier context-handoff (FULL) + Builder context-handoff (SUMMARY) + progress.md (gate)
53
-
54
- 처리:
55
- 1. progress.md gate: 존재 + Status=COMPLETED + Files changed 비어있지 않음
56
- 2. Gate 통과 → result.md 작성 + git commit
57
- 3. Gate 실패 → FAIL 반환 (scheduler 재시도 트리거)
58
-
59
- 출력: → `{REFERENCES_DIR}/file-content-schema.md` § 4 참조
60
-
61
- ## TASK 간 의존성 전달
62
-
63
- - 직전 의존 TASK: context-handoff **FULL** (4개 필드)
64
- - 2단계 전: **SUMMARY** (what만)
65
- - 3단계 이상: **DROP**
66
-
67
- ## Scheduler 디스패치
68
-
69
- ```xml
70
- <!-- Verifier: Builder FULL -->
71
- <dispatch to="verifier">
72
- <context-handoff from="builder" detail-level="FULL">...</context-handoff>
73
- </dispatch>
74
-
75
- <!-- Committer: Verifier FULL + Builder SUMMARY -->
76
- <dispatch to="committer">
77
- <context-handoff from="verifier" detail-level="FULL">...</context-handoff>
78
- <context-handoff from="builder" detail-level="SUMMARY"><what>...</what></context-handoff>
79
- </dispatch>
80
-
81
- <!-- 다음 TASK Builder: 의존성 거리 적용 -->
82
- <dispatch to="builder" task="TASK-YY">
83
- <previous-results>
84
- <context-handoff from="prev-task" task="TASK-XX" detail-level="FULL">...</context-handoff>
85
- <context-handoff from="prev-prev-task" task="TASK-WW" detail-level="SUMMARY"><what>...</what></context-handoff>
86
- </previous-results>
87
- </dispatch>
88
- ```
89
-
90
- ## Committer 재시도
91
-
92
- 1. 실패 원인: progress.md 미존재 / Status≠COMPLETED / Files changed 없음
93
- 2. 기존 progress.md 포함하여 builder 재디스패치
94
- 3. 최대 2회 재시도 (총 3회). 3회 실패 → TASK FAILED, 파이프라인 중단
@@ -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()` 인식 불가.