@silbaram/artifact-driven-agent 0.1.0
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 +456 -0
- package/ai-dev-team/.gitkeep +0 -0
- package/ai-dev-team/README.md +44 -0
- package/ai-dev-team/artifacts/.gitkeep +0 -0
- package/ai-dev-team/artifacts/features/_template/api.md +19 -0
- package/ai-dev-team/artifacts/features/_template/qa.md +16 -0
- package/ai-dev-team/artifacts/features/_template/review.md +14 -0
- package/ai-dev-team/artifacts/features/_template/spec.md +28 -0
- package/ai-dev-team/artifacts/features/_template/ui.md +14 -0
- package/ai-dev-team/artifacts/rfc/RFC-0000-template.md +49 -0
- package/ai-dev-team/roles/.gitkeep +0 -0
- package/ai-dev-team/rules/.gitkeep +0 -0
- package/bin/cli.js +75 -0
- package/core/artifacts/architecture-options.md +85 -0
- package/core/artifacts/backlog.md +177 -0
- package/core/artifacts/current-sprint.md +125 -0
- package/core/artifacts/decision.md +72 -0
- package/core/artifacts/plan.md +187 -0
- package/core/artifacts/project.md +191 -0
- package/core/artifacts/qa-report.md +104 -0
- package/core/artifacts/review-report.md +103 -0
- package/core/roles/architect.md +236 -0
- package/core/roles/developer.md +203 -0
- package/core/roles/manager.md +300 -0
- package/core/roles/planner.md +231 -0
- package/core/roles/qa.md +262 -0
- package/core/roles/reviewer.md +280 -0
- package/core/rules/document-priority.md +196 -0
- package/core/rules/escalation.md +171 -0
- package/core/rules/iteration.md +236 -0
- package/core/rules/rfc.md +31 -0
- package/core/rules/rollback.md +218 -0
- package/docs/feature-structure.md +36 -0
- package/examples/todo-app/README.md +23 -0
- package/examples/todo-app/artifacts/backlog.md +23 -0
- package/examples/todo-app/artifacts/plan.md +23 -0
- package/examples/todo-app/artifacts/project.md +23 -0
- package/package.json +49 -0
- package/src/commands/interactive.js +101 -0
- package/src/commands/logs.js +81 -0
- package/src/commands/reset.js +66 -0
- package/src/commands/run.js +202 -0
- package/src/commands/sessions.js +70 -0
- package/src/commands/setup.js +128 -0
- package/src/commands/status.js +76 -0
- package/src/commands/validate.js +219 -0
- package/src/index.js +12 -0
- package/src/utils/files.js +134 -0
- package/templates/cli/artifacts/commands.md +262 -0
- package/templates/cli/artifacts/output-format.md +298 -0
- package/templates/cli/roles/cli-developer.md +239 -0
- package/templates/cli/rules/command-change.md +225 -0
- package/templates/game/artifacts/assets.md +148 -0
- package/templates/game/artifacts/game-systems.md +217 -0
- package/templates/game/artifacts/hud.md +199 -0
- package/templates/game/roles/game-logic.md +193 -0
- package/templates/game/roles/rendering.md +137 -0
- package/templates/game/rules/system-change.md +184 -0
- package/templates/library/artifacts/changelog.md +84 -0
- package/templates/library/artifacts/examples.md +157 -0
- package/templates/library/artifacts/public-api.md +197 -0
- package/templates/library/roles/library-developer.md +180 -0
- package/templates/library/rules/versioning.md +186 -0
- package/templates/web-dev/artifacts/api.md +212 -0
- package/templates/web-dev/artifacts/ui.md +104 -0
- package/templates/web-dev/roles/backend.md +134 -0
- package/templates/web-dev/roles/frontend.md +161 -0
- package/templates/web-dev/rules/api-change.md +198 -0
package/bin/cli.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { program } from 'commander';
|
|
4
|
+
import { setup } from '../src/commands/setup.js';
|
|
5
|
+
import { status } from '../src/commands/status.js';
|
|
6
|
+
import { reset } from '../src/commands/reset.js';
|
|
7
|
+
import { validate } from '../src/commands/validate.js';
|
|
8
|
+
import { sessions } from '../src/commands/sessions.js';
|
|
9
|
+
import { logs } from '../src/commands/logs.js';
|
|
10
|
+
import { run } from '../src/commands/run.js';
|
|
11
|
+
import { interactive } from '../src/commands/interactive.js';
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
|
|
14
|
+
const require = createRequire(import.meta.url);
|
|
15
|
+
const { version } = require('../package.json');
|
|
16
|
+
program
|
|
17
|
+
.name('ada')
|
|
18
|
+
.description('Artifact-Driven AI Agent Framework\nAI가 규칙을 어기지 못하게 하는 문서 기반 개발')
|
|
19
|
+
.version(version);
|
|
20
|
+
|
|
21
|
+
// Setup command
|
|
22
|
+
program
|
|
23
|
+
.command('setup [template]')
|
|
24
|
+
.description('프로젝트 템플릿 세팅 (web, library, game, cli)')
|
|
25
|
+
.action(setup);
|
|
26
|
+
|
|
27
|
+
// Status command
|
|
28
|
+
program
|
|
29
|
+
.command('status')
|
|
30
|
+
.description('현재 세팅 상태 확인')
|
|
31
|
+
.action(status);
|
|
32
|
+
|
|
33
|
+
// Reset command
|
|
34
|
+
program
|
|
35
|
+
.command('reset')
|
|
36
|
+
.description('ai-dev-team 초기화')
|
|
37
|
+
.option('-f, --force', '확인 없이 강제 초기화')
|
|
38
|
+
.action(reset);
|
|
39
|
+
|
|
40
|
+
// Validate command
|
|
41
|
+
program
|
|
42
|
+
.command('validate [doc]')
|
|
43
|
+
.description('문서 검증 (plan, project, backlog, sprint 또는 전체)')
|
|
44
|
+
.action(validate);
|
|
45
|
+
|
|
46
|
+
// Sessions command
|
|
47
|
+
program
|
|
48
|
+
.command('sessions')
|
|
49
|
+
.description('AI 실행 세션 목록')
|
|
50
|
+
.action(sessions);
|
|
51
|
+
|
|
52
|
+
// Logs command
|
|
53
|
+
program
|
|
54
|
+
.command('logs [sessionId]')
|
|
55
|
+
.description('세션 로그 확인')
|
|
56
|
+
.action(logs);
|
|
57
|
+
|
|
58
|
+
// Run command
|
|
59
|
+
program
|
|
60
|
+
.command('run <role> <tool>')
|
|
61
|
+
.description('AI 에이전트 실행 (예: run backend claude)')
|
|
62
|
+
.action(run);
|
|
63
|
+
|
|
64
|
+
// Parse arguments
|
|
65
|
+
const args = process.argv.slice(2);
|
|
66
|
+
|
|
67
|
+
if (args.length === 0) {
|
|
68
|
+
// 인자 없으면 대화형 모드
|
|
69
|
+
interactive();
|
|
70
|
+
} else if (args.length === 2 && !args[0].startsWith('-') && !['setup', 'status', 'reset', 'validate', 'sessions', 'logs', 'run'].includes(args[0])) {
|
|
71
|
+
// 두 개의 인자가 명령어가 아니면 role tool로 간주
|
|
72
|
+
run(args[0], args[1]);
|
|
73
|
+
} else {
|
|
74
|
+
program.parse();
|
|
75
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Architecture Options
|
|
2
|
+
|
|
3
|
+
> 아키텍처 협상 과정 기록
|
|
4
|
+
> Architect와 사용자 간 논의 내용
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0. 문서 메타
|
|
9
|
+
|
|
10
|
+
| 항목 | 값 |
|
|
11
|
+
|------|-----|
|
|
12
|
+
| 상태 | 협의 중 / 확정 |
|
|
13
|
+
| 최종 수정 | YYYY-MM-DD |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. 결정 상태
|
|
18
|
+
|
|
19
|
+
| 항목 | 상태 | 선택 |
|
|
20
|
+
|------|:----:|------|
|
|
21
|
+
| 규모 | ✅ | M (Medium) |
|
|
22
|
+
| 언어 | ✅ | [선택] |
|
|
23
|
+
| 프레임워크 | ⏳ | - |
|
|
24
|
+
| 데이터 저장 | ❌ | - |
|
|
25
|
+
|
|
26
|
+
상태: ✅ 확정 / ⏳ 협의 중 / ❌ 미정
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. 규모 분석
|
|
31
|
+
|
|
32
|
+
### 분석 결과
|
|
33
|
+
|
|
34
|
+
| 항목 | 값 |
|
|
35
|
+
|------|-----|
|
|
36
|
+
| 핵심 기능 수 | N개 |
|
|
37
|
+
| 예상 복잡도 | 낮음 / 중간 / 높음 |
|
|
38
|
+
| 권장 규모 | S / M / L |
|
|
39
|
+
|
|
40
|
+
### 규모 근거
|
|
41
|
+
|
|
42
|
+
[규모 판단 근거 설명]
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3. 옵션 제안
|
|
47
|
+
|
|
48
|
+
### [항목명] 옵션
|
|
49
|
+
|
|
50
|
+
| 옵션 | 장점 | 단점 |
|
|
51
|
+
|------|------|------|
|
|
52
|
+
| A: [선택지] | [장점] | [단점] |
|
|
53
|
+
| B: [선택지] | [장점] | [단점] |
|
|
54
|
+
| C: [선택지] | [장점] | [단점] |
|
|
55
|
+
|
|
56
|
+
### Architect 권장
|
|
57
|
+
|
|
58
|
+
옵션 [X] 권장
|
|
59
|
+
|
|
60
|
+
이유: [권장 이유]
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 4. 사용자 선택 기록
|
|
65
|
+
|
|
66
|
+
| 날짜 | 항목 | 선택 | 이유 |
|
|
67
|
+
|------|------|------|------|
|
|
68
|
+
| YYYY-MM-DD | 규모 | M | 기능 수 기준 |
|
|
69
|
+
| YYYY-MM-DD | 언어 | [선택] | [이유] |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 5. 미결정 항목
|
|
74
|
+
|
|
75
|
+
| 항목 | 옵션 | 결정 예정 |
|
|
76
|
+
|------|------|----------|
|
|
77
|
+
| [항목] | A / B / C | [시점] |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 6. 확정 시 다음 단계
|
|
82
|
+
|
|
83
|
+
모든 항목 확정 후:
|
|
84
|
+
1. project.md 생성 (Frozen)
|
|
85
|
+
2. 스프린트 계획 시작
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Backlog (Task 목록)
|
|
2
|
+
|
|
3
|
+
> 모든 Task의 단일 진실 (Single Source of Truth)
|
|
4
|
+
> Planner가 생성, Manager가 상태 관리
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## ✅ Task 완성도 체크리스트
|
|
9
|
+
|
|
10
|
+
> ⚠️ Task가 READY 상태가 되려면 모든 항목 충족 필요
|
|
11
|
+
|
|
12
|
+
### 필수 항목 (Required)
|
|
13
|
+
- [ ] Task ID 부여됨 (TASK-NNN)
|
|
14
|
+
- [ ] 출처(기능 ID)가 plan.md에 존재함
|
|
15
|
+
- [ ] 수용 조건 최소 1개 이상
|
|
16
|
+
- [ ] 크기(S/M/L) 결정됨
|
|
17
|
+
- [ ] 우선순위(P0/P1/P2) 결정됨
|
|
18
|
+
|
|
19
|
+
### 품질 체크 (Quality)
|
|
20
|
+
- [ ] 수용 조건이 테스트 가능함
|
|
21
|
+
- [ ] 의존성이 명시됨 (없으면 "-")
|
|
22
|
+
- [ ] Task 설명이 구체적임 (모호한 표현 없음)
|
|
23
|
+
- [ ] L 크기 Task가 분해 검토됨
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 0. 문서 메타
|
|
28
|
+
|
|
29
|
+
| 항목 | 값 |
|
|
30
|
+
|------|-----|
|
|
31
|
+
| 총 Task 수 | N개 |
|
|
32
|
+
| READY | N개 |
|
|
33
|
+
| IN_SPRINT | N개 |
|
|
34
|
+
| DONE | N개 |
|
|
35
|
+
| 최종 갱신 | YYYY-MM-DD |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 1. Task 상태 정의
|
|
40
|
+
|
|
41
|
+
| 상태 | 설명 | 다음 상태 |
|
|
42
|
+
|------|------|----------|
|
|
43
|
+
| BACKLOG | 정의됨, 상세화 필요 | READY |
|
|
44
|
+
| READY | 스프린트 투입 가능 | IN_SPRINT |
|
|
45
|
+
| IN_SPRINT | 현재 스프린트에 포함 | IN_DEV |
|
|
46
|
+
| IN_DEV | 개발 중 | IN_REVIEW |
|
|
47
|
+
| IN_REVIEW | 리뷰 중 | IN_QA, IN_DEV |
|
|
48
|
+
| IN_QA | QA 검증 중 | DONE, IN_DEV |
|
|
49
|
+
| DONE | 완료 | - |
|
|
50
|
+
| BLOCKED | 차단됨 | (해결 후 원래 상태) |
|
|
51
|
+
| DEFERRED | 보류/이월 | BACKLOG |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 2. Task 목록
|
|
56
|
+
|
|
57
|
+
### TASK-001: [Task 이름]
|
|
58
|
+
|
|
59
|
+
| 항목 | 값 |
|
|
60
|
+
|------|-----|
|
|
61
|
+
| 상태 | BACKLOG |
|
|
62
|
+
| 우선순위 | P0 / P1 / P2 |
|
|
63
|
+
| 크기 | S / M / L |
|
|
64
|
+
| 출처 | F001 (plan.md 기능 ID) |
|
|
65
|
+
| 담당 | - |
|
|
66
|
+
| 의존성 | - |
|
|
67
|
+
|
|
68
|
+
**수용 조건 (Acceptance Criteria):**
|
|
69
|
+
- [ ] 조건 1
|
|
70
|
+
- [ ] 조건 2
|
|
71
|
+
- [ ] 조건 3
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### TASK-002: [Task 이름]
|
|
76
|
+
|
|
77
|
+
| 항목 | 값 |
|
|
78
|
+
|------|-----|
|
|
79
|
+
| 상태 | BACKLOG |
|
|
80
|
+
| 우선순위 | P1 |
|
|
81
|
+
| 크기 | M |
|
|
82
|
+
| 출처 | F001 |
|
|
83
|
+
| 담당 | - |
|
|
84
|
+
| 의존성 | TASK-001 |
|
|
85
|
+
|
|
86
|
+
**수용 조건:**
|
|
87
|
+
- [ ] 조건 1
|
|
88
|
+
- [ ] 조건 2
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### TASK-003: [Task 이름]
|
|
93
|
+
|
|
94
|
+
| 항목 | 값 |
|
|
95
|
+
|------|-----|
|
|
96
|
+
| 상태 | BACKLOG |
|
|
97
|
+
| 우선순위 | P1 |
|
|
98
|
+
| 크기 | S |
|
|
99
|
+
| 출처 | F002 |
|
|
100
|
+
| 담당 | - |
|
|
101
|
+
| 의존성 | - |
|
|
102
|
+
|
|
103
|
+
**수용 조건:**
|
|
104
|
+
- [ ] 조건 1
|
|
105
|
+
- [ ] 조건 2
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 3. 완료된 Task (Archive)
|
|
110
|
+
|
|
111
|
+
> DONE 상태 Task는 여기로 이동
|
|
112
|
+
|
|
113
|
+
### ~~TASK-000: [Task 이름]~~ ✅
|
|
114
|
+
|
|
115
|
+
| 항목 | 값 |
|
|
116
|
+
|------|-----|
|
|
117
|
+
| 상태 | DONE |
|
|
118
|
+
| 완료일 | YYYY-MM-DD |
|
|
119
|
+
| 스프린트 | Sprint 1 |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 4. Task 작성 규칙
|
|
124
|
+
|
|
125
|
+
### 4.1 Task 분해 원칙
|
|
126
|
+
|
|
127
|
+
- 기능 1개 = Task 1개 이상
|
|
128
|
+
- Task는 독립적으로 완료 가능해야 함
|
|
129
|
+
- 의존성이 있으면 명시
|
|
130
|
+
|
|
131
|
+
### 4.2 크기 기준
|
|
132
|
+
|
|
133
|
+
| 크기 | 설명 | 예상 시간 |
|
|
134
|
+
|:----:|------|----------|
|
|
135
|
+
| S | 단순 구현 | 1-2시간 |
|
|
136
|
+
| M | 일반 기능 | 반나절 |
|
|
137
|
+
| L | 복합 기능 | 1일+ |
|
|
138
|
+
|
|
139
|
+
### 4.3 수용 조건 규칙
|
|
140
|
+
|
|
141
|
+
- 검증 가능해야 함 (테스트 가능)
|
|
142
|
+
- 구체적이어야 함 (모호함 금지)
|
|
143
|
+
- 완료 기준이 명확해야 함
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 5. 상태 전환 규칙
|
|
148
|
+
|
|
149
|
+
### 5.1 전환 권한
|
|
150
|
+
|
|
151
|
+
| 전환 | 권한 |
|
|
152
|
+
|------|------|
|
|
153
|
+
| BACKLOG → READY | Planner |
|
|
154
|
+
| READY → IN_SPRINT | Manager |
|
|
155
|
+
| IN_SPRINT → IN_DEV | Developer |
|
|
156
|
+
| IN_DEV → IN_REVIEW | Developer |
|
|
157
|
+
| IN_REVIEW → IN_QA | Reviewer (PASS 시) |
|
|
158
|
+
| IN_REVIEW → IN_DEV | Reviewer (REJECT 시) |
|
|
159
|
+
| IN_QA → DONE | Manager (PASS 후 승인) |
|
|
160
|
+
| IN_QA → IN_DEV | QA (FAIL 시) |
|
|
161
|
+
| * → BLOCKED | 누구나 (사유 명시) |
|
|
162
|
+
| * → DEFERRED | Manager |
|
|
163
|
+
|
|
164
|
+
### 5.2 역전환 규칙
|
|
165
|
+
|
|
166
|
+
- REJECT/FAIL 시에만 역전환 가능
|
|
167
|
+
- 역전환 시 사유 필수 기록
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 6. 변경 이력
|
|
172
|
+
|
|
173
|
+
| 날짜 | Task ID | 변경 내용 | 작성자 |
|
|
174
|
+
|------|---------|----------|--------|
|
|
175
|
+
| YYYY-MM-DD | TASK-001 | 생성 | Planner |
|
|
176
|
+
| YYYY-MM-DD | TASK-001 | BACKLOG → READY | Planner |
|
|
177
|
+
| YYYY-MM-DD | TASK-001 | READY → IN_SPRINT | Manager |
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Current Sprint
|
|
2
|
+
|
|
3
|
+
> 현재 진행 중인 스프린트의 작업 범위
|
|
4
|
+
> Manager가 관리
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0. 스프린트 메타
|
|
9
|
+
|
|
10
|
+
| 항목 | 값 |
|
|
11
|
+
|------|-----|
|
|
12
|
+
| 스프린트 | Sprint N |
|
|
13
|
+
| 시작일 | YYYY-MM-DD |
|
|
14
|
+
| 종료 예정 | YYYY-MM-DD |
|
|
15
|
+
| 상태 | 계획 / 진행 / 완료 |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. 스프린트 목표
|
|
20
|
+
|
|
21
|
+
> 이번 스프린트에서 달성하고자 하는 것
|
|
22
|
+
|
|
23
|
+
- [목표 1]
|
|
24
|
+
- [목표 2]
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. 스프린트 Task 목록
|
|
29
|
+
|
|
30
|
+
| Task | 상태 | 담당 | 우선순위 | 크기 |
|
|
31
|
+
|------|:----:|------|:--------:|:----:|
|
|
32
|
+
| TASK-001 | IN_DEV | Developer | P0 | M |
|
|
33
|
+
| TASK-002 | IN_SPRINT | - | P1 | S |
|
|
34
|
+
| TASK-003 | IN_REVIEW | Developer | P1 | M |
|
|
35
|
+
|
|
36
|
+
### 상태 요약
|
|
37
|
+
|
|
38
|
+
| 상태 | 개수 |
|
|
39
|
+
|------|:----:|
|
|
40
|
+
| IN_SPRINT | N |
|
|
41
|
+
| IN_DEV | N |
|
|
42
|
+
| IN_REVIEW | N |
|
|
43
|
+
| IN_QA | N |
|
|
44
|
+
| DONE | N |
|
|
45
|
+
| **총합** | **N** |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. 역할별 현재 작업
|
|
50
|
+
|
|
51
|
+
### Developer
|
|
52
|
+
|
|
53
|
+
| Task | 상태 | 비고 |
|
|
54
|
+
|------|------|------|
|
|
55
|
+
| TASK-001 | IN_DEV | 진행 중 |
|
|
56
|
+
|
|
57
|
+
### Reviewer
|
|
58
|
+
|
|
59
|
+
| Task | 상태 | 비고 |
|
|
60
|
+
|------|------|------|
|
|
61
|
+
| TASK-003 | IN_REVIEW | 리뷰 대기 |
|
|
62
|
+
|
|
63
|
+
### QA
|
|
64
|
+
|
|
65
|
+
| Task | 상태 | 비고 |
|
|
66
|
+
|------|------|------|
|
|
67
|
+
| - | - | 대기 중 |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. 차단 사항 (Blockers)
|
|
72
|
+
|
|
73
|
+
> 현재 진행을 막는 이슈
|
|
74
|
+
|
|
75
|
+
| Task | 차단 사유 | 담당자 | 상태 |
|
|
76
|
+
|------|----------|--------|------|
|
|
77
|
+
| - | - | - | - |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 5. 스프린트 중 변경 사항
|
|
82
|
+
|
|
83
|
+
> 스프린트 시작 후 발생한 변경
|
|
84
|
+
|
|
85
|
+
| 날짜 | 변경 내용 | 사유 | 승인 |
|
|
86
|
+
|------|----------|------|------|
|
|
87
|
+
| - | - | - | - |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 6. 스프린트 회고 (완료 시)
|
|
92
|
+
|
|
93
|
+
> 스프린트 종료 후 Manager가 작성
|
|
94
|
+
|
|
95
|
+
### 완료된 Task
|
|
96
|
+
|
|
97
|
+
| Task | 설명 |
|
|
98
|
+
|------|------|
|
|
99
|
+
| TASK-XXX | [설명] |
|
|
100
|
+
|
|
101
|
+
### 미완료 Task
|
|
102
|
+
|
|
103
|
+
| Task | 사유 | 처리 |
|
|
104
|
+
|------|------|------|
|
|
105
|
+
| TASK-XXX | [사유] | 이월 / 취소 |
|
|
106
|
+
|
|
107
|
+
### 잘된 점
|
|
108
|
+
|
|
109
|
+
- [내용]
|
|
110
|
+
|
|
111
|
+
### 개선할 점
|
|
112
|
+
|
|
113
|
+
- [내용]
|
|
114
|
+
|
|
115
|
+
### 다음 스프린트 제안
|
|
116
|
+
|
|
117
|
+
- [제안]
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 7. 스프린트 히스토리
|
|
122
|
+
|
|
123
|
+
| 스프린트 | 기간 | 목표 | 완료 Task | 결과 |
|
|
124
|
+
|----------|------|------|:---------:|:----:|
|
|
125
|
+
| Sprint 1 | MM/DD ~ MM/DD | [목표] | N개 | ✅ / ⚠️ |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Decision Log
|
|
2
|
+
|
|
3
|
+
> Manager의 모든 판단을 기록
|
|
4
|
+
> 시간순으로 기록
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 현재 상태
|
|
9
|
+
|
|
10
|
+
| 항목 | 값 |
|
|
11
|
+
|------|-----|
|
|
12
|
+
| 현재 단계 | 기획 / 아키텍처 / 개발 / 완료 |
|
|
13
|
+
| 스프린트 | Sprint N |
|
|
14
|
+
| 마지막 결정 | YYYY-MM-DD |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Decision Log
|
|
19
|
+
|
|
20
|
+
### Decision #1
|
|
21
|
+
|
|
22
|
+
| 항목 | 값 |
|
|
23
|
+
|------|-----|
|
|
24
|
+
| 일시 | YYYY-MM-DD HH:MM |
|
|
25
|
+
| 유형 | 단계 전환 / 예외 승인 / 되돌림 / 스프린트 |
|
|
26
|
+
| 요청자 | [역할] |
|
|
27
|
+
|
|
28
|
+
**내용:**
|
|
29
|
+
[결정 내용]
|
|
30
|
+
|
|
31
|
+
**근거:**
|
|
32
|
+
[판단 근거]
|
|
33
|
+
|
|
34
|
+
**결과:** ✅ 승인 / ❌ 거부 / ⏸️ 보류
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### Decision #2
|
|
39
|
+
|
|
40
|
+
| 항목 | 값 |
|
|
41
|
+
|------|-----|
|
|
42
|
+
| 일시 | YYYY-MM-DD HH:MM |
|
|
43
|
+
| 유형 | [유형] |
|
|
44
|
+
| 요청자 | [역할] |
|
|
45
|
+
|
|
46
|
+
**내용:**
|
|
47
|
+
[결정 내용]
|
|
48
|
+
|
|
49
|
+
**근거:**
|
|
50
|
+
[판단 근거]
|
|
51
|
+
|
|
52
|
+
**결과:** ✅ 승인 / ❌ 거부 / ⏸️ 보류
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 예외 승인 이력
|
|
57
|
+
|
|
58
|
+
> 규칙 예외로 승인된 항목들
|
|
59
|
+
|
|
60
|
+
| # | 날짜 | 내용 | 사유 |
|
|
61
|
+
|---|------|------|------|
|
|
62
|
+
| 1 | YYYY-MM-DD | [예외 내용] | [사유] |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 되돌림 이력
|
|
67
|
+
|
|
68
|
+
> REJECT/FAIL로 인한 되돌림 기록
|
|
69
|
+
|
|
70
|
+
| # | 날짜 | 대상 | 사유 | 조치 |
|
|
71
|
+
|---|------|------|------|------|
|
|
72
|
+
| 1 | YYYY-MM-DD | TASK-XXX | [사유] | [조치] |
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# [프로젝트명] 기획서
|
|
2
|
+
|
|
3
|
+
> 문서 상태: Draft / Confirmed
|
|
4
|
+
> 버전: v0.1
|
|
5
|
+
> 최종 수정: YYYY-MM-DD
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ✅ 문서 완성도 체크리스트
|
|
10
|
+
|
|
11
|
+
> ⚠️ 모든 필수 항목이 체크되어야 Confirmed 상태로 전환 가능
|
|
12
|
+
|
|
13
|
+
### 필수 섹션 (Required)
|
|
14
|
+
- [ ] 서비스 개요 작성 완료
|
|
15
|
+
- [ ] 기능 목록 최소 1개 이상 정의
|
|
16
|
+
- [ ] 사용자 흐름 최소 1개 이상 정의
|
|
17
|
+
- [ ] 비기능 요구사항 정의
|
|
18
|
+
- [ ] 제약 사항 명시
|
|
19
|
+
- [ ] 미확정 항목(TBD) 3개 이하
|
|
20
|
+
|
|
21
|
+
### 품질 체크 (Quality)
|
|
22
|
+
- [ ] 모든 기능에 우선순위(P0/P1/P2) 지정됨
|
|
23
|
+
- [ ] 모호한 표현 제거됨 (예: "빠르게", "적절히" → 구체적 수치)
|
|
24
|
+
- [ ] 용어 정의에 도메인 용어 포함됨
|
|
25
|
+
- [ ] 사용자와 합의 내용 기록됨
|
|
26
|
+
|
|
27
|
+
### 연결성 체크 (Linkage)
|
|
28
|
+
- [ ] 각 기능이 최소 1개 이상의 Task로 분해됨
|
|
29
|
+
- [ ] 모든 Task가 backlog.md에 등록됨
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 0. 문서 메타
|
|
34
|
+
|
|
35
|
+
| 항목 | 값 |
|
|
36
|
+
|------|-----|
|
|
37
|
+
| 상태 | Draft / Confirmed |
|
|
38
|
+
| 버전 | v0.1 |
|
|
39
|
+
| 작성자 | Planner |
|
|
40
|
+
| 승인자 | - |
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 1. 서비스 개요
|
|
45
|
+
|
|
46
|
+
(한 문단으로 프로젝트 요약)
|
|
47
|
+
|
|
48
|
+
- 무엇을 만드는가:
|
|
49
|
+
- 누가 사용하는가:
|
|
50
|
+
- 왜 필요한가:
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. 기능 목록
|
|
55
|
+
|
|
56
|
+
| ID | 기능명 | 설명 | 우선순위 |
|
|
57
|
+
|----|--------|------|:--------:|
|
|
58
|
+
| F001 | [기능명] | [한 줄 설명] | P0/P1/P2 |
|
|
59
|
+
| F002 | [기능명] | [한 줄 설명] | P0/P1/P2 |
|
|
60
|
+
| F003 | [기능명] | [한 줄 설명] | P0/P1/P2 |
|
|
61
|
+
|
|
62
|
+
### 우선순위 정의
|
|
63
|
+
|
|
64
|
+
- **P0**: 필수 (없으면 서비스 불가)
|
|
65
|
+
- **P1**: 중요 (초기 버전에 포함)
|
|
66
|
+
- **P2**: 향후 (나중에 추가)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 3. 사용자 흐름 (User Flow)
|
|
71
|
+
|
|
72
|
+
### 주요 시나리오 1: [시나리오명]
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
[시작점]
|
|
76
|
+
↓
|
|
77
|
+
[단계 1]
|
|
78
|
+
↓
|
|
79
|
+
[단계 2]
|
|
80
|
+
↓
|
|
81
|
+
[종료점]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 주요 시나리오 2: [시나리오명]
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
[흐름 설명]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 4. 비기능 요구사항
|
|
93
|
+
|
|
94
|
+
| 항목 | 요구사항 | 비고 |
|
|
95
|
+
|------|----------|------|
|
|
96
|
+
| 성능 | [요구사항] | - |
|
|
97
|
+
| 보안 | [요구사항] | - |
|
|
98
|
+
| 가용성 | [요구사항] | - |
|
|
99
|
+
| 확장성 | [요구사항] | - |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 5. 제약 사항
|
|
104
|
+
|
|
105
|
+
- 일정: [제약]
|
|
106
|
+
- 예산: [제약]
|
|
107
|
+
- 기술: [제약]
|
|
108
|
+
- 기타: [제약]
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 6. 가정 사항 (Assumptions)
|
|
113
|
+
|
|
114
|
+
> 기획 시 전제한 가정들. 가정이 틀리면 기획 변경 필요.
|
|
115
|
+
|
|
116
|
+
- [가정 1]
|
|
117
|
+
- [가정 2]
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 7. 미확정 항목 (TBD)
|
|
122
|
+
|
|
123
|
+
| ID | 항목 | 설명 | 결정 예정 |
|
|
124
|
+
|----|------|------|----------|
|
|
125
|
+
| TBD-001 | [항목] | [설명] | [시점] |
|
|
126
|
+
| TBD-002 | [항목] | [설명] | [시점] |
|
|
127
|
+
|
|
128
|
+
> ⚠️ 미확정 항목 3개 초과 시 Architect 단계 진행 불가
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 8. 용어 정의 (Glossary)
|
|
133
|
+
|
|
134
|
+
| 용어 | 정의 |
|
|
135
|
+
|------|------|
|
|
136
|
+
| [용어] | [정의] |
|
|
137
|
+
| [용어] | [정의] |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 9. 참고 자료
|
|
142
|
+
|
|
143
|
+
- [자료 1]
|
|
144
|
+
- [자료 2]
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 10. 사용자 합의 요약
|
|
149
|
+
|
|
150
|
+
> Planner와 사용자가 합의한 내용 요약
|
|
151
|
+
|
|
152
|
+
### 확정된 사항
|
|
153
|
+
- [합의 1]
|
|
154
|
+
- [합의 2]
|
|
155
|
+
|
|
156
|
+
### 논의 중인 사항
|
|
157
|
+
- [논의 1]
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 11. 기능 → Task 매핑
|
|
162
|
+
|
|
163
|
+
> plan.md 확정 후 Planner가 작성
|
|
164
|
+
|
|
165
|
+
| 기능 ID | 기능명 | Task ID | Task 설명 |
|
|
166
|
+
|---------|--------|---------|----------|
|
|
167
|
+
| F001 | [기능명] | TASK-001 | [Task 설명] |
|
|
168
|
+
| F001 | [기능명] | TASK-002 | [Task 설명] |
|
|
169
|
+
| F002 | [기능명] | TASK-003 | [Task 설명] |
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 12. 변경 이력
|
|
174
|
+
|
|
175
|
+
| 버전 | 날짜 | 변경 내용 | 작성자 |
|
|
176
|
+
|------|------|----------|--------|
|
|
177
|
+
| v0.1 | YYYY-MM-DD | 초안 작성 | Planner |
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 13. 다음 단계
|
|
182
|
+
|
|
183
|
+
plan.md가 Confirmed 상태가 되면:
|
|
184
|
+
|
|
185
|
+
1. **Architect**: project.md 작성 (기술 스택 결정)
|
|
186
|
+
2. **Planner**: backlog.md에 Task 분해
|
|
187
|
+
3. **Manager**: 첫 스프린트 계획
|