moai-adk 0.3.3__py3-none-any.whl → 0.3.7__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 +1 -1
- moai_adk/cli/commands/update.py +49 -30
- moai_adk/core/project/initializer.py +16 -5
- moai_adk/core/project/phase_executor.py +27 -3
- moai_adk/core/project/validator.py +46 -1
- moai_adk/core/template/processor.py +151 -11
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +474 -0
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +166 -0
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +175 -0
- moai_adk/templates/.claude/agents/alfred/git-manager.md +327 -0
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +311 -0
- moai_adk/templates/.claude/agents/alfred/project-manager.md +152 -0
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +301 -0
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +241 -0
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +247 -0
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +280 -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 +530 -0
- moai_adk/templates/.claude/commands/alfred/2-build.md +430 -0
- moai_adk/templates/.claude/commands/alfred/3-sync.md +552 -0
- moai_adk/templates/.claude/hooks/alfred/README.md +230 -0
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +160 -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 +21 -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 +134 -0
- moai_adk/templates/.moai/hooks/pre-push.sample +88 -0
- moai_adk/templates/.moai/memory/development-guide.md +1 -26
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +220 -0
- {moai_adk-0.3.3.dist-info → moai_adk-0.3.7.dist-info}/METADATA +783 -250
- moai_adk-0.3.7.dist-info/RECORD +89 -0
- moai_adk-0.3.3.dist-info/RECORD +0 -56
- {moai_adk-0.3.3.dist-info → moai_adk-0.3.7.dist-info}/WHEEL +0 -0
- {moai_adk-0.3.3.dist-info → moai_adk-0.3.7.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.3.3.dist-info → moai_adk-0.3.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: moai-adk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.7
|
|
4
4
|
Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent
|
|
5
5
|
Project-URL: Homepage, https://github.com/modu-ai/moai-adk
|
|
6
6
|
Project-URL: Repository, https://github.com/modu-ai/moai-adk
|
|
@@ -21,6 +21,7 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
21
21
|
Requires-Python: >=3.13
|
|
22
22
|
Requires-Dist: click>=8.1.0
|
|
23
23
|
Requires-Dist: gitpython>=3.1.45
|
|
24
|
+
Requires-Dist: packaging>=21.0
|
|
24
25
|
Requires-Dist: pyfiglet>=1.0.2
|
|
25
26
|
Requires-Dist: questionary>=2.0.0
|
|
26
27
|
Requires-Dist: rich>=13.0.0
|
|
@@ -56,251 +57,327 @@ Description-Content-Type: text/markdown
|
|
|
56
57
|
|
|
57
58
|
## 목차
|
|
58
59
|
|
|
59
|
-
- [
|
|
60
|
-
- [Meet Alfred](
|
|
61
|
-
- [
|
|
62
|
-
- [Quick Start](
|
|
63
|
-
- [
|
|
64
|
-
- [
|
|
65
|
-
- [
|
|
66
|
-
- [
|
|
67
|
-
- [
|
|
68
|
-
- [
|
|
69
|
-
- [
|
|
60
|
+
- [이런 문제 겪고 계신가요?](#이런-문제-겪고-계신가요)
|
|
61
|
+
- [Meet Alfred](#meet-alfred---12개-ai-에이전트-팀)
|
|
62
|
+
- [5분 만에 이해하는 핵심 개념](#5분-만에-이해하는-핵심-개념)
|
|
63
|
+
- [Quick Start](#quick-start-3분-실전)
|
|
64
|
+
- [첫 번째 프로젝트: Todo API](#첫-번째-프로젝트-todo-api-만들기)
|
|
65
|
+
- [3단계 워크플로우](#3단계-워크플로우)
|
|
66
|
+
- [실전 시나리오](#실전-시나리오)
|
|
67
|
+
- [AI 모델 선택 가이드](#ai-모델-선택-가이드)
|
|
68
|
+
- [CLI Reference](#cli-reference)
|
|
69
|
+
- [출력 스타일](#alfreds-output-styles)
|
|
70
|
+
- [언어 지원](#universal-language-support)
|
|
71
|
+
- [TRUST 5원칙](#trust-5원칙)
|
|
72
|
+
- [FAQ](#faq)
|
|
73
|
+
- [문제 해결](#문제-해결)
|
|
70
74
|
|
|
71
75
|
---
|
|
72
76
|
|
|
73
|
-
##
|
|
77
|
+
## ■ 이런 문제 겪고 계신가요?
|
|
74
78
|
|
|
75
|
-
###
|
|
79
|
+
### AI 코딩의 현실
|
|
76
80
|
|
|
77
|
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
- **롤백 지원**: 문제 발생 시 백업에서 복구 가능
|
|
81
|
+
- **"AI가 만든 코드, 나중에 유지보수 불가능..."**
|
|
82
|
+
- 같은 기능을 매번 다르게 구현
|
|
83
|
+
- 코드 스타일이 파일마다 제각각
|
|
84
|
+
- 테스트 코드는 없고 버그는 많음
|
|
82
85
|
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- **투명한 동작**: 백그라운드 자동 생성, 사용자에게 알림
|
|
86
|
+
- **"같은 질문 반복해도 매번 다른 답변..."**
|
|
87
|
+
- 이전 대화 내용을 기억하지 못함
|
|
88
|
+
- 일관된 아키텍처를 유지하기 어려움
|
|
89
|
+
- 프로젝트 전체 맥락을 놓침
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
91
|
+
- **"코드는 많은데 문서는 없고, 추적 불가능..."**
|
|
92
|
+
- 왜 이렇게 만들었는지 알 수 없음
|
|
93
|
+
- 코드 변경 이력 추적 불가
|
|
94
|
+
- 요구사항과 코드가 따로 놈
|
|
93
95
|
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
#### 5. AI 모델 최적화 - Haiku/Sonnet 전략적 배치
|
|
100
|
-
- **Haiku 에이전트 적용** (5개): doc-syncer, tag-agent, git-manager, trust-checker, Explore
|
|
101
|
-
- 빠른 응답 속도 (2~5배 향상)
|
|
102
|
-
- 비용 67% 절감
|
|
103
|
-
- 반복 작업 및 패턴 매칭에 최적화
|
|
104
|
-
- **Sonnet 에이전트 유지** (5개): spec-builder, code-builder, debug-helper, cc-manager, project-manager
|
|
105
|
-
- 복잡한 판단 및 설계에 집중
|
|
106
|
-
- 높은 품질 보장
|
|
107
|
-
- **/model 명령어 지원**:
|
|
108
|
-
- `/model haiku` → **패스트 모드** (빠른 응답, 반복 작업)
|
|
109
|
-
- `/model sonnet` → **스마트 모드** (복잡한 판단, 설계)
|
|
110
|
-
|
|
111
|
-
### 🛠️ 도구 & 명령어 개선
|
|
112
|
-
|
|
113
|
-
#### CLI 명령어 표준화
|
|
114
|
-
```bash
|
|
115
|
-
# 새 프로젝트 생성
|
|
116
|
-
moai-adk init project-name
|
|
96
|
+
- **"프롬프트 엔지니어링에만 하루가 다 갔어요..."**
|
|
97
|
+
- 완벽한 프롬프트를 찾기 위해 수십 번 시도
|
|
98
|
+
- AI에게 매번 같은 제약사항을 반복 설명
|
|
99
|
+
- 코드 품질을 수동으로 검증
|
|
117
100
|
|
|
118
|
-
|
|
119
|
-
moai-adk init .
|
|
101
|
+
### MoAI-ADK는 이렇게 해결합니다
|
|
120
102
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
103
|
+
```mermaid
|
|
104
|
+
%%{init: {'theme':'neutral'}}%%
|
|
105
|
+
flowchart TD
|
|
106
|
+
Problem["■ 문제: 플랑켄슈타인 코드"] --> Solution["MoAI-ADK"]
|
|
107
|
+
Solution --> SPEC["SPEC 우선<br/>명세 없으면 코드 없다"]
|
|
108
|
+
Solution --> TDD["TDD 강제<br/>테스트 없으면 구현 없다"]
|
|
109
|
+
Solution --> TAG["@TAG 추적<br/>모든 코드가 SPEC과 연결"]
|
|
127
110
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
- **2-build**: TDD 전체 사이클(RED→GREEN→REFACTOR) 완료 시 1회 커밋
|
|
132
|
-
- **3-sync**: 문서 동기화 완료 시 커밋
|
|
111
|
+
SPEC --> Result["결과"]
|
|
112
|
+
TDD --> Result
|
|
113
|
+
TAG --> Result
|
|
133
114
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
### 📚 문서 강화
|
|
140
|
-
|
|
141
|
-
#### SPEC 메타데이터 표준 (SSOT)
|
|
142
|
-
- **필수 필드 7개**: id, version, status, created, updated, author, priority
|
|
143
|
-
- **선택 필드 9개**: category, labels, depends_on, blocks, related_specs, related_issue, scope
|
|
144
|
-
- **HISTORY 섹션**: 모든 버전 변경 이력 기록 (필수)
|
|
145
|
-
- `.moai/memory/spec-metadata.md`에 전체 가이드 문서화
|
|
146
|
-
|
|
147
|
-
#### Explore 에이전트 활용 가이드
|
|
148
|
-
- 코드 분석 권장 상황 명확화
|
|
149
|
-
- thoroughness 레벨별 사용법 (quick/medium/very thorough)
|
|
150
|
-
- JIT Retrieval 최적화 전략
|
|
151
|
-
|
|
152
|
-
### 🔒 보안 & 안정성
|
|
153
|
-
|
|
154
|
-
#### 크로스 플랫폼 지원 강화
|
|
155
|
-
- Windows/macOS/Linux 동일 동작 보장
|
|
156
|
-
- 플랫폼별 에러 메시지 제공
|
|
157
|
-
- PowerShell + Python 보안 스캔 스크립트
|
|
158
|
-
|
|
159
|
-
#### .gitignore 및 프로젝트 정리
|
|
160
|
-
- 로컬 설정 파일 자동 제외 (`.claude/settings.local.json`)
|
|
161
|
-
- 임시 테스트 파일 제외 (`*-test-report.md`)
|
|
162
|
-
- 불필요한 파일 자동 정리
|
|
163
|
-
|
|
164
|
-
### 🎨 출력 스타일 개선
|
|
165
|
-
|
|
166
|
-
#### 3가지 표준 스타일
|
|
167
|
-
- **MoAI Beginner Learning**: 개발 입문자를 위한 친절한 가이드
|
|
168
|
-
- **MoAI Professional**: 전문 개발자를 위한 효율적인 출력
|
|
169
|
-
- **MoAI Alfred (기본)**: 균형잡힌 AI 협업 스타일
|
|
115
|
+
Result --> Quality["높은 품질<br/>TRUST 5원칙 자동 검증"]
|
|
116
|
+
Result --> Track["완벽한 추적성<br/>SPEC→TEST→CODE→DOC"]
|
|
117
|
+
Result --> Maintain["쉬운 유지보수<br/>코드 변경 이력 완전 기록"]
|
|
118
|
+
```
|
|
170
119
|
|
|
171
120
|
---
|
|
172
121
|
|
|
173
|
-
##
|
|
122
|
+
## ■ Meet Alfred - AI 에이전트 팀
|
|
174
123
|
|
|
175
|
-
안녕하세요, 모두의AI SuperAgent
|
|
124
|
+
안녕하세요, 모두의AI SuperAgent **Alfred**입니다!
|
|
176
125
|
|
|
177
126
|

|
|
178
127
|
|
|
179
|
-
저는 MoAI-ADK의 SuperAgent이자 중앙 오케스트레이터 AI입니다. **
|
|
128
|
+
저는 MoAI-ADK의 SuperAgent이자 중앙 오케스트레이터 AI입니다. **AI 에이전트 팀**(Alfred + 다수 전문 에이전트)을 조율하여 Claude Code 환경에서 완벽한 개발 지원을 제공합니다.
|
|
180
129
|
|
|
181
|
-
###
|
|
130
|
+
### ▶ 흥미로운 사실: AI가 만든 AI 개발 도구
|
|
182
131
|
|
|
183
132
|
이 프로젝트의 모든 코드는 **100% AI에 의해 작성**되었습니다.
|
|
184
133
|
|
|
185
134
|
- **AI 협업 설계**: GPT-5 Pro와 Claude 4.1 Opus가 함께 아키텍처를 설계
|
|
186
|
-
- **Agentic Coding 적용**:
|
|
135
|
+
- **Agentic Coding 적용**: AI 에이전트 팀(Alfred + 다수 전문 에이전트)이 자율적으로 SPEC 작성, TDD 구현, 문서 동기화 수행
|
|
187
136
|
- **투명성**: 완벽하지 않은 부분을 숨기지 않고, 커뮤니티와 함께 개선해나가는 오픈소스
|
|
188
137
|
|
|
189
|
-
###
|
|
138
|
+
### Alfred가 제공하는 4가지 핵심 가치
|
|
139
|
+
|
|
140
|
+
```mermaid
|
|
141
|
+
%%{init: {'theme':'neutral'}}%%
|
|
142
|
+
mindmap
|
|
143
|
+
root((Alfred))
|
|
144
|
+
일관성
|
|
145
|
+
SPEC-First
|
|
146
|
+
TDD 강제
|
|
147
|
+
플랑켄슈타인 코드 방지
|
|
148
|
+
품질
|
|
149
|
+
TRUST 5원칙
|
|
150
|
+
자동 검증
|
|
151
|
+
85%+ 커버리지
|
|
152
|
+
추적성
|
|
153
|
+
@TAG 시스템
|
|
154
|
+
SPEC→TEST→CODE→DOC
|
|
155
|
+
완벽한 연결
|
|
156
|
+
범용성
|
|
157
|
+
17개 언어 지원
|
|
158
|
+
Python TypeScript Java Go
|
|
159
|
+
모바일 Flutter Swift
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### 1. 일관성 (Consistency)
|
|
190
163
|
|
|
191
|
-
#### 1️⃣ 일관성 (Consistency)
|
|
192
164
|
**SPEC → TDD → Sync** 3단계 파이프라인으로 플랑켄슈타인 코드 방지
|
|
193
165
|
|
|
194
|
-
#### 2
|
|
166
|
+
#### 2. 품질 (Quality)
|
|
167
|
+
|
|
195
168
|
**TRUST 5원칙** 자동 적용 및 검증 (Test First, Readable, Unified, Secured, Trackable)
|
|
196
169
|
|
|
197
|
-
#### 3
|
|
170
|
+
#### 3. 추적성 (Traceability)
|
|
171
|
+
|
|
198
172
|
**@TAG 시스템**으로 `@SPEC → @TEST → @CODE → @DOC` 완벽 연결
|
|
199
173
|
|
|
200
|
-
#### 4
|
|
174
|
+
#### 4. 범용성 (Universality)
|
|
175
|
+
|
|
201
176
|
**모든 주요 언어 지원** (Python, TypeScript, Java, Go, Rust, Dart, Swift, Kotlin 등)
|
|
202
177
|
|
|
203
178
|
---
|
|
204
179
|
|
|
205
|
-
##
|
|
180
|
+
## ■ 5분 만에 이해하는 핵심 개념
|
|
206
181
|
|
|
207
|
-
|
|
182
|
+
### 1. SPEC-First: 설계도 먼저 그리기
|
|
208
183
|
|
|
209
|
-
|
|
184
|
+
**비유**: 집을 짓기 전에 설계도를 그리듯이, 코드를 쓰기 전에 SPEC을 작성합니다.
|
|
210
185
|
|
|
211
|
-
|
|
186
|
+
```mermaid
|
|
187
|
+
%%{init: {'theme':'neutral'}}%%
|
|
188
|
+
graph LR
|
|
189
|
+
A["SPEC 작성<br/>(설계도)"] --> B["RED<br/>(실패하는 테스트)"]
|
|
190
|
+
B --> C["GREEN<br/>(최소 구현)"]
|
|
191
|
+
C --> D["REFACTOR<br/>(품질 개선)"]
|
|
192
|
+
D --> E["SYNC<br/>(문서화)"]
|
|
193
|
+
```
|
|
212
194
|
|
|
213
|
-
|
|
214
|
-
# 패스트 모드 (빠른 응답, 반복 작업)
|
|
215
|
-
/model haiku
|
|
195
|
+
#### EARS 구문으로 명세 작성 (실제 예시)
|
|
216
196
|
|
|
217
|
-
|
|
218
|
-
|
|
197
|
+
**EARS (Easy Approach to Requirements Syntax)**: 체계적인 요구사항 작성 방법론
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
# @SPEC:AUTH-001: JWT 인증 시스템
|
|
201
|
+
|
|
202
|
+
## Ubiquitous (기본 기능)
|
|
203
|
+
- 시스템은 사용자 인증 기능을 제공해야 한다
|
|
204
|
+
|
|
205
|
+
## Event-driven (이벤트 기반)
|
|
206
|
+
- WHEN 사용자가 유효한 자격증명으로 로그인하면,
|
|
207
|
+
시스템은 JWT 토큰을 발급해야 한다
|
|
208
|
+
- WHEN 토큰이 만료되면,
|
|
209
|
+
시스템은 401 에러를 반환해야 한다
|
|
210
|
+
|
|
211
|
+
## State-driven (상태 기반)
|
|
212
|
+
- WHILE 사용자가 인증된 상태일 때,
|
|
213
|
+
시스템은 보호된 리소스 접근을 허용해야 한다
|
|
214
|
+
|
|
215
|
+
## Optional (선택적 기능)
|
|
216
|
+
- WHERE 리프레시 토큰이 제공되면,
|
|
217
|
+
시스템은 새로운 액세스 토큰을 발급할 수 있다
|
|
218
|
+
|
|
219
|
+
## Constraints (제약사항)
|
|
220
|
+
- IF 잘못된 토큰이 제공되면,
|
|
221
|
+
시스템은 접근을 거부해야 한다
|
|
222
|
+
- 액세스 토큰 만료시간은 15분을 초과하지 않아야 한다
|
|
219
223
|
```
|
|
220
224
|
|
|
221
|
-
|
|
225
|
+
**실습**: Claude Code에서 직접 해보기
|
|
222
226
|
|
|
223
|
-
|
|
227
|
+
```bash
|
|
228
|
+
/alfred:1-spec "JWT 기반 사용자 로그인 API"
|
|
229
|
+
# Alfred가 위 형식으로 SPEC을 자동 생성합니다
|
|
230
|
+
```
|
|
224
231
|
|
|
225
|
-
|
|
232
|
+
---
|
|
226
233
|
|
|
227
|
-
|
|
234
|
+
### 2. @TAG 추적: 코드와 문서를 실로 엮기
|
|
228
235
|
|
|
229
|
-
|
|
230
|
-
| ------------------- | --------------- | -------------------------------------------- |
|
|
231
|
-
| **doc-syncer** 📖 | 문서 동기화 | 패턴화된 문서 업데이트, Living Document 생성 |
|
|
232
|
-
| **tag-agent** 🏷️ | TAG 시스템 관리 | 반복적 패턴 매칭, TAG 체인 검증 |
|
|
233
|
-
| **git-manager** 🚀 | Git 워크플로우 | 정형화된 Git 명령어 실행, 브랜치/PR 생성 |
|
|
234
|
-
| **trust-checker** ✅ | TRUST 원칙 검증 | 규칙 기반 체크리스트 확인 |
|
|
235
|
-
| **Explore** 🔍 | 코드베이스 탐색 | 대량 파일 스캔, 키워드 검색 |
|
|
236
|
+
**비유**: 책의 색인처럼, 모든 코드를 SPEC과 연결합니다.
|
|
236
237
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
-
|
|
238
|
+
```mermaid
|
|
239
|
+
%%{init: {'theme':'neutral'}}%%
|
|
240
|
+
graph TD
|
|
241
|
+
SPEC["@SPEC:AUTH-001<br/>.moai/specs/SPEC-AUTH-001/spec.md"] --> TEST["@TEST:AUTH-001<br/>tests/test_auth_login.py"]
|
|
242
|
+
TEST --> CODE["@CODE:AUTH-001<br/>src/auth/service.py"]
|
|
243
|
+
CODE --> DOC["@DOC:AUTH-001<br/>docs/api/auth.md"]
|
|
244
|
+
```
|
|
241
245
|
|
|
242
|
-
####
|
|
246
|
+
#### 실제 코드 예시
|
|
243
247
|
|
|
244
|
-
|
|
248
|
+
```python
|
|
249
|
+
# tests/test_auth_login.py
|
|
250
|
+
# @TEST:AUTH-001 | SPEC: SPEC-AUTH-001.md
|
|
245
251
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
| **project-manager** 📋 | 프로젝트 초기화 | 전략 수립, 복잡한 의사결정 |
|
|
252
|
+
def test_login_success():
|
|
253
|
+
"""사용자가 유효한 자격증명으로 로그인하면 JWT 토큰을 발급해야 한다"""
|
|
254
|
+
response = login(username="user@example.com", password="valid_pass")
|
|
255
|
+
assert response.status_code == 200
|
|
256
|
+
assert "access_token" in response.json()
|
|
257
|
+
```
|
|
253
258
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
-
|
|
257
|
-
- 🏆 **정확한 판단**: 아키텍처 결정, 설계 선택
|
|
259
|
+
```python
|
|
260
|
+
# src/auth/service.py
|
|
261
|
+
# @CODE:AUTH-001 | SPEC: SPEC-AUTH-001.md | TEST: tests/test_auth_login.py
|
|
258
262
|
|
|
259
|
-
|
|
263
|
+
def login(username: str, password: str) -> TokenResponse:
|
|
264
|
+
"""JWT 토큰 발급 로직"""
|
|
265
|
+
if not validate_credentials(username, password):
|
|
266
|
+
raise UnauthorizedError()
|
|
260
267
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
| 🔄 **반복 개발** | Haiku | 이미 정해진 패턴 반복 구현 |
|
|
265
|
-
| 🐛 **버그 수정** | Sonnet | 원인 분석 및 해결 방법 도출 |
|
|
266
|
-
| 📝 **문서 작성** | Haiku | Living Document 동기화 |
|
|
267
|
-
| 🔍 **코드 탐색** | Haiku | 파일 검색, TAG 조회 |
|
|
268
|
-
| ♻️ **리팩토링** | Sonnet | 구조 개선, 복잡한 변경 |
|
|
268
|
+
token = generate_jwt_token(username)
|
|
269
|
+
return TokenResponse(access_token=token)
|
|
270
|
+
```
|
|
269
271
|
|
|
270
|
-
|
|
272
|
+
#### TAG 검증 실습 (실제로 해볼 수 있는 명령어)
|
|
271
273
|
|
|
272
|
-
```
|
|
273
|
-
#
|
|
274
|
-
/
|
|
275
|
-
/alfred:1-spec "사용자 인증 시스템"
|
|
274
|
+
```bash
|
|
275
|
+
# 1. 모든 TAG 스캔
|
|
276
|
+
rg '@(SPEC|TEST|CODE|DOC):' -n .moai/specs/ tests/ src/ docs/
|
|
276
277
|
|
|
277
|
-
#
|
|
278
|
-
|
|
278
|
+
# 2. 특정 도메인 TAG 확인
|
|
279
|
+
rg '@SPEC:AUTH' -n .moai/specs/
|
|
279
280
|
|
|
280
|
-
#
|
|
281
|
-
|
|
281
|
+
# 3. 고아 TAG 탐지 (CODE는 있는데 SPEC이 없는 경우)
|
|
282
|
+
rg '@CODE:AUTH-001' -n src/ # CODE 있음
|
|
283
|
+
rg '@SPEC:AUTH-001' -n .moai/specs/ # SPEC 있는지 확인
|
|
284
|
+
```
|
|
282
285
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
### 3. TRUST 품질: 5가지 원칙으로 코드 품질 보장
|
|
289
|
+
|
|
290
|
+
**비유**: 자동차 안전검사처럼, 코드도 5가지 기준으로 검사합니다.
|
|
291
|
+
|
|
292
|
+
```mermaid
|
|
293
|
+
%%{init: {'theme':'neutral'}}%%
|
|
294
|
+
mindmap
|
|
295
|
+
root((TRUST 5원칙))
|
|
296
|
+
Test First
|
|
297
|
+
테스트 커버리지 ≥85%
|
|
298
|
+
pytest Vitest JUnit
|
|
299
|
+
SPEC 기반 테스트 케이스
|
|
300
|
+
Readable
|
|
301
|
+
파일 ≤300 LOC
|
|
302
|
+
함수 ≤50 LOC
|
|
303
|
+
매개변수 ≤5개
|
|
304
|
+
복잡도 ≤10
|
|
305
|
+
Unified
|
|
306
|
+
타입 안전성
|
|
307
|
+
아키텍처 일관성
|
|
308
|
+
코딩 스타일 통일
|
|
309
|
+
Secured
|
|
310
|
+
입력 검증
|
|
311
|
+
로깅 감사
|
|
312
|
+
비밀 관리
|
|
313
|
+
정적 분석
|
|
314
|
+
Trackable
|
|
315
|
+
@TAG 체계
|
|
316
|
+
CODE-FIRST 스캔
|
|
317
|
+
HISTORY 기록
|
|
286
318
|
```
|
|
287
319
|
|
|
288
|
-
|
|
320
|
+
#### 코드 제약 구체적 예시
|
|
321
|
+
|
|
322
|
+
```python
|
|
323
|
+
# ✅ 좋은 예: 함수 ≤50 LOC, 매개변수 ≤5개
|
|
324
|
+
def create_user(
|
|
325
|
+
username: str,
|
|
326
|
+
email: str,
|
|
327
|
+
password: str,
|
|
328
|
+
role: str = "user",
|
|
329
|
+
is_active: bool = True
|
|
330
|
+
) -> User:
|
|
331
|
+
"""사용자 생성 (40 LOC)"""
|
|
332
|
+
# 입력 검증
|
|
333
|
+
if not username or len(username) < 3:
|
|
334
|
+
raise ValueError("Username must be at least 3 characters")
|
|
335
|
+
|
|
336
|
+
if not email or "@" not in email:
|
|
337
|
+
raise ValueError("Invalid email address")
|
|
338
|
+
|
|
339
|
+
# 비밀번호 해싱
|
|
340
|
+
hashed_password = hash_password(password)
|
|
341
|
+
|
|
342
|
+
# 사용자 생성
|
|
343
|
+
user = User(
|
|
344
|
+
username=username,
|
|
345
|
+
email=email,
|
|
346
|
+
password=hashed_password,
|
|
347
|
+
role=role,
|
|
348
|
+
is_active=is_active
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
# DB 저장
|
|
352
|
+
db.session.add(user)
|
|
353
|
+
db.session.commit()
|
|
354
|
+
|
|
355
|
+
return user
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
# ❌ 나쁜 예: 함수 > 50 LOC, 매개변수 > 5개
|
|
359
|
+
def create_user_with_profile_and_settings_and_notifications(
|
|
360
|
+
username, email, password, role, is_active, profile_data,
|
|
361
|
+
settings_data, notification_preferences, theme, language
|
|
362
|
+
):
|
|
363
|
+
"""100 LOC 넘는 거대 함수..."""
|
|
364
|
+
# ... 너무 많은 책임 ...
|
|
365
|
+
```
|
|
289
366
|
|
|
290
367
|
---
|
|
291
368
|
|
|
292
|
-
##
|
|
369
|
+
## ■ Quick Start (3분 실전)
|
|
293
370
|
|
|
294
|
-
###
|
|
371
|
+
### ▶ 준비물
|
|
295
372
|
|
|
296
373
|
- ✅ Python 3.13+
|
|
297
374
|
- ✅ **uv** (필수 - pip보다 10-100배 빠름)
|
|
298
375
|
- ✅ Claude Code 실행 중
|
|
299
376
|
- ✅ Git 설치 (선택사항)
|
|
300
377
|
|
|
301
|
-
###
|
|
378
|
+
### ▶ 3단계로 시작하기
|
|
302
379
|
|
|
303
|
-
#### 1
|
|
380
|
+
#### 1. uv 설치 (필수)
|
|
304
381
|
|
|
305
382
|
**uv는 pip보다 10-100배 빠른 Python 패키지 관리자입니다** (Rust 기반).
|
|
306
383
|
|
|
@@ -315,7 +392,7 @@ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
|
315
392
|
uv --version
|
|
316
393
|
```
|
|
317
394
|
|
|
318
|
-
#### 2
|
|
395
|
+
#### 2. moai-adk 설치 (10초)
|
|
319
396
|
|
|
320
397
|
```bash
|
|
321
398
|
uv pip install moai-adk
|
|
@@ -324,9 +401,10 @@ uv pip install moai-adk
|
|
|
324
401
|
moai-adk --version
|
|
325
402
|
```
|
|
326
403
|
|
|
327
|
-
#### 3
|
|
404
|
+
#### 3. 프로젝트 시작 (1분)
|
|
328
405
|
|
|
329
406
|
**새 프로젝트:**
|
|
407
|
+
|
|
330
408
|
```bash
|
|
331
409
|
moai-adk init my-project
|
|
332
410
|
cd my-project
|
|
@@ -334,6 +412,7 @@ claude
|
|
|
334
412
|
```
|
|
335
413
|
|
|
336
414
|
**기존 프로젝트:**
|
|
415
|
+
|
|
337
416
|
```bash
|
|
338
417
|
cd existing-project
|
|
339
418
|
moai-adk init .
|
|
@@ -341,20 +420,23 @@ claude
|
|
|
341
420
|
```
|
|
342
421
|
|
|
343
422
|
**Claude Code에서 초기화:**
|
|
423
|
+
|
|
344
424
|
```text
|
|
345
425
|
/alfred:0-project
|
|
346
426
|
```
|
|
347
427
|
|
|
348
428
|
**첫 기능 개발:**
|
|
429
|
+
|
|
349
430
|
```text
|
|
350
431
|
/alfred:1-spec "사용자 인증 기능"
|
|
351
432
|
/alfred:2-build AUTH-001
|
|
352
433
|
/alfred:3-sync
|
|
353
434
|
```
|
|
354
435
|
|
|
355
|
-
###
|
|
436
|
+
### ▶ 완료!
|
|
356
437
|
|
|
357
438
|
**생성된 것들:**
|
|
439
|
+
|
|
358
440
|
- ✅ `.moai/specs/SPEC-AUTH-001/spec.md` (명세)
|
|
359
441
|
- ✅ `tests/test_auth_login.py` (테스트)
|
|
360
442
|
- ✅ `src/auth/service.py` (구현)
|
|
@@ -363,63 +445,213 @@ claude
|
|
|
363
445
|
|
|
364
446
|
---
|
|
365
447
|
|
|
366
|
-
##
|
|
448
|
+
## ■ 첫 번째 프로젝트: Todo API 만들기
|
|
367
449
|
|
|
368
|
-
### 1
|
|
450
|
+
### Step 1: SPEC 작성 (5분)
|
|
451
|
+
|
|
452
|
+
**Alfred에게 요청**:
|
|
369
453
|
|
|
370
454
|
```bash
|
|
371
|
-
|
|
455
|
+
/alfred:1-spec "할 일 추가, 조회, 수정, 삭제 API"
|
|
372
456
|
```
|
|
373
457
|
|
|
374
|
-
|
|
458
|
+
**Alfred가 생성하는 것**:
|
|
459
|
+
|
|
460
|
+
- `.moai/specs/SPEC-TODO-001/spec.md` (EARS 구문)
|
|
461
|
+
- `.moai/specs/SPEC-TODO-001/plan.md` (구현 계획)
|
|
462
|
+
- `feature/SPEC-TODO-001` 브랜치 (Team 모드)
|
|
463
|
+
- Draft PR (Team 모드)
|
|
464
|
+
|
|
465
|
+
**생성된 SPEC 예시**:
|
|
466
|
+
|
|
467
|
+
```yaml
|
|
468
|
+
---
|
|
469
|
+
id: TODO-001
|
|
470
|
+
version: 0.0.1
|
|
471
|
+
status: draft
|
|
472
|
+
created: 2025-10-17
|
|
473
|
+
updated: 2025-10-17
|
|
474
|
+
author: @Goos
|
|
475
|
+
priority: high
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
# @SPEC:TODO-001: Todo API
|
|
479
|
+
|
|
480
|
+
## Ubiquitous
|
|
481
|
+
- 시스템은 할 일 CRUD 기능을 제공해야 한다
|
|
482
|
+
|
|
483
|
+
## Event-driven
|
|
484
|
+
- WHEN 사용자가 새 할 일을 생성하면, 시스템은 고유 ID를 부여해야 한다
|
|
485
|
+
- WHEN 사용자가 할 일을 완료 처리하면, 시스템은 completed_at 타임스탬프를 기록해야 한다
|
|
486
|
+
|
|
487
|
+
## Constraints
|
|
488
|
+
- 할 일 제목은 1-200자여야 한다
|
|
489
|
+
- 할 일은 작성자만 수정/삭제할 수 있어야 한다
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
### Step 2: TDD 구현 (10분)
|
|
495
|
+
|
|
496
|
+
**Alfred에게 요청**:
|
|
375
497
|
|
|
376
498
|
```bash
|
|
377
|
-
|
|
378
|
-
moai-adk update
|
|
499
|
+
/alfred:2-build TODO-001
|
|
379
500
|
```
|
|
380
501
|
|
|
381
|
-
|
|
502
|
+
**Alfred의 3단계 TDD 프로세스**:
|
|
503
|
+
|
|
504
|
+
```mermaid
|
|
505
|
+
%%{init: {'theme':'neutral'}}%%
|
|
506
|
+
stateDiagram-v2
|
|
507
|
+
[*] --> Phase1: SPEC 분석
|
|
508
|
+
Phase1 --> Phase2: 계획 수립
|
|
509
|
+
|
|
510
|
+
Phase2 --> RED: TDD 시작
|
|
511
|
+
RED --> GREEN: 테스트 통과
|
|
512
|
+
GREEN --> REFACTOR: 품질 개선
|
|
513
|
+
|
|
514
|
+
REFACTOR --> Phase3: 품질 검증
|
|
515
|
+
Phase3 --> [*]: 완료
|
|
516
|
+
|
|
517
|
+
note right of RED
|
|
518
|
+
RED
|
|
519
|
+
- 실패하는 테스트 작성
|
|
520
|
+
- @TEST:TODO-001 TAG 추가
|
|
521
|
+
end note
|
|
522
|
+
|
|
523
|
+
note right of GREEN
|
|
524
|
+
GREEN
|
|
525
|
+
- 최소 구현으로 테스트 통과
|
|
526
|
+
- @CODE:TODO-001 TAG 추가
|
|
527
|
+
end note
|
|
528
|
+
|
|
529
|
+
note right of REFACTOR
|
|
530
|
+
REFACTOR
|
|
531
|
+
- 코드 품질 개선
|
|
532
|
+
- 중복 제거, 가독성 향상
|
|
533
|
+
end note
|
|
534
|
+
|
|
535
|
+
note right of Phase3
|
|
536
|
+
품질 게이트
|
|
537
|
+
- TRUST 5원칙 검증
|
|
538
|
+
- 테스트 커버리지 확인
|
|
539
|
+
end note
|
|
540
|
+
```
|
|
382
541
|
|
|
383
|
-
|
|
542
|
+
**생성된 파일들**:
|
|
384
543
|
|
|
385
544
|
```text
|
|
386
|
-
|
|
387
|
-
/
|
|
545
|
+
tests/test_todo_api.py # @TEST:TODO-001
|
|
546
|
+
src/todo/service.py # @CODE:TODO-001:DOMAIN
|
|
547
|
+
src/todo/models.py # @CODE:TODO-001:DATA
|
|
548
|
+
src/todo/routes.py # @CODE:TODO-001:API
|
|
388
549
|
```
|
|
389
550
|
|
|
390
|
-
|
|
551
|
+
---
|
|
391
552
|
|
|
392
|
-
###
|
|
553
|
+
### Step 3: 문서 동기화 (2분)
|
|
554
|
+
|
|
555
|
+
**Alfred에게 요청**:
|
|
393
556
|
|
|
394
557
|
```bash
|
|
395
|
-
|
|
396
|
-
|
|
558
|
+
/alfred:3-sync
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
**Alfred가 자동 수행**:
|
|
562
|
+
|
|
563
|
+
1. **품질 검증** (Haiku 에이전트)
|
|
564
|
+
- TRUST 5원칙 준수 확인
|
|
565
|
+
- TAG 체인 무결성 검증
|
|
566
|
+
|
|
567
|
+
2. **문서 동기화** (Haiku 에이전트)
|
|
568
|
+
- API 문서 자동 생성 (`docs/api/todo.md`)
|
|
569
|
+
- @DOC:TODO-001 TAG 추가
|
|
570
|
+
|
|
571
|
+
3. **PR 준비** (Team 모드)
|
|
572
|
+
- Draft → Ready 전환
|
|
573
|
+
- CI/CD 확인
|
|
574
|
+
- (선택) `--auto-merge`로 자동 병합
|
|
575
|
+
|
|
576
|
+
**생성된 문서**:
|
|
577
|
+
|
|
578
|
+
```markdown
|
|
579
|
+
# @DOC:TODO-001: Todo API
|
|
580
|
+
|
|
581
|
+
## API Endpoints
|
|
582
|
+
|
|
583
|
+
### POST /api/todos
|
|
397
584
|
|
|
398
|
-
|
|
399
|
-
# ✅ .moai/config.json → moai.version: "0.3.x"
|
|
400
|
-
# ✅ .moai/config.json → project.moai_adk_version: "0.3.x"
|
|
401
|
-
# ✅ 모든 커맨드 정상 작동
|
|
402
|
-
# ✅ 템플릿 파일 병합 완료
|
|
585
|
+
할 일 생성
|
|
403
586
|
|
|
404
|
-
|
|
587
|
+
**Request**:
|
|
405
588
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
589
|
+
```json
|
|
590
|
+
{
|
|
591
|
+
"title": "장보기",
|
|
592
|
+
"description": "우유, 빵"
|
|
593
|
+
}
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
**Response**:
|
|
597
|
+
|
|
598
|
+
```json
|
|
599
|
+
{
|
|
600
|
+
"id": "uuid-123",
|
|
601
|
+
"title": "장보기",
|
|
602
|
+
"completed": false,
|
|
603
|
+
"created_at": "2025-10-17T10:00:00Z"
|
|
604
|
+
}
|
|
605
|
+
```
|
|
410
606
|
```
|
|
411
607
|
|
|
412
608
|
---
|
|
413
609
|
|
|
414
|
-
|
|
610
|
+
### ▶ 완료! 15분 만에 Todo API 완성
|
|
611
|
+
|
|
612
|
+
**생성된 것들**:
|
|
613
|
+
|
|
614
|
+
- ✅ `.moai/specs/SPEC-TODO-001/` (명세, 계획, 수락 기준)
|
|
615
|
+
- ✅ `tests/test_todo_api.py` (테스트 - 커버리지 87%)
|
|
616
|
+
- ✅ `src/todo/` (구현 - 3개 파일, 총 180 LOC)
|
|
617
|
+
- ✅ `docs/api/todo.md` (API 문서)
|
|
618
|
+
- ✅ `@SPEC → @TEST → @CODE → @DOC` TAG 체인
|
|
619
|
+
|
|
620
|
+
**검증 명령어**:
|
|
621
|
+
|
|
622
|
+
```bash
|
|
623
|
+
# TAG 체인 확인
|
|
624
|
+
rg '@(SPEC|TEST|CODE|DOC):TODO-001' -n
|
|
625
|
+
|
|
626
|
+
# 테스트 실행
|
|
627
|
+
pytest tests/test_todo_api.py -v
|
|
628
|
+
|
|
629
|
+
# API 문서 확인
|
|
630
|
+
cat docs/api/todo.md
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
---
|
|
634
|
+
|
|
635
|
+
## ■ 3단계 워크플로우
|
|
415
636
|
|
|
416
637
|
Alfred의 핵심은 **체계적인 3단계 워크플로우**입니다.
|
|
417
638
|
|
|
418
|
-
|
|
639
|
+
```mermaid
|
|
640
|
+
%%{init: {'theme':'neutral'}}%%
|
|
641
|
+
graph TD
|
|
642
|
+
Start([사용자 요청]) --> Spec[1. SPEC 작성<br/>/alfred:1-spec]
|
|
643
|
+
Spec --> Build[2. TDD 구현<br/>/alfred:2-build]
|
|
644
|
+
Build --> Sync[3. 문서 동기화<br/>/alfred:3-sync]
|
|
645
|
+
Sync --> End([완료])
|
|
646
|
+
Sync -.-> Spec
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
### 1. SPEC - 명세 작성
|
|
419
650
|
|
|
420
651
|
**명령어**: `/alfred:1-spec "JWT 기반 사용자 로그인 API"`
|
|
421
652
|
|
|
422
653
|
**Alfred가 자동 수행:**
|
|
654
|
+
|
|
423
655
|
- EARS 형식 명세 자동 생성
|
|
424
656
|
- `@SPEC:ID` TAG 부여
|
|
425
657
|
- Git 브랜치 자동 생성 (Team 모드)
|
|
@@ -427,45 +659,227 @@ Alfred의 핵심은 **체계적인 3단계 워크플로우**입니다.
|
|
|
427
659
|
- HISTORY 섹션 자동 추가
|
|
428
660
|
|
|
429
661
|
**산출물:**
|
|
662
|
+
|
|
430
663
|
- `.moai/specs/SPEC-AUTH-001/spec.md`
|
|
431
664
|
- `.moai/specs/SPEC-AUTH-001/plan.md`
|
|
432
665
|
- `.moai/specs/SPEC-AUTH-001/acceptance.md`
|
|
433
666
|
|
|
434
|
-
### 2
|
|
667
|
+
### 2. BUILD - TDD 구현
|
|
435
668
|
|
|
436
669
|
**명령어**: `/alfred:2-build AUTH-001`
|
|
437
670
|
|
|
438
|
-
**Alfred가 자동
|
|
439
|
-
|
|
440
|
-
- **
|
|
441
|
-
- **
|
|
442
|
-
-
|
|
443
|
-
-
|
|
671
|
+
**Alfred가 자동 수행 (3개 에이전트 협업):**
|
|
672
|
+
|
|
673
|
+
- **Phase 1 (implementation-planner)**: SPEC 분석, 라이브러리 선정, TAG 체인 설계
|
|
674
|
+
- **Phase 2 (tdd-implementer)**: RED → GREEN → REFACTOR TDD 사이클
|
|
675
|
+
- **RED**: 실패하는 테스트 작성 (@TEST:ID)
|
|
676
|
+
- **GREEN**: 최소 구현으로 테스트 통과 (@CODE:ID)
|
|
677
|
+
- **REFACTOR**: 코드 품질 개선
|
|
678
|
+
- **Phase 3 (quality-gate)**: TRUST 5원칙 자동 검증 (Pass/Warning/Critical)
|
|
679
|
+
- **Phase 4 (git-manager)**: 단계별 Git 커밋 (TDD 완료 시 1회)
|
|
444
680
|
|
|
445
681
|
**산출물:**
|
|
682
|
+
|
|
446
683
|
- `tests/test_auth_login.py` (테스트 코드)
|
|
447
684
|
- `src/auth/service.py` (구현 코드)
|
|
448
685
|
- `@TEST:AUTH-001` → `@CODE:AUTH-001` TAG 체인
|
|
686
|
+
- 품질 검증 리포트
|
|
449
687
|
|
|
450
|
-
### 3
|
|
688
|
+
### 3. SYNC - 문서 동기화
|
|
451
689
|
|
|
452
690
|
**명령어**: `/alfred:3-sync`
|
|
453
691
|
|
|
454
692
|
**Alfred가 자동 수행:**
|
|
455
|
-
|
|
456
|
-
-
|
|
457
|
-
-
|
|
458
|
-
-
|
|
459
|
-
-
|
|
693
|
+
|
|
694
|
+
- **Phase 1 (quality-gate)**: 동기화 전 빠른 품질 검증 (조건부, 변경 라인 >50줄)
|
|
695
|
+
- **Phase 2 (doc-syncer)**: Living Document 업데이트
|
|
696
|
+
- **Phase 3 (tag-agent)**: TAG 시스템 무결성 검증
|
|
697
|
+
- **Phase 4 (git-manager)**: sync-report.md 생성, PR Ready 전환 (Team 모드)
|
|
698
|
+
- **선택적 자동 머지** (`--auto-merge`): CI/CD 확인 후 자동 병합
|
|
460
699
|
|
|
461
700
|
**산출물:**
|
|
701
|
+
|
|
462
702
|
- `docs/api/auth.md` (API 문서)
|
|
463
703
|
- `.moai/reports/sync-report.md`
|
|
464
704
|
- `@DOC:AUTH-001` TAG 추가
|
|
465
705
|
|
|
466
706
|
---
|
|
467
707
|
|
|
468
|
-
##
|
|
708
|
+
## ■ 실전 시나리오
|
|
709
|
+
|
|
710
|
+
### 시나리오 1: 긴급 버그 수정 (Hotfix)
|
|
711
|
+
|
|
712
|
+
**상황**: 프로덕션에서 로그인 에러 발생!
|
|
713
|
+
|
|
714
|
+
```bash
|
|
715
|
+
# 옵션 1: 표준 방식 (권장)
|
|
716
|
+
git checkout develop
|
|
717
|
+
git checkout -b hotfix/auth-error
|
|
718
|
+
# ... 수정 ...
|
|
719
|
+
git push origin hotfix/auth-error
|
|
720
|
+
# PR 생성: hotfix -> develop -> main
|
|
721
|
+
|
|
722
|
+
# 옵션 2: 직접 main 수정 (허용, 하지만 권장 안 함)
|
|
723
|
+
git checkout main
|
|
724
|
+
# ... 수정 ...
|
|
725
|
+
git commit -m "Fix critical auth bug"
|
|
726
|
+
git push origin main # ⚠️ Advisory 경고 표시되지만 진행됨
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
**Alfred의 Advisory 경고**:
|
|
730
|
+
|
|
731
|
+
```text
|
|
732
|
+
⚠️ ADVISORY: Non-standard GitFlow detected
|
|
733
|
+
|
|
734
|
+
Current branch: hotfix/auth-error
|
|
735
|
+
Target branch: main
|
|
736
|
+
|
|
737
|
+
Recommended GitFlow workflow:
|
|
738
|
+
1. Push to hotfix and create PR to develop
|
|
739
|
+
2. Merge into develop after code review
|
|
740
|
+
3. When develop is stable, create PR from develop to main
|
|
741
|
+
4. Release manager merges develop -> main with tag
|
|
742
|
+
|
|
743
|
+
✓ Push will proceed (flexibility mode enabled)
|
|
744
|
+
```
|
|
745
|
+
|
|
746
|
+
---
|
|
747
|
+
|
|
748
|
+
### 시나리오 2: 새 기능 개발 (Feature)
|
|
749
|
+
|
|
750
|
+
```bash
|
|
751
|
+
# 1. develop에서 최신 코드 받기
|
|
752
|
+
git checkout develop
|
|
753
|
+
git pull origin develop
|
|
754
|
+
|
|
755
|
+
# 2. Claude Code에서 SPEC 작성
|
|
756
|
+
/alfred:1-spec "사용자 프로필 이미지 업로드"
|
|
757
|
+
# → feature/SPEC-PROFILE-001 브랜치 자동 생성
|
|
758
|
+
# → Draft PR 자동 생성 (feature → develop)
|
|
759
|
+
|
|
760
|
+
# 3. TDD 구현
|
|
761
|
+
/alfred:2-build PROFILE-001
|
|
762
|
+
|
|
763
|
+
# 4. 문서 동기화 + 자동 머지
|
|
764
|
+
/alfred:3-sync --auto-merge
|
|
765
|
+
# → 문서 동기화
|
|
766
|
+
# → PR Ready 전환
|
|
767
|
+
# → CI/CD 확인
|
|
768
|
+
# → PR 자동 머지 (squash)
|
|
769
|
+
# → develop 체크아웃
|
|
770
|
+
# → 다음 작업 준비 완료 ✅
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
---
|
|
774
|
+
|
|
775
|
+
### 시나리오 3: Release 준비
|
|
776
|
+
|
|
777
|
+
```bash
|
|
778
|
+
# 표준 방식 (권장):
|
|
779
|
+
git checkout develop
|
|
780
|
+
gh pr create --base main --head develop --title "Release v1.0.0"
|
|
781
|
+
|
|
782
|
+
# 직접 push 방식 (허용):
|
|
783
|
+
git checkout develop
|
|
784
|
+
git push origin main # ⚠️ Advisory 경고 표시되지만 진행됨
|
|
785
|
+
git tag -a v1.0.0 -m "Release v1.0.0"
|
|
786
|
+
git push origin v1.0.0
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
---
|
|
790
|
+
|
|
791
|
+
## ■ AI 모델 선택 가이드
|
|
792
|
+
|
|
793
|
+
MoAI-ADK는 **Haiku 4.5**와 **Sonnet 4.5** 두 가지 AI 모델을 전략적으로 활용하여 **최적의 성능과 비용 효율**을 제공합니다.
|
|
794
|
+
|
|
795
|
+
### 패스트 모드 vs 스마트 모드
|
|
796
|
+
|
|
797
|
+
Claude Code에서 `/model` 명령어로 전체 세션의 기본 모델을 변경할 수 있습니다:
|
|
798
|
+
|
|
799
|
+
```text
|
|
800
|
+
# 패스트 모드 (빠른 응답, 반복 작업)
|
|
801
|
+
/model haiku
|
|
802
|
+
|
|
803
|
+
# 스마트 모드 (복잡한 판단, 설계)
|
|
804
|
+
/model sonnet
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
### 12개 에이전트의 모델 배치 전략
|
|
808
|
+
|
|
809
|
+
Alfred는 **작업 특성**에 따라 각 에이전트에 최적 모델을 할당합니다:
|
|
810
|
+
|
|
811
|
+
#### ▶ Haiku 에이전트 (6개) - 패스트 모드
|
|
812
|
+
|
|
813
|
+
**빠른 응답이 필요한 반복 작업 및 패턴 매칭**
|
|
814
|
+
|
|
815
|
+
| 에이전트 | 역할 | 왜 Haiku? |
|
|
816
|
+
| ------------------- | --------------- | -------------------------------------------- |
|
|
817
|
+
| **doc-syncer** 📖 | 문서 동기화 | 패턴화된 문서 업데이트, Living Document 생성 |
|
|
818
|
+
| **tag-agent** 🏷️ | TAG 시스템 관리 | 반복적 패턴 매칭, TAG 체인 검증 |
|
|
819
|
+
| **git-manager** 🚀 | Git 워크플로우 | 정형화된 Git 명령어 실행, 브랜치/PR 생성 |
|
|
820
|
+
| **trust-checker** ✅ | TRUST 원칙 검증 | 규칙 기반 체크리스트 확인 |
|
|
821
|
+
| **quality-gate** 🛡️ | 품질 검증 | TRUST 원칙 자동 검증, 빠른 품질 게이트 |
|
|
822
|
+
| **Explore** 🔍 | 코드베이스 탐색 | 대량 파일 스캔, 키워드 검색 |
|
|
823
|
+
|
|
824
|
+
**장점**:
|
|
825
|
+
|
|
826
|
+
- **속도 2~5배 향상**: 실시간 응답 (수 초 → 1초 이내)
|
|
827
|
+
- **비용 67% 절감**: 반복 작업이 많은 프로젝트에 효과적
|
|
828
|
+
- **높은 정확도**: 패턴화된 작업에서 Sonnet과 동등한 품질
|
|
829
|
+
|
|
830
|
+
#### ▶ Sonnet 에이전트 (6개) - 스마트 모드
|
|
831
|
+
|
|
832
|
+
**복잡한 판단과 창의적 설계가 필요한 작업**
|
|
833
|
+
|
|
834
|
+
| 에이전트 | 역할 | 왜 Sonnet? |
|
|
835
|
+
| ---------------------------- | ---------------- | ------------------------------------ |
|
|
836
|
+
| **spec-builder** 🏗️ | SPEC 작성 | EARS 구조 설계, 복잡한 요구사항 분석 |
|
|
837
|
+
| **implementation-planner** 📋 | 구현 전략 수립 | 아키텍처 설계, 라이브러리 선정 |
|
|
838
|
+
| **tdd-implementer** 🔬 | TDD 구현 | RED-GREEN-REFACTOR, 복잡한 리팩토링 |
|
|
839
|
+
| **debug-helper** 🔍 | 디버깅 | 런타임 오류 분석, 해결 방법 도출 |
|
|
840
|
+
| **cc-manager** 🛠️ | Claude Code 설정 | 워크플로우 최적화, 복잡한 설정 |
|
|
841
|
+
| **project-manager** 📂 | 프로젝트 초기화 | 전략 수립, 복잡한 의사결정 |
|
|
842
|
+
|
|
843
|
+
**장점**:
|
|
844
|
+
|
|
845
|
+
- **높은 품질**: 복잡한 코드 품질 보장
|
|
846
|
+
- **깊은 이해**: 맥락 파악 및 창의적 해결책 제시
|
|
847
|
+
- **정확한 판단**: 아키텍처 결정, 설계 선택
|
|
848
|
+
|
|
849
|
+
### 사용 시나리오별 권장 모델
|
|
850
|
+
|
|
851
|
+
| 시나리오 | 권장 모델 | 이유 |
|
|
852
|
+
| ------------------ | --------- | ----------------------------- |
|
|
853
|
+
| **새 프로젝트 시작** | Sonnet | SPEC 설계, 아키텍처 결정 필요 |
|
|
854
|
+
| **반복 개발** | Haiku | 이미 정해진 패턴 반복 구현 |
|
|
855
|
+
| **버그 수정** | Sonnet | 원인 분석 및 해결 방법 도출 |
|
|
856
|
+
| **문서 작성** | Haiku | Living Document 동기화 |
|
|
857
|
+
| **코드 탐색** | Haiku | 파일 검색, TAG 조회 |
|
|
858
|
+
| **리팩토링** | Sonnet | 구조 개선, 복잡한 변경 |
|
|
859
|
+
|
|
860
|
+
### 모델 전환 팁
|
|
861
|
+
|
|
862
|
+
```text
|
|
863
|
+
# 새 기능 설계 시작
|
|
864
|
+
/model sonnet
|
|
865
|
+
/alfred:1-spec "사용자 인증 시스템"
|
|
866
|
+
|
|
867
|
+
# SPEC 승인 후 TDD 구현
|
|
868
|
+
/alfred:2-build AUTH-001
|
|
869
|
+
|
|
870
|
+
# 구현 완료 후 문서 동기화 (자동으로 Haiku 사용)
|
|
871
|
+
/alfred:3-sync
|
|
872
|
+
|
|
873
|
+
# 다음 기능 설계
|
|
874
|
+
/model sonnet
|
|
875
|
+
/alfred:1-spec "결제 시스템"
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
**Pro Tip**: Alfred는 각 에이전트를 호출할 때 자동으로 최적 모델을 사용하므로, **세션 전체 모델 변경은 선택사항**입니다. 기본 설정(Sonnet)으로도 충분히 효율적입니다.
|
|
879
|
+
|
|
880
|
+
---
|
|
881
|
+
|
|
882
|
+
## ■ CLI Reference
|
|
469
883
|
|
|
470
884
|
### 프로젝트 관리
|
|
471
885
|
|
|
@@ -518,12 +932,12 @@ moai-adk --help
|
|
|
518
932
|
|
|
519
933
|
각 Alfred 커맨드는 적절한 에이전트를 호출하며, **자동으로 최적 모델**을 사용합니다:
|
|
520
934
|
|
|
521
|
-
| 커맨드 | 에이전트
|
|
522
|
-
| ------------------- |
|
|
523
|
-
| `/alfred:0-project` | project-manager
|
|
524
|
-
| `/alfred:1-spec` | spec-builder 🏗️
|
|
525
|
-
| `/alfred:2-build` |
|
|
526
|
-
| `/alfred:3-sync` | doc-syncer 📖
|
|
935
|
+
| 커맨드 | 에이전트 (Phase) | 모델 | 작업 특성 | 예상 시간 |
|
|
936
|
+
| ------------------- | ------------------------------------------------------------- | -------------------------- | ---------------------------------------- | --------- |
|
|
937
|
+
| `/alfred:0-project` | project-manager 📂 | 세션 기본 모델 | 프로젝트 전략 수립, 복잡한 의사결정 | 1~2분 |
|
|
938
|
+
| `/alfred:1-spec` | spec-builder 🏗️ | 세션 기본 모델 | EARS 명세 설계, 요구사항 분석 | 2~3분 |
|
|
939
|
+
| `/alfred:2-build` | implementation-planner 📋 → tdd-implementer 🔬 → quality-gate 🛡️ | 세션 기본 모델 + **Haiku** | SPEC 분석 → TDD 구현 → 품질 검증 (3단계) | 3~5분 |
|
|
940
|
+
| `/alfred:3-sync` | quality-gate 🛡️ → doc-syncer 📖 → tag-agent 🏷️ | **Haiku 지정** | 사전 검증 → 문서 동기화 → TAG 검증 | 30초~1분 |
|
|
527
941
|
|
|
528
942
|
#### 온디맨드 에이전트 호출
|
|
529
943
|
|
|
@@ -534,14 +948,15 @@ moai-adk --help
|
|
|
534
948
|
@agent-tag-agent "AUTH 도메인 TAG 목록 조회"
|
|
535
949
|
@agent-git-manager "브랜치 생성 및 PR 생성"
|
|
536
950
|
@agent-trust-checker "TRUST 원칙 준수 여부 확인"
|
|
951
|
+
@agent-quality-gate "코드 품질 검증 실행"
|
|
952
|
+
@agent-Explore "JWT 인증 관련 코드 위치 탐색"
|
|
537
953
|
|
|
538
954
|
# Sonnet 에이전트 (복잡한 작업)
|
|
539
|
-
@agent-debug-helper "TypeError 오류 원인 분석"
|
|
540
955
|
@agent-spec-builder "SPEC-AUTH-001 메타데이터 검증"
|
|
956
|
+
@agent-implementation-planner "AUTH-001 구현 계획 수립"
|
|
957
|
+
@agent-tdd-implementer "AUTH-001 TDD 구현 실행"
|
|
958
|
+
@agent-debug-helper "TypeError 런타임 오류 원인 분석"
|
|
541
959
|
@agent-cc-manager "Claude Code 설정 최적화"
|
|
542
|
-
|
|
543
|
-
# Explore 에이전트 (Haiku, 코드 탐색)
|
|
544
|
-
@agent-Explore "JWT 인증 관련 코드 위치 탐색"
|
|
545
960
|
```
|
|
546
961
|
|
|
547
962
|
#### 모델별 성능 비교
|
|
@@ -556,6 +971,7 @@ moai-adk --help
|
|
|
556
971
|
| **디버깅** | 1분 | 2~3분 | 세션 기본 모델 사용 |
|
|
557
972
|
|
|
558
973
|
**핵심 설계**:
|
|
974
|
+
|
|
559
975
|
- `/alfred:0-project`, `/alfred:1-spec`, `/alfred:2-build`: **사용자가 선택한 세션 기본 모델** 사용
|
|
560
976
|
- `/model sonnet` (기본값): 높은 품질, 복잡한 판단
|
|
561
977
|
- `/model haiku`: 빠른 속도, 반복 작업
|
|
@@ -565,44 +981,47 @@ moai-adk --help
|
|
|
565
981
|
|
|
566
982
|
---
|
|
567
983
|
|
|
568
|
-
##
|
|
984
|
+
## ■ Alfred's Output Styles
|
|
569
985
|
|
|
570
986
|
Alfred는 작업 특성과 사용자 경험 수준에 따라 **3가지 출력 스타일**을 제공합니다. Claude Code에서 `/output-style` 명령어로 언제든지 전환할 수 있습니다.
|
|
571
987
|
|
|
572
988
|
### 3가지 표준 스타일
|
|
573
989
|
|
|
574
|
-
#### 1. Agentic Coding (기본값)
|
|
990
|
+
#### 1. Agentic Coding (기본값)
|
|
575
991
|
|
|
576
992
|
**대상**: 실무 개발자, 팀 리더, 아키텍트
|
|
577
993
|
|
|
578
|
-
Alfred SuperAgent가
|
|
994
|
+
Alfred SuperAgent가 11개 전문 에이전트를 조율하여 빠른 개발과 협업을 자동으로 전환하는 통합 코딩 모드입니다.
|
|
579
995
|
|
|
580
996
|
**두 가지 작업 방식**:
|
|
581
|
-
|
|
997
|
+
|
|
998
|
+
- **Fast Mode (기본)**: 빠른 개발, 구현 위주 작업
|
|
582
999
|
- SPEC → TDD → SYNC 자동화
|
|
583
1000
|
- 간결한 기술 커뮤니케이션
|
|
584
1001
|
- 최소 설명, 최대 효율
|
|
585
1002
|
- TRUST 5원칙 자동 검증
|
|
586
|
-
-
|
|
1003
|
+
- **Collab Mode (자동 전환)**: "협업", "브레인스토밍", "설계", "리뷰" 키워드 감지 시
|
|
587
1004
|
- 질문 기반 대화
|
|
588
1005
|
- 트레이드오프 분석
|
|
589
1006
|
- 아키텍처 다이어그램 제공
|
|
590
1007
|
- 실시간 코드 리뷰
|
|
591
1008
|
|
|
592
1009
|
**핵심 원칙**:
|
|
1010
|
+
|
|
593
1011
|
- SPEC 우선: 모든 작업은 @SPEC:ID부터 시작
|
|
594
1012
|
- TAG 무결성: `rg` 스캔 기반 실시간 검증
|
|
595
1013
|
- TRUST 준수: 5원칙 자동 검증 및 품질 게이트
|
|
596
1014
|
- 다중 언어: 17개 언어 지원 (Python, TypeScript, JavaScript, Java, Go, Rust, Dart, Swift, Kotlin, PHP, Ruby, C++, C, C#, Haskell, Shell, Lua)
|
|
597
1015
|
|
|
598
1016
|
**사용**:
|
|
1017
|
+
|
|
599
1018
|
```text
|
|
600
1019
|
/output-style agentic-coding
|
|
601
1020
|
```
|
|
602
1021
|
|
|
603
1022
|
---
|
|
604
1023
|
|
|
605
|
-
#### 2. MoAI ADK Learning
|
|
1024
|
+
#### 2. MoAI ADK Learning
|
|
606
1025
|
|
|
607
1026
|
**대상**: MoAI-ADK를 처음 사용하는 개발자
|
|
608
1027
|
|
|
@@ -611,6 +1030,7 @@ MoAI-ADK의 핵심 개념과 3단계 워크플로우를 친절하게 설명하
|
|
|
611
1030
|
**핵심 철학**: "명세 없으면 코드 없다, 테스트 없으면 구현 없다"
|
|
612
1031
|
|
|
613
1032
|
**3가지 핵심 개념**:
|
|
1033
|
+
|
|
614
1034
|
1. **SPEC-First**: 코드 작성 전 명세를 먼저 작성
|
|
615
1035
|
- EARS 구문 (5가지 패턴)으로 요구사항 작성
|
|
616
1036
|
- Ubiquitous, Event-driven, State-driven, Optional, Constraints
|
|
@@ -621,19 +1041,21 @@ MoAI-ADK의 핵심 개념과 3단계 워크플로우를 친절하게 설명하
|
|
|
621
1041
|
- Test First, Readable, Unified, Secured, Trackable
|
|
622
1042
|
|
|
623
1043
|
**학습 내용**:
|
|
1044
|
+
|
|
624
1045
|
- 각 개념을 실생활 비유로 쉽게 설명
|
|
625
1046
|
- 3단계 워크플로우 단계별 학습
|
|
626
1047
|
- 실제 예시로 SPEC 작성 연습
|
|
627
1048
|
- FAQ로 자주 묻는 질문 해결
|
|
628
1049
|
|
|
629
1050
|
**사용**:
|
|
1051
|
+
|
|
630
1052
|
```text
|
|
631
1053
|
/output-style moai-adk-learning
|
|
632
1054
|
```
|
|
633
1055
|
|
|
634
1056
|
---
|
|
635
1057
|
|
|
636
|
-
#### 3. Study with Alfred
|
|
1058
|
+
#### 3. Study with Alfred
|
|
637
1059
|
|
|
638
1060
|
**대상**: 새로운 기술/언어/프레임워크를 배우려는 개발자
|
|
639
1061
|
|
|
@@ -662,12 +1084,14 @@ Alfred가 함께 배우는 친구처럼 새로운 기술을 쉽게 설명하고,
|
|
|
662
1084
|
- 완성된 코드 품질 검증
|
|
663
1085
|
|
|
664
1086
|
**특징**:
|
|
1087
|
+
|
|
665
1088
|
- 복잡한 개념을 쉽게 풀어서 설명
|
|
666
1089
|
- 실생활 비유로 이해도 향상
|
|
667
1090
|
- 단계별로 함께 실습
|
|
668
1091
|
- 자주 묻는 질문에 답변
|
|
669
1092
|
|
|
670
1093
|
**사용**:
|
|
1094
|
+
|
|
671
1095
|
```text
|
|
672
1096
|
/output-style study-with-alfred
|
|
673
1097
|
```
|
|
@@ -680,13 +1104,14 @@ Alfred가 함께 배우는 친구처럼 새로운 기술을 쉽게 설명하고,
|
|
|
680
1104
|
|
|
681
1105
|
| 상황 | 권장 스타일 | 이유 |
|
|
682
1106
|
| ------------------- | ----------------------- | -------------------------------- |
|
|
683
|
-
|
|
|
684
|
-
|
|
|
685
|
-
|
|
|
686
|
-
|
|
|
687
|
-
|
|
|
1107
|
+
| **실무 개발** | Agentic Coding | Fast/Collab 자동 전환, 효율 중심 |
|
|
1108
|
+
| **MoAI-ADK 학습** | MoAI ADK Learning | SPEC-First, TAG, TRUST 개념 이해 |
|
|
1109
|
+
| **새 기술 학습** | Study with Alfred | What-Why-How-Practice 4단계 |
|
|
1110
|
+
| **반복 작업** | Agentic Coding (Fast) | 최소 설명, 빠른 실행 |
|
|
1111
|
+
| **팀 협업** | Agentic Coding (Collab) | 트레이드오프 분석, 브레인스토밍 |
|
|
688
1112
|
|
|
689
1113
|
**스타일 전환 예시**:
|
|
1114
|
+
|
|
690
1115
|
```text
|
|
691
1116
|
# MoAI-ADK 처음 시작 시
|
|
692
1117
|
/output-style moai-adk-learning
|
|
@@ -702,7 +1127,7 @@ Alfred가 함께 배우는 친구처럼 새로운 기술을 쉽게 설명하고,
|
|
|
702
1127
|
|
|
703
1128
|
---
|
|
704
1129
|
|
|
705
|
-
##
|
|
1130
|
+
## ■ Universal Language Support
|
|
706
1131
|
|
|
707
1132
|
Alfred는 **17개 주요 프로그래밍 언어**를 지원하며, 각 언어에 최적화된 도구 체인을 자동으로 선택합니다.
|
|
708
1133
|
|
|
@@ -789,6 +1214,7 @@ Alfred는 프로젝트 루트의 설정 파일을 자동으로 감지하여 언
|
|
|
789
1214
|
| **T**rackable | @TAG | @TAG | @TAG |
|
|
790
1215
|
|
|
791
1216
|
**공통 원칙**:
|
|
1217
|
+
|
|
792
1218
|
- 모든 언어는 `@TAG 시스템`으로 SPEC→TEST→CODE→DOC 추적성 보장
|
|
793
1219
|
- 언어별 표준 도구 체인을 자동 감지 및 적용
|
|
794
1220
|
- TRUST 5원칙은 모든 프로젝트에 일관되게 적용
|
|
@@ -814,33 +1240,38 @@ Alfred는 각 디렉토리의 언어를 자동 감지하고 적절한 도구 체
|
|
|
814
1240
|
|
|
815
1241
|
---
|
|
816
1242
|
|
|
817
|
-
##
|
|
1243
|
+
## ■ TRUST 5원칙
|
|
818
1244
|
|
|
819
1245
|
Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
820
1246
|
|
|
821
1247
|
### T - Test First (테스트 우선)
|
|
1248
|
+
|
|
822
1249
|
- SPEC 기반 테스트 케이스 작성
|
|
823
1250
|
- TDD RED → GREEN → REFACTOR 사이클
|
|
824
1251
|
- 테스트 커버리지 ≥ 85%
|
|
825
1252
|
|
|
826
1253
|
### R - Readable (가독성)
|
|
1254
|
+
|
|
827
1255
|
- 파일 ≤ 300 LOC
|
|
828
1256
|
- 함수 ≤ 50 LOC
|
|
829
1257
|
- 매개변수 ≤ 5개
|
|
830
1258
|
- 복잡도 ≤ 10
|
|
831
1259
|
|
|
832
1260
|
### U - Unified (통일성)
|
|
1261
|
+
|
|
833
1262
|
- 타입 안전성 또는 런타임 검증
|
|
834
1263
|
- 아키텍처 일관성
|
|
835
1264
|
- 코딩 스타일 통일
|
|
836
1265
|
|
|
837
1266
|
### S - Secured (보안)
|
|
1267
|
+
|
|
838
1268
|
- 입력 검증
|
|
839
1269
|
- 로깅 및 감사
|
|
840
1270
|
- 비밀 관리
|
|
841
1271
|
- 정적 분석
|
|
842
1272
|
|
|
843
1273
|
### T - Trackable (추적성)
|
|
1274
|
+
|
|
844
1275
|
- `@SPEC → @TEST → @CODE → @DOC` TAG 체인
|
|
845
1276
|
- CODE-FIRST 원칙 (코드 직접 스캔)
|
|
846
1277
|
- HISTORY 섹션 기록
|
|
@@ -862,11 +1293,75 @@ Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
|
862
1293
|
|
|
863
1294
|
---
|
|
864
1295
|
|
|
865
|
-
##
|
|
1296
|
+
## ■ 업그레이드 가이드
|
|
1297
|
+
|
|
1298
|
+
### 1단계: 패키지 업데이트
|
|
1299
|
+
|
|
1300
|
+
```bash
|
|
1301
|
+
moai-adk update
|
|
1302
|
+
|
|
1303
|
+
# 또는
|
|
1304
|
+
uv pip install --upgrade moai-adk
|
|
1305
|
+
```
|
|
1306
|
+
|
|
1307
|
+
### 2단계: 프로젝트 업데이트
|
|
1308
|
+
|
|
1309
|
+
```bash
|
|
1310
|
+
cd your-project
|
|
1311
|
+
moai-adk init .
|
|
1312
|
+
```
|
|
1313
|
+
|
|
1314
|
+
**자동 백업**: 업데이트 전 `.moai-backups/{timestamp}/`에 자동 백업 생성
|
|
1315
|
+
|
|
1316
|
+
### 3단계: Claude Code 최적화
|
|
1317
|
+
|
|
1318
|
+
```text
|
|
1319
|
+
$ claude
|
|
1320
|
+
> /alfred:0-project
|
|
1321
|
+
```
|
|
1322
|
+
|
|
1323
|
+
병합 프롬프트에서 **Merge** 선택 → 기존 문서 유지 + 새 템플릿 추가
|
|
1324
|
+
|
|
1325
|
+
### 검증 체크리스트
|
|
1326
|
+
|
|
1327
|
+
```bash
|
|
1328
|
+
# 상태 확인
|
|
1329
|
+
moai-adk status
|
|
1330
|
+
|
|
1331
|
+
## 출력 예시:
|
|
1332
|
+
╭────── Project Status ──────╮
|
|
1333
|
+
│ Mode team │
|
|
1334
|
+
│ Locale ko │
|
|
1335
|
+
│ SPECs 23 │
|
|
1336
|
+
│ Branch develop │
|
|
1337
|
+
│ Git Status Clean │
|
|
1338
|
+
╰────────────────────────────╯
|
|
1339
|
+
```
|
|
1340
|
+
|
|
1341
|
+
```bash
|
|
1342
|
+
# 시스템 진단
|
|
1343
|
+
moai-adk doctor
|
|
1344
|
+
|
|
1345
|
+
## 출력 예시:
|
|
1346
|
+
Running system diagnostics...
|
|
1347
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
|
1348
|
+
┃ Check ┃ Status ┃
|
|
1349
|
+
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
|
|
1350
|
+
│ Python >= 3.13 │ ✓ │
|
|
1351
|
+
│ Git installed │ ✓ │
|
|
1352
|
+
│ Project structure (.moai/) │ ✓ │
|
|
1353
|
+
│ Config file (.moai/config.json) │ ✓ │
|
|
1354
|
+
└──────────────────────────────────────────┴────────┘
|
|
1355
|
+
```
|
|
1356
|
+
|
|
1357
|
+
---
|
|
1358
|
+
|
|
1359
|
+
## ■ FAQ
|
|
866
1360
|
|
|
867
1361
|
### Q1: MoAI-ADK는 어떤 프로젝트에 적합한가요?
|
|
868
1362
|
|
|
869
1363
|
**A**: 다음과 같은 프로젝트에 적합합니다:
|
|
1364
|
+
|
|
870
1365
|
- ✅ 새로운 프로젝트 (그린필드)
|
|
871
1366
|
- ✅ 기존 프로젝트 (레거시 도입)
|
|
872
1367
|
- ✅ 개인 프로젝트 (Personal 모드)
|
|
@@ -884,12 +1379,14 @@ Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
|
884
1379
|
### Q4: Personal 모드와 Team 모드의 차이는?
|
|
885
1380
|
|
|
886
1381
|
**A**:
|
|
1382
|
+
|
|
887
1383
|
- **Personal 모드**: 로컬 작업 중심, 체크포인트만 생성
|
|
888
1384
|
- **Team 모드**: GitFlow 지원, Draft PR 자동 생성, develop 브랜치 기반
|
|
889
1385
|
|
|
890
1386
|
### Q5: SPEC 메타데이터는 어떻게 관리하나요?
|
|
891
1387
|
|
|
892
1388
|
**A**: `.moai/memory/spec-metadata.md`에 전체 가이드가 있습니다.
|
|
1389
|
+
|
|
893
1390
|
- **필수 7개**: id, version, status, created, updated, author, priority
|
|
894
1391
|
- **선택 9개**: category, labels, depends_on, blocks, related_specs, related_issue, scope
|
|
895
1392
|
- **HISTORY 섹션**: 모든 변경 이력 기록 (필수)
|
|
@@ -901,13 +1398,14 @@ Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
|
901
1398
|
### Q7: Context Engineering이란?
|
|
902
1399
|
|
|
903
1400
|
**A**:
|
|
1401
|
+
|
|
904
1402
|
- **JIT Retrieval**: 필요한 순간에만 문서 로드 (초기 컨텍스트 최소화)
|
|
905
|
-
- **Compaction**: 토큰 사용량 >70% 시 요약 후 새 세션 권장
|
|
906
1403
|
- **Explore 에이전트**: 대규모 코드베이스 효율적 탐색
|
|
907
1404
|
|
|
908
1405
|
### Q8: 자동 백업은 어떻게 작동하나요?
|
|
909
1406
|
|
|
910
1407
|
**A**:
|
|
1408
|
+
|
|
911
1409
|
- **Template Processor**: 업데이트 전 `.moai-backups/alfred-{timestamp}/` 자동 백업
|
|
912
1410
|
- **Event-Driven Checkpoint**: 위험한 작업 전 자동 checkpoint 생성
|
|
913
1411
|
- **보존 정책**: 최대 10개 유지, 7일 후 자동 정리
|
|
@@ -915,6 +1413,7 @@ Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
|
915
1413
|
### Q9: /model 명령어를 사용해야 하나요?
|
|
916
1414
|
|
|
917
1415
|
**A**: **선택사항**입니다. Alfred는 이미 각 에이전트에 최적 모델을 할당했으므로:
|
|
1416
|
+
|
|
918
1417
|
- ✅ **기본 설정 유지** (권장): Alfred가 자동으로 작업별 최적 모델 사용
|
|
919
1418
|
- ⚡ **패스트 모드**: `/model haiku` - 반복 작업 시 전체 세션을 Haiku로
|
|
920
1419
|
- 🧠 **스마트 모드**: `/model sonnet` - 복잡한 판단이 계속 필요할 때
|
|
@@ -924,18 +1423,20 @@ Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
|
924
1423
|
### Q10: Haiku와 Sonnet의 비용 차이는?
|
|
925
1424
|
|
|
926
1425
|
**A**:
|
|
1426
|
+
|
|
927
1427
|
- **Haiku**: $1 / 1M 입력 토큰, $5 / 1M 출력 토큰
|
|
928
1428
|
- **Sonnet**: $3 / 1M 입력 토큰, $15 / 1M 출력 토큰
|
|
929
1429
|
- **절감 효과**: Haiku 에이전트 사용 시 **비용 67% 절감**
|
|
930
1430
|
|
|
931
1431
|
**예시 (100만 토큰 기준)**:
|
|
1432
|
+
|
|
932
1433
|
- 100% Sonnet: $18 (입력 + 출력)
|
|
933
1434
|
- MoAI-ADK (혼합): $6~$9 (작업 특성에 따라)
|
|
934
1435
|
- **절감액**: $9~$12 (50~67%)
|
|
935
1436
|
|
|
936
1437
|
---
|
|
937
1438
|
|
|
938
|
-
##
|
|
1439
|
+
## ■ 문제 해결
|
|
939
1440
|
|
|
940
1441
|
### 설치 문제
|
|
941
1442
|
|
|
@@ -962,11 +1463,42 @@ uv pip install moai-adk --force-reinstall
|
|
|
962
1463
|
```bash
|
|
963
1464
|
# 프로젝트 상태 확인
|
|
964
1465
|
moai-adk status
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
**출력 예시**:
|
|
965
1469
|
|
|
1470
|
+
```text
|
|
1471
|
+
╭────── Project Status ──────╮
|
|
1472
|
+
│ Mode team │
|
|
1473
|
+
│ Locale ko │
|
|
1474
|
+
│ SPECs 23 │
|
|
1475
|
+
│ Branch develop │
|
|
1476
|
+
│ Git Status Clean │
|
|
1477
|
+
╰────────────────────────────╯
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
```bash
|
|
966
1481
|
# 시스템 진단
|
|
967
1482
|
moai-adk doctor
|
|
1483
|
+
```
|
|
968
1484
|
|
|
969
|
-
|
|
1485
|
+
**출력 예시**:
|
|
1486
|
+
|
|
1487
|
+
```text
|
|
1488
|
+
Running system diagnostics...
|
|
1489
|
+
|
|
1490
|
+
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
|
1491
|
+
┃ Check ┃ Status ┃
|
|
1492
|
+
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
|
|
1493
|
+
│ Python >= 3.13 │ ✓ │
|
|
1494
|
+
│ Git installed │ ✓ │
|
|
1495
|
+
│ Project structure (.moai/) │ ✓ │
|
|
1496
|
+
│ Config file (.moai/config.json) │ ✓ │
|
|
1497
|
+
└──────────────────────────────────────────┴────────┘
|
|
1498
|
+
```
|
|
1499
|
+
|
|
1500
|
+
```bash
|
|
1501
|
+
# 강제 재초기화 (문제가 있을 경우)
|
|
970
1502
|
moai-adk init . --force
|
|
971
1503
|
```
|
|
972
1504
|
|
|
@@ -986,6 +1518,7 @@ ls -la .claude/commands/alfred/
|
|
|
986
1518
|
### 일반적인 에러
|
|
987
1519
|
|
|
988
1520
|
#### 에러: "moai-adk: command not found"
|
|
1521
|
+
|
|
989
1522
|
```bash
|
|
990
1523
|
# PATH 확인 및 전체 경로 사용
|
|
991
1524
|
~/.local/bin/moai-adk --version
|
|
@@ -995,6 +1528,7 @@ pip install --force-reinstall moai-adk
|
|
|
995
1528
|
```
|
|
996
1529
|
|
|
997
1530
|
#### 에러: ".moai/ 디렉토리를 찾을 수 없습니다"
|
|
1531
|
+
|
|
998
1532
|
```bash
|
|
999
1533
|
# 초기화 실행
|
|
1000
1534
|
moai-adk init .
|
|
@@ -1004,6 +1538,7 @@ moai-adk init .
|
|
|
1004
1538
|
```
|
|
1005
1539
|
|
|
1006
1540
|
#### 에러: "SPEC ID 중복"
|
|
1541
|
+
|
|
1007
1542
|
```bash
|
|
1008
1543
|
# 기존 SPEC 확인
|
|
1009
1544
|
rg "@SPEC:" -n .moai/specs/
|
|
@@ -1014,18 +1549,19 @@ rg "@SPEC:" -n .moai/specs/
|
|
|
1014
1549
|
|
|
1015
1550
|
---
|
|
1016
1551
|
|
|
1017
|
-
##
|
|
1552
|
+
## ■ 문서 및 지원
|
|
1018
1553
|
|
|
1019
1554
|
### 공식 문서
|
|
1555
|
+
|
|
1020
1556
|
- **GitHub Repository**: https://github.com/modu-ai/moai-adk
|
|
1021
1557
|
- **PyPI Package**: https://pypi.org/project/moai-adk/
|
|
1022
1558
|
- **Issue Tracker**: https://github.com/modu-ai/moai-adk/issues
|
|
1023
1559
|
- **Discussions**: https://github.com/modu-ai/moai-adk/discussions
|
|
1024
1560
|
|
|
1025
1561
|
### 커뮤니티
|
|
1562
|
+
|
|
1026
1563
|
- **GitHub Discussions**: 질문, 아이디어, 피드백 공유
|
|
1027
1564
|
- **Issue Tracker**: 버그 리포트, 기능 요청
|
|
1028
|
-
- **Email**: email@mo.ai.kr
|
|
1029
1565
|
|
|
1030
1566
|
### 기여하기
|
|
1031
1567
|
|
|
@@ -1043,13 +1579,10 @@ MIT License - 자유롭게 사용하실 수 있습니다.
|
|
|
1043
1579
|
|
|
1044
1580
|
---
|
|
1045
1581
|
|
|
1046
|
-
##
|
|
1582
|
+
## ■ 감사의 말
|
|
1047
1583
|
|
|
1048
1584
|
MoAI-ADK는 다음 프로젝트와 커뮤니티의 도움으로 만들어졌습니다:
|
|
1049
1585
|
|
|
1050
|
-
- **Anthropic Claude Code**: AI 에이전트 시스템의 기반
|
|
1051
|
-
- **OpenAI GPT Models**: 초기 설계 협업
|
|
1052
|
-
- **Python & TypeScript Communities**: 언어 지원 및 도구 체인
|
|
1053
1586
|
- **모두의AI Community**: 지속적인 피드백과 개선 아이디어
|
|
1054
1587
|
|
|
1055
1588
|
---
|