moai-adk 0.3.0__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +8 -0
- moai_adk/__main__.py +86 -0
- moai_adk/cli/__init__.py +2 -0
- moai_adk/cli/commands/__init__.py +16 -0
- moai_adk/cli/commands/backup.py +56 -0
- moai_adk/cli/commands/doctor.py +184 -0
- moai_adk/cli/commands/init.py +284 -0
- moai_adk/cli/commands/restore.py +77 -0
- moai_adk/cli/commands/status.py +79 -0
- moai_adk/cli/commands/update.py +133 -0
- moai_adk/cli/main.py +12 -0
- moai_adk/cli/prompts/__init__.py +5 -0
- moai_adk/cli/prompts/init_prompts.py +159 -0
- moai_adk/core/__init__.py +2 -0
- moai_adk/core/git/__init__.py +24 -0
- moai_adk/core/git/branch.py +26 -0
- moai_adk/core/git/branch_manager.py +137 -0
- moai_adk/core/git/checkpoint.py +140 -0
- moai_adk/core/git/commit.py +68 -0
- moai_adk/core/git/event_detector.py +81 -0
- moai_adk/core/git/manager.py +127 -0
- moai_adk/core/project/__init__.py +2 -0
- moai_adk/core/project/backup_utils.py +84 -0
- moai_adk/core/project/checker.py +302 -0
- moai_adk/core/project/detector.py +105 -0
- moai_adk/core/project/initializer.py +174 -0
- moai_adk/core/project/phase_executor.py +297 -0
- moai_adk/core/project/validator.py +118 -0
- moai_adk/core/quality/__init__.py +6 -0
- moai_adk/core/quality/trust_checker.py +441 -0
- moai_adk/core/quality/validators/__init__.py +6 -0
- moai_adk/core/quality/validators/base_validator.py +19 -0
- moai_adk/core/template/__init__.py +8 -0
- moai_adk/core/template/backup.py +95 -0
- moai_adk/core/template/config.py +95 -0
- moai_adk/core/template/languages.py +44 -0
- moai_adk/core/template/merger.py +117 -0
- moai_adk/core/template/processor.py +310 -0
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +474 -0
- moai_adk/templates/.claude/agents/alfred/code-builder.md +534 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +302 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +175 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +200 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +152 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +256 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +247 -0
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +332 -0
- moai_adk/templates/.claude/commands/alfred/0-project.md +523 -0
- moai_adk/templates/.claude/commands/alfred/1-spec.md +531 -0
- moai_adk/templates/.claude/commands/alfred/2-build.md +413 -0
- moai_adk/templates/.claude/commands/alfred/3-sync.md +552 -0
- moai_adk/templates/.claude/hooks/alfred/README.md +238 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +165 -0
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +79 -0
- moai_adk/templates/.claude/hooks/alfred/core/checkpoint.py +271 -0
- moai_adk/templates/.claude/hooks/alfred/core/context.py +110 -0
- moai_adk/templates/.claude/hooks/alfred/core/project.py +284 -0
- moai_adk/templates/.claude/hooks/alfred/core/tags.py +244 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +23 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/compact.py +51 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +25 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +80 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +71 -0
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +41 -0
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +635 -0
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +691 -0
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +469 -0
- moai_adk/templates/.claude/settings.json +135 -0
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +68 -0
- moai_adk/templates/.github/workflows/moai-gitflow.yml +255 -0
- moai_adk/templates/.gitignore +41 -0
- moai_adk/templates/.moai/config.json +89 -0
- moai_adk/templates/.moai/memory/development-guide.md +367 -0
- moai_adk/templates/.moai/memory/spec-metadata.md +277 -0
- moai_adk/templates/.moai/project/product.md +121 -0
- moai_adk/templates/.moai/project/structure.md +150 -0
- moai_adk/templates/.moai/project/tech.md +221 -0
- moai_adk/templates/CLAUDE.md +733 -0
- moai_adk/templates/__init__.py +2 -0
- moai_adk/utils/__init__.py +8 -0
- moai_adk/utils/banner.py +42 -0
- moai_adk/utils/logger.py +152 -0
- moai_adk-0.3.0.dist-info/METADATA +20 -0
- moai_adk-0.3.0.dist-info/RECORD +87 -0
- moai_adk-0.3.0.dist-info/WHEEL +4 -0
- moai_adk-0.3.0.dist-info/entry_points.txt +2 -0
- moai_adk-0.3.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: alfred:1-spec
|
|
3
|
+
description: EARS 명세 작성 + 브랜치/PR 생성
|
|
4
|
+
argument-hint: "제목1 제목2 ... | SPEC-ID 수정내용"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- MultiEdit
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- TodoWrite
|
|
13
|
+
- Bash(git:*)
|
|
14
|
+
- Bash(gh:*)
|
|
15
|
+
- Bash(rg:*)
|
|
16
|
+
- Bash(mkdir:*)
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# 🏗️ MoAI-ADK 1단계: EARS 명세 작성 + 브랜치/PR 생성
|
|
20
|
+
|
|
21
|
+
## 🎯 커맨드 목적
|
|
22
|
+
|
|
23
|
+
프로젝트 문서를 분석하여 EARS 구문의 명세서를 작성하고, Personal/Team 모드에 따라 Git 브랜치 및 PR을 생성합니다.
|
|
24
|
+
|
|
25
|
+
**SPEC 자동 제안/생성 대상**: $ARGUMENTS
|
|
26
|
+
|
|
27
|
+
> **표준 2단계 워크플로우** (자세한 내용: `CLAUDE.md` - "Alfred 커맨드 실행 패턴" 참조)
|
|
28
|
+
|
|
29
|
+
## 📋 실행 흐름
|
|
30
|
+
|
|
31
|
+
1. **프로젝트 분석**: product/structure/tech.md 심층 분석
|
|
32
|
+
2. **SPEC 후보 발굴**: 비즈니스 요구사항 기반 우선순위 결정
|
|
33
|
+
3. **사용자 확인**: 작성 계획 검토 및 승인
|
|
34
|
+
4. **SPEC 작성**: EARS 구조의 명세서 생성 (spec.md, plan.md, acceptance.md)
|
|
35
|
+
5. **Git 작업**: git-manager를 통한 브랜치/PR 생성
|
|
36
|
+
|
|
37
|
+
## 🔗 연관 에이전트
|
|
38
|
+
|
|
39
|
+
- **Primary**: spec-builder (🏗️ 시스템 아키텍트) - SPEC 문서 작성 전담
|
|
40
|
+
- **Secondary**: git-manager (🚀 릴리스 엔지니어) - Git 브랜치/PR 생성 전담
|
|
41
|
+
|
|
42
|
+
## 💡 사용 예시
|
|
43
|
+
|
|
44
|
+
사용자가 다음과 같이 커맨드를 실행할 수 있습니다:
|
|
45
|
+
- `/alfred:1-spec` - 프로젝트 문서 기반 자동 제안
|
|
46
|
+
- `/alfred:1-spec "JWT 인증 시스템"` - 단일 SPEC 수동 생성
|
|
47
|
+
- `/alfred:1-spec SPEC-001 "보안 보강"` - 기존 SPEC 보완
|
|
48
|
+
|
|
49
|
+
## 🔍 STEP 1: SPEC 분석 및 구현 계획 수립
|
|
50
|
+
|
|
51
|
+
프로젝트 문서를 분석하여 SPEC 후보를 제안하고 구현 전략을 수립한 후 사용자 확인을 받습니다.
|
|
52
|
+
|
|
53
|
+
### 🔍 코드베이스 탐색 (선택사항)
|
|
54
|
+
|
|
55
|
+
**사용자 요청이 불명확하거나 기존 코드 파악이 필요한 경우** Explore 에이전트를 먼저 활용합니다:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Task tool 호출 (Explore 에이전트):
|
|
59
|
+
- subagent_type: "Explore"
|
|
60
|
+
- description: "코드베이스에서 관련 파일 탐색"
|
|
61
|
+
- prompt: "다음 키워드와 관련된 모든 파일을 찾아주세요: $ARGUMENTS
|
|
62
|
+
- 파일 위치 (src/, tests/, docs/)
|
|
63
|
+
- 관련 SPEC 문서 (.moai/specs/)
|
|
64
|
+
- 기존 구현 코드
|
|
65
|
+
thoroughness 레벨: medium"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Explore 에이전트 사용 기준**:
|
|
69
|
+
- ✅ 사용자가 "어디에 있는지", "찾아줘" 등의 키워드 사용
|
|
70
|
+
- ✅ 기존 코드 구조 파악이 필요한 경우
|
|
71
|
+
- ✅ 여러 파일에 걸쳐있는 기능 조사
|
|
72
|
+
- ❌ 명확한 SPEC 제목이 주어진 경우 (바로 spec-builder로)
|
|
73
|
+
|
|
74
|
+
### ⚙️ 에이전트 호출 방법
|
|
75
|
+
|
|
76
|
+
**STEP 1에서는 Task tool을 사용하여 spec-builder 에이전트를 호출합니다**:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Task tool 호출:
|
|
80
|
+
- subagent_type: "spec-builder"
|
|
81
|
+
- description: "SPEC 분석 및 작성 계획 수립"
|
|
82
|
+
- prompt: "프로젝트 문서를 분석하여 SPEC 후보를 제안해주세요.
|
|
83
|
+
분석 모드로 실행하며, 다음을 포함해야 합니다:
|
|
84
|
+
1. product/structure/tech.md 심층 분석
|
|
85
|
+
2. SPEC 후보 발굴 및 우선순위 결정
|
|
86
|
+
3. EARS 구조 설계
|
|
87
|
+
4. 사용자 승인 대기
|
|
88
|
+
사용자 입력: $ARGUMENTS
|
|
89
|
+
(선택) Explore 결과: $EXPLORE_RESULTS"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### SPEC 분석 진행
|
|
93
|
+
|
|
94
|
+
1. **프로젝트 문서 분석**
|
|
95
|
+
- product/structure/tech.md 심층 분석
|
|
96
|
+
- 기존 SPEC 목록 및 우선순위 검토 (.moai/specs/ 스캔)
|
|
97
|
+
- 구현 가능성 및 복잡도 평가
|
|
98
|
+
- (선택) Explore 결과 반영하여 기존 코드 구조 파악
|
|
99
|
+
|
|
100
|
+
2. **SPEC 후보 발굴**
|
|
101
|
+
- 핵심 비즈니스 요구사항 추출
|
|
102
|
+
- 기술적 제약사항 반영
|
|
103
|
+
- 우선순위별 SPEC 후보 리스트 생성
|
|
104
|
+
|
|
105
|
+
3. **구현 계획 보고**
|
|
106
|
+
- 단계별 SPEC 작성 계획 제시
|
|
107
|
+
- 예상 작업 범위 및 의존성 분석
|
|
108
|
+
- EARS 구조 및 Acceptance Criteria 설계
|
|
109
|
+
|
|
110
|
+
### 사용자 확인 단계
|
|
111
|
+
|
|
112
|
+
구현 계획 검토 후 다음 중 선택하세요:
|
|
113
|
+
- **"진행"** 또는 **"시작"**: 계획대로 SPEC 작성 시작
|
|
114
|
+
- **"수정 [내용]"**: 계획 수정 요청
|
|
115
|
+
- **"중단"**: SPEC 작성 중단
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 🚀 STEP 2: SPEC 문서 작성 실행 (사용자 승인 후)
|
|
120
|
+
|
|
121
|
+
사용자 승인 후 **Task tool을 사용하여 spec-builder와 git-manager 에이전트를 호출**합니다.
|
|
122
|
+
|
|
123
|
+
### ⚙️ 에이전트 호출 방법
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
1. spec-builder 호출 (SPEC 작성):
|
|
127
|
+
- subagent_type: "spec-builder"
|
|
128
|
+
- description: "SPEC 문서 작성"
|
|
129
|
+
- prompt: "STEP 1에서 승인된 계획에 따라 SPEC 문서를 작성해주세요.
|
|
130
|
+
EARS 구조의 명세서를 생성합니다."
|
|
131
|
+
|
|
132
|
+
2. git-manager 호출 (Git 작업):
|
|
133
|
+
- subagent_type: "git-manager"
|
|
134
|
+
- description: "Git 브랜치/PR 생성"
|
|
135
|
+
- prompt: "SPEC 작성 완료 후 브랜치와 Draft PR을 생성해주세요."
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## 기능
|
|
139
|
+
|
|
140
|
+
- **프로젝트 문서 분석**: `.moai/project/{product,structure,tech}.md`를 분석해 구현 후보를 제안하고 사용자 승인 후 SPEC을 생성합니다.
|
|
141
|
+
- **Personal 모드**: `.moai/specs/SPEC-{ID}/` 디렉터리와 템플릿 문서를 만듭니다 (**디렉토리명 형식 필수**: `SPEC-` 접두어 + TAG ID).
|
|
142
|
+
- **Team 모드**: GitHub Issue(또는 Discussion)를 생성하고 브랜치 템플릿과 연결합니다.
|
|
143
|
+
|
|
144
|
+
## 사용법
|
|
145
|
+
|
|
146
|
+
사용자가 다음과 같은 형태로 커맨드를 실행합니다:
|
|
147
|
+
- `/alfred:1-spec` - 프로젝트 문서 기반 자동 제안 (권장)
|
|
148
|
+
- `/alfred:1-spec "JWT 인증 시스템"` - 단일 SPEC 수동 생성
|
|
149
|
+
- `/alfred:1-spec SPEC-001 "보안 보강"` - 기존 SPEC 보완
|
|
150
|
+
|
|
151
|
+
입력하지 않으면 Q&A 결과를 기반으로 우선순위 3~5건을 제안하며, 승인한 항목만 실제 SPEC으로 확정됩니다.
|
|
152
|
+
|
|
153
|
+
## 모드별 처리 요약
|
|
154
|
+
|
|
155
|
+
| 모드 | 산출물 | 브랜치 전략 | 추가 작업 |
|
|
156
|
+
| -------- | -------------------------------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- |
|
|
157
|
+
| Personal | `.moai/specs/SPEC-XXX/spec.md`, `plan.md`, `acceptance.md` 등 템플릿 | `main` 또는 `develop`에서 분기 (설정 기준) | git-manager 에이전트가 자동으로 체크포인트 생성 |
|
|
158
|
+
| Team | GitHub Issue(`[SPEC-XXX] 제목`), Draft PR(옵션) | **항상 `develop`에서 분기** (GitFlow 표준) | `gh` CLI 로그인 유지, Draft PR → develop 생성 |
|
|
159
|
+
|
|
160
|
+
## 입력 옵션
|
|
161
|
+
|
|
162
|
+
- **자동 제안**: `/alfred:1-spec` → 프로젝트 문서 핵심 bullet을 기반으로 후보 리스트 작성
|
|
163
|
+
- **수동 생성**: 제목을 인수로 전달 → 1건만 생성, Acceptance 템플릿은 회신 후 보완
|
|
164
|
+
- **보완 모드**: `SPEC-ID "메모"` 형식으로 전달 → 기존 SPEC 문서/Issue를 업데이트
|
|
165
|
+
|
|
166
|
+
## 📋 STEP 1 실행 가이드: SPEC 분석 및 계획 수립
|
|
167
|
+
|
|
168
|
+
### ⚠️ 필수 규칙: 디렉토리 명명 규칙
|
|
169
|
+
|
|
170
|
+
**반드시 준수해야 할 형식**: `.moai/specs/SPEC-{ID}/`
|
|
171
|
+
|
|
172
|
+
**올바른 예시**:
|
|
173
|
+
- ✅ `SPEC-AUTH-001/`
|
|
174
|
+
- ✅ `SPEC-REFACTOR-001/`
|
|
175
|
+
- ✅ `SPEC-UPDATE-REFACTOR-001/`
|
|
176
|
+
|
|
177
|
+
**잘못된 예시**:
|
|
178
|
+
- ❌ `AUTH-001/` (SPEC- 접두어 누락)
|
|
179
|
+
- ❌ `SPEC-001-auth/` (ID 뒤 추가 텍스트)
|
|
180
|
+
- ❌ `SPEC-AUTH-001-jwt/` (ID 뒤 추가 텍스트)
|
|
181
|
+
|
|
182
|
+
**중복 확인 필수**: 새 SPEC ID를 생성하기 전에 반드시 기존 TAG ID를 검색하여 중복을 방지합니다.
|
|
183
|
+
|
|
184
|
+
**복합 도메인 규칙**:
|
|
185
|
+
- ✅ 허용: `UPDATE-REFACTOR-001` (2개 도메인)
|
|
186
|
+
- ⚠️ 주의: `UPDATE-REFACTOR-FIX-001` (3개 이상 도메인, 단순화 권장)
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### 1. 프로젝트 문서 분석
|
|
191
|
+
|
|
192
|
+
Alfred는 spec-builder 에이전트를 호출하여 프로젝트 문서 기반 SPEC 분석 및 계획 수립을 수행합니다.
|
|
193
|
+
|
|
194
|
+
#### 분석 체크리스트
|
|
195
|
+
|
|
196
|
+
- [ ] **요구사항 추출**: product.md의 핵심 비즈니스 요구사항 파악
|
|
197
|
+
- [ ] **아키텍처 제약**: structure.md의 시스템 설계 제약사항 확인
|
|
198
|
+
- [ ] **기술적 제약**: tech.md의 기술 스택 및 품질 정책
|
|
199
|
+
- [ ] **기존 SPEC**: 현재 SPEC 목록 및 우선순위 검토
|
|
200
|
+
|
|
201
|
+
### 2. SPEC 후보 발굴 전략
|
|
202
|
+
|
|
203
|
+
#### 우선순위 결정 기준
|
|
204
|
+
|
|
205
|
+
| 우선순위 | 기준 | SPEC 후보 유형 |
|
|
206
|
+
|---------|------|----------------|
|
|
207
|
+
| **높음** | 핵심 비즈니스 가치 | 사용자 핵심 기능, API 설계 |
|
|
208
|
+
| **중간** | 시스템 안정성 | 인증/보안, 데이터 관리 |
|
|
209
|
+
| **낮음** | 개선 및 확장 | UI/UX 개선, 성능 최적화 |
|
|
210
|
+
|
|
211
|
+
#### SPEC 타입별 접근법
|
|
212
|
+
|
|
213
|
+
- **API/백엔드**: 엔드포인트 설계, 데이터 모델, 인증
|
|
214
|
+
- **프론트엔드**: 사용자 인터페이스, 상태 관리, 라우팅
|
|
215
|
+
- **인프라**: 배포, 모니터링, 보안 정책
|
|
216
|
+
- **품질**: 테스트 전략, 성능 기준, 문서화
|
|
217
|
+
|
|
218
|
+
### 3. SPEC 작성 계획 보고서 생성
|
|
219
|
+
|
|
220
|
+
다음 형식으로 계획을 제시합니다:
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
## SPEC 작성 계획 보고서: [TARGET]
|
|
224
|
+
|
|
225
|
+
### 📊 분석 결과
|
|
226
|
+
- **발굴된 SPEC 후보**: [개수 및 카테고리]
|
|
227
|
+
- **우선순위 높음**: [핵심 SPEC 목록]
|
|
228
|
+
- **예상 작업시간**: [시간 산정]
|
|
229
|
+
|
|
230
|
+
### 🎯 작성 전략
|
|
231
|
+
- **선택된 SPEC**: [작성할 SPEC ID 및 제목]
|
|
232
|
+
- **EARS 구조**: [Event-Action-Response-State 설계]
|
|
233
|
+
- **Acceptance Criteria**: [Given-When-Then 시나리오]
|
|
234
|
+
|
|
235
|
+
### 📦 기술 스택 및 라이브러리 버전 (선택사항)
|
|
236
|
+
**기술 스택이 SPEC 작성 단계에서 결정되는 경우에만 포함**:
|
|
237
|
+
- **웹 검색**: `WebSearch`를 통해 사용할 주요 라이브러리의 최신 안정 버전 확인
|
|
238
|
+
- **버전 명시**: 라이브러리별 정확한 버전 명시 (예: `fastapi>=0.118.3`)
|
|
239
|
+
- **안정성 우선**: 베타/알파 버전 제외, 프로덕션 안정 버전만 선택
|
|
240
|
+
- **참고**: 상세 버전은 `/alfred:2-build` 단계에서 최종 확정
|
|
241
|
+
|
|
242
|
+
### ⚠️ 주의사항
|
|
243
|
+
- **기술적 제약**: [고려해야 할 제약사항]
|
|
244
|
+
- **의존성**: [다른 SPEC과의 연관성]
|
|
245
|
+
- **브랜치 전략**: [Personal/Team 모드별 처리]
|
|
246
|
+
|
|
247
|
+
### ✅ 예상 산출물
|
|
248
|
+
- **spec.md**: [EARS 구조의 핵심 명세]
|
|
249
|
+
- **plan.md**: [구현 계획서]
|
|
250
|
+
- **acceptance.md**: [인수 기준]
|
|
251
|
+
- **브랜치/PR**: [모드별 Git 작업]
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
**승인 요청**: 위 계획으로 SPEC 작성을 진행하시겠습니까?
|
|
255
|
+
("진행", "수정 [내용]", "중단" 중 선택)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 🚀 STEP 2 실행 가이드: SPEC 작성 (승인 후)
|
|
261
|
+
|
|
262
|
+
사용자가 **"진행"** 또는 **"시작"**을 선택한 경우에만 Alfred는 spec-builder 에이전트를 호출하여 SPEC 문서 작성을 시작합니다.
|
|
263
|
+
|
|
264
|
+
### EARS 명세 작성 가이드
|
|
265
|
+
|
|
266
|
+
1. **Event**: 시스템에 발생하는 트리거 이벤트 정의
|
|
267
|
+
2. **Action**: 이벤트에 대한 시스템의 행동 명세
|
|
268
|
+
3. **Response**: 행동의 결과로 나타나는 응답 정의
|
|
269
|
+
4. **State**: 시스템 상태 변화 및 부작용 명시
|
|
270
|
+
|
|
271
|
+
**예시** (상세 내용은 `development-guide.md` 참조):
|
|
272
|
+
```markdown
|
|
273
|
+
### Ubiquitous Requirements (기본 요구사항)
|
|
274
|
+
- 시스템은 사용자 인증 기능을 제공해야 한다
|
|
275
|
+
|
|
276
|
+
### Event-driven Requirements (이벤트 기반)
|
|
277
|
+
- WHEN 사용자가 유효한 자격증명으로 로그인하면, 시스템은 JWT 토큰을 발급해야 한다
|
|
278
|
+
|
|
279
|
+
### State-driven Requirements (상태 기반)
|
|
280
|
+
- WHILE 토큰이 만료되지 않은 상태일 때, 시스템은 보호된 리소스에 대한 접근을 허용해야 한다
|
|
281
|
+
|
|
282
|
+
### Constraints (제약사항)
|
|
283
|
+
- IF 토큰이 만료되었으면, 시스템은 401 Unauthorized 응답을 반환해야 한다
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### 📄 SPEC 문서 템플릿
|
|
287
|
+
|
|
288
|
+
#### YAML Front Matter 스키마
|
|
289
|
+
|
|
290
|
+
> **📋 SPEC 메타데이터 표준 (SSOT)**: `.moai/memory/spec-metadata.md`
|
|
291
|
+
|
|
292
|
+
**spec.md 파일 상단에 반드시 포함**해야 하는 메타데이터:
|
|
293
|
+
- **필수 필드 7개**: id, version, status, created, updated, author, priority
|
|
294
|
+
- **선택 필드 9개**: category, labels, depends_on, blocks, related_specs, related_issue, scope
|
|
295
|
+
|
|
296
|
+
**간단한 참조 예시**:
|
|
297
|
+
```yaml
|
|
298
|
+
---
|
|
299
|
+
id: AUTH-001
|
|
300
|
+
version: 0.0.1
|
|
301
|
+
status: draft
|
|
302
|
+
created: 2025-09-15
|
|
303
|
+
updated: 2025-09-15
|
|
304
|
+
author: @Goos
|
|
305
|
+
priority: high
|
|
306
|
+
---
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**핵심 규칙**:
|
|
310
|
+
- **id**: TAG ID와 동일 (`<도메인>-<3자리>`) - 생성 후 절대 변경 금지
|
|
311
|
+
- **디렉토리명**: `.moai/specs/SPEC-{ID}/` (예: `SPEC-AUTH-001/`)
|
|
312
|
+
- **중복 확인**: `rg "@SPEC:{ID}" -n .moai/specs/` 필수
|
|
313
|
+
- **version**: v0.0.1 (INITIAL) → v0.1.0 (구현 완료) → v1.0.0 (안정화)
|
|
314
|
+
- **author**: GitHub ID 앞에 @ 접두사 필수 (예: `@Goos`)
|
|
315
|
+
- **priority**: critical | high | medium | low
|
|
316
|
+
|
|
317
|
+
**전체 필드 설명 및 검증 방법**: `.moai/memory/spec-metadata.md` 참조
|
|
318
|
+
|
|
319
|
+
#### HISTORY 섹션 (필수)
|
|
320
|
+
|
|
321
|
+
**YAML Front Matter 직후**에 반드시 HISTORY 섹션을 포함해야 합니다:
|
|
322
|
+
|
|
323
|
+
```markdown
|
|
324
|
+
# @SPEC:AUTH-001: JWT 기반 인증 시스템
|
|
325
|
+
|
|
326
|
+
## HISTORY
|
|
327
|
+
|
|
328
|
+
### v0.0.1 (2025-09-15)
|
|
329
|
+
- **INITIAL**: JWT 기반 인증 시스템 명세 최초 작성
|
|
330
|
+
- **AUTHOR**: @Goos
|
|
331
|
+
- **SCOPE**: 토큰 발급, 검증, 갱신 로직
|
|
332
|
+
- **CONTEXT**: 사용자 인증 강화 요구사항 반영
|
|
333
|
+
|
|
334
|
+
### v0.0.2 (2025-09-20)
|
|
335
|
+
- **ADDED**: 소셜 로그인 요구사항 추가 (Draft 수정)
|
|
336
|
+
- **AUTHOR**: @Goos
|
|
337
|
+
- **REVIEW**: @security-team (승인)
|
|
338
|
+
- **CHANGES**:
|
|
339
|
+
- OAuth2 통합 요구사항
|
|
340
|
+
- Google/GitHub 로그인 지원
|
|
341
|
+
|
|
342
|
+
### v0.1.0 (2025-10-01)
|
|
343
|
+
- **IMPLEMENTATION COMPLETED**: TDD 구현 완료 (status: draft → completed)
|
|
344
|
+
- **TDD CYCLE**: RED → GREEN → REFACTOR
|
|
345
|
+
- **COMMITS**: [구현 커밋 해시 목록]
|
|
346
|
+
- **FILES**: [생성/수정된 파일 목록]
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**HISTORY 작성 규칙**:
|
|
350
|
+
- **버전 체계**: v0.0.1 (INITIAL) → v0.1.0 (구현 완료) → v1.0.0 (안정화)
|
|
351
|
+
- 상세 버전 체계: `.moai/memory/spec-metadata.md#버전-체계` 참조
|
|
352
|
+
- **버전 순서**: 최신 버전이 위로 (역순)
|
|
353
|
+
- **변경 타입 태그**: INITIAL, ADDED, CHANGED, IMPLEMENTATION COMPLETED, BREAKING, DEPRECATED, REMOVED, FIXED
|
|
354
|
+
- 상세 설명: `.moai/memory/spec-metadata.md#history-작성-가이드` 참조
|
|
355
|
+
- **필수 항목**: 버전, 날짜, AUTHOR, 변경 내용
|
|
356
|
+
- **선택 항목**: REVIEW, SCOPE, CONTEXT, MIGRATION
|
|
357
|
+
|
|
358
|
+
#### SPEC 문서 전체 구조
|
|
359
|
+
|
|
360
|
+
```markdown
|
|
361
|
+
---
|
|
362
|
+
id: AUTH-001
|
|
363
|
+
version: 1.0.0
|
|
364
|
+
status: draft
|
|
365
|
+
created: 2025-09-15
|
|
366
|
+
updated: 2025-09-15
|
|
367
|
+
author: @username
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
# @SPEC:AUTH-001: [SPEC 제목]
|
|
371
|
+
|
|
372
|
+
## HISTORY
|
|
373
|
+
[버전별 변경 이력 - 위 예시 참조]
|
|
374
|
+
|
|
375
|
+
## Environment (환경)
|
|
376
|
+
[시스템 환경 및 전제 조건]
|
|
377
|
+
|
|
378
|
+
## Assumptions (가정)
|
|
379
|
+
[설계 가정 사항]
|
|
380
|
+
|
|
381
|
+
## Requirements (요구사항)
|
|
382
|
+
### Ubiquitous (필수 기능)
|
|
383
|
+
- 시스템은 [기능]을 제공해야 한다
|
|
384
|
+
|
|
385
|
+
### Event-driven (이벤트 기반)
|
|
386
|
+
- WHEN [조건]이면, 시스템은 [동작]해야 한다
|
|
387
|
+
|
|
388
|
+
### State-driven (상태 기반)
|
|
389
|
+
- WHILE [상태]일 때, 시스템은 [동작]해야 한다
|
|
390
|
+
|
|
391
|
+
### Optional (선택 기능)
|
|
392
|
+
- WHERE [조건]이면, 시스템은 [동작]할 수 있다
|
|
393
|
+
|
|
394
|
+
### Constraints (제약사항)
|
|
395
|
+
- IF [조건]이면, 시스템은 [제약]해야 한다
|
|
396
|
+
|
|
397
|
+
## Traceability (@TAG)
|
|
398
|
+
- **SPEC**: @SPEC:AUTH-001
|
|
399
|
+
- **TEST**: tests/auth/test_service.py
|
|
400
|
+
- **CODE**: src/auth/service.py
|
|
401
|
+
- **DOC**: docs/api/authentication.md
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### 에이전트 협업 구조
|
|
405
|
+
|
|
406
|
+
- **1단계**: `spec-builder` 에이전트가 프로젝트 문서 분석 및 SPEC 문서 작성을 전담합니다.
|
|
407
|
+
- **2단계**: `git-manager` 에이전트가 브랜치 생성, GitHub Issue/PR 생성을 전담합니다.
|
|
408
|
+
- **단일 책임 원칙**: spec-builder는 SPEC 작성만, git-manager는 Git/GitHub 작업만 수행합니다.
|
|
409
|
+
- **순차 실행**: spec-builder → git-manager 순서로 실행하여 명확한 의존성을 유지합니다.
|
|
410
|
+
- **에이전트 간 호출 금지**: 각 에이전트는 다른 에이전트를 직접 호출하지 않고, 커맨드 레벨에서만 순차 실행합니다.
|
|
411
|
+
|
|
412
|
+
## 🚀 최적화된 워크플로우 실행 순서
|
|
413
|
+
|
|
414
|
+
### Phase 1: 병렬 프로젝트 분석 (성능 최적화)
|
|
415
|
+
|
|
416
|
+
**동시에 수행**:
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
Task 1 (haiku): 프로젝트 구조 스캔
|
|
420
|
+
├── 언어/프레임워크 감지
|
|
421
|
+
├── 기존 SPEC 목록 수집
|
|
422
|
+
└── 우선순위 백로그 초안
|
|
423
|
+
|
|
424
|
+
Task 2 (sonnet): 심화 문서 분석
|
|
425
|
+
├── product.md 요구사항 추출
|
|
426
|
+
├── structure.md 아키텍처 분석
|
|
427
|
+
└── tech.md 기술적 제약사항
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
**성능 향상**: 기본 스캔과 심화 분석을 병렬 처리하여 대기 시간 최소화
|
|
431
|
+
|
|
432
|
+
### Phase 2: SPEC 문서 통합 작성
|
|
433
|
+
|
|
434
|
+
`spec-builder` 에이전트(sonnet)가 병렬 분석 결과를 통합하여:
|
|
435
|
+
|
|
436
|
+
- 프로젝트 문서 기반 기능 후보 제안
|
|
437
|
+
- 사용자 승인 후 SPEC 문서 작성 (MultiEdit 활용)
|
|
438
|
+
- 3개 파일 동시 생성 (spec.md, plan.md, acceptance.md)
|
|
439
|
+
|
|
440
|
+
### Phase 3: Git 작업 처리
|
|
441
|
+
|
|
442
|
+
`git-manager` 에이전트(haiku)가 최종 처리:
|
|
443
|
+
|
|
444
|
+
- **브랜치 생성**: 모드별 전략 적용
|
|
445
|
+
- **Personal 모드**: `main` 또는 `develop`에서 분기 (프로젝트 설정 기준)
|
|
446
|
+
- **Team 모드**: **항상 `develop`에서 분기** (GitFlow 표준)
|
|
447
|
+
- 브랜치명: `feature/SPEC-{ID}` 형식
|
|
448
|
+
- **GitHub Issue 생성**: Team 모드에서 SPEC Issue 생성
|
|
449
|
+
- **Draft PR 생성**: Team 모드에서 `feature/SPEC-{ID}` → `develop` PR 생성
|
|
450
|
+
- **초기 커밋**: SPEC 문서 커밋 및 태그 생성
|
|
451
|
+
|
|
452
|
+
**중요**: 각 에이전트는 독립적으로 실행되며, 에이전트 간 직접 호출은 금지됩니다.
|
|
453
|
+
|
|
454
|
+
## 에이전트 역할 분리
|
|
455
|
+
|
|
456
|
+
### spec-builder 전담 영역
|
|
457
|
+
|
|
458
|
+
- 프로젝트 문서 분석 및 SPEC 후보 발굴
|
|
459
|
+
- EARS 구조의 명세서 작성
|
|
460
|
+
- Acceptance Criteria 작성 (Given-When-Then)
|
|
461
|
+
- SPEC 문서 품질 검증
|
|
462
|
+
- @TAG 시스템 적용
|
|
463
|
+
|
|
464
|
+
### git-manager 전담 영역
|
|
465
|
+
|
|
466
|
+
- 모든 Git 브랜치 생성 및 관리
|
|
467
|
+
- **모드별 브랜치 전략 적용**
|
|
468
|
+
- Personal: `main` 또는 `develop`에서 분기
|
|
469
|
+
- Team: **항상 `develop`에서 분기** (GitFlow)
|
|
470
|
+
- GitHub Issue/PR 생성
|
|
471
|
+
- Team 모드: Draft PR 생성 (`feature/SPEC-{ID}` → `develop`)
|
|
472
|
+
- 초기 커밋 및 태그 생성
|
|
473
|
+
- 원격 동기화 처리
|
|
474
|
+
|
|
475
|
+
## 2단계 워크플로우 실행 순서
|
|
476
|
+
|
|
477
|
+
### Phase 1: 분석 및 계획 단계
|
|
478
|
+
|
|
479
|
+
**SPEC 분석기**가 다음을 수행:
|
|
480
|
+
|
|
481
|
+
1. **프로젝트 문서 로딩**: product/structure/tech.md 심층 분석
|
|
482
|
+
2. **SPEC 후보 발굴**: 비즈니스 요구사항 기반 우선순위 결정
|
|
483
|
+
3. **구현 전략 수립**: EARS 구조 및 Acceptance 설계
|
|
484
|
+
4. **작성 계획 생성**: 단계별 SPEC 작성 접근 방식 제시
|
|
485
|
+
5. **사용자 승인 대기**: 계획 검토 및 피드백 수집
|
|
486
|
+
|
|
487
|
+
### Phase 2: SPEC 작성 단계 (승인 후)
|
|
488
|
+
|
|
489
|
+
`spec-builder` 에이전트가 사용자 승인 후 **연속적으로** 수행:
|
|
490
|
+
|
|
491
|
+
1. **EARS 명세 작성**: Event-Action-Response-State 구조화
|
|
492
|
+
2. **Acceptance Criteria**: Given-When-Then 시나리오 작성
|
|
493
|
+
3. **문서 품질 검증**: TRUST 원칙 및 @TAG 적용
|
|
494
|
+
4. **템플릿 생성**: spec.md, plan.md, acceptance.md 동시 생성
|
|
495
|
+
|
|
496
|
+
### Phase 3: Git 작업 (git-manager)
|
|
497
|
+
|
|
498
|
+
`git-manager` 에이전트가 SPEC 완료 후 **한 번에** 수행:
|
|
499
|
+
|
|
500
|
+
1. **브랜치 생성**: 모드별 브랜치 전략 적용
|
|
501
|
+
2. **GitHub Issue**: Team 모드에서 SPEC Issue 생성
|
|
502
|
+
3. **초기 커밋**: SPEC 문서 커밋 및 태그 생성
|
|
503
|
+
4. **원격 동기화**: 모드별 동기화 전략 적용
|
|
504
|
+
|
|
505
|
+
## 작성 팁
|
|
506
|
+
|
|
507
|
+
- product/structure/tech 문서에 없는 정보는 새로 질문해 보완합니다.
|
|
508
|
+
- Acceptance Criteria는 Given/When/Then 3단으로 최소 2개 이상 작성하도록 유도합니다.
|
|
509
|
+
- TRUST 원칙 중 Readable(읽기 쉬움) 기준 완화로 인해 모듈 수가 권장치(기본 5)를 초과하는 경우, 근거를 SPEC `context` 섹션에 함께 기록하세요.
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
## 🧠 Context Management (컨텍스트 관리)
|
|
514
|
+
|
|
515
|
+
> 자세한 내용: `.moai/memory/development-guide.md` - "Context Engineering" 섹션 참조
|
|
516
|
+
|
|
517
|
+
### 이 커맨드의 핵심 전략
|
|
518
|
+
|
|
519
|
+
**우선 로드**: `.moai/project/product.md` (비즈니스 요구사항)
|
|
520
|
+
**Compaction 권장**: SPEC 작성 완료 후 `/alfred:2-build` 진행 전
|
|
521
|
+
|
|
522
|
+
**권장사항**: SPEC 작성이 완료되었습니다. 다음 단계(`/alfred:2-build`) 진행 전 `/clear` 또는 `/new` 명령으로 새로운 대화 세션을 시작하면 더 나은 성능과 컨텍스트 관리를 경험할 수 있습니다.
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## 다음 단계
|
|
527
|
+
|
|
528
|
+
**권장사항**: 다음 단계 진행 전 `/clear` 또는 `/new` 명령으로 새로운 대화 세션을 시작하면 더 나은 성능과 컨텍스트 관리를 경험할 수 있습니다.
|
|
529
|
+
|
|
530
|
+
- `/alfred:2-build SPEC-XXX`로 TDD 구현 시작
|
|
531
|
+
- 팀 모드: Issue 생성 후 git-manager 에이전트가 자동으로 브랜치 생성
|