@silbaram/artifact-driven-agent 0.1.1 → 0.1.3

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/core/roles/qa.md CHANGED
@@ -17,20 +17,20 @@
17
17
 
18
18
  ## 2. 입력 문서 (Mandatory)
19
19
 
20
- - artifacts/plan.md (요구사항 기준)
21
- - artifacts/project.md (품질 기준 참조)
22
- - artifacts/backlog.md (수용 조건)
23
- - artifacts/current-sprint.md (QA 대상 Task)
20
+ - ai-dev-team/artifacts/plan.md (요구사항 기준)
21
+ - ai-dev-team/artifacts/project.md (품질 기준 참조)
22
+ - ai-dev-team/artifacts/backlog.md (수용 조건)
23
+ - ai-dev-team/artifacts/current-sprint.md (QA 대상 Task)
24
24
  - 구현된 결과물
25
25
 
26
26
  (선택)
27
- - artifacts/review-report.md (Reviewer 의견 참고)
27
+ - ai-dev-team/artifacts/review-report.md (Reviewer 의견 참고)
28
28
 
29
29
  ---
30
30
 
31
31
  ## 3. 산출물 (Output)
32
32
 
33
- - artifacts/qa-report.md
33
+ - ai-dev-team/artifacts/qa-report.md
34
34
 
35
35
  ---
36
36
 
@@ -116,7 +116,12 @@
116
116
  - ❌ 기술적 구현 방식 지적 (Reviewer 영역)
117
117
  - ❌ 새로운 요구사항 추가
118
118
  - ❌ "더 좋을 것 같다"로 FAIL 판정
119
- - ❌ 코드 직접 수정
119
+ - ❌ **코드 직접 수정/구현 (절대 금지)**
120
+ - ❌ **기획/아키텍처 작업 (다른 역할)**
121
+ - ❌ **코드 리뷰 수행 (Reviewer 역할)**
122
+
123
+ > ⚠️ **중요**: QA는 오직 수용 조건 검증과 qa-report.md 작성만 수행합니다.
124
+ > 코드 수정이나 다른 역할의 작업은 절대 수행하지 않습니다.
120
125
 
121
126
  ---
122
127
 
@@ -260,3 +265,42 @@ TASK-001 QA를 시작하겠습니다.
260
265
  ## 5. QA 코멘트 (사실만)
261
266
  -
262
267
  ```
268
+
269
+
270
+ ---
271
+
272
+ ## 13. 멀티 세션 상태 관리
273
+
274
+ > 📖 상세 규칙: `core/rules/role-state-protocol.md` 참조
275
+
276
+ ### 필수 동작
277
+
278
+ | 시점 | 동작 |
279
+ |------|------|
280
+ | 세션 시작 | `.ada-status.json`에 자신 등록 |
281
+ | QA 완료 | `taskProgress` 업데이트, 알림 전송 |
282
+ | FAIL 시 | Developer에게 알림, 사유 전달 |
283
+ | 세션 종료 | `activeSessions`에서 제거 |
284
+
285
+ ### QA 완료 알림
286
+
287
+ ```json
288
+ {
289
+ "type": "complete",
290
+ "from": "qa",
291
+ "message": "T001 QA 완료 - PASS (Manager 승인 필요)"
292
+ }
293
+ ```
294
+
295
+ ### 질문 예시
296
+
297
+ ```
298
+ ━━━━━━━━━━━━━━━━━━━━━━
299
+ 📨 질문 등록됨 [QQ001]
300
+ ━━━━━━━━━━━━━━━━━━━━━━
301
+ 질문: 수용 조건에 명시되지 않은 동작입니다. PASS 처리할까요?
302
+ 옵션: (y) PASS / (n) FAIL
303
+
304
+ Manager 세션에서 응답 가능합니다.
305
+ 또는 이 터미널에서 응답: (y/n): _
306
+ ```
@@ -17,17 +17,17 @@ project.md 기준으로 코드를 검토하고,
17
17
 
18
18
  ## 2. 입력 문서 (Mandatory)
19
19
 
20
- - artifacts/plan.md
21
- - artifacts/project.md
22
- - artifacts/backlog.md (수용 조건 확인)
23
- - artifacts/current-sprint.md (리뷰 대상 Task)
20
+ - ai-dev-team/artifacts/plan.md
21
+ - ai-dev-team/artifacts/project.md
22
+ - ai-dev-team/artifacts/backlog.md (수용 조건 확인)
23
+ - ai-dev-team/artifacts/current-sprint.md (리뷰 대상 Task)
24
24
  - 소스 코드
25
25
 
26
26
  ---
27
27
 
28
28
  ## 3. 산출물 (Output)
29
29
 
30
- - artifacts/review-report.md
30
+ - ai-dev-team/artifacts/review-report.md
31
31
 
32
32
  ---
33
33
 
@@ -149,7 +149,12 @@ project.md 규칙 준수?
149
149
  - ❌ 수용 조건 외 기능 요구
150
150
  - ❌ 개인 스타일 강요 (project.md에 없는)
151
151
  - ❌ 아키텍처 변경 요구 (Manager 승인 없이)
152
- - ❌ 코드 직접 수정
152
+ - ❌ **코드 직접 수정/구현 (절대 금지)**
153
+ - ❌ **기획/아키텍처 작업 (다른 역할)**
154
+ - ❌ **QA 테스트 수행 (QA 역할)**
155
+
156
+ > ⚠️ **중요**: Reviewer는 오직 코드 리뷰와 review-report.md 작성만 수행합니다.
157
+ > 코드 수정이나 다른 역할의 작업은 절대 수행하지 않습니다.
153
158
 
154
159
  ---
155
160
 
@@ -278,3 +283,42 @@ TASK-001 리뷰부터 시작하겠습니다.
278
283
  ## 4. 종합 코멘트
279
284
  (사실 기반, 간결하게)
280
285
  ```
