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.
- 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 +1 -1
- 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/context-policy.md +0 -94
- 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/shared-prompt-sections.md +0 -250
- 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/file-content-schema.md +0 -249
- package/skills/sdd-pipeline/references/shared-prompt-sections.md +0 -250
- package/skills/sdd-pipeline/references/work-activity-log.md +0 -47
- package/skills/sdd-pipeline/references/xml-schema.md +0 -159
package/agents/ko/builder.md
DELETED
|
@@ -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
|
-
- 파일명, 경로, 명령어 → 항상 영어
|
package/agents/ko/committer.md
DELETED
|
@@ -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()` 인식 불가.
|