@silbaram/artifact-driven-agent 0.1.6 → 0.1.9
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 +709 -516
- package/ai-dev-team/.ada-status.json +10 -0
- package/ai-dev-team/.ada-version +6 -0
- package/ai-dev-team/.current-template +1 -0
- package/ai-dev-team/.sessions/logs/20260124-014551-00f04724.log +5 -0
- package/ai-dev-team/.sessions/logs/20260124-014623-cb2b1d44.log +5 -0
- package/ai-dev-team/ada.config.json +15 -0
- package/ai-dev-team/artifacts/api.md +212 -0
- package/ai-dev-team/artifacts/decision.md +72 -0
- package/ai-dev-team/artifacts/improvement-reports/IMP-0000-template.md +57 -0
- package/ai-dev-team/artifacts/plan.md +187 -0
- package/ai-dev-team/artifacts/project.md +193 -0
- package/ai-dev-team/artifacts/sprints/_template/docs/release-notes.md +37 -0
- package/ai-dev-team/artifacts/sprints/_template/meta.md +54 -0
- package/ai-dev-team/artifacts/sprints/_template/retrospective.md +50 -0
- package/ai-dev-team/artifacts/sprints/_template/review-reports/review-template.md +49 -0
- package/ai-dev-team/artifacts/sprints/_template/tasks/task-template.md +43 -0
- package/ai-dev-team/artifacts/ui.md +104 -0
- package/ai-dev-team/roles/analyzer.md +265 -0
- package/ai-dev-team/roles/developer.md +222 -0
- package/ai-dev-team/roles/documenter.md +715 -0
- package/ai-dev-team/roles/improver.md +461 -0
- package/ai-dev-team/roles/manager.md +544 -0
- package/ai-dev-team/roles/planner.md +398 -0
- package/ai-dev-team/roles/reviewer.md +294 -0
- package/ai-dev-team/rules/api-change.md +198 -0
- package/ai-dev-team/rules/document-priority.md +199 -0
- package/ai-dev-team/rules/escalation.md +172 -0
- package/ai-dev-team/rules/iteration.md +236 -0
- package/ai-dev-team/rules/rfc.md +31 -0
- package/ai-dev-team/rules/rollback.md +218 -0
- package/bin/cli.js +49 -5
- package/core/artifacts/sprints/_template/meta.md +4 -4
- package/core/docs-templates/mkdocs/docs/architecture/overview.md +29 -0
- package/core/docs-templates/mkdocs/docs/changelog.md +36 -0
- package/core/docs-templates/mkdocs/docs/contributing/contributing.md +60 -0
- package/core/docs-templates/mkdocs/docs/getting-started/configuration.md +51 -0
- package/core/docs-templates/mkdocs/docs/getting-started/installation.md +41 -0
- package/core/docs-templates/mkdocs/docs/getting-started/quick-start.md +56 -0
- package/core/docs-templates/mkdocs/docs/guides/api-reference.md +83 -0
- package/core/docs-templates/mkdocs/docs/index.md +32 -0
- package/core/docs-templates/mkdocs/mkdocs.yml +86 -0
- package/core/roles/analyzer.md +32 -10
- package/core/roles/developer.md +222 -223
- package/core/roles/documenter.md +592 -170
- package/core/roles/improver.md +461 -0
- package/core/roles/manager.md +4 -1
- package/core/roles/planner.md +160 -10
- package/core/roles/reviewer.md +31 -3
- package/core/rules/document-priority.md +2 -1
- package/core/rules/rollback.md +3 -3
- package/package.json +1 -1
- package/src/commands/config.js +371 -0
- package/src/commands/docs.js +502 -0
- package/src/commands/interactive.js +324 -33
- package/src/commands/monitor.js +236 -0
- package/src/commands/run.js +360 -122
- package/src/commands/sessions.js +270 -70
- package/src/commands/setup.js +22 -1
- package/src/commands/sprint.js +295 -54
- package/src/commands/status.js +34 -1
- package/src/commands/upgrade.js +416 -0
- package/src/commands/validate.js +4 -3
- package/src/index.js +1 -0
- package/src/ui/dashboard.js +518 -0
- package/src/ui/keyHandler.js +147 -0
- package/src/ui/quickActions.js +111 -0
- package/src/utils/config.js +74 -0
- package/src/utils/files.js +70 -3
- package/src/utils/sessionState.js +472 -328
- package/src/utils/sessionState.process.test.js +101 -0
- package/src/utils/sessionState.test.js +183 -0
- package/src/utils/sprintUtils.js +134 -0
- package/src/utils/taskParser.js +134 -0
- package/src/utils/taskParser.test.js +76 -0
- package/ai-dev-team/artifacts/features/_template/qa.md +0 -16
- package/examples/todo-app/README.md +0 -23
- package/examples/todo-app/artifacts/backlog.md +0 -23
- package/examples/todo-app/artifacts/plan.md +0 -23
- package/examples/todo-app/artifacts/project.md +0 -23
|
@@ -0,0 +1 @@
|
|
|
1
|
+
web-dev
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
[2026-01-24 16:45:51] [INFO] 세션 시작: role=manager, tool=claude, template=web-dev
|
|
2
|
+
[2026-01-24 16:45:51] [INFO] 세션 등록: 20260124-014551-00f04724
|
|
3
|
+
[2026-01-24 16:45:51] [INFO] 시스템 프롬프트 저장: D:\development-code\artifact-driven-agent\ai-dev-team\.sessions\20260124-014551-00f04724\system-prompt.md
|
|
4
|
+
[2026-01-24 16:45:51] [INFO] claude CLI 실행 (automation: perfect, captureOutput: false)
|
|
5
|
+
[2026-01-24 16:46:10] [INFO] 세션 종료 (completed): 정상 종료
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
[2026-01-24 16:46:23] [INFO] 세션 시작: role=manager, tool=codex, template=web-dev
|
|
2
|
+
[2026-01-24 16:46:23] [INFO] 세션 등록: 20260124-014623-cb2b1d44
|
|
3
|
+
[2026-01-24 16:46:23] [INFO] 시스템 프롬프트 저장: D:\development-code\artifact-driven-agent\ai-dev-team\.sessions\20260124-014623-cb2b1d44\system-prompt.md
|
|
4
|
+
[2026-01-24 16:46:23] [INFO] codex CLI 실행 (automation: manual, captureOutput: false)
|
|
5
|
+
[2026-01-24 16:46:33] [INFO] 세션 종료 (completed): 정상 종료
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"defaults": {
|
|
4
|
+
"tool": "claude"
|
|
5
|
+
},
|
|
6
|
+
"roles": {
|
|
7
|
+
"manager": "claude",
|
|
8
|
+
"planner": "claude",
|
|
9
|
+
"architect": "claude",
|
|
10
|
+
"developer": "claude",
|
|
11
|
+
"reviewer": "claude",
|
|
12
|
+
"improver": "claude",
|
|
13
|
+
"documenter": "claude"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# API Specification
|
|
2
|
+
|
|
3
|
+
> Backend와 Frontend의 공식 계약 문서
|
|
4
|
+
> 변경 시 rules/api-change.md 절차를 따른다
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 0. 문서 메타
|
|
9
|
+
|
|
10
|
+
| 항목 | 값 |
|
|
11
|
+
|------|-----|
|
|
12
|
+
| 버전 | v1.0 |
|
|
13
|
+
| Base URL | /api/v1 |
|
|
14
|
+
| 최종 수정 | YYYY-MM-DD |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. 공통 규칙
|
|
19
|
+
|
|
20
|
+
### 1.1 HTTP 메서드
|
|
21
|
+
|
|
22
|
+
| 메서드 | 용도 | 멱등성 |
|
|
23
|
+
|--------|------|:------:|
|
|
24
|
+
| GET | 조회 | ✅ |
|
|
25
|
+
| POST | 생성 | ❌ |
|
|
26
|
+
| PUT | 전체 수정 | ✅ |
|
|
27
|
+
| PATCH | 부분 수정 | ❌ |
|
|
28
|
+
| DELETE | 삭제 | ✅ |
|
|
29
|
+
|
|
30
|
+
### 1.2 경로 규칙
|
|
31
|
+
|
|
32
|
+
- 리소스명: 복수형 소문자 (예: `/users`, `/posts`)
|
|
33
|
+
- 단일 리소스: `/{resource}/{id}`
|
|
34
|
+
- 중첩 리소스: `/{parent}/{parentId}/{child}`
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. 인증/권한
|
|
39
|
+
|
|
40
|
+
| 항목 | 값 |
|
|
41
|
+
|------|-----|
|
|
42
|
+
| Status | 사용 / 미사용 |
|
|
43
|
+
| Scheme | Bearer Token / Cookie / API Key |
|
|
44
|
+
| Token Location | Authorization: Bearer {token} |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 3. 응답 규격 (Response Envelope)
|
|
49
|
+
|
|
50
|
+
### 3.1 Success Response
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"success": true,
|
|
55
|
+
"data": { },
|
|
56
|
+
"error": null,
|
|
57
|
+
"meta": {
|
|
58
|
+
"requestId": "uuid",
|
|
59
|
+
"timestamp": "2024-01-01T00:00:00Z"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 3.2 Failure Response
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"success": false,
|
|
69
|
+
"data": null,
|
|
70
|
+
"error": {
|
|
71
|
+
"code": "ERROR_CODE",
|
|
72
|
+
"message": "사용자에게 표시할 메시지",
|
|
73
|
+
"details": { }
|
|
74
|
+
},
|
|
75
|
+
"meta": {
|
|
76
|
+
"requestId": "uuid",
|
|
77
|
+
"timestamp": "2024-01-01T00:00:00Z"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 4. 공통 에러 코드
|
|
85
|
+
|
|
86
|
+
| HTTP | 에러 코드 | 설명 |
|
|
87
|
+
|------|----------|------|
|
|
88
|
+
| 400 | BAD_REQUEST | 잘못된 요청 |
|
|
89
|
+
| 400 | VALIDATION_ERROR | 유효성 검사 실패 |
|
|
90
|
+
| 401 | UNAUTHORIZED | 인증 필요 |
|
|
91
|
+
| 403 | FORBIDDEN | 권한 없음 |
|
|
92
|
+
| 404 | NOT_FOUND | 리소스 없음 |
|
|
93
|
+
| 409 | CONFLICT | 충돌 |
|
|
94
|
+
| 500 | INTERNAL_ERROR | 서버 오류 |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 5. 페이지네이션
|
|
99
|
+
|
|
100
|
+
### Request
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
GET /resources?page=1&size=20&sort=createdAt,desc
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Response
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"success": true,
|
|
111
|
+
"data": {
|
|
112
|
+
"content": [...],
|
|
113
|
+
"page": {
|
|
114
|
+
"number": 1,
|
|
115
|
+
"size": 20,
|
|
116
|
+
"totalElements": 100,
|
|
117
|
+
"totalPages": 5
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 6. API 엔드포인트 정의
|
|
126
|
+
|
|
127
|
+
### 6.1 [리소스명]
|
|
128
|
+
|
|
129
|
+
#### GET /resources
|
|
130
|
+
|
|
131
|
+
**설명:** 목록 조회
|
|
132
|
+
|
|
133
|
+
**Request:**
|
|
134
|
+
```
|
|
135
|
+
Query Parameters:
|
|
136
|
+
- page: number (default: 1)
|
|
137
|
+
- size: number (default: 20)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Response (200):**
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"success": true,
|
|
144
|
+
"data": {
|
|
145
|
+
"content": [
|
|
146
|
+
{
|
|
147
|
+
"id": "uuid",
|
|
148
|
+
"name": "string",
|
|
149
|
+
"createdAt": "datetime"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"page": { ... }
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**에러:**
|
|
158
|
+
| 상황 | 코드 |
|
|
159
|
+
|------|------|
|
|
160
|
+
| 잘못된 파라미터 | BAD_REQUEST |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
#### POST /resources
|
|
165
|
+
|
|
166
|
+
**설명:** 생성
|
|
167
|
+
|
|
168
|
+
**Request:**
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"name": "string (required)",
|
|
172
|
+
"description": "string (optional)"
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Response (201):**
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"success": true,
|
|
180
|
+
"data": {
|
|
181
|
+
"id": "uuid",
|
|
182
|
+
"name": "string",
|
|
183
|
+
"createdAt": "datetime"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**에러:**
|
|
189
|
+
| 상황 | 코드 |
|
|
190
|
+
|------|------|
|
|
191
|
+
| 필수 필드 누락 | VALIDATION_ERROR |
|
|
192
|
+
| 중복 | CONFLICT |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 7. API 목록 요약
|
|
197
|
+
|
|
198
|
+
| 메서드 | 경로 | 설명 | 상태 | Task |
|
|
199
|
+
|--------|------|------|:----:|------|
|
|
200
|
+
| GET | /resources | 목록 조회 | ✅ | TASK-001 |
|
|
201
|
+
| POST | /resources | 생성 | ⏳ | TASK-001 |
|
|
202
|
+
| GET | /resources/{id} | 단일 조회 | 📋 | TASK-002 |
|
|
203
|
+
|
|
204
|
+
상태: ✅ 완료 / ⏳ 진행중 / 📋 예정
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 8. 변경 이력
|
|
209
|
+
|
|
210
|
+
| Task | 날짜 | 변경 내용 |
|
|
211
|
+
|------|------|----------|
|
|
212
|
+
| [TASK-001] | YYYY-MM-DD | 초기 API 작성 |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Decision Log
|
|
2
|
+
|
|
3
|
+
> 사용자의 모든 판단을 기록
|
|
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,57 @@
|
|
|
1
|
+
# IMP-NNNN: [개선 제목]
|
|
2
|
+
|
|
3
|
+
| 항목 | 값 |
|
|
4
|
+
|------|-----|
|
|
5
|
+
| 일시 | YYYY-MM-DD |
|
|
6
|
+
| 작성자 | improver |
|
|
7
|
+
| 상태 | PLANNED / IN_PROGRESS / DONE |
|
|
8
|
+
|
|
9
|
+
## 1. 현황
|
|
10
|
+
|
|
11
|
+
- 대상: [개선 대상 기능/모듈]
|
|
12
|
+
- 현재 문제: [구체적인 문제점]
|
|
13
|
+
- 측정 지표: [성능, UX 지표 등]
|
|
14
|
+
|
|
15
|
+
## 2. 분석
|
|
16
|
+
|
|
17
|
+
### 병목 지점 / 문제점
|
|
18
|
+
1. [문제 1] - [영향도]
|
|
19
|
+
2. [문제 2] - [영향도]
|
|
20
|
+
3. [문제 3] - [영향도]
|
|
21
|
+
|
|
22
|
+
### 코드 위치
|
|
23
|
+
- [파일명]:[라인 번호]
|
|
24
|
+
- [파일명]:[라인 번호]
|
|
25
|
+
|
|
26
|
+
### 원인 분석
|
|
27
|
+
[왜 이 문제가 발생했는지]
|
|
28
|
+
|
|
29
|
+
## 3. 개선 방향 (선택된 옵션)
|
|
30
|
+
|
|
31
|
+
**옵션 [A/B/C]: [옵션명]**
|
|
32
|
+
- 개선 방법: [구체적 방법]
|
|
33
|
+
- 예상 효과: [개선 효과]
|
|
34
|
+
- 장점: [장점 나열]
|
|
35
|
+
- 단점: [단점 나열]
|
|
36
|
+
|
|
37
|
+
### 기술 변경 (있다면)
|
|
38
|
+
- [추가/변경되는 기술 스택]
|
|
39
|
+
- project.md 업데이트 필요 여부: Y/N
|
|
40
|
+
|
|
41
|
+
## 4. Task 목록
|
|
42
|
+
|
|
43
|
+
- task-NNN: [Task 제목] (S/M/L)
|
|
44
|
+
- task-NNN: [Task 제목] (S/M/L)
|
|
45
|
+
- task-NNN: [Task 제목] (S/M/L)
|
|
46
|
+
|
|
47
|
+
## 5. 영향 범위
|
|
48
|
+
|
|
49
|
+
- Breaking Change: Y/N
|
|
50
|
+
- 데이터 마이그레이션: 필요 / 불필요
|
|
51
|
+
- 인프라 변경: [변경 사항]
|
|
52
|
+
- 다른 기능 영향: [영향받는 기능들]
|
|
53
|
+
|
|
54
|
+
## 6. 고려사항 / 참고
|
|
55
|
+
|
|
56
|
+
- [기타 고려사항]
|
|
57
|
+
- [참고 링크/문서]
|
|
@@ -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/ 디렉토리에 등록됨
|
|
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개 초과 시 개발 진행 전 명확화 필요
|
|
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. **사용자**: project.md 작성 (기술 스택 결정, 선택사항)
|
|
186
|
+
2. **Planner**: backlog/ 디렉토리에 Task 분해 (task-NNN.md 파일 생성)
|
|
187
|
+
3. **사용자**: 첫 스프린트 계획 (ada sprint create)
|