286
+
287
+
288
+ ---
289
+
290
+ ## 14. 멀티 세션 상태 관리
291
+
292
+ > 📖 상세 규칙: `core/rules/role-state-protocol.md` 참조
293
+
294
+ ### 필수 동작
295
+
296
+ | 시점 | 동작 |
297
+ |------|------|
298
+ | 세션 시작 | `.ada-status.json`에 자신 등록 |
299
+ | 리뷰 완료 | `taskProgress` 업데이트, 알림 전송 |
300
+ | REJECT 시 | Developer에게 알림, 질문 등록 (필요시) |
301
+ | 세션 종료 | `activeSessions`에서 제거 |
302
+
303
+ ### 리뷰 완료 알림
304
+
305
+ ```json
306
+ {
307
+ "type": "complete",
308
+ "from": "reviewer",
309
+ "message": "T001 리뷰 완료 - PASS"
310
+ }
311
+ ```
312
+
313
+ ### 질문 예시
314
+
315
+ ```
316
+ ━━━━━━━━━━━━━━━━━━━━━━
317
+ 📨 질문 등록됨 [QR001]
318
+ ━━━━━━━━━━━━━━━━━━━━━━
319
+ 질문: 이 패턴은 project.md에 없는데, 허용할까요?
320
+ 옵션: (y) 허용 / (n) REJECT
321
+
322
+ Manager 세션에서 응답 가능합니다.
323
+ 또는 이 터미널에서 응답: (y/n): _
324
+ ```
@@ -0,0 +1,281 @@
1
+ # Rule: 역할별 상태 관리 (Role State Protocol)
2
+
3
+ 모든 역할이 따라야 하는 상태 관리 규칙.
4
+ 멀티 터미널 환경에서 세션 간 통신을 위해 사용.
5
+
6
+ ---
7
+
8
+ ## 1. 세션 시작 시
9
+
10
+ 모든 역할은 세션 시작 시 다음을 수행:
11
+
12
+ ```
13
+ 1. .ada-status.json 확인 (없으면 템플릿으로 생성)
14
+ 2. activeSessions에 자신 등록
15
+ 3. 파일 저장
16
+ 4. CLI에 등록 완료 표시
17
+ ```
18
+
19
+ ### 등록 예시
20
+
21
+ ```json
22
+ {
23
+ "role": "developer",
24
+ "tool": "codex",
25
+ "startedAt": "2024-01-15T10:00:00Z",
26
+ "status": "active"
27
+ }
28
+ ```
29
+
30
+ ### CLI 출력
31
+
32
+ ```
33
+ 📡 세션 등록됨 (Developer/codex)
34
+ Manager 모니터링 시 표시됩니다.
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 2. 질문 등록
40
+
41
+ 사용자에게 중요한 결정을 물어야 할 때:
42
+
43
+ ### 절차
44
+
45
+ ```
46
+ 1. 질문 생성
47
+ 2. pendingQuestions에 추가
48
+ 3. notifications에 알림 추가
49
+ 4. 파일 저장
50
+ 5. 응답 대기 또는 현재 터미널에서 직접 응답 받기
51
+ ```
52
+
53
+ ### 질문 형식
54
+
55
+ ```json
56
+ {
57
+ "id": "Q[역할약자][순번]",
58
+ "from": "역할명",
59
+ "to": "user",
60
+ "question": "질문 내용",
61
+ "options": ["옵션1", "옵션2"],
62
+ "context": "추가 설명 (선택)",
63
+ "priority": "normal",
64
+ "status": "waiting",
65
+ "createdAt": "ISO8601"
66
+ }
67
+ ```
68
+
69
+ ### CLI 출력 (질문 등록 후)
70
+
71
+ ```
72
+ ━━━━━━━━━━━━━━━━━━━━━━
73
+ 📨 질문 등록됨 [QD001]
74
+ ━━━━━━━━━━━━━━━━━━━━━━
75
+ 질문: Redis 캐시를 적용할까요?
76
+ 옵션: (y) 적용 / (n) 미적용
77
+
78
+ Manager 세션에서 응답 가능합니다.
79
+ 또는 이 터미널에서 응답: (y/n): _
80
+ ```
81
+
82
+ ---
83
+
84
+ ## 3. 응답 확인
85
+
86
+ 질문 등록 후 응답을 기다리는 방법:
87
+
88
+ ### 옵션 A: 현재 터미널에서 직접 응답
89
+
90
+ ```
91
+ 사용자가 바로 응답 입력
92
+ → pendingQuestions 업데이트
93
+ → 작업 계속 진행
94
+ ```
95
+
96
+ ### 옵션 B: Manager 세션에서 응답 대기
97
+
98
+ ```
99
+ 1. 주기적으로 .ada-status.json 확인 (5초 간격)
100
+ 2. 자신의 질문 상태 확인
101
+ 3. status가 "answered"면 answer 읽기
102
+ 4. 작업 계속 진행
103
+ ```
104
+
105
+ ### CLI 출력 (대기 중)
106
+
107
+ ```
108
+ ⏳ Manager 응답 대기 중... (Ctrl+C로 취소)
109
+ 또는 여기서 직접 응답: _
110
+ ```
111
+
112
+ ### CLI 출력 (응답 수신)
113
+
114
+ ```
115
+ ✅ 응답 수신: "y" (Manager)
116
+ → Redis 캐시 적용으로 진행합니다.
117
+ ```
118
+
119
+ ---
120
+
121
+ ## 4. Task 진행 상황 업데이트
122
+
123
+ 작업 진행 시 상태 갱신:
124
+
125
+ ### 업데이트 시점
126
+
127
+ - 작업 시작 시
128
+ - 주요 마일스톤 도달 시
129
+ - 작업 완료 시
130
+ - 문제 발생 시
131
+
132
+ ### 형식
133
+
134
+ ```json
135
+ {
136
+ "T001": {
137
+ "status": "IN_DEV",
138
+ "assignee": "developer",
139
+ "progress": 50,
140
+ "lastUpdate": "ISO8601",
141
+ "note": "API 구현 완료, DB 연동 중"
142
+ }
143
+ }
144
+ ```
145
+
146
+ ### CLI 출력
147
+
148
+ ```
149
+ 📊 진행 상황 업데이트: T001 (50%)
150
+ ```
151
+
152
+ ---
153
+
154
+ ## 5. 알림 전송
155
+
156
+ 다른 세션에 알림을 보내야 할 때:
157
+
158
+ ### 알림 유형
159
+
160
+ | 타입 | 용도 |
161
+ |------|------|
162
+ | info | 일반 정보 (작업 시작/완료) |
163
+ | warning | 주의 필요 (30초 잠금 초과) |
164
+ | error | 오류 발생 (파일 충돌) |
165
+ | question | 질문 등록됨 |
166
+ | complete | 단계 완료 (Review PASS 등) |
167
+
168
+ ### 형식
169
+
170
+ ```json
171
+ {
172
+ "id": "N001",
173
+ "type": "complete",
174
+ "from": "reviewer",
175
+ "message": "T001 리뷰 완료 - PASS",
176
+ "read": false,
177
+ "createdAt": "ISO8601"
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 6. 파일 잠금
184
+
185
+ 동시 수정 방지:
186
+
187
+ ### 잠금 필요 파일
188
+
189
+ - `current-sprint.md`
190
+ - `backlog.md`
191
+ - `decision.md`
192
+
193
+ ### 잠금 절차
194
+
195
+ ```
196
+ 1. locks에 파일 등록
197
+ 2. 작업 수행
198
+ 3. 잠금 해제
199
+ ```
200
+
201
+ ### 형식
202
+
203
+ ```json
204
+ {
205
+ "ai-dev-team/artifacts/current-sprint.md": {
206
+ "holder": "developer",
207
+ "acquiredAt": "ISO8601"
208
+ }
209
+ }
210
+ ```
211
+
212
+ ### 충돌 시
213
+
214
+ ```
215
+ ⚠️ 파일 잠금 충돌
216
+ current-sprint.md가 Manager에 의해 잠겨 있습니다.
217
+ 대기 중... (10초)
218
+ ```
219
+
220
+ ---
221
+
222
+ ## 7. 세션 종료 시
223
+
224
+ ```
225
+ 1. activeSessions에서 자신 제거
226
+ 2. 미응답 질문 처리:
227
+ - 취소 표시 또는
228
+ - 다음 세션에서 응답 가능하도록 유지
229
+ 3. 잠금 해제
230
+ 4. 파일 저장
231
+ ```
232
+
233
+ ### CLI 출력
234
+
235
+ ```
236
+ 📡 세션 종료됨 (Developer/codex)
237
+ 작업 시간: 45분
238
+ 완료 Task: T001
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 8. 에러 처리
244
+
245
+ ### 상태 파일 읽기 실패
246
+
247
+ ```
248
+ ⚠️ .ada-status.json 읽기 실패
249
+ → 새 파일 생성
250
+ ```
251
+
252
+ ### 동시 쓰기 충돌
253
+
254
+ ```
255
+ ⚠️ 상태 파일 충돌 감지
256
+ → 재시도 (3회)
257
+ → 실패 시 강제 갱신
258
+ ```
259
+
260
+ ---
261
+
262
+ ## 9. CLI 공통 표시
263
+
264
+ ### 세션 시작 헤더
265
+
266
+ ```
267
+ ━━━━━━━━━━━━━━━━━━━━━━
268
+ 🔧 Developer 세션 시작
269
+ ━━━━━━━━━━━━━━━━━━━━━━
270
+ 📡 세션 등록: Developer/codex
271
+ 🔗 활성 세션: Manager(claude), Reviewer(gemini)
272
+ ```
273
+
274
+ ### 다른 세션 알림 수신
275
+
276
+ ```
277
+ ━━━━━━━━━━━━━━━━━━━━━━
278
+ 🔔 알림 [Manager]
279
+ ━━━━━━━━━━━━━━━━━━━━━━
280
+ T002가 스프린트에 추가되었습니다.
281
+ ```
@@ -0,0 +1,255 @@
1
+ # Rule: 세션 상태 관리 (Session State Management)
2
+
3
+ 멀티 터미널 환경에서 여러 역할이 동시에 작업할 때의 상태 관리 규칙.
4
+
5
+ ---
6
+
7
+ ## 1. 상태 파일
8
+
9
+ ### 위치
10
+ ```
11
+ ai-dev-team/.ada-status.json
12
+ ```
13
+
14
+ ### 스키마
15
+
16
+ ```json
17
+ {
18
+ "version": "1.0",
19
+ "updatedAt": "ISO8601 timestamp",
20
+ "currentPhase": "planning|architecture|development|review|qa|done",
21
+ "activeSessions": [
22
+ {
23
+ "role": "역할명",
24
+ "tool": "claude|codex|gemini|copilot",
25
+ "pid": "프로세스ID (선택)",
26
+ "startedAt": "ISO8601 timestamp",
27
+ "status": "active|idle|waiting"
28
+ }
29
+ ],
30
+ "pendingQuestions": [
31
+ {
32
+ "id": "Q001",
33
+ "from": "역할명",
34
+ "to": "user|manager|역할명",
35
+ "question": "질문 내용",
36
+ "options": ["옵션1", "옵션2"],
37
+ "priority": "high|normal|low",
38
+ "status": "waiting|answered|timeout",
39
+ "createdAt": "ISO8601 timestamp",
40
+ "answeredAt": "ISO8601 timestamp (선택)",
41
+ "answer": "응답 (선택)"
42
+ }
43
+ ],
44
+ "taskProgress": {
45
+ "T001": {
46
+ "status": "READY|IN_DEV|IN_REVIEW|IN_QA|DONE",
47
+ "assignee": "역할명",
48
+ "progress": 0-100,
49
+ "lastUpdate": "ISO8601 timestamp"
50
+ }
51
+ },
52
+ "notifications": [
53
+ {
54
+ "id": "N001",
55
+ "type": "info|warning|error|question",
56
+ "from": "역할명",
57
+ "message": "알림 내용",
58
+ "read": false,
59
+ "createdAt": "ISO8601 timestamp"
60
+ }
61
+ ],
62
+ "locks": {
63
+ "파일경로": {
64
+ "holder": "역할명",
65
+ "acquiredAt": "ISO8601 timestamp"
66
+ }
67
+ }
68
+ }
69
+ ```
70
+
71
+ ---
72
+
73
+ ## 2. 역할별 상태 업데이트 규칙
74
+
75
+ ### 세션 시작 시
76
+ ```
77
+ 1. .ada-status.json 읽기 (없으면 생성)
78
+ 2. activeSessions에 자신 추가
79
+ 3. 파일 저장
80
+ ```
81
+
82
+ ### 질문 발생 시
83
+ ```
84
+ 1. pendingQuestions에 질문 추가
85
+ 2. status: "waiting"
86
+ 3. notifications에 알림 추가
87
+ 4. 파일 저장
88
+ 5. CLI에 "[질문 등록됨] Manager에게 알림 전송" 출력
89
+ ```
90
+
91
+ ### 작업 진행 시
92
+ ```
93
+ 1. taskProgress 업데이트
94
+ 2. progress 값 갱신
95
+ 3. 파일 저장
96
+ ```
97
+
98
+ ### 세션 종료 시
99
+ ```
100
+ 1. activeSessions에서 자신 제거
101
+ 2. 미응답 질문 정리
102
+ 3. 파일 저장
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 3. Manager 모니터링 모드
108
+
109
+ Manager는 두 가지 모드로 동작:
110
+
111
+ ### 일반 모드
112
+ ```
113
+ 기존 스프린트 관리 기능
114
+ ```
115
+
116
+ ### 모니터링 모드 (--watch)
117
+ ```
118
+ 1. .ada-status.json 주기적 감시 (2초 간격)
119
+ 2. 변경 감지 시 화면 업데이트
120
+ 3. pendingQuestions 발생 시 알림
121
+ 4. 여기서 직접 응답 가능
122
+ ```
123
+
124
+ ---
125
+
126
+ ## 4. 파일 잠금 규칙
127
+
128
+ ### 잠금이 필요한 파일
129
+ ```
130
+ - current-sprint.md (동시 수정 방지)
131
+ - backlog.md (Task 상태 변경 시)
132
+ ```
133
+
134
+ ### 잠금 절차
135
+ ```
136
+ 1. locks에 파일 경로와 역할 등록
137
+ 2. 작업 수행
138
+ 3. 완료 후 잠금 해제
139
+ 4. 30초 이상 잠금 유지 시 경고
140
+ ```
141
+
142
+ ### 충돌 발생 시
143
+ ```
144
+ 1. 잠금 보유자 확인
145
+ 2. notifications로 알림
146
+ 3. 대기 또는 Manager에게 에스컬레이션
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 5. 질문/응답 프로토콜
152
+
153
+ ### 질문 등록 (역할 → Manager)
154
+
155
+ ```json
156
+ {
157
+ "id": "Q001",
158
+ "from": "developer",
159
+ "to": "manager",
160
+ "question": "Redis 캐시를 적용할까요?",
161
+ "options": ["y: 적용", "n: 미적용"],
162
+ "priority": "normal",
163
+ "status": "waiting",
164
+ "createdAt": "2024-01-15T10:30:00Z"
165
+ }
166
+ ```
167
+
168
+ ### 응답 (Manager → 역할)
169
+
170
+ ```json
171
+ {
172
+ "id": "Q001",
173
+ "status": "answered",
174
+ "answeredAt": "2024-01-15T10:32:00Z",
175
+ "answer": "y"
176
+ }
177
+ ```
178
+
179
+ ### 역할에서 응답 확인
180
+
181
+ ```
182
+ 1. pendingQuestions에서 자신의 질문 확인
183
+ 2. status가 "answered"면 answer 읽기
184
+ 3. 질문 항목 삭제 또는 archived로 이동
185
+ 4. 작업 계속 진행
186
+ ```
187
+
188
+ ---
189
+
190
+ ## 6. 알림 타입
191
+
192
+ | 타입 | 용도 | 예시 |
193
+ |------|------|------|
194
+ | info | 정보 전달 | "Developer가 T001 작업 시작" |
195
+ | warning | 주의 필요 | "파일 잠금 30초 초과" |
196
+ | error | 오류 발생 | "current-sprint.md 충돌" |
197
+ | question | 응답 필요 | "Architect 질문 대기 중" |
198
+
199
+ ---
200
+
201
+ ## 7. CLI 출력 형식
202
+
203
+ ### 다른 세션에 질문 전달 시
204
+ ```
205
+ ━━━━━━━━━━━━━━━━━━━━━━
206
+ 📨 질문 등록됨
207
+ ━━━━━━━━━━━━━━━━━━━━━━
208
+ 질문: Redis 캐시를 적용할까요?
209
+ 옵션: (y) 적용 / (n) 미적용
210
+
211
+ Manager 세션에서 응답 대기 중...
212
+ 또는 이 터미널에서 응답: (y/n): _
213
+ ```
214
+
215
+ ### Manager에서 질문 수신 시
216
+ ```
217
+ ━━━━━━━━━━━━━━━━━━━━━━
218
+ ⚠️ 새 질문 [Developer]
219
+ ━━━━━━━━━━━━━━━━━━━━━━
220
+ Q001: Redis 캐시를 적용할까요?
221
+ 옵션: (y) 적용 / (n) 미적용
222
+
223
+ 응답: _
224
+ ```
225
+
226
+ ---
227
+
228
+ ## 8. 상태 초기화
229
+
230
+ ### 전체 초기화
231
+ ```bash
232
+ ada reset --status
233
+ ```
234
+
235
+ ### 좀비 세션 정리
236
+ ```bash
237
+ ada status --clean
238
+ ```
239
+
240
+ ---
241
+
242
+ ## 9. 에러 처리
243
+
244
+ ### 상태 파일 손상 시
245
+ ```
246
+ 1. .ada-status.json.bak에서 복구 시도
247
+ 2. 실패 시 초기화
248
+ 3. 모든 세션에 알림
249
+ ```
250
+
251
+ ### 네트워크 파일시스템 주의
252
+ ```
253
+ - NFS, SMB 등에서는 파일 잠금 불안정
254
+ - 로컬 파일시스템 권장
255
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silbaram/artifact-driven-agent",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CLI 기반 멀티 AI 에이전트 개발 프레임워크 - AI가 규칙을 어기지 못하게 하는 문서 기반 개발",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,7 +11,6 @@
11
11
  "src",
12
12
  "core",
13
13
  "templates",
14
- "docs",
15
14
  "examples",
16
15
  "ai-dev-team"
17
16
  ],