@silbaram/artifact-driven-agent 0.1.5 → 0.1.6
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/README.md +294 -661
- package/bin/cli.js +8 -1
- package/core/artifacts/decision.md +1 -1
- package/core/artifacts/plan.md +5 -5
- package/core/artifacts/project.md +4 -2
- package/core/artifacts/sprints/_template/docs/release-notes.md +37 -0
- package/core/artifacts/sprints/_template/meta.md +54 -0
- package/core/artifacts/sprints/_template/retrospective.md +50 -0
- package/core/artifacts/sprints/_template/review-reports/review-template.md +49 -0
- package/core/artifacts/sprints/_template/tasks/task-template.md +43 -0
- package/core/roles/analyzer.md +6 -33
- package/core/roles/developer.md +69 -99
- package/core/roles/documenter.md +293 -0
- package/core/roles/manager.md +391 -341
- package/core/roles/planner.md +61 -79
- package/core/roles/reviewer.md +71 -129
- package/core/rules/document-priority.md +40 -38
- package/core/rules/escalation.md +15 -14
- package/core/rules/iteration.md +24 -24
- package/core/rules/rfc.md +1 -1
- package/core/rules/rollback.md +4 -4
- package/package.json +1 -1
- package/src/commands/run.js +95 -46
- package/src/commands/sessions.js +21 -1
- package/src/commands/sprint.js +262 -0
- package/src/commands/validate.js +133 -64
- package/src/commands/validate.test.js +84 -0
- package/src/utils/files.js +134 -134
- package/src/utils/sessionState.js +30 -11
- package/core/artifacts/architecture-options.md +0 -85
- package/core/artifacts/backlog.md +0 -177
- package/core/artifacts/current-sprint.md +0 -125
- package/core/artifacts/qa-report.md +0 -104
- package/core/artifacts/review-report.md +0 -103
- package/core/roles/architect.md +0 -270
- package/core/roles/qa.md +0 -306
- package/core/rules/role-state-protocol.md +0 -281
- package/core/rules/session-state.md +0 -255
- package/templates/cli/roles/cli-developer.md +0 -243
- package/templates/game/roles/game-logic.md +0 -198
- package/templates/game/roles/rendering.md +0 -142
- package/templates/library/roles/library-developer.md +0 -184
- package/templates/web-dev/roles/backend.md +0 -139
- package/templates/web-dev/roles/frontend.md +0 -166
package/bin/cli.js
CHANGED
|
@@ -9,6 +9,7 @@ import { sessions } from '../src/commands/sessions.js';
|
|
|
9
9
|
import { logs } from '../src/commands/logs.js';
|
|
10
10
|
import { run } from '../src/commands/run.js';
|
|
11
11
|
import { interactive } from '../src/commands/interactive.js';
|
|
12
|
+
import sprint from '../src/commands/sprint.js';
|
|
12
13
|
import { createRequire } from 'node:module';
|
|
13
14
|
|
|
14
15
|
const require = createRequire(import.meta.url);
|
|
@@ -56,6 +57,12 @@ program
|
|
|
56
57
|
.description('세션 로그 확인')
|
|
57
58
|
.action(logs);
|
|
58
59
|
|
|
60
|
+
// Sprint command
|
|
61
|
+
program
|
|
62
|
+
.command('sprint <action> [tasks...]')
|
|
63
|
+
.description('스프린트 관리 (create, add, close, list)')
|
|
64
|
+
.action(sprint);
|
|
65
|
+
|
|
59
66
|
// Run command
|
|
60
67
|
program
|
|
61
68
|
.command('run <role> <tool>')
|
|
@@ -68,7 +75,7 @@ const args = process.argv.slice(2);
|
|
|
68
75
|
if (args.length === 0) {
|
|
69
76
|
// 인자 없으면 대화형 모드
|
|
70
77
|
interactive();
|
|
71
|
-
} else if (args.length === 2 && !args[0].startsWith('-') && !['setup', 'status', 'reset', 'validate', 'sessions', 'logs', 'run'].includes(args[0])) {
|
|
78
|
+
} else if (args.length === 2 && !args[0].startsWith('-') && !['setup', 'status', 'reset', 'validate', 'sessions', 'logs', 'run', 'sprint'].includes(args[0])) {
|
|
72
79
|
// 두 개의 인자가 명령어가 아니면 role tool로 간주
|
|
73
80
|
run(args[0], args[1]);
|
|
74
81
|
} else {
|
package/core/artifacts/plan.md
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
### 연결성 체크 (Linkage)
|
|
28
28
|
- [ ] 각 기능이 최소 1개 이상의 Task로 분해됨
|
|
29
|
-
- [ ] 모든 Task가 backlog
|
|
29
|
+
- [ ] 모든 Task가 backlog/ 디렉토리에 등록됨
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
| TBD-001 | [항목] | [설명] | [시점] |
|
|
126
126
|
| TBD-002 | [항목] | [설명] | [시점] |
|
|
127
127
|
|
|
128
|
-
> ⚠️ 미확정 항목 3개 초과 시
|
|
128
|
+
> ⚠️ 미확정 항목 3개 초과 시 개발 진행 전 명확화 필요
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -182,6 +182,6 @@
|
|
|
182
182
|
|
|
183
183
|
plan.md가 Confirmed 상태가 되면:
|
|
184
184
|
|
|
185
|
-
1.
|
|
186
|
-
2. **Planner**: backlog.md
|
|
187
|
-
3.
|
|
185
|
+
1. **사용자**: project.md 작성 (기술 스택 결정, 선택사항)
|
|
186
|
+
2. **Planner**: backlog/ 디렉토리에 Task 분해 (task-NNN.md 파일 생성)
|
|
187
|
+
3. **사용자**: 첫 스프린트 계획 (ada sprint create)
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
> 변경 시 RFC(Request for Change) 절차 필수.
|
|
5
5
|
> 모든 개발자는 이 문서의 규칙을 따릅니다.
|
|
6
6
|
|
|
7
|
+
**작성 주체:** 사용자와 팀이 함께 프로젝트 초기에 작성합니다.
|
|
8
|
+
**작성 시점:** plan.md 확정 후, 개발 시작 전에 작성하여 Frozen 상태로 전환합니다.
|
|
9
|
+
|
|
7
10
|
---
|
|
8
11
|
|
|
9
12
|
## ✅ 문서 완성도 체크리스트
|
|
@@ -23,7 +26,6 @@
|
|
|
23
26
|
- [ ] 금지 사항이 명확히 정의됨
|
|
24
27
|
|
|
25
28
|
### 연결성 체크 (Linkage)
|
|
26
|
-
- [ ] architecture-options.md의 선택이 반영됨
|
|
27
29
|
- [ ] plan.md의 비기능 요구사항과 일관성 확인됨
|
|
28
30
|
|
|
29
31
|
---
|
|
@@ -64,7 +66,7 @@
|
|
|
64
66
|
|
|
65
67
|
## 1. 선택 요약 (Decision Summary)
|
|
66
68
|
|
|
67
|
-
>
|
|
69
|
+
> 프로젝트 기술 스택 및 아키텍처 선택 사항
|
|
68
70
|
|
|
69
71
|
| 항목 | 선택 | 근거 |
|
|
70
72
|
|------|------|------|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Release Notes - Sprint N
|
|
2
|
+
|
|
3
|
+
## 버전: v1.N.0
|
|
4
|
+
|
|
5
|
+
## 날짜: YYYY-MM-DD
|
|
6
|
+
|
|
7
|
+
### 새로운 기능
|
|
8
|
+
|
|
9
|
+
- [기능명]: [설명]
|
|
10
|
+
- [기능명]: [설명]
|
|
11
|
+
|
|
12
|
+
### 개선 사항
|
|
13
|
+
|
|
14
|
+
- [개선 내용]
|
|
15
|
+
- [개선 내용]
|
|
16
|
+
|
|
17
|
+
### 버그 수정
|
|
18
|
+
|
|
19
|
+
- task-NNN: [버그 설명] → [수정 내용]
|
|
20
|
+
- task-NNN: [버그 설명] → [수정 내용]
|
|
21
|
+
|
|
22
|
+
### Breaking Changes
|
|
23
|
+
|
|
24
|
+
> ⚠️ 기존 사용자에게 영향있는 변경
|
|
25
|
+
|
|
26
|
+
- [변경 내용]
|
|
27
|
+
- Migration: [마이그레이션 가이드]
|
|
28
|
+
|
|
29
|
+
### 알려진 이슈
|
|
30
|
+
|
|
31
|
+
- [알려진 문제와 임시 해결책]
|
|
32
|
+
|
|
33
|
+
### 의존성 변경
|
|
34
|
+
|
|
35
|
+
- 추가: [라이브러리명@버전]
|
|
36
|
+
- 업데이트: [라이브러리명] v1.0 → v2.0
|
|
37
|
+
- 제거: [라이브러리명]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Sprint N 메타정보
|
|
2
|
+
|
|
3
|
+
| 항목 | 값 |
|
|
4
|
+
|------|-----|
|
|
5
|
+
| 스프린트 번호 | N |
|
|
6
|
+
| 상태 | active / completed |
|
|
7
|
+
| 시작일 | YYYY-MM-DD |
|
|
8
|
+
| 종료 예정 | YYYY-MM-DD (또는 완료일) |
|
|
9
|
+
| 목표 | [스프린트 목표 설명] |
|
|
10
|
+
|
|
11
|
+
## Task 요약
|
|
12
|
+
|
|
13
|
+
| Task | 상태 | 담당 | 우선순위 | 크기 |
|
|
14
|
+
|------|:----:|------|:--------:|:----:|
|
|
15
|
+
| task-NNN | BACKLOG | - | P0/P1/P2 | S/M/L |
|
|
16
|
+
|
|
17
|
+
**상태 범례:**
|
|
18
|
+
- BACKLOG: 스프린트에 할당됨, 작업 미시작
|
|
19
|
+
- IN_DEV: 개발 중
|
|
20
|
+
- DONE: 완료
|
|
21
|
+
- REJECTED: 리뷰 거부 (재작업 필요)
|
|
22
|
+
|
|
23
|
+
## 이월된 Task
|
|
24
|
+
|
|
25
|
+
> 이전 스프린트에서 미완료된 Task
|
|
26
|
+
|
|
27
|
+
| Task | 원 스프린트 | 이월 사유 |
|
|
28
|
+
|------|------------|----------|
|
|
29
|
+
| - | - | - |
|
|
30
|
+
|
|
31
|
+
## 차단 사항
|
|
32
|
+
|
|
33
|
+
> 현재 진행을 막고 있는 이슈
|
|
34
|
+
|
|
35
|
+
| Task | 차단 사유 | 담당자 | 상태 |
|
|
36
|
+
|------|----------|--------|------|
|
|
37
|
+
| - | - | - | - |
|
|
38
|
+
|
|
39
|
+
## 스프린트 회고 (완료 시 작성)
|
|
40
|
+
|
|
41
|
+
### 완료된 Task
|
|
42
|
+
- task-NNN: [설명]
|
|
43
|
+
|
|
44
|
+
### 미완료 Task (이월/취소)
|
|
45
|
+
- task-NNN: [사유]
|
|
46
|
+
|
|
47
|
+
### 잘된 점
|
|
48
|
+
- [내용]
|
|
49
|
+
|
|
50
|
+
### 개선할 점
|
|
51
|
+
- [내용]
|
|
52
|
+
|
|
53
|
+
### 다음 스프린트 제안
|
|
54
|
+
- [제안]
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Sprint N 회고
|
|
2
|
+
|
|
3
|
+
## 기간
|
|
4
|
+
- 시작: YYYY-MM-DD
|
|
5
|
+
- 종료: YYYY-MM-DD
|
|
6
|
+
|
|
7
|
+
## 목표 달성도
|
|
8
|
+
|
|
9
|
+
| 목표 | 달성 여부 | 비고 |
|
|
10
|
+
|------|:--------:|------|
|
|
11
|
+
| [목표 1] | ✅ / ⚠️ / ❌ | [설명] |
|
|
12
|
+
| [목표 2] | ✅ / ⚠️ / ❌ | [설명] |
|
|
13
|
+
|
|
14
|
+
## 완료된 Task (N개)
|
|
15
|
+
|
|
16
|
+
- task-001: [설명]
|
|
17
|
+
- task-002: [설명]
|
|
18
|
+
|
|
19
|
+
## 미완료 Task (N개)
|
|
20
|
+
|
|
21
|
+
| Task | 사유 | 처리 |
|
|
22
|
+
|------|------|------|
|
|
23
|
+
| task-NNN | [사유] | 이월 / 취소 |
|
|
24
|
+
|
|
25
|
+
## 잘된 점 (Keep)
|
|
26
|
+
|
|
27
|
+
- [구체적 내용]
|
|
28
|
+
- [구체적 내용]
|
|
29
|
+
|
|
30
|
+
## 개선할 점 (Problem)
|
|
31
|
+
|
|
32
|
+
- [구체적 문제점]
|
|
33
|
+
- [구체적 문제점]
|
|
34
|
+
|
|
35
|
+
## 시도할 것 (Try)
|
|
36
|
+
|
|
37
|
+
- [다음 스프린트에서 시도할 개선 방안]
|
|
38
|
+
- [다음 스프린트에서 시도할 개선 방안]
|
|
39
|
+
|
|
40
|
+
## 메트릭
|
|
41
|
+
|
|
42
|
+
- 계획 Task 수: N개
|
|
43
|
+
- 완료 Task 수: N개
|
|
44
|
+
- 완료율: X%
|
|
45
|
+
- 이월 Task 수: N개
|
|
46
|
+
|
|
47
|
+
## 다음 스프린트 제안
|
|
48
|
+
|
|
49
|
+
- [제안 1]
|
|
50
|
+
- [제안 2]
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Review Report: task-NNN
|
|
2
|
+
|
|
3
|
+
## Task 정보
|
|
4
|
+
- Task: task-NNN [Task 이름]
|
|
5
|
+
- Reviewer: reviewer
|
|
6
|
+
- Review Date: YYYY-MM-DD
|
|
7
|
+
|
|
8
|
+
## 수용 조건 체크
|
|
9
|
+
|
|
10
|
+
- [x] 조건 1 - 충족
|
|
11
|
+
- [x] 조건 2 - 충족
|
|
12
|
+
- [ ] 조건 3 - 미충족 (사유: ...)
|
|
13
|
+
|
|
14
|
+
## 기술 품질 체크
|
|
15
|
+
|
|
16
|
+
- [x] project.md 규칙 준수 (있으면)
|
|
17
|
+
- [x] 코드 스타일 준수
|
|
18
|
+
- [x] 테스트 작성 (필요 시)
|
|
19
|
+
- [ ] 문제 항목 (있으면)
|
|
20
|
+
|
|
21
|
+
## 판정: PASS / REJECT / WARN
|
|
22
|
+
|
|
23
|
+
**PASS** - 모든 조건 충족
|
|
24
|
+
|
|
25
|
+
또는
|
|
26
|
+
|
|
27
|
+
**REJECT** - 수용 조건 미충족
|
|
28
|
+
- 사유 1: [구체적 설명]
|
|
29
|
+
- 사유 2: [구체적 설명]
|
|
30
|
+
|
|
31
|
+
또는
|
|
32
|
+
|
|
33
|
+
**WARN** - 개선 권장
|
|
34
|
+
- 경미한 문제: [설명]
|
|
35
|
+
- 개선 제안: [내용]
|
|
36
|
+
|
|
37
|
+
## 코멘트
|
|
38
|
+
|
|
39
|
+
- [리뷰어의 전반적인 의견]
|
|
40
|
+
- [개선 제안 또는 칭찬]
|
|
41
|
+
|
|
42
|
+
## 수정 필요 사항 (REJECT인 경우)
|
|
43
|
+
|
|
44
|
+
1. [구체적 수정 지시]
|
|
45
|
+
2. [구체적 수정 지시]
|
|
46
|
+
|
|
47
|
+
### 참고
|
|
48
|
+
- project.md 섹션 X.X (있으면)
|
|
49
|
+
- 수용 조건 N번
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# TASK-NNN: [Task 이름]
|
|
2
|
+
|
|
3
|
+
| 항목 | 값 |
|
|
4
|
+
|------|-----|
|
|
5
|
+
| 상태 | BACKLOG / IN_DEV / DONE / REJECTED |
|
|
6
|
+
| 우선순위 | P0 / P1 / P2 |
|
|
7
|
+
| 크기 | S / M / L |
|
|
8
|
+
| 출처 | F001 (plan.md 기능 ID) |
|
|
9
|
+
| 담당 | - / developer |
|
|
10
|
+
| 의존성 | - 또는 task-NNN |
|
|
11
|
+
|
|
12
|
+
## 수용 조건 (Acceptance Criteria)
|
|
13
|
+
|
|
14
|
+
- [ ] 조건 1
|
|
15
|
+
- [ ] 조건 2
|
|
16
|
+
- [ ] 조건 3
|
|
17
|
+
|
|
18
|
+
## 구현 노트 (Developer 작성)
|
|
19
|
+
|
|
20
|
+
> Developer가 작업하면서 기록
|
|
21
|
+
|
|
22
|
+
- 구현 방식 설명
|
|
23
|
+
- 기술적 결정 사항
|
|
24
|
+
- 알려진 제약사항
|
|
25
|
+
|
|
26
|
+
## 이슈 (있으면)
|
|
27
|
+
|
|
28
|
+
> 작업 중 발견된 문제나 질문
|
|
29
|
+
|
|
30
|
+
### 이슈 제목
|
|
31
|
+
- 상황: [설명]
|
|
32
|
+
- 영향: [영향도]
|
|
33
|
+
- 제안: [해결 방안]
|
|
34
|
+
|
|
35
|
+
→ 사용자 승인 대기 / 해결됨
|
|
36
|
+
|
|
37
|
+
## 변경 이력
|
|
38
|
+
|
|
39
|
+
| 날짜 | 상태 변경 | 작성자 | 비고 |
|
|
40
|
+
|------|----------|--------|------|
|
|
41
|
+
| YYYY-MM-DD | BACKLOG 생성 | planner | 초기 생성 |
|
|
42
|
+
| YYYY-MM-DD | IN_DEV | developer | 작업 시작 |
|
|
43
|
+
| YYYY-MM-DD | DONE | developer | 구현 완료 |
|
package/core/roles/analyzer.md
CHANGED
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
[다음 단계]
|
|
87
87
|
- 문서 검토 후 수정이 필요하면 알려주세요
|
|
88
88
|
- 새 기능 추가: Planner 세션 시작
|
|
89
|
-
- 기술 변경:
|
|
90
|
-
- 바로 개발:
|
|
89
|
+
- 기술 변경: 사용자가 project.md 수정 또는 RFC 작성
|
|
90
|
+
- 바로 개발: 사용자가 스프린트 시작 (ada sprint create)
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
---
|
|
@@ -188,13 +188,13 @@ Planner가 plan.md와 backlog.md를 작성합니다."
|
|
|
188
188
|
|
|
189
189
|
### 기술 스택 변경 시
|
|
190
190
|
```
|
|
191
|
-
"기술 변경이 필요하면
|
|
191
|
+
"기술 변경이 필요하면 사용자가 project.md를 수정하거나 RFC를 작성하세요."
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
### 바로 개발 진행 시
|
|
195
195
|
```
|
|
196
196
|
"project.md 검토가 완료되면 Planner에게 plan.md 작성을 요청하거나,
|
|
197
|
-
|
|
197
|
+
사용자가 바로 스프린트를 시작할 수 있습니다 (ada sprint create)."
|
|
198
198
|
```
|
|
199
199
|
|
|
200
200
|
---
|
|
@@ -236,35 +236,8 @@ Analyzer: ./my-project 분석을 시작합니다.
|
|
|
236
236
|
|
|
237
237
|
[다음 단계]
|
|
238
238
|
- 새 기능 추가 → Planner 세션
|
|
239
|
-
- 기술 변경 →
|
|
240
|
-
- 바로 개발 →
|
|
239
|
+
- 기술 변경 → 사용자가 project.md 수정 또는 RFC 작성
|
|
240
|
+
- 바로 개발 → 사용자가 스프린트 시작 (ada sprint create)
|
|
241
241
|
```
|
|
242
242
|
|
|
243
243
|
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## 12. 멀티 세션 상태 관리
|
|
247
|
-
|
|
248
|
-
> 📖 상세 규칙: `core/rules/role-state-protocol.md` 참조
|
|
249
|
-
|
|
250
|
-
### 필수 동작
|
|
251
|
-
|
|
252
|
-
| 시점 | 동작 |
|
|
253
|
-
|------|------|
|
|
254
|
-
| 세션 시작 | `.ada-status.json`에 자신 등록 |
|
|
255
|
-
| 질문 발생 | `pendingQuestions`에 등록, 응답 대기 |
|
|
256
|
-
| 작업 진행 | `taskProgress` 업데이트 |
|
|
257
|
-
| 세션 종료 | `activeSessions`에서 제거 |
|
|
258
|
-
|
|
259
|
-
### CLI 예시
|
|
260
|
-
|
|
261
|
-
```
|
|
262
|
-
━━━━━━━━━━━━━━━━━━━━━━
|
|
263
|
-
📨 질문 등록됨 [QA001]
|
|
264
|
-
━━━━━━━━━━━━━━━━━━━━━━
|
|
265
|
-
질문: project.md에 명시되지 않은 라이브러리입니다. 허용할까요?
|
|
266
|
-
옵션: (y) 허용 / (n) 거부
|
|
267
|
-
|
|
268
|
-
Manager 세션에서 응답 가능합니다.
|
|
269
|
-
또는 이 터미널에서 응답: (y/n): _
|
|
270
|
-
```
|
package/core/roles/developer.md
CHANGED
|
@@ -17,22 +17,18 @@ Task 단위로 작업하며, 스프린트 범위를 벗어나지 않는다.
|
|
|
17
17
|
|
|
18
18
|
## 2. 입력 문서 (Mandatory)
|
|
19
19
|
|
|
20
|
-
- ai-dev-team/artifacts/plan.md
|
|
21
|
-
- ai-dev-team/artifacts/project.md
|
|
22
|
-
- ai-dev-team/artifacts/
|
|
23
|
-
- ai-dev-team/artifacts/
|
|
24
|
-
|
|
25
|
-
(선택)
|
|
26
|
-
- ai-dev-team/artifacts/architecture-options.md (배경 참고용)
|
|
27
|
-
- ai-dev-team/artifacts/decision.md (Manager 지시사항이 있으면 우선)
|
|
20
|
+
- ai-dev-team/artifacts/plan.md (전체 요구사항)
|
|
21
|
+
- ai-dev-team/artifacts/project.md (기술 기준, 있으면)
|
|
22
|
+
- ai-dev-team/artifacts/sprints/sprint-N/meta.md (현재 스프린트)
|
|
23
|
+
- ai-dev-team/artifacts/sprints/sprint-N/tasks/task-NNN.md (내 Task)
|
|
28
24
|
|
|
29
25
|
---
|
|
30
26
|
|
|
31
27
|
## 3. 산출물 (Outputs)
|
|
32
28
|
|
|
33
|
-
- 소스 코드 (
|
|
34
|
-
-
|
|
35
|
-
-
|
|
29
|
+
- 소스 코드 (프로젝트 루트 디렉토리)
|
|
30
|
+
- Task 파일 업데이트 (구현 노트, 상태 변경)
|
|
31
|
+
- 인터페이스 문서 (프로젝트 유형에 따라, API/UI 문서 등)
|
|
36
32
|
|
|
37
33
|
---
|
|
38
34
|
|
|
@@ -48,21 +44,22 @@ Task 단위로 작업하며, 스프린트 범위를 벗어나지 않는다.
|
|
|
48
44
|
|
|
49
45
|
### 작업 시작 전 체크리스트
|
|
50
46
|
|
|
51
|
-
1.
|
|
52
|
-
2.
|
|
53
|
-
3.
|
|
54
|
-
4.
|
|
47
|
+
1. 현재 스프린트 디렉토리 확인 (sprints/sprint-N/)
|
|
48
|
+
2. meta.md에서 내 Task 확인
|
|
49
|
+
3. tasks/task-NNN.md에서 수용 조건 확인
|
|
50
|
+
4. 의존성 있는 Task가 완료되었는지 확인
|
|
51
|
+
5. project.md 기술 규칙 확인 (있으면)
|
|
55
52
|
|
|
56
53
|
### 작업 범위 제한
|
|
57
54
|
|
|
58
55
|
```
|
|
59
56
|
✅ 허용
|
|
60
|
-
-
|
|
57
|
+
- 현재 스프린트의 내 Task만
|
|
61
58
|
- 해당 Task의 수용 조건 구현
|
|
62
|
-
- Task
|
|
59
|
+
- Task 파일에 구현 노트 작성
|
|
63
60
|
|
|
64
61
|
❌ 금지
|
|
65
|
-
-
|
|
62
|
+
- 다른 스프린트의 Task
|
|
66
63
|
- "김에" 리팩토링
|
|
67
64
|
- 수용 조건 외 기능 추가
|
|
68
65
|
- 다른 Task 영역 수정
|
|
@@ -70,21 +67,33 @@ Task 단위로 작업하며, 스프린트 범위를 벗어나지 않는다.
|
|
|
70
67
|
|
|
71
68
|
### Task 상태 전환
|
|
72
69
|
|
|
73
|
-
|
|
74
|
-
IN_SPRINT → IN_DEV : 작업 시작 시
|
|
75
|
-
IN_DEV → IN_REVIEW : 구현 완료 시
|
|
76
|
-
```
|
|
70
|
+
작업 시작 시 Task 파일 업데이트:
|
|
77
71
|
|
|
78
|
-
|
|
72
|
+
```markdown
|
|
73
|
+
| 항목 | 값 |
|
|
74
|
+
|------|-----|
|
|
75
|
+
| 상태 | IN_DEV | ← 변경
|
|
76
|
+
| 담당 | developer | ← 추가
|
|
77
|
+
```
|
|
79
78
|
|
|
80
|
-
|
|
79
|
+
작업 완료 시:
|
|
81
80
|
|
|
82
81
|
```markdown
|
|
82
|
+
| 항목 | 값 |
|
|
83
|
+
|------|-----|
|
|
84
|
+
| 상태 | DONE | ← IN_DEV → DONE
|
|
85
|
+
|
|
86
|
+
## 구현 노트
|
|
87
|
+
|
|
88
|
+
- 구현 방식 설명
|
|
89
|
+
- 기술적 결정 사항
|
|
90
|
+
- 알려진 제약사항
|
|
91
|
+
|
|
83
92
|
## 변경 이력
|
|
84
|
-
|
|
|
85
|
-
|
|
86
|
-
|
|
|
87
|
-
|
|
|
93
|
+
| 날짜 | 상태 변경 | 작성자 | 비고 |
|
|
94
|
+
|------|----------|--------|------|
|
|
95
|
+
| 2024-01-15 | IN_DEV | developer | 작업 시작 |
|
|
96
|
+
| 2024-01-16 | DONE | developer | 구현 완료 |
|
|
88
97
|
```
|
|
89
98
|
|
|
90
99
|
---
|
|
@@ -123,7 +132,7 @@ IN_DEV → IN_REVIEW : 구현 완료 시
|
|
|
123
132
|
- ❌ **코드 리뷰 수행 (Reviewer 역할)**
|
|
124
133
|
- ❌ **QA 테스트 수행 (QA 역할)**
|
|
125
134
|
|
|
126
|
-
> ⚠️ **중요**: Developer는
|
|
135
|
+
> ⚠️ **중요**: Developer는 현재 스프린트 meta.md에 할당된 Task의 코드만 구현합니다.
|
|
127
136
|
> 다른 역할의 작업은 절대 수행하지 않습니다.
|
|
128
137
|
|
|
129
138
|
---
|
|
@@ -133,34 +142,36 @@ IN_DEV → IN_REVIEW : 구현 완료 시
|
|
|
133
142
|
Task 완료 = 다음 조건 충족:
|
|
134
143
|
|
|
135
144
|
- [ ] 수용 조건 100% 구현
|
|
136
|
-
- [ ] project.md 규칙 준수
|
|
137
|
-
- [ ]
|
|
138
|
-
- [ ] 테스트 작성 (
|
|
145
|
+
- [ ] project.md 규칙 준수 (있으면)
|
|
146
|
+
- [ ] Task 파일에 구현 노트 작성
|
|
147
|
+
- [ ] 테스트 작성 (필요 시)
|
|
139
148
|
- [ ] 코드 정리 (린트 통과)
|
|
140
|
-
- [ ] Task 상태 →
|
|
149
|
+
- [ ] Task 상태 → DONE
|
|
141
150
|
|
|
142
151
|
---
|
|
143
152
|
|
|
144
153
|
## 8. 에스컬레이션
|
|
145
154
|
|
|
146
|
-
다음 상황에서
|
|
155
|
+
다음 상황에서 **Task 파일에 이슈 기록** 또는 사용자에게 질문:
|
|
147
156
|
|
|
148
157
|
| 상황 | 조치 |
|
|
149
158
|
|------|------|
|
|
150
|
-
| project.md에 없는 기술 필요 |
|
|
151
|
-
| 요구사항 모호 |
|
|
152
|
-
| 예상보다 규모 큼 |
|
|
153
|
-
| 다른 Task와 충돌 |
|
|
159
|
+
| project.md에 없는 기술 필요 | 사용자에게 질문 |
|
|
160
|
+
| 요구사항 모호 | Task 파일에 질문 기록, 사용자에게 확인 |
|
|
161
|
+
| 예상보다 규모 큼 | Task 파일에 기록, 분할 제안 |
|
|
162
|
+
| 다른 Task와 충돌 | 사용자에게 보고 |
|
|
154
163
|
|
|
155
|
-
###
|
|
164
|
+
### 이슈 기록 형식 (Task 파일 내)
|
|
156
165
|
|
|
157
166
|
```markdown
|
|
158
|
-
##
|
|
167
|
+
## 이슈
|
|
168
|
+
|
|
169
|
+
### 기술 스택 추가 필요
|
|
170
|
+
- 상황: Redis 캐시가 필요함
|
|
171
|
+
- 영향: 성능 개선
|
|
172
|
+
- 제안: project.md에 Redis 추가
|
|
159
173
|
|
|
160
|
-
|
|
161
|
-
- 유형: BLOCK / WARN
|
|
162
|
-
- 상황: [구체적 설명]
|
|
163
|
-
- 필요 조치: [제안]
|
|
174
|
+
→ 사용자 승인 대기
|
|
164
175
|
```
|
|
165
176
|
|
|
166
177
|
---
|
|
@@ -173,11 +184,11 @@ Task 구현 완료 후:
|
|
|
173
184
|
"TASK-XXX 구현을 완료했습니다.
|
|
174
185
|
|
|
175
186
|
✅ 수용 조건 충족
|
|
176
|
-
✅
|
|
177
|
-
✅
|
|
187
|
+
✅ 구현 노트 작성
|
|
188
|
+
✅ 코드 정리
|
|
178
189
|
|
|
179
|
-
Task 상태를
|
|
180
|
-
Reviewer
|
|
190
|
+
Task 상태를 DONE으로 변경했습니다.
|
|
191
|
+
Reviewer 세션을 시작하여 리뷰를 진행하세요."
|
|
181
192
|
```
|
|
182
193
|
|
|
183
194
|
---
|
|
@@ -191,63 +202,22 @@ Reviewer가 리뷰를 진행할 수 있습니다."
|
|
|
191
202
|
|
|
192
203
|
📋 문서 확인
|
|
193
204
|
✅ plan.md - 확인됨
|
|
194
|
-
✅ project.md -
|
|
195
|
-
✅
|
|
205
|
+
✅ project.md - 확인됨 (있으면)
|
|
206
|
+
✅ sprints/sprint-2/ - 현재 스프린트
|
|
196
207
|
|
|
197
|
-
📌 내 Task (
|
|
198
|
-
-
|
|
199
|
-
-
|
|
208
|
+
📌 내 Task (sprints/sprint-2/meta.md 기준)
|
|
209
|
+
- task-004: 로그인 API 구현 - IN_DEV (내 작업)
|
|
210
|
+
- task-005: 회원가입 API - IN_SPRINT (대기)
|
|
200
211
|
|
|
201
|
-
현재 작업:
|
|
212
|
+
현재 작업: task-004
|
|
202
213
|
수용 조건:
|
|
203
|
-
- [ ]
|
|
204
|
-
- [ ]
|
|
205
|
-
- [ ]
|
|
214
|
+
- [ ] POST /api/auth/login 구현
|
|
215
|
+
- [ ] JWT 토큰 발급
|
|
216
|
+
- [ ] 실패 시 에러 응답
|
|
206
217
|
|
|
207
218
|
━━━━━━━━━━━━━━━━━━━━━━
|
|
208
219
|
|
|
209
|
-
|
|
220
|
+
task-004부터 시작하겠습니다.
|
|
210
221
|
```
|
|
211
222
|
|
|
212
223
|
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## 11. 멀티 세션 상태 관리
|
|
216
|
-
|
|
217
|
-
> 📖 상세 규칙: `core/rules/role-state-protocol.md` 참조
|
|
218
|
-
|
|
219
|
-
### 필수 동작
|
|
220
|
-
|
|
221
|
-
| 시점 | 동작 |
|
|
222
|
-
|------|------|
|
|
223
|
-
| 세션 시작 | `.ada-status.json`에 자신 등록 |
|
|
224
|
-
| 질문 발생 | `pendingQuestions`에 등록, 응답 대기 |
|
|
225
|
-
| 작업 진행 | `taskProgress` 업데이트 (진행률 %) |
|
|
226
|
-
| Task 완료 | 상태 변경, Reviewer에게 알림 |
|
|
227
|
-
| 세션 종료 | `activeSessions`에서 제거 |
|
|
228
|
-
|
|
229
|
-
### 진행 상황 업데이트
|
|
230
|
-
|
|
231
|
-
```json
|
|
232
|
-
{
|
|
233
|
-
"T001": {
|
|
234
|
-
"status": "IN_DEV",
|
|
235
|
-
"assignee": "developer",
|
|
236
|
-
"progress": 70,
|
|
237
|
-
"note": "API 구현 완료, 테스트 작성 중"
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 질문 예시
|
|
243
|
-
|
|
244
|
-
```
|
|
245
|
-
━━━━━━━━━━━━━━━━━━━━━━
|
|
246
|
-
📨 질문 등록됨 [QD001]
|
|
247
|
-
━━━━━━━━━━━━━━━━━━━━━━
|
|
248
|
-
질문: Redis 캐시를 적용할까요?
|
|
249
|
-
옵션: (y) 적용 / (n) 미적용
|
|
250
|
-
|
|
251
|
-
Manager 세션에서 응답 가능합니다.
|
|
252
|
-
또는 이 터미널에서 응답: (y/n): _
|
|
253
|
-
```
|