moai-adk 0.4.0__py3-none-any.whl → 0.4.4__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 +2 -3
- moai_adk/cli/commands/init.py +10 -5
- moai_adk/cli/commands/update.py +274 -118
- moai_adk/cli/prompts/init_prompts.py +14 -18
- moai_adk/core/diagnostics/slash_commands.py +1 -1
- moai_adk/core/project/backup_utils.py +2 -11
- moai_adk/core/project/checker.py +2 -2
- moai_adk/core/project/phase_executor.py +11 -14
- moai_adk/core/project/validator.py +3 -2
- moai_adk/core/quality/__init__.py +1 -1
- moai_adk/core/quality/trust_checker.py +63 -63
- moai_adk/core/quality/validators/__init__.py +1 -1
- moai_adk/core/quality/validators/base_validator.py +1 -1
- moai_adk/core/template/backup.py +21 -8
- moai_adk/core/template/merger.py +14 -4
- moai_adk/core/template/processor.py +24 -5
- moai_adk/templates/.claude/agents/alfred/cc-manager.md +446 -424
- moai_adk/templates/.claude/agents/alfred/debug-helper.md +116 -103
- moai_adk/templates/.claude/agents/alfred/doc-syncer.md +130 -116
- moai_adk/templates/.claude/agents/alfred/git-manager.md +186 -174
- moai_adk/templates/.claude/agents/alfred/implementation-planner.md +227 -213
- moai_adk/templates/.claude/agents/alfred/project-manager.md +216 -128
- moai_adk/templates/.claude/agents/alfred/quality-gate.md +224 -209
- moai_adk/templates/.claude/agents/alfred/spec-builder.md +174 -160
- moai_adk/templates/.claude/agents/alfred/tag-agent.md +151 -139
- moai_adk/templates/.claude/agents/alfred/tdd-implementer.md +209 -196
- moai_adk/templates/.claude/agents/alfred/trust-checker.md +247 -233
- moai_adk/templates/.claude/commands/alfred/0-project.md +756 -640
- moai_adk/templates/.claude/commands/alfred/1-plan.md +343 -333
- moai_adk/templates/.claude/commands/alfred/2-run.md +297 -285
- moai_adk/templates/.claude/commands/alfred/3-sync.md +387 -356
- moai_adk/templates/.claude/hooks/alfred/README.md +52 -52
- moai_adk/templates/.claude/hooks/alfred/alfred_hooks.py +44 -48
- moai_adk/templates/.claude/hooks/alfred/core/__init__.py +17 -17
- moai_adk/templates/.claude/hooks/alfred/core/checkpoint.py +59 -59
- moai_adk/templates/.claude/hooks/alfred/core/context.py +19 -19
- moai_adk/templates/.claude/hooks/alfred/core/project.py +52 -52
- moai_adk/templates/.claude/hooks/alfred/handlers/__init__.py +1 -1
- moai_adk/templates/.claude/hooks/alfred/handlers/notification.py +4 -4
- moai_adk/templates/.claude/hooks/alfred/handlers/session.py +27 -27
- moai_adk/templates/.claude/hooks/alfred/handlers/tool.py +16 -17
- moai_adk/templates/.claude/hooks/alfred/handlers/user.py +11 -11
- moai_adk/templates/.claude/output-styles/alfred/agentic-coding.md +308 -307
- moai_adk/templates/.claude/output-styles/alfred/moai-adk-learning.md +297 -296
- moai_adk/templates/.claude/output-styles/alfred/study-with-alfred.md +191 -190
- moai_adk/templates/.claude/skills/moai-alfred-code-reviewer/SKILL.md +112 -0
- moai_adk/templates/.claude/skills/moai-alfred-debugger-pro/SKILL.md +103 -0
- moai_adk/templates/.claude/skills/moai-alfred-ears-authoring/SKILL.md +103 -0
- moai_adk/templates/.claude/skills/moai-alfred-git-workflow/SKILL.md +95 -0
- moai_adk/templates/.claude/skills/moai-alfred-language-detection/SKILL.md +99 -0
- moai_adk/templates/.claude/skills/moai-alfred-performance-optimizer/SKILL.md +105 -0
- moai_adk/templates/.claude/skills/moai-alfred-refactoring-coach/SKILL.md +97 -0
- moai_adk/templates/.claude/skills/moai-alfred-spec-metadata-validation/SKILL.md +97 -0
- moai_adk/templates/.claude/skills/moai-alfred-tag-scanning/SKILL.md +90 -0
- moai_adk/templates/.claude/skills/moai-alfred-trust-validation/SKILL.md +99 -0
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/SKILL.md +87 -0
- moai_adk/templates/.claude/skills/moai-alfred-tui-survey/examples.md +62 -0
- moai_adk/templates/.claude/skills/moai-claude-code/SKILL.md +70 -43
- moai_adk/templates/.claude/skills/moai-claude-code/examples.md +141 -141
- moai_adk/templates/.claude/skills/moai-claude-code/reference.md +179 -165
- moai_adk/templates/.claude/skills/moai-claude-code/templates/agent-full.md +78 -78
- moai_adk/templates/.claude/skills/moai-claude-code/templates/command-full.md +90 -90
- moai_adk/templates/.claude/skills/moai-claude-code/templates/plugin-full.json +39 -25
- moai_adk/templates/.claude/skills/moai-claude-code/templates/settings-full.json +117 -74
- moai_adk/templates/.claude/skills/moai-claude-code/templates/skill-full.md +131 -134
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-cli-tool/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-data-science/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-devops/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-ml/SKILL.md +43 -11
- moai_adk/templates/.claude/skills/moai-domain-mobile-app/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-security/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-domain-web-api/SKILL.md +43 -12
- moai_adk/templates/.claude/skills/moai-essentials-debug/SKILL.md +47 -11
- moai_adk/templates/.claude/skills/moai-essentials-perf/SKILL.md +47 -11
- moai_adk/templates/.claude/skills/moai-essentials-refactor/SKILL.md +51 -14
- moai_adk/templates/.claude/skills/moai-essentials-review/SKILL.md +46 -10
- moai_adk/templates/.claude/skills/moai-foundation-ears/SKILL.md +62 -25
- moai_adk/templates/.claude/skills/moai-foundation-git/SKILL.md +44 -17
- moai_adk/templates/.claude/skills/moai-foundation-langs/SKILL.md +44 -14
- moai_adk/templates/.claude/skills/moai-foundation-specs/SKILL.md +45 -13
- moai_adk/templates/.claude/skills/moai-foundation-tags/SKILL.md +46 -14
- moai_adk/templates/.claude/skills/moai-foundation-trust/SKILL.md +48 -8
- moai_adk/templates/.claude/skills/moai-lang-c/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-clojure/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-cpp/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-csharp/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-dart/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-elixir/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-go/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-haskell/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-java/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-javascript/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-julia/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-kotlin/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-lua/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-php/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-python/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-r/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-ruby/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-rust/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-scala/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-shell/SKILL.md +44 -11
- moai_adk/templates/.claude/skills/moai-lang-sql/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-swift/SKILL.md +44 -12
- moai_adk/templates/.claude/skills/moai-lang-typescript/SKILL.md +44 -12
- moai_adk/templates/.github/PULL_REQUEST_TEMPLATE.md +44 -43
- moai_adk/templates/.github/workflows/moai-gitflow.yml +36 -35
- moai_adk/templates/.moai/config.json +9 -6
- moai_adk/templates/.moai/memory/development-guide.md +220 -221
- moai_adk/templates/.moai/memory/gitflow-protection-policy.md +85 -85
- moai_adk/templates/.moai/memory/spec-metadata.md +229 -150
- moai_adk/templates/.moai/project/product.md +90 -90
- moai_adk/templates/.moai/project/structure.md +85 -85
- moai_adk/templates/.moai/project/tech.md +117 -117
- moai_adk/templates/CLAUDE.md +564 -709
- moai_adk-0.4.4.dist-info/METADATA +369 -0
- moai_adk-0.4.4.dist-info/RECORD +152 -0
- moai_adk/templates/.claude/commands/alfred/1-spec.md +0 -31
- moai_adk/templates/.claude/commands/alfred/2-build.md +0 -30
- moai_adk/templates/.claude/skills/scripts/standardize_skills.py +0 -166
- moai_adk/templates/.claude/skills/scripts/verify_standardization.sh +0 -43
- moai_adk/templates/.moai/hooks/pre-push.sample +0 -88
- moai_adk-0.4.0.dist-info/METADATA +0 -1816
- moai_adk-0.4.0.dist-info/RECORD +0 -145
- {moai_adk-0.4.0.dist-info → moai_adk-0.4.4.dist-info}/WHEEL +0 -0
- {moai_adk-0.4.0.dist-info → moai_adk-0.4.4.dist-info}/entry_points.txt +0 -0
- {moai_adk-0.4.0.dist-info → moai_adk-0.4.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,1816 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: moai-adk
|
|
3
|
-
Version: 0.4.0
|
|
4
|
-
Summary: MoAI Agentic Development Kit - SPEC-First TDD with Alfred SuperAgent
|
|
5
|
-
Project-URL: Homepage, https://github.com/modu-ai/moai-adk
|
|
6
|
-
Project-URL: Repository, https://github.com/modu-ai/moai-adk
|
|
7
|
-
Project-URL: Issues, https://github.com/modu-ai/moai-adk/issues
|
|
8
|
-
Project-URL: Changelog, https://github.com/modu-ai/moai-adk/releases
|
|
9
|
-
Author-email: MoAI Team <support@moduai.kr>
|
|
10
|
-
License: MIT
|
|
11
|
-
License-File: LICENSE
|
|
12
|
-
Keywords: agentic,ai,alfred,claude,development,spec-first,tdd,toolkit
|
|
13
|
-
Classifier: Development Status :: 4 - Beta
|
|
14
|
-
Classifier: Intended Audience :: Developers
|
|
15
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
-
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
-
Classifier: Topic :: Software Development :: Quality Assurance
|
|
20
|
-
Classifier: Topic :: Software Development :: Testing
|
|
21
|
-
Requires-Python: >=3.13
|
|
22
|
-
Requires-Dist: click>=8.1.0
|
|
23
|
-
Requires-Dist: gitpython>=3.1.45
|
|
24
|
-
Requires-Dist: packaging>=21.0
|
|
25
|
-
Requires-Dist: pyfiglet>=1.0.2
|
|
26
|
-
Requires-Dist: pyyaml>=6.0.0
|
|
27
|
-
Requires-Dist: questionary>=2.0.0
|
|
28
|
-
Requires-Dist: rich>=13.0.0
|
|
29
|
-
Provides-Extra: dev
|
|
30
|
-
Requires-Dist: mypy>=1.7.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
32
|
-
Requires-Dist: pytest-xdist>=3.8.0; extra == 'dev'
|
|
33
|
-
Requires-Dist: pytest>=8.4.2; extra == 'dev'
|
|
34
|
-
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
35
|
-
Provides-Extra: security
|
|
36
|
-
Requires-Dist: bandit>=1.8.0; extra == 'security'
|
|
37
|
-
Requires-Dist: pip-audit>=2.7.0; extra == 'security'
|
|
38
|
-
Description-Content-Type: text/markdown
|
|
39
|
-
|
|
40
|
-
# MoAI-ADK (Agentic Development Kit)
|
|
41
|
-
|
|
42
|
-
[](https://pypi.org/project/moai-adk/)
|
|
43
|
-
[](https://opensource.org/licenses/MIT)
|
|
44
|
-
[](https://www.python.org/)
|
|
45
|
-
[](https://github.com/modu-ai/moai-adk/actions/workflows/moai-gitflow.yml)
|
|
46
|
-
[](https://codecov.io/gh/modu-ai/moai-adk)
|
|
47
|
-
[](https://github.com/modu-ai/moai-adk)
|
|
48
|
-
|
|
49
|
-
## MoAI-ADK: 모두의AI 에이전틱 코딩 개발 프레임워크
|
|
50
|
-
|
|
51
|
-
**안내**: MoAI-ADK는 모두의AI 연구실에서 집필 중인 "(가칭) 에이전틱 코딩" 서적의 별책 부록 오픈 소스 프로젝트입니다.
|
|
52
|
-
|
|
53
|
-

|
|
54
|
-
|
|
55
|
-
> **"SPEC이 없으면 CODE도 없다."**
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## 목차
|
|
60
|
-
|
|
61
|
-
- [이런 문제 겪고 계신가요?](#이런-문제-겪고-계신가요)
|
|
62
|
-
- [Meet Alfred](#meet-alfred---12개-ai-에이전트-팀)
|
|
63
|
-
- [5분 만에 이해하는 핵심 개념](#5분-만에-이해하는-핵심-개념)
|
|
64
|
-
- [Quick Start](#quick-start-3분-실전)
|
|
65
|
-
- [첫 번째 프로젝트: Todo API](#첫-번째-프로젝트-todo-api-만들기)
|
|
66
|
-
- [3단계 워크플로우](#3단계-워크플로우)
|
|
67
|
-
- [v0.4.0: Skills Revolution (계획 중)](#v040-skills-revolution-계획-중)
|
|
68
|
-
- [실전 시나리오](#실전-시나리오)
|
|
69
|
-
- [AI 모델 선택 가이드](#ai-모델-선택-가이드)
|
|
70
|
-
- [CLI Reference](#cli-reference)
|
|
71
|
-
- [출력 스타일](#alfreds-output-styles)
|
|
72
|
-
- [언어 지원](#universal-language-support)
|
|
73
|
-
- [TRUST 5원칙](#trust-5원칙)
|
|
74
|
-
- [FAQ](#faq)
|
|
75
|
-
- [문제 해결](#문제-해결)
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## ■ 이런 문제 겪고 계신가요?
|
|
80
|
-
|
|
81
|
-
### AI 코딩의 현실
|
|
82
|
-
|
|
83
|
-
- **"AI가 만든 코드, 나중에 유지보수 불가능..."**
|
|
84
|
-
- 같은 기능을 매번 다르게 구현
|
|
85
|
-
- 코드 스타일이 파일마다 제각각
|
|
86
|
-
- 테스트 코드는 없고 버그는 많음
|
|
87
|
-
|
|
88
|
-
- **"같은 질문 반복해도 매번 다른 답변..."**
|
|
89
|
-
- 이전 대화 내용을 기억하지 못함
|
|
90
|
-
- 일관된 아키텍처를 유지하기 어려움
|
|
91
|
-
- 프로젝트 전체 맥락을 놓침
|
|
92
|
-
|
|
93
|
-
- **"코드는 많은데 문서는 없고, 추적 불가능..."**
|
|
94
|
-
- 왜 이렇게 만들었는지 알 수 없음
|
|
95
|
-
- 코드 변경 이력 추적 불가
|
|
96
|
-
- 요구사항과 코드가 따로 놈
|
|
97
|
-
|
|
98
|
-
- **"프롬프트 엔지니어링에만 하루가 다 갔어요..."**
|
|
99
|
-
- 완벽한 프롬프트를 찾기 위해 수십 번 시도
|
|
100
|
-
- AI에게 매번 같은 제약사항을 반복 설명
|
|
101
|
-
- 코드 품질을 수동으로 검증
|
|
102
|
-
|
|
103
|
-
### MoAI-ADK는 이렇게 해결합니다
|
|
104
|
-
|
|
105
|
-
```mermaid
|
|
106
|
-
%%{init: {'theme':'neutral'}}%%
|
|
107
|
-
flowchart TD
|
|
108
|
-
Problem["■ 문제: 플랑켄슈타인 코드"] --> Solution["MoAI-ADK"]
|
|
109
|
-
Solution --> SPEC["SPEC 우선<br/>명세 없으면 코드 없다"]
|
|
110
|
-
Solution --> TDD["TDD 강제<br/>테스트 없으면 구현 없다"]
|
|
111
|
-
Solution --> TAG["@TAG 추적<br/>모든 코드가 SPEC과 연결"]
|
|
112
|
-
|
|
113
|
-
SPEC --> Result["결과"]
|
|
114
|
-
TDD --> Result
|
|
115
|
-
TAG --> Result
|
|
116
|
-
|
|
117
|
-
Result --> Quality["높은 품질<br/>TRUST 5원칙 자동 검증"]
|
|
118
|
-
Result --> Track["완벽한 추적성<br/>SPEC→TEST→CODE→DOC"]
|
|
119
|
-
Result --> Maintain["쉬운 유지보수<br/>코드 변경 이력 완전 기록"]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## ■ Meet Alfred - AI 에이전트 팀
|
|
125
|
-
|
|
126
|
-
안녕하세요, 모두의AI SuperAgent **Alfred**입니다!
|
|
127
|
-
|
|
128
|
-

|
|
129
|
-
|
|
130
|
-
저는 MoAI-ADK의 SuperAgent이자 중앙 오케스트레이터 AI입니다. **AI 에이전트 팀**(Alfred + 다수 전문 에이전트)을 조율하여 Claude Code 환경에서 완벽한 개발 지원을 제공합니다.
|
|
131
|
-
|
|
132
|
-
### ▶ 흥미로운 사실: AI가 만든 AI 개발 도구
|
|
133
|
-
|
|
134
|
-
이 프로젝트의 모든 코드는 **100% AI에 의해 작성**되었습니다.
|
|
135
|
-
|
|
136
|
-
- **AI 협업 설계**: GPT-5 Pro와 Claude 4.1 Opus가 함께 아키텍처를 설계
|
|
137
|
-
- **Agentic Coding 적용**: AI 에이전트 팀(Alfred + 다수 전문 에이전트)이 자율적으로 SPEC 작성, TDD 구현, 문서 동기화 수행
|
|
138
|
-
- **투명성**: 완벽하지 않은 부분을 숨기지 않고, 커뮤니티와 함께 개선해나가는 오픈소스
|
|
139
|
-
|
|
140
|
-
### Alfred가 제공하는 4가지 핵심 가치
|
|
141
|
-
|
|
142
|
-
```mermaid
|
|
143
|
-
%%{init: {'theme':'neutral'}}%%
|
|
144
|
-
mindmap
|
|
145
|
-
root((Alfred))
|
|
146
|
-
일관성
|
|
147
|
-
SPEC-First
|
|
148
|
-
TDD 강제
|
|
149
|
-
플랑켄슈타인 코드 방지
|
|
150
|
-
품질
|
|
151
|
-
TRUST 5원칙
|
|
152
|
-
자동 검증
|
|
153
|
-
85%+ 커버리지
|
|
154
|
-
추적성
|
|
155
|
-
@TAG 시스템
|
|
156
|
-
SPEC→TEST→CODE→DOC
|
|
157
|
-
완벽한 연결
|
|
158
|
-
범용성
|
|
159
|
-
17개 언어 지원
|
|
160
|
-
Python TypeScript Java Go
|
|
161
|
-
모바일 Flutter Swift
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
#### 1. 일관성 (Consistency)
|
|
165
|
-
|
|
166
|
-
**SPEC → TDD → Sync** 3단계 파이프라인으로 플랑켄슈타인 코드 방지
|
|
167
|
-
|
|
168
|
-
#### 2. 품질 (Quality)
|
|
169
|
-
|
|
170
|
-
**TRUST 5원칙** 자동 적용 및 검증 (Test First, Readable, Unified, Secured, Trackable)
|
|
171
|
-
|
|
172
|
-
#### 3. 추적성 (Traceability)
|
|
173
|
-
|
|
174
|
-
**@TAG 시스템**으로 `@SPEC → @TEST → @CODE → @DOC` 완벽 연결
|
|
175
|
-
|
|
176
|
-
#### 4. 범용성 (Universality)
|
|
177
|
-
|
|
178
|
-
**모든 주요 언어 지원** (Python, TypeScript, Java, Go, Rust, Dart, Swift, Kotlin 등)
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## ■ 5분 만에 이해하는 핵심 개념
|
|
183
|
-
|
|
184
|
-
### 1. SPEC-First: 설계도 먼저 그리기
|
|
185
|
-
|
|
186
|
-
**비유**: 집을 짓기 전에 설계도를 그리듯이, 코드를 쓰기 전에 SPEC을 작성합니다.
|
|
187
|
-
|
|
188
|
-
```mermaid
|
|
189
|
-
%%{init: {'theme':'neutral'}}%%
|
|
190
|
-
graph LR
|
|
191
|
-
A["SPEC 작성<br/>(설계도)"] --> B["RED<br/>(실패하는 테스트)"]
|
|
192
|
-
B --> C["GREEN<br/>(최소 구현)"]
|
|
193
|
-
C --> D["REFACTOR<br/>(품질 개선)"]
|
|
194
|
-
D --> E["SYNC<br/>(문서화)"]
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
#### EARS 구문으로 명세 작성 (실제 예시)
|
|
198
|
-
|
|
199
|
-
**EARS (Easy Approach to Requirements Syntax)**: 체계적인 요구사항 작성 방법론
|
|
200
|
-
|
|
201
|
-
```markdown
|
|
202
|
-
# @SPEC:AUTH-001: JWT 인증 시스템
|
|
203
|
-
|
|
204
|
-
## Ubiquitous (기본 기능)
|
|
205
|
-
- 시스템은 사용자 인증 기능을 제공해야 한다
|
|
206
|
-
|
|
207
|
-
## Event-driven (이벤트 기반)
|
|
208
|
-
- WHEN 사용자가 유효한 자격증명으로 로그인하면,
|
|
209
|
-
시스템은 JWT 토큰을 발급해야 한다
|
|
210
|
-
- WHEN 토큰이 만료되면,
|
|
211
|
-
시스템은 401 에러를 반환해야 한다
|
|
212
|
-
|
|
213
|
-
## State-driven (상태 기반)
|
|
214
|
-
- WHILE 사용자가 인증된 상태일 때,
|
|
215
|
-
시스템은 보호된 리소스 접근을 허용해야 한다
|
|
216
|
-
|
|
217
|
-
## Optional (선택적 기능)
|
|
218
|
-
- WHERE 리프레시 토큰이 제공되면,
|
|
219
|
-
시스템은 새로운 액세스 토큰을 발급할 수 있다
|
|
220
|
-
|
|
221
|
-
## Constraints (제약사항)
|
|
222
|
-
- IF 잘못된 토큰이 제공되면,
|
|
223
|
-
시스템은 접근을 거부해야 한다
|
|
224
|
-
- 액세스 토큰 만료시간은 15분을 초과하지 않아야 한다
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
**실습**: Claude Code에서 직접 해보기
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
/alfred:1-spec "JWT 기반 사용자 로그인 API"
|
|
231
|
-
# Alfred가 위 형식으로 SPEC을 자동 생성합니다
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
### 2. @TAG 추적: 코드와 문서를 실로 엮기
|
|
237
|
-
|
|
238
|
-
**비유**: 책의 색인처럼, 모든 코드를 SPEC과 연결합니다.
|
|
239
|
-
|
|
240
|
-
```mermaid
|
|
241
|
-
%%{init: {'theme':'neutral'}}%%
|
|
242
|
-
graph TD
|
|
243
|
-
SPEC["@SPEC:AUTH-001<br/>.moai/specs/SPEC-AUTH-001/spec.md"] --> TEST["@TEST:AUTH-001<br/>tests/test_auth_login.py"]
|
|
244
|
-
TEST --> CODE["@CODE:AUTH-001<br/>src/auth/service.py"]
|
|
245
|
-
CODE --> DOC["@DOC:AUTH-001<br/>docs/api/auth.md"]
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
#### 실제 코드 예시
|
|
249
|
-
|
|
250
|
-
```python
|
|
251
|
-
# tests/test_auth_login.py
|
|
252
|
-
# @TEST:AUTH-001 | SPEC: SPEC-AUTH-001.md
|
|
253
|
-
|
|
254
|
-
def test_login_success():
|
|
255
|
-
"""사용자가 유효한 자격증명으로 로그인하면 JWT 토큰을 발급해야 한다"""
|
|
256
|
-
response = login(username="user@example.com", password="valid_pass")
|
|
257
|
-
assert response.status_code == 200
|
|
258
|
-
assert "access_token" in response.json()
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
```python
|
|
262
|
-
# src/auth/service.py
|
|
263
|
-
# @CODE:AUTH-001 | SPEC: SPEC-AUTH-001.md | TEST: tests/test_auth_login.py
|
|
264
|
-
|
|
265
|
-
def login(username: str, password: str) -> TokenResponse:
|
|
266
|
-
"""JWT 토큰 발급 로직"""
|
|
267
|
-
if not validate_credentials(username, password):
|
|
268
|
-
raise UnauthorizedError()
|
|
269
|
-
|
|
270
|
-
token = generate_jwt_token(username)
|
|
271
|
-
return TokenResponse(access_token=token)
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
#### TAG 검증 실습 (실제로 해볼 수 있는 명령어)
|
|
275
|
-
|
|
276
|
-
```bash
|
|
277
|
-
# 1. 모든 TAG 스캔
|
|
278
|
-
rg '@(SPEC|TEST|CODE|DOC):' -n .moai/specs/ tests/ src/ docs/
|
|
279
|
-
|
|
280
|
-
# 2. 특정 도메인 TAG 확인
|
|
281
|
-
rg '@SPEC:AUTH' -n .moai/specs/
|
|
282
|
-
|
|
283
|
-
# 3. 고아 TAG 탐지 (CODE는 있는데 SPEC이 없는 경우)
|
|
284
|
-
rg '@CODE:AUTH-001' -n src/ # CODE 있음
|
|
285
|
-
rg '@SPEC:AUTH-001' -n .moai/specs/ # SPEC 있는지 확인
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
### 3. TRUST 품질: 5가지 원칙으로 코드 품질 보장
|
|
291
|
-
|
|
292
|
-
**비유**: 자동차 안전검사처럼, 코드도 5가지 기준으로 검사합니다.
|
|
293
|
-
|
|
294
|
-
```mermaid
|
|
295
|
-
%%{init: {'theme':'neutral'}}%%
|
|
296
|
-
mindmap
|
|
297
|
-
root((TRUST 5원칙))
|
|
298
|
-
Test First
|
|
299
|
-
테스트 커버리지 ≥85%
|
|
300
|
-
pytest Vitest JUnit
|
|
301
|
-
SPEC 기반 테스트 케이스
|
|
302
|
-
Readable
|
|
303
|
-
파일 ≤300 LOC
|
|
304
|
-
함수 ≤50 LOC
|
|
305
|
-
매개변수 ≤5개
|
|
306
|
-
복잡도 ≤10
|
|
307
|
-
Unified
|
|
308
|
-
타입 안전성
|
|
309
|
-
아키텍처 일관성
|
|
310
|
-
코딩 스타일 통일
|
|
311
|
-
Secured
|
|
312
|
-
입력 검증
|
|
313
|
-
로깅 감사
|
|
314
|
-
비밀 관리
|
|
315
|
-
정적 분석
|
|
316
|
-
Trackable
|
|
317
|
-
@TAG 체계
|
|
318
|
-
CODE-FIRST 스캔
|
|
319
|
-
HISTORY 기록
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
#### 코드 제약 구체적 예시
|
|
323
|
-
|
|
324
|
-
```python
|
|
325
|
-
# ✅ 좋은 예: 함수 ≤50 LOC, 매개변수 ≤5개
|
|
326
|
-
def create_user(
|
|
327
|
-
username: str,
|
|
328
|
-
email: str,
|
|
329
|
-
password: str,
|
|
330
|
-
role: str = "user",
|
|
331
|
-
is_active: bool = True
|
|
332
|
-
) -> User:
|
|
333
|
-
"""사용자 생성 (40 LOC)"""
|
|
334
|
-
# 입력 검증
|
|
335
|
-
if not username or len(username) < 3:
|
|
336
|
-
raise ValueError("Username must be at least 3 characters")
|
|
337
|
-
|
|
338
|
-
if not email or "@" not in email:
|
|
339
|
-
raise ValueError("Invalid email address")
|
|
340
|
-
|
|
341
|
-
# 비밀번호 해싱
|
|
342
|
-
hashed_password = hash_password(password)
|
|
343
|
-
|
|
344
|
-
# 사용자 생성
|
|
345
|
-
user = User(
|
|
346
|
-
username=username,
|
|
347
|
-
email=email,
|
|
348
|
-
password=hashed_password,
|
|
349
|
-
role=role,
|
|
350
|
-
is_active=is_active
|
|
351
|
-
)
|
|
352
|
-
|
|
353
|
-
# DB 저장
|
|
354
|
-
db.session.add(user)
|
|
355
|
-
db.session.commit()
|
|
356
|
-
|
|
357
|
-
return user
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
# ❌ 나쁜 예: 함수 > 50 LOC, 매개변수 > 5개
|
|
361
|
-
def create_user_with_profile_and_settings_and_notifications(
|
|
362
|
-
username, email, password, role, is_active, profile_data,
|
|
363
|
-
settings_data, notification_preferences, theme, language
|
|
364
|
-
):
|
|
365
|
-
"""100 LOC 넘는 거대 함수..."""
|
|
366
|
-
# ... 너무 많은 책임 ...
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
---
|
|
370
|
-
|
|
371
|
-
## ■ Quick Start (3분 실전)
|
|
372
|
-
|
|
373
|
-
### ▶ 준비물
|
|
374
|
-
|
|
375
|
-
- ✅ Python 3.13+
|
|
376
|
-
- ✅ **uv** (필수 - pip보다 10-100배 빠름)
|
|
377
|
-
- ✅ Claude Code 실행 중
|
|
378
|
-
- ✅ Git 설치 (선택사항)
|
|
379
|
-
|
|
380
|
-
### ▶ 3단계로 시작하기
|
|
381
|
-
|
|
382
|
-
#### 1. uv 설치 (필수)
|
|
383
|
-
|
|
384
|
-
**uv는 pip보다 10-100배 빠른 Python 패키지 관리자입니다** (Rust 기반).
|
|
385
|
-
|
|
386
|
-
```bash
|
|
387
|
-
# macOS/Linux
|
|
388
|
-
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
389
|
-
|
|
390
|
-
# Windows (PowerShell)
|
|
391
|
-
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
392
|
-
|
|
393
|
-
# 설치 확인
|
|
394
|
-
uv --version
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
#### 2. moai-adk 설치 (10초)
|
|
398
|
-
|
|
399
|
-
```bash
|
|
400
|
-
# 권장: uv tool 모드 (샌드박스 격리, 전역 접근)
|
|
401
|
-
uv tool install moai-adk
|
|
402
|
-
|
|
403
|
-
# 대안: 현재 가상 환경에 설치
|
|
404
|
-
uv pip install moai-adk
|
|
405
|
-
|
|
406
|
-
# 설치 확인
|
|
407
|
-
moai-adk --version
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
#### 3. 프로젝트 시작 (1분)
|
|
411
|
-
|
|
412
|
-
**새 프로젝트:**
|
|
413
|
-
|
|
414
|
-
```bash
|
|
415
|
-
moai-adk init my-project
|
|
416
|
-
cd my-project
|
|
417
|
-
claude
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
**기존 프로젝트:**
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
cd existing-project
|
|
424
|
-
moai-adk init .
|
|
425
|
-
claude
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
**Claude Code에서 초기화:**
|
|
429
|
-
|
|
430
|
-
```text
|
|
431
|
-
/alfred:0-project
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
**첫 기능 개발:**
|
|
435
|
-
|
|
436
|
-
```text
|
|
437
|
-
/alfred:1-spec "사용자 인증 기능"
|
|
438
|
-
/alfred:2-build AUTH-001
|
|
439
|
-
/alfred:3-sync
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
### ▶ 완료!
|
|
443
|
-
|
|
444
|
-
**생성된 것들:**
|
|
445
|
-
|
|
446
|
-
- ✅ `.moai/specs/SPEC-AUTH-001/spec.md` (명세)
|
|
447
|
-
- ✅ `tests/test_auth_login.py` (테스트)
|
|
448
|
-
- ✅ `src/auth/service.py` (구현)
|
|
449
|
-
- ✅ `docs/api/auth.md` (문서)
|
|
450
|
-
- ✅ `@SPEC → @TEST → @CODE → @DOC` TAG 체인
|
|
451
|
-
|
|
452
|
-
---
|
|
453
|
-
|
|
454
|
-
## ■ 첫 번째 프로젝트: Todo API 만들기
|
|
455
|
-
|
|
456
|
-
### Step 1: SPEC 작성 (5분)
|
|
457
|
-
|
|
458
|
-
**Alfred에게 요청**:
|
|
459
|
-
|
|
460
|
-
```bash
|
|
461
|
-
/alfred:1-spec "할 일 추가, 조회, 수정, 삭제 API"
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
**Alfred가 생성하는 것**:
|
|
465
|
-
|
|
466
|
-
- `.moai/specs/SPEC-TODO-001/spec.md` (EARS 구문)
|
|
467
|
-
- `.moai/specs/SPEC-TODO-001/plan.md` (구현 계획)
|
|
468
|
-
- `feature/SPEC-TODO-001` 브랜치 (Team 모드)
|
|
469
|
-
- Draft PR (Team 모드)
|
|
470
|
-
|
|
471
|
-
**생성된 SPEC 예시**:
|
|
472
|
-
|
|
473
|
-
```yaml
|
|
474
|
-
---
|
|
475
|
-
id: TODO-001
|
|
476
|
-
version: 0.0.1
|
|
477
|
-
status: draft
|
|
478
|
-
created: 2025-10-17
|
|
479
|
-
updated: 2025-10-17
|
|
480
|
-
author: @Goos
|
|
481
|
-
priority: high
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
# @SPEC:TODO-001: Todo API
|
|
485
|
-
|
|
486
|
-
## Ubiquitous
|
|
487
|
-
- 시스템은 할 일 CRUD 기능을 제공해야 한다
|
|
488
|
-
|
|
489
|
-
## Event-driven
|
|
490
|
-
- WHEN 사용자가 새 할 일을 생성하면, 시스템은 고유 ID를 부여해야 한다
|
|
491
|
-
- WHEN 사용자가 할 일을 완료 처리하면, 시스템은 completed_at 타임스탬프를 기록해야 한다
|
|
492
|
-
|
|
493
|
-
## Constraints
|
|
494
|
-
- 할 일 제목은 1-200자여야 한다
|
|
495
|
-
- 할 일은 작성자만 수정/삭제할 수 있어야 한다
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
---
|
|
499
|
-
|
|
500
|
-
### Step 2: TDD 구현 (10분)
|
|
501
|
-
|
|
502
|
-
**Alfred에게 요청**:
|
|
503
|
-
|
|
504
|
-
```bash
|
|
505
|
-
/alfred:2-build TODO-001
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
**Alfred의 3단계 TDD 프로세스**:
|
|
509
|
-
|
|
510
|
-
```mermaid
|
|
511
|
-
%%{init: {'theme':'neutral'}}%%
|
|
512
|
-
stateDiagram-v2
|
|
513
|
-
[*] --> Phase1: SPEC 분석
|
|
514
|
-
Phase1 --> Phase2: 계획 수립
|
|
515
|
-
|
|
516
|
-
Phase2 --> RED: TDD 시작
|
|
517
|
-
RED --> GREEN: 테스트 통과
|
|
518
|
-
GREEN --> REFACTOR: 품질 개선
|
|
519
|
-
|
|
520
|
-
REFACTOR --> Phase3: 품질 검증
|
|
521
|
-
Phase3 --> [*]: 완료
|
|
522
|
-
|
|
523
|
-
note right of RED
|
|
524
|
-
RED
|
|
525
|
-
- 실패하는 테스트 작성
|
|
526
|
-
- @TEST:TODO-001 TAG 추가
|
|
527
|
-
end note
|
|
528
|
-
|
|
529
|
-
note right of GREEN
|
|
530
|
-
GREEN
|
|
531
|
-
- 최소 구현으로 테스트 통과
|
|
532
|
-
- @CODE:TODO-001 TAG 추가
|
|
533
|
-
end note
|
|
534
|
-
|
|
535
|
-
note right of REFACTOR
|
|
536
|
-
REFACTOR
|
|
537
|
-
- 코드 품질 개선
|
|
538
|
-
- 중복 제거, 가독성 향상
|
|
539
|
-
end note
|
|
540
|
-
|
|
541
|
-
note right of Phase3
|
|
542
|
-
품질 게이트
|
|
543
|
-
- TRUST 5원칙 검증
|
|
544
|
-
- 테스트 커버리지 확인
|
|
545
|
-
end note
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
**생성된 파일들**:
|
|
549
|
-
|
|
550
|
-
```text
|
|
551
|
-
tests/test_todo_api.py # @TEST:TODO-001
|
|
552
|
-
src/todo/service.py # @CODE:TODO-001:DOMAIN
|
|
553
|
-
src/todo/models.py # @CODE:TODO-001:DATA
|
|
554
|
-
src/todo/routes.py # @CODE:TODO-001:API
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
---
|
|
558
|
-
|
|
559
|
-
### Step 3: 문서 동기화 (2분)
|
|
560
|
-
|
|
561
|
-
**Alfred에게 요청**:
|
|
562
|
-
|
|
563
|
-
```bash
|
|
564
|
-
/alfred:3-sync
|
|
565
|
-
```
|
|
566
|
-
|
|
567
|
-
**Alfred가 자동 수행**:
|
|
568
|
-
|
|
569
|
-
1. **품질 검증** (Haiku 에이전트)
|
|
570
|
-
- TRUST 5원칙 준수 확인
|
|
571
|
-
- TAG 체인 무결성 검증
|
|
572
|
-
|
|
573
|
-
2. **문서 동기화** (Haiku 에이전트)
|
|
574
|
-
- API 문서 자동 생성 (`docs/api/todo.md`)
|
|
575
|
-
- @DOC:TODO-001 TAG 추가
|
|
576
|
-
|
|
577
|
-
3. **PR 준비** (Team 모드)
|
|
578
|
-
- Draft → Ready 전환
|
|
579
|
-
- CI/CD 확인
|
|
580
|
-
- (선택) `--auto-merge`로 자동 병합
|
|
581
|
-
|
|
582
|
-
**생성된 문서**:
|
|
583
|
-
|
|
584
|
-
```markdown
|
|
585
|
-
# @DOC:TODO-001: Todo API
|
|
586
|
-
|
|
587
|
-
## API Endpoints
|
|
588
|
-
|
|
589
|
-
### POST /api/todos
|
|
590
|
-
|
|
591
|
-
할 일 생성
|
|
592
|
-
|
|
593
|
-
**Request**:
|
|
594
|
-
|
|
595
|
-
```json
|
|
596
|
-
{
|
|
597
|
-
"title": "장보기",
|
|
598
|
-
"description": "우유, 빵"
|
|
599
|
-
}
|
|
600
|
-
```
|
|
601
|
-
|
|
602
|
-
**Response**:
|
|
603
|
-
|
|
604
|
-
```json
|
|
605
|
-
{
|
|
606
|
-
"id": "uuid-123",
|
|
607
|
-
"title": "장보기",
|
|
608
|
-
"completed": false,
|
|
609
|
-
"created_at": "2025-10-17T10:00:00Z"
|
|
610
|
-
}
|
|
611
|
-
```
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
### ▶ 완료! 15분 만에 Todo API 완성
|
|
616
|
-
|
|
617
|
-
**생성된 것들**:
|
|
618
|
-
|
|
619
|
-
- ✅ `.moai/specs/SPEC-TODO-001/` (명세, 계획, 수락 기준)
|
|
620
|
-
- ✅ `tests/test_todo_api.py` (테스트 - 커버리지 87%)
|
|
621
|
-
- ✅ `src/todo/` (구현 - 3개 파일, 총 180 LOC)
|
|
622
|
-
- ✅ `docs/api/todo.md` (API 문서)
|
|
623
|
-
- ✅ `@SPEC → @TEST → @CODE → @DOC` TAG 체인
|
|
624
|
-
|
|
625
|
-
**검증 명령어**:
|
|
626
|
-
|
|
627
|
-
```bash
|
|
628
|
-
# TAG 체인 확인
|
|
629
|
-
rg '@(SPEC|TEST|CODE|DOC):TODO-001' -n
|
|
630
|
-
|
|
631
|
-
# 테스트 실행
|
|
632
|
-
pytest tests/test_todo_api.py -v
|
|
633
|
-
|
|
634
|
-
# API 문서 확인
|
|
635
|
-
cat docs/api/todo.md
|
|
636
|
-
```
|
|
637
|
-
|
|
638
|
-
---
|
|
639
|
-
|
|
640
|
-
## ■ 3단계 워크플로우
|
|
641
|
-
|
|
642
|
-
Alfred의 핵심은 **체계적인 3단계 워크플로우**입니다.
|
|
643
|
-
|
|
644
|
-
```mermaid
|
|
645
|
-
%%{init: {'theme':'neutral'}}%%
|
|
646
|
-
graph TD
|
|
647
|
-
Start([사용자 요청]) --> Spec[1. SPEC 작성<br/>/alfred:1-spec]
|
|
648
|
-
Spec --> Build[2. TDD 구현<br/>/alfred:2-build]
|
|
649
|
-
Build --> Sync[3. 문서 동기화<br/>/alfred:3-sync]
|
|
650
|
-
Sync --> End([완료])
|
|
651
|
-
Sync -.-> Spec
|
|
652
|
-
```
|
|
653
|
-
|
|
654
|
-
### 1. SPEC - 명세 작성
|
|
655
|
-
|
|
656
|
-
**명령어**: `/alfred:1-spec "JWT 기반 사용자 로그인 API"`
|
|
657
|
-
|
|
658
|
-
**Alfred가 자동 수행:**
|
|
659
|
-
|
|
660
|
-
- EARS 형식 명세 자동 생성
|
|
661
|
-
- `@SPEC:ID` TAG 부여
|
|
662
|
-
- Git 브랜치 자동 생성 (Team 모드)
|
|
663
|
-
- Draft PR 생성 (Team 모드)
|
|
664
|
-
- HISTORY 섹션 자동 추가
|
|
665
|
-
|
|
666
|
-
**산출물:**
|
|
667
|
-
|
|
668
|
-
- `.moai/specs/SPEC-AUTH-001/spec.md`
|
|
669
|
-
- `.moai/specs/SPEC-AUTH-001/plan.md`
|
|
670
|
-
- `.moai/specs/SPEC-AUTH-001/acceptance.md`
|
|
671
|
-
|
|
672
|
-
### 2. BUILD - TDD 구현
|
|
673
|
-
|
|
674
|
-
**명령어**: `/alfred:2-build AUTH-001`
|
|
675
|
-
|
|
676
|
-
**Alfred가 자동 수행 (3개 에이전트 협업):**
|
|
677
|
-
|
|
678
|
-
- **Phase 1 (implementation-planner)**: SPEC 분석, 라이브러리 선정, TAG 체인 설계
|
|
679
|
-
- **Phase 2 (tdd-implementer)**: RED → GREEN → REFACTOR TDD 사이클
|
|
680
|
-
- **RED**: 실패하는 테스트 작성 (@TEST:ID)
|
|
681
|
-
- **GREEN**: 최소 구현으로 테스트 통과 (@CODE:ID)
|
|
682
|
-
- **REFACTOR**: 코드 품질 개선
|
|
683
|
-
- **Phase 3 (quality-gate)**: TRUST 5원칙 자동 검증 (Pass/Warning/Critical)
|
|
684
|
-
- **Phase 4 (git-manager)**: 단계별 Git 커밋 (TDD 완료 시 1회)
|
|
685
|
-
|
|
686
|
-
**산출물:**
|
|
687
|
-
|
|
688
|
-
- `tests/test_auth_login.py` (테스트 코드)
|
|
689
|
-
- `src/auth/service.py` (구현 코드)
|
|
690
|
-
- `@TEST:AUTH-001` → `@CODE:AUTH-001` TAG 체인
|
|
691
|
-
- 품질 검증 리포트
|
|
692
|
-
|
|
693
|
-
### 3. SYNC - 문서 동기화
|
|
694
|
-
|
|
695
|
-
**명령어**: `/alfred:3-sync`
|
|
696
|
-
|
|
697
|
-
**Alfred가 자동 수행:**
|
|
698
|
-
|
|
699
|
-
- **Phase 1 (quality-gate)**: 동기화 전 빠른 품질 검증 (조건부, 변경 라인 >50줄)
|
|
700
|
-
- **Phase 2 (doc-syncer)**: Living Document 업데이트
|
|
701
|
-
- **Phase 3 (tag-agent)**: TAG 시스템 무결성 검증
|
|
702
|
-
- **Phase 4 (git-manager)**: sync-report.md 생성, PR Ready 전환 (Team 모드)
|
|
703
|
-
- **선택적 자동 머지** (`--auto-merge`): CI/CD 확인 후 자동 병합
|
|
704
|
-
|
|
705
|
-
**산출물:**
|
|
706
|
-
|
|
707
|
-
- `docs/api/auth.md` (API 문서)
|
|
708
|
-
- `.moai/reports/sync-report.md`
|
|
709
|
-
- `@DOC:AUTH-001` TAG 추가
|
|
710
|
-
|
|
711
|
-
---
|
|
712
|
-
|
|
713
|
-
## ■ v0.4.0: Skills Revolution (진행 중)
|
|
714
|
-
|
|
715
|
-
> **📍 현재 진행 상태**: v0.4.0 Skills 표준화 Phase 1 완료, SPEC-SKILLS-REDESIGN-001 v0.1.0 완료
|
|
716
|
-
>
|
|
717
|
-
> 모든 44개 Skills 재구성 완료, 4-Tier 아키텍처 구현 완료, Progressive Disclosure 메커니즘 활성화
|
|
718
|
-
>
|
|
719
|
-
> 상세 진행도는 [UPDATE-PLAN-0.4.0.md](UPDATE-PLAN-0.4.0.md) 및 [SPEC-SKILLS-REDESIGN-001](.moai/specs/SPEC-SKILLS-REDESIGN-001/spec.md)를 참고하세요.
|
|
720
|
-
|
|
721
|
-
MoAI-ADK v0.4.0은 **Claude Code Skills** 시스템을 도입하여 개발자 경험을 혁신합니다.
|
|
722
|
-
|
|
723
|
-
### 🎯 핵심 비전
|
|
724
|
-
|
|
725
|
-
> **"Commands는 진입점, Skills는 능력, Sub-agents는 두뇌"**
|
|
726
|
-
|
|
727
|
-
v0.4.0은 Claude Code의 **Agent Skills 기능**을 핵심 실행 계층으로 도입하여 **4-Layer 아키텍처**로 전환합니다. Progressive Disclosure 메커니즘으로 **Effectively Unbounded Context**를 실현하며, 개발자는 명령어를 암기하지 않고 **자연어 대화**만으로 **레고 블록처럼 조립 가능한 개발 워크플로우**를 경험합니다.
|
|
728
|
-
|
|
729
|
-
### 🔑 핵심 변경사항
|
|
730
|
-
|
|
731
|
-
| 변경 사항 | Before (v0.3.x) | After (v0.4.0) |
|
|
732
|
-
|-----------|-----------------|----------------|
|
|
733
|
-
| **아키텍처** | 3-Layer (Commands/Agents/Hooks) | **4-Layer (Commands/Sub-agents/Skills/Hooks)** |
|
|
734
|
-
| **용어** | "Agents" (혼동) | **"Sub-agents" (Claude Code 표준)** |
|
|
735
|
-
| **컨텍스트 전략** | Always Loaded | **Progressive Disclosure (Effectively Unbounded)** |
|
|
736
|
-
| **재사용성** | 프로젝트 전용 | **전역 (모든 프로젝트 공유)** |
|
|
737
|
-
| **Hooks 성능** | SessionStart 220ms | **<100ms (50% 단축)** |
|
|
738
|
-
| **조합 가능성** | 없음 (단독 실행) | **Composable (Skills 자동 조합)** |
|
|
739
|
-
|
|
740
|
-
### 🏗️ 4-Layer 아키텍처
|
|
741
|
-
|
|
742
|
-
```mermaid
|
|
743
|
-
%%{init: {'theme':'neutral'}}%%
|
|
744
|
-
graph TD
|
|
745
|
-
User([사용자]) --> L1[Layer 1: Commands<br/>워크플로우 진입점]
|
|
746
|
-
L1 --> L2[Layer 2: Sub-agents<br/>복잡한 추론 & 판단]
|
|
747
|
-
L2 --> L3[Layer 3: Skills ⭐<br/>재사용 가능한 지식]
|
|
748
|
-
L3 --> L4[Layer 4: Hooks<br/>가드레일 & JIT Context]
|
|
749
|
-
|
|
750
|
-
L1 -.직접 참조.-> L3
|
|
751
|
-
|
|
752
|
-
style L3 fill:#e1f5ff,stroke:#0066cc,stroke-width:3px
|
|
753
|
-
style L1 fill:#fff4e1,stroke:#cc6600
|
|
754
|
-
style L2 fill:#f0e1ff,stroke:#6600cc
|
|
755
|
-
style L4 fill:#e1ffe1,stroke:#00cc66
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
**4-Layer 상세**:
|
|
759
|
-
|
|
760
|
-
| Layer | 역할 | 예시 | 특징 |
|
|
761
|
-
|-------|------|------|------|
|
|
762
|
-
| **Layer 1: Commands** | 워크플로우 진입점 | `/alfred:1-plan`, `/alfred:2-run` | 사용자 요청 해석, Skills/Sub-agents 조율 |
|
|
763
|
-
| **Layer 2: Sub-agents** | 복잡한 추론 & 판단 | spec-builder, tdd-implementer | Task tool 호출, 독립 컨텍스트 |
|
|
764
|
-
| **Layer 3: Skills ⭐** | 재사용 가능한 지식 | moai-spec-writer, python-expert | Progressive Disclosure, 전역 재사용 |
|
|
765
|
-
| **Layer 4: Hooks** | 가드레일 & JIT Context | SessionStart, PreToolUse | 위험 작업 차단, 빠른 실행 (<100ms) |
|
|
766
|
-
|
|
767
|
-
### ▶ Progressive Disclosure - 게임 체인저
|
|
768
|
-
|
|
769
|
-
**3-Layer 로딩 메커니즘**:
|
|
770
|
-
|
|
771
|
-
```text
|
|
772
|
-
┌──────────────────────────────────────────────┐
|
|
773
|
-
│ Layer 1: Metadata (Startup) │
|
|
774
|
-
│ - name + description만 사전 로드 │
|
|
775
|
-
│ - 각 Skill당 ≈50 토큰만 소비 │
|
|
776
|
-
│ - 다수의 Skills 설치 시에도 부담 적음 │
|
|
777
|
-
└──────────────────────────────────────────────┘
|
|
778
|
-
↓ Claude가 관련성 판단
|
|
779
|
-
┌──────────────────────────────────────────────┐
|
|
780
|
-
│ Layer 2: SKILL.md (On-Demand) │
|
|
781
|
-
│ - 관련 있는 Skill만 전체 내용 로드 │
|
|
782
|
-
│ - 필요 시에만 로드 (≈500 토큰) │
|
|
783
|
-
│ - 여러 Skills 동시 로드 가능 │
|
|
784
|
-
└──────────────────────────────────────────────┘
|
|
785
|
-
↓ 추가 정보 필요 시
|
|
786
|
-
┌──────────────────────────────────────────────┐
|
|
787
|
-
│ Layer 3: Additional Files (Lazy Loading) │
|
|
788
|
-
│ - templates/, scripts/, resources/ │
|
|
789
|
-
│ - 필요한 파일만 선택적 로드 │
|
|
790
|
-
│ - 대용량 참고 자료를 효율적으로 관리 │
|
|
791
|
-
└──────────────────────────────────────────────┘
|
|
792
|
-
```
|
|
793
|
-
|
|
794
|
-
**효과**:
|
|
795
|
-
- ✅ **Effectively Unbounded Context** (Anthropic 공식 표현)
|
|
796
|
-
- ✅ **컨텍스트 사용량 30% 절감** (Skills 재사용)
|
|
797
|
-
- ✅ **응답 속도 50% 단축** (Hooks 경량화: 220ms→100ms)
|
|
798
|
-
|
|
799
|
-
### ▶ Composability - 레고 블록처럼 조립
|
|
800
|
-
|
|
801
|
-
Claude가 자동으로 필요한 Skills를 식별하고 조합합니다.
|
|
802
|
-
|
|
803
|
-
**예시: 모바일 앱 개발**
|
|
804
|
-
|
|
805
|
-
```text
|
|
806
|
-
사용자: "Flutter로 Todo 앱 만들어줘"
|
|
807
|
-
|
|
808
|
-
Alfred가 자동 조합:
|
|
809
|
-
✅ moai-spec-writer (SPEC 작성)
|
|
810
|
-
✅ dart-expert (Dart 베스트 프랙티스)
|
|
811
|
-
✅ mobile-app-expert (iOS/Android 설계)
|
|
812
|
-
✅ moai-tdd-orchestrator (TDD 구현)
|
|
813
|
-
|
|
814
|
-
사용자: "Firebase 인증도 추가해줘"
|
|
815
|
-
|
|
816
|
-
Alfred가 자동 조합:
|
|
817
|
-
✅ firebase-expert (새로 추가)
|
|
818
|
-
✅ dart-expert (이미 로드됨, 재사용)
|
|
819
|
-
✅ security-expert (자동 추가)
|
|
820
|
-
```
|
|
821
|
-
|
|
822
|
-
**조합 원리**:
|
|
823
|
-
- **Automatic Coordination**: Claude가 자동으로 필요한 Skills 식별
|
|
824
|
-
- **No Explicit Reference**: Skills는 서로를 명시적으로 참조하지 않아도 됨
|
|
825
|
-
- **Multiple Skills Together**: 동시에 여러 Skills 활성화 가능
|
|
826
|
-
|
|
827
|
-
### ▶ Commands 명칭 변경 철학
|
|
828
|
-
|
|
829
|
-
#### `/alfred:1-spec` → `/alfred:1-plan` ⭐ 핵심 변경
|
|
830
|
-
|
|
831
|
-
**철학적 배경**:
|
|
832
|
-
- **"항상 계획을 먼저 세우고 진행한다"** - 계획 우선 원칙 강조
|
|
833
|
-
- SPEC 문서 생성뿐만 아니라 **브레인스토밍 모드**로 확장
|
|
834
|
-
- 아이디어 구상, 요구사항 정리, 설계 논의 등 **계획 수립 전반** 지원
|
|
835
|
-
|
|
836
|
-
**사용 시나리오**:
|
|
837
|
-
|
|
838
|
-
```bash
|
|
839
|
-
# 시나리오 1: SPEC 문서 생성 (기존 방식)
|
|
840
|
-
/alfred:1-plan "JWT 인증 시스템"
|
|
841
|
-
→ SPEC-AUTH-001 생성, EARS 구문, 브랜치/PR
|
|
842
|
-
|
|
843
|
-
# 시나리오 2: 브레인스토밍 모드 (신규)
|
|
844
|
-
/alfred:1-plan "프로젝트 아키텍처 설계 논의"
|
|
845
|
-
→ Alfred와 대화형 브레인스토밍
|
|
846
|
-
→ 아이디어 정리 → SPEC 후보 도출
|
|
847
|
-
|
|
848
|
-
# 시나리오 3: 기술 선택 논의 (신규)
|
|
849
|
-
/alfred:1-plan "인증 방식 비교 (JWT vs Session)"
|
|
850
|
-
→ 장단점 분석 → 의사결정 지원 → SPEC 문서화
|
|
851
|
-
```
|
|
852
|
-
|
|
853
|
-
**핵심 가치**:
|
|
854
|
-
- ✅ **Think First, Code Later** (생각 먼저, 코딩 나중)
|
|
855
|
-
- ✅ **Collaborative Planning** (Alfred와 함께 계획 수립)
|
|
856
|
-
- ✅ **SPEC-First 유지** (최종적으로 SPEC 문서 생성)
|
|
857
|
-
|
|
858
|
-
#### `/alfred:2-build` → `/alfred:2-run` ⭐ 핵심 변경
|
|
859
|
-
|
|
860
|
-
**철학적 배경**:
|
|
861
|
-
- **"계획(Plan) → 실행(Run) → 동기화(Sync)"** - 명확한 워크플로우
|
|
862
|
-
- "build"는 코드 빌드만을 의미하지만, 실제로는 **계획 수행 전반** 지원
|
|
863
|
-
- TDD 구현, 테스트 실행, 리팩토링, 문서 초안 등 **다양한 실행 작업**
|
|
864
|
-
|
|
865
|
-
**사용 시나리오**:
|
|
866
|
-
|
|
867
|
-
```bash
|
|
868
|
-
# 시나리오 1: TDD 구현 (주 사용 방식)
|
|
869
|
-
/alfred:2-run SPEC-AUTH-001
|
|
870
|
-
→ RED → GREEN → REFACTOR
|
|
871
|
-
|
|
872
|
-
# 시나리오 2: 프로토타입 제작
|
|
873
|
-
/alfred:2-run SPEC-PROTO-001
|
|
874
|
-
→ 빠른 검증을 위한 프로토타입 구현
|
|
875
|
-
|
|
876
|
-
# 시나리오 3: 문서화 작업
|
|
877
|
-
/alfred:2-run SPEC-DOCS-001
|
|
878
|
-
→ 문서 작성 및 샘플 코드 생성
|
|
879
|
-
```
|
|
880
|
-
|
|
881
|
-
**핵심 가치**:
|
|
882
|
-
- ✅ **Plan First, Run Next** (계획 먼저, 실행 나중)
|
|
883
|
-
- ✅ **Flexible Execution** (TDD뿐 아니라 다양한 실행 작업)
|
|
884
|
-
- ✅ **SPEC-Driven** (SPEC 기반 실행)
|
|
885
|
-
|
|
886
|
-
#### `/alfred:3-sync` - 유지
|
|
887
|
-
|
|
888
|
-
- **이유**: "sync(동기화)"가 문서-코드-TAG 동기화 의미를 정확히 전달
|
|
889
|
-
- **기능**: Living Document 갱신, TAG 체인 검증, PR Ready 전환
|
|
890
|
-
|
|
891
|
-
### ▶ 10개 Foundation Skills
|
|
892
|
-
|
|
893
|
-
v0.4.0 Phase 1에서 도입되는 핵심 Skills:
|
|
894
|
-
|
|
895
|
-
| Skill | 역할 | 기존 대응 | 특징 |
|
|
896
|
-
|-------|------|----------|------|
|
|
897
|
-
| `moai-spec-writer` | EARS 명세 작성 | spec-builder 일부 | SPEC 문서 생성, EARS 구문 |
|
|
898
|
-
| `moai-tdd-orchestrator` | TDD 오케스트레이션 | tdd-implementer 일부 | RED-GREEN-REFACTOR 사이클 |
|
|
899
|
-
| `moai-tag-validator` | TAG 무결성 검증 | tag-agent 일부 | TAG 체인 검증, 고아 TAG 탐지 |
|
|
900
|
-
| `moai-doc-syncer` | Living Document 동기 | doc-syncer 일부 | 문서 자동 업데이트 |
|
|
901
|
-
| `moai-git-flow` | GitFlow 자동화 | git-manager 일부 | 브랜치/PR 생성, 커밋 자동화 |
|
|
902
|
-
| `moai-quality-gate` | TRUST 5원칙 검증 | trust-checker 일부 | 품질 게이트, 자동 검증 |
|
|
903
|
-
| `python-expert` | Python 전문가 | (신규) | pytest, mypy, ruff |
|
|
904
|
-
| `typescript-expert` | TypeScript 전문가 | (신규) | Vitest, Biome |
|
|
905
|
-
| `web-api-expert` | REST/GraphQL 전문가 | (신규) | API 설계, 보안 |
|
|
906
|
-
| `mobile-app-expert` | 모바일 전문가 | (신규) | iOS, Android, Flutter |
|
|
907
|
-
|
|
908
|
-
**Phase 2 이후**: 추가 35개 Skills (Language 18개 + Domain 8개 + Advanced 9개)
|
|
909
|
-
|
|
910
|
-
### ▶ Before/After 개발 시간 비교
|
|
911
|
-
|
|
912
|
-
| 작업 | 기존 (Commands + Agents) | Skills 기반 (v0.4.0) | 개선율 |
|
|
913
|
-
| ------------------- | ------------------------ | -------------------- | ------ |
|
|
914
|
-
| **SPEC 작성** | 2~3분 | 1~2분 | 40%↓ |
|
|
915
|
-
| **TDD 구현** | 5~7분 | 3~4분 | 43%↓ |
|
|
916
|
-
| **문서 동기화** | 1~2분 | 30초~1분 | 50%↓ |
|
|
917
|
-
| **전체 사이클** | 8~12분 | 4.5~7분 | **44%↓** |
|
|
918
|
-
| **학습 곡선** | 3개 커맨드 + 12개 에이전트 | 자연어만 | **90%↓** |
|
|
919
|
-
|
|
920
|
-
**실제 개발자 경험**:
|
|
921
|
-
|
|
922
|
-
```text
|
|
923
|
-
# 기존: 커맨드 이름 외우기
|
|
924
|
-
개발자: "/alfred:1-spec 뭐였더라... /alfred:0-project? 아니면 /alfred:1-spec?"
|
|
925
|
-
→ 커맨드 참조 → 실행 (학습 부담)
|
|
926
|
-
|
|
927
|
-
# Skills: 그냥 말하기
|
|
928
|
-
개발자: "사용자 인증 SPEC 작성해줘"
|
|
929
|
-
→ Alfred: "moai-spec-writer + web-api-expert 조합하겠습니다"
|
|
930
|
-
→ 즉시 실행 (학습 불필요)
|
|
931
|
-
```
|
|
932
|
-
|
|
933
|
-
### ▶ 자세한 정보
|
|
934
|
-
|
|
935
|
-
v0.4.0 전체 계획, 아키텍처 설계, 마이그레이션 전략은 다음 문서를 참고하세요:
|
|
936
|
-
|
|
937
|
-
📖 **[UPDATE-PLAN-0.4.0.md](UPDATE-PLAN-0.4.0.md)** - 전체 상세 분석 문서
|
|
938
|
-
|
|
939
|
-
---
|
|
940
|
-
|
|
941
|
-
## ■ 실전 시나리오
|
|
942
|
-
|
|
943
|
-
### 시나리오 1: 긴급 버그 수정 (Hotfix)
|
|
944
|
-
|
|
945
|
-
**상황**: 프로덕션에서 로그인 에러 발생!
|
|
946
|
-
|
|
947
|
-
```bash
|
|
948
|
-
# 옵션 1: 표준 방식 (권장)
|
|
949
|
-
git checkout develop
|
|
950
|
-
git checkout -b hotfix/auth-error
|
|
951
|
-
# ... 수정 ...
|
|
952
|
-
git push origin hotfix/auth-error
|
|
953
|
-
# PR 생성: hotfix -> develop -> main
|
|
954
|
-
|
|
955
|
-
# 옵션 2: 직접 main 수정 (허용, 하지만 권장 안 함)
|
|
956
|
-
git checkout main
|
|
957
|
-
# ... 수정 ...
|
|
958
|
-
git commit -m "Fix critical auth bug"
|
|
959
|
-
git push origin main # ⚠️ Advisory 경고 표시되지만 진행됨
|
|
960
|
-
```
|
|
961
|
-
|
|
962
|
-
**Alfred의 Advisory 경고**:
|
|
963
|
-
|
|
964
|
-
```text
|
|
965
|
-
⚠️ ADVISORY: Non-standard GitFlow detected
|
|
966
|
-
|
|
967
|
-
Current branch: hotfix/auth-error
|
|
968
|
-
Target branch: main
|
|
969
|
-
|
|
970
|
-
Recommended GitFlow workflow:
|
|
971
|
-
1. Push to hotfix and create PR to develop
|
|
972
|
-
2. Merge into develop after code review
|
|
973
|
-
3. When develop is stable, create PR from develop to main
|
|
974
|
-
4. Release manager merges develop -> main with tag
|
|
975
|
-
|
|
976
|
-
✓ Push will proceed (flexibility mode enabled)
|
|
977
|
-
```
|
|
978
|
-
|
|
979
|
-
---
|
|
980
|
-
|
|
981
|
-
### 시나리오 2: 새 기능 개발 (Feature)
|
|
982
|
-
|
|
983
|
-
```bash
|
|
984
|
-
# 1. develop에서 최신 코드 받기
|
|
985
|
-
git checkout develop
|
|
986
|
-
git pull origin develop
|
|
987
|
-
|
|
988
|
-
# 2. Claude Code에서 SPEC 작성
|
|
989
|
-
/alfred:1-spec "사용자 프로필 이미지 업로드"
|
|
990
|
-
# → feature/SPEC-PROFILE-001 브랜치 자동 생성
|
|
991
|
-
# → Draft PR 자동 생성 (feature → develop)
|
|
992
|
-
|
|
993
|
-
# 3. TDD 구현
|
|
994
|
-
/alfred:2-build PROFILE-001
|
|
995
|
-
|
|
996
|
-
# 4. 문서 동기화 + 자동 머지
|
|
997
|
-
/alfred:3-sync --auto-merge
|
|
998
|
-
# → 문서 동기화
|
|
999
|
-
# → PR Ready 전환
|
|
1000
|
-
# → CI/CD 확인
|
|
1001
|
-
# → PR 자동 머지 (squash)
|
|
1002
|
-
# → develop 체크아웃
|
|
1003
|
-
# → 다음 작업 준비 완료 ✅
|
|
1004
|
-
```
|
|
1005
|
-
|
|
1006
|
-
---
|
|
1007
|
-
|
|
1008
|
-
## ■ AI 모델 선택 가이드
|
|
1009
|
-
|
|
1010
|
-
MoAI-ADK는 **Haiku 4.5**와 **Sonnet 4.5** 두 가지 AI 모델을 전략적으로 활용하여 **최적의 성능과 비용 효율**을 제공합니다.
|
|
1011
|
-
|
|
1012
|
-
### 패스트 모드 vs 스마트 모드
|
|
1013
|
-
|
|
1014
|
-
Claude Code에서 `/model` 명령어로 전체 세션의 기본 모델을 변경할 수 있습니다:
|
|
1015
|
-
|
|
1016
|
-
```text
|
|
1017
|
-
# 패스트 모드 (빠른 응답, 반복 작업)
|
|
1018
|
-
/model haiku
|
|
1019
|
-
|
|
1020
|
-
# 스마트 모드 (복잡한 판단, 설계)
|
|
1021
|
-
/model sonnet
|
|
1022
|
-
```
|
|
1023
|
-
|
|
1024
|
-
### 12개 에이전트의 모델 배치 전략
|
|
1025
|
-
|
|
1026
|
-
Alfred는 **작업 특성**에 따라 각 에이전트에 최적 모델을 할당합니다:
|
|
1027
|
-
|
|
1028
|
-
#### ▶ Haiku 에이전트 (6개) - 패스트 모드
|
|
1029
|
-
|
|
1030
|
-
**빠른 응답이 필요한 반복 작업 및 패턴 매칭**
|
|
1031
|
-
|
|
1032
|
-
| 에이전트 | 역할 | 왜 Haiku? |
|
|
1033
|
-
| ------------------- | --------------- | -------------------------------------------- |
|
|
1034
|
-
| **doc-syncer** 📖 | 문서 동기화 | 패턴화된 문서 업데이트, Living Document 생성 |
|
|
1035
|
-
| **tag-agent** 🏷️ | TAG 시스템 관리 | 반복적 패턴 매칭, TAG 체인 검증 |
|
|
1036
|
-
| **git-manager** 🚀 | Git 워크플로우 | 정형화된 Git 명령어 실행, 브랜치/PR 생성 |
|
|
1037
|
-
| **trust-checker** ✅ | TRUST 원칙 검증 | 규칙 기반 체크리스트 확인 |
|
|
1038
|
-
| **quality-gate** 🛡️ | 품질 검증 | TRUST 원칙 자동 검증, 빠른 품질 게이트 |
|
|
1039
|
-
| **Explore** 🔍 | 코드베이스 탐색 | 대량 파일 스캔, 키워드 검색 |
|
|
1040
|
-
|
|
1041
|
-
**장점**:
|
|
1042
|
-
|
|
1043
|
-
- **속도 2~5배 향상**: 실시간 응답 (수 초 → 1초 이내)
|
|
1044
|
-
- **비용 67% 절감**: 반복 작업이 많은 프로젝트에 효과적
|
|
1045
|
-
- **높은 정확도**: 패턴화된 작업에서 Sonnet과 동등한 품질
|
|
1046
|
-
|
|
1047
|
-
#### ▶ Sonnet 에이전트 (6개) - 스마트 모드
|
|
1048
|
-
|
|
1049
|
-
**복잡한 판단과 창의적 설계가 필요한 작업**
|
|
1050
|
-
|
|
1051
|
-
| 에이전트 | 역할 | 왜 Sonnet? |
|
|
1052
|
-
| ---------------------------- | ---------------- | ------------------------------------ |
|
|
1053
|
-
| **spec-builder** 🏗️ | SPEC 작성 | EARS 구조 설계, 복잡한 요구사항 분석 |
|
|
1054
|
-
| **implementation-planner** 📋 | 구현 전략 수립 | 아키텍처 설계, 라이브러리 선정 |
|
|
1055
|
-
| **tdd-implementer** 🔬 | TDD 구현 | RED-GREEN-REFACTOR, 복잡한 리팩토링 |
|
|
1056
|
-
| **debug-helper** 🔍 | 디버깅 | 런타임 오류 분석, 해결 방법 도출 |
|
|
1057
|
-
| **cc-manager** 🛠️ | Claude Code 설정 | 워크플로우 최적화, 복잡한 설정 |
|
|
1058
|
-
| **project-manager** 📂 | 프로젝트 초기화 | 전략 수립, 복잡한 의사결정 |
|
|
1059
|
-
|
|
1060
|
-
**장점**:
|
|
1061
|
-
|
|
1062
|
-
- **높은 품질**: 복잡한 코드 품질 보장
|
|
1063
|
-
- **깊은 이해**: 맥락 파악 및 창의적 해결책 제시
|
|
1064
|
-
- **정확한 판단**: 아키텍처 결정, 설계 선택
|
|
1065
|
-
|
|
1066
|
-
### 사용 시나리오별 권장 모델
|
|
1067
|
-
|
|
1068
|
-
| 시나리오 | 권장 모델 | 이유 |
|
|
1069
|
-
| ------------------ | --------- | ----------------------------- |
|
|
1070
|
-
| **새 프로젝트 시작** | Sonnet | SPEC 설계, 아키텍처 결정 필요 |
|
|
1071
|
-
| **반복 개발** | Haiku | 이미 정해진 패턴 반복 구현 |
|
|
1072
|
-
| **버그 수정** | Sonnet | 원인 분석 및 해결 방법 도출 |
|
|
1073
|
-
| **문서 작성** | Haiku | Living Document 동기화 |
|
|
1074
|
-
| **코드 탐색** | Haiku | 파일 검색, TAG 조회 |
|
|
1075
|
-
| **리팩토링** | Sonnet | 구조 개선, 복잡한 변경 |
|
|
1076
|
-
|
|
1077
|
-
### 모델 전환 팁
|
|
1078
|
-
|
|
1079
|
-
```text
|
|
1080
|
-
# 새 기능 설계 시작
|
|
1081
|
-
/model sonnet
|
|
1082
|
-
/alfred:1-spec "사용자 인증 시스템"
|
|
1083
|
-
|
|
1084
|
-
# SPEC 승인 후 TDD 구현
|
|
1085
|
-
/alfred:2-build AUTH-001
|
|
1086
|
-
|
|
1087
|
-
# 구현 완료 후 문서 동기화 (자동으로 Haiku 사용)
|
|
1088
|
-
/alfred:3-sync
|
|
1089
|
-
|
|
1090
|
-
# 다음 기능 설계
|
|
1091
|
-
/model sonnet
|
|
1092
|
-
/alfred:1-spec "결제 시스템"
|
|
1093
|
-
```
|
|
1094
|
-
|
|
1095
|
-
**Pro Tip**: Alfred는 각 에이전트를 호출할 때 자동으로 최적 모델을 사용하므로, **세션 전체 모델 변경은 선택사항**입니다. 기본 설정(Sonnet)으로도 충분히 효율적입니다.
|
|
1096
|
-
|
|
1097
|
-
---
|
|
1098
|
-
|
|
1099
|
-
## ■ CLI Reference
|
|
1100
|
-
|
|
1101
|
-
### 프로젝트 관리
|
|
1102
|
-
|
|
1103
|
-
```bash
|
|
1104
|
-
# 새 프로젝트 생성
|
|
1105
|
-
moai-adk init project-name
|
|
1106
|
-
|
|
1107
|
-
# 기존 프로젝트에 설치
|
|
1108
|
-
moai-adk init .
|
|
1109
|
-
|
|
1110
|
-
# 프로젝트 상태 확인
|
|
1111
|
-
moai-adk status
|
|
1112
|
-
|
|
1113
|
-
# 프로젝트 업데이트
|
|
1114
|
-
moai-adk update
|
|
1115
|
-
|
|
1116
|
-
# 시스템 진단
|
|
1117
|
-
moai-adk doctor
|
|
1118
|
-
|
|
1119
|
-
# 버전 확인
|
|
1120
|
-
moai-adk --version
|
|
1121
|
-
|
|
1122
|
-
# 도움말
|
|
1123
|
-
moai-adk --help
|
|
1124
|
-
```
|
|
1125
|
-
|
|
1126
|
-
### Alfred 커맨드 (Claude Code 내)
|
|
1127
|
-
|
|
1128
|
-
#### 기본 커맨드
|
|
1129
|
-
|
|
1130
|
-
```text
|
|
1131
|
-
# 프로젝트 초기화
|
|
1132
|
-
/alfred:0-project
|
|
1133
|
-
|
|
1134
|
-
# SPEC 작성
|
|
1135
|
-
/alfred:1-spec "기능 설명"
|
|
1136
|
-
/alfred:1-spec SPEC-001 "수정 내용"
|
|
1137
|
-
|
|
1138
|
-
# TDD 구현
|
|
1139
|
-
/alfred:2-build SPEC-001
|
|
1140
|
-
/alfred:2-build all
|
|
1141
|
-
|
|
1142
|
-
# 문서 동기화
|
|
1143
|
-
/alfred:3-sync
|
|
1144
|
-
/alfred:3-sync --auto-merge
|
|
1145
|
-
/alfred:3-sync force
|
|
1146
|
-
```
|
|
1147
|
-
|
|
1148
|
-
#### 커맨드별 에이전트 & 모델 매핑
|
|
1149
|
-
|
|
1150
|
-
각 Alfred 커맨드는 적절한 에이전트를 호출하며, **자동으로 최적 모델**을 사용합니다:
|
|
1151
|
-
|
|
1152
|
-
| 커맨드 | 에이전트 (Phase) | 모델 | 작업 특성 | 예상 시간 |
|
|
1153
|
-
| ------------------- | ------------------------------------------------------------- | -------------------------- | ---------------------------------------- | --------- |
|
|
1154
|
-
| `/alfred:0-project` | project-manager 📂 | 세션 기본 모델 | 프로젝트 전략 수립, 복잡한 의사결정 | 1~2분 |
|
|
1155
|
-
| `/alfred:1-spec` | spec-builder 🏗️ | 세션 기본 모델 | EARS 명세 설계, 요구사항 분석 | 2~3분 |
|
|
1156
|
-
| `/alfred:2-build` | implementation-planner 📋 → tdd-implementer 🔬 → quality-gate 🛡️ | 세션 기본 모델 + **Haiku** | SPEC 분석 → TDD 구현 → 품질 검증 (3단계) | 3~5분 |
|
|
1157
|
-
| `/alfred:3-sync` | quality-gate 🛡️ → doc-syncer 📖 → tag-agent 🏷️ | **Haiku 지정** | 사전 검증 → 문서 동기화 → TAG 검증 | 30초~1분 |
|
|
1158
|
-
|
|
1159
|
-
#### 온디맨드 에이전트 호출
|
|
1160
|
-
|
|
1161
|
-
특정 에이전트를 직접 호출할 수도 있습니다:
|
|
1162
|
-
|
|
1163
|
-
```text
|
|
1164
|
-
# Haiku 에이전트 (빠른 작업)
|
|
1165
|
-
@agent-tag-agent "AUTH 도메인 TAG 목록 조회"
|
|
1166
|
-
@agent-git-manager "브랜치 생성 및 PR 생성"
|
|
1167
|
-
@agent-trust-checker "TRUST 원칙 준수 여부 확인"
|
|
1168
|
-
@agent-quality-gate "코드 품질 검증 실행"
|
|
1169
|
-
@agent-Explore "JWT 인증 관련 코드 위치 탐색"
|
|
1170
|
-
|
|
1171
|
-
# Sonnet 에이전트 (복잡한 작업)
|
|
1172
|
-
@agent-spec-builder "SPEC-AUTH-001 메타데이터 검증"
|
|
1173
|
-
@agent-implementation-planner "AUTH-001 구현 계획 수립"
|
|
1174
|
-
@agent-tdd-implementer "AUTH-001 TDD 구현 실행"
|
|
1175
|
-
@agent-debug-helper "TypeError 런타임 오류 원인 분석"
|
|
1176
|
-
@agent-cc-manager "Claude Code 설정 최적화"
|
|
1177
|
-
```
|
|
1178
|
-
|
|
1179
|
-
#### 모델별 성능 비교
|
|
1180
|
-
|
|
1181
|
-
| 작업 유형 | Haiku (패스트) | Sonnet (스마트) | 실제 적용 |
|
|
1182
|
-
| --------------- | -------------- | --------------- | -------------------------- |
|
|
1183
|
-
| **SPEC 작성** | 1분 | 2~3분 | 세션 기본 모델 사용 |
|
|
1184
|
-
| **TDD 구현** | 2분 | 3~5분 | 세션 기본 모델 사용 |
|
|
1185
|
-
| **문서 동기화** | 30초 | 1~2분 | ✅ Haiku 지정 (3-sync) |
|
|
1186
|
-
| **TAG 검증** | 10초 | 30초 | ✅ Haiku 지정 (tag-agent) |
|
|
1187
|
-
| **Git 작업** | 5초 | 15초 | ✅ Haiku 지정 (git-manager) |
|
|
1188
|
-
| **디버깅** | 1분 | 2~3분 | 세션 기본 모델 사용 |
|
|
1189
|
-
|
|
1190
|
-
**핵심 설계**:
|
|
1191
|
-
|
|
1192
|
-
- `/alfred:0-project`, `/alfred:1-spec`, `/alfred:2-build`: **사용자가 선택한 세션 기본 모델** 사용
|
|
1193
|
-
- `/model sonnet` (기본값): 높은 품질, 복잡한 판단
|
|
1194
|
-
- `/model haiku`: 빠른 속도, 반복 작업
|
|
1195
|
-
- `/alfred:3-sync` 및 Haiku 에이전트: **자동으로 Haiku 모델** 사용 (패턴화된 작업)
|
|
1196
|
-
|
|
1197
|
-
**사용자 제어**: `/model` 명령어로 0~2번 커맨드의 품질과 속도를 자유롭게 조절할 수 있습니다.
|
|
1198
|
-
|
|
1199
|
-
---
|
|
1200
|
-
|
|
1201
|
-
## ■ Alfred's Output Styles
|
|
1202
|
-
|
|
1203
|
-
Alfred는 작업 특성과 사용자 경험 수준에 따라 **3가지 출력 스타일**을 제공합니다. Claude Code에서 `/output-style` 명령어로 언제든지 전환할 수 있습니다.
|
|
1204
|
-
|
|
1205
|
-
### 3가지 표준 스타일
|
|
1206
|
-
|
|
1207
|
-
#### 1. Agentic Coding (기본값)
|
|
1208
|
-
|
|
1209
|
-
**대상**: 실무 개발자, 팀 리더, 아키텍트
|
|
1210
|
-
|
|
1211
|
-
Alfred SuperAgent가 11개 전문 에이전트를 조율하여 빠른 개발과 협업을 자동으로 전환하는 통합 코딩 모드입니다.
|
|
1212
|
-
|
|
1213
|
-
**두 가지 작업 방식**:
|
|
1214
|
-
|
|
1215
|
-
- **Fast Mode (기본)**: 빠른 개발, 구현 위주 작업
|
|
1216
|
-
- SPEC → TDD → SYNC 자동화
|
|
1217
|
-
- 간결한 기술 커뮤니케이션
|
|
1218
|
-
- 최소 설명, 최대 효율
|
|
1219
|
-
- TRUST 5원칙 자동 검증
|
|
1220
|
-
- **Collab Mode (자동 전환)**: "협업", "브레인스토밍", "설계", "리뷰" 키워드 감지 시
|
|
1221
|
-
- 질문 기반 대화
|
|
1222
|
-
- 트레이드오프 분석
|
|
1223
|
-
- 아키텍처 다이어그램 제공
|
|
1224
|
-
- 실시간 코드 리뷰
|
|
1225
|
-
|
|
1226
|
-
**핵심 원칙**:
|
|
1227
|
-
|
|
1228
|
-
- SPEC 우선: 모든 작업은 @SPEC:ID부터 시작
|
|
1229
|
-
- TAG 무결성: `rg` 스캔 기반 실시간 검증
|
|
1230
|
-
- TRUST 준수: 5원칙 자동 검증 및 품질 게이트
|
|
1231
|
-
- 다중 언어: 17개 언어 지원 (Python, TypeScript, JavaScript, Java, Go, Rust, Dart, Swift, Kotlin, PHP, Ruby, C++, C, C#, Haskell, Shell, Lua)
|
|
1232
|
-
|
|
1233
|
-
**사용**:
|
|
1234
|
-
|
|
1235
|
-
```text
|
|
1236
|
-
/output-style agentic-coding
|
|
1237
|
-
```
|
|
1238
|
-
|
|
1239
|
-
---
|
|
1240
|
-
|
|
1241
|
-
#### 2. MoAI ADK Learning
|
|
1242
|
-
|
|
1243
|
-
**대상**: MoAI-ADK를 처음 사용하는 개발자
|
|
1244
|
-
|
|
1245
|
-
MoAI-ADK의 핵심 개념과 3단계 워크플로우를 친절하게 설명하여 빠르게 익힐 수 있도록 돕는 학습 모드입니다.
|
|
1246
|
-
|
|
1247
|
-
**핵심 철학**: "명세 없으면 코드 없다, 테스트 없으면 구현 없다"
|
|
1248
|
-
|
|
1249
|
-
**3가지 핵심 개념**:
|
|
1250
|
-
|
|
1251
|
-
1. **SPEC-First**: 코드 작성 전 명세를 먼저 작성
|
|
1252
|
-
- EARS 구문 (5가지 패턴)으로 요구사항 작성
|
|
1253
|
-
- Ubiquitous, Event-driven, State-driven, Optional, Constraints
|
|
1254
|
-
2. **@TAG 추적성**: 모든 코드를 SPEC과 연결
|
|
1255
|
-
- `@SPEC → @TEST → @CODE → @DOC` 체계
|
|
1256
|
-
- CODE-FIRST 원칙 (코드 직접 스캔)
|
|
1257
|
-
3. **TRUST 품질**: 5가지 원칙으로 코드 품질 보장
|
|
1258
|
-
- Test First, Readable, Unified, Secured, Trackable
|
|
1259
|
-
|
|
1260
|
-
**학습 내용**:
|
|
1261
|
-
|
|
1262
|
-
- 각 개념을 실생활 비유로 쉽게 설명
|
|
1263
|
-
- 3단계 워크플로우 단계별 학습
|
|
1264
|
-
- 실제 예시로 SPEC 작성 연습
|
|
1265
|
-
- FAQ로 자주 묻는 질문 해결
|
|
1266
|
-
|
|
1267
|
-
**사용**:
|
|
1268
|
-
|
|
1269
|
-
```text
|
|
1270
|
-
/output-style moai-adk-learning
|
|
1271
|
-
```
|
|
1272
|
-
|
|
1273
|
-
---
|
|
1274
|
-
|
|
1275
|
-
#### 3. Study with Alfred
|
|
1276
|
-
|
|
1277
|
-
**대상**: 새로운 기술/언어/프레임워크를 배우려는 개발자
|
|
1278
|
-
|
|
1279
|
-
Alfred가 함께 배우는 친구처럼 새로운 기술을 쉽게 설명하고, 실습을 도와주는 학습 모드입니다.
|
|
1280
|
-
|
|
1281
|
-
**학습 4단계**:
|
|
1282
|
-
|
|
1283
|
-
1. **What (이게 뭐야?)** → 기본 개념 이해
|
|
1284
|
-
- 한 줄 요약
|
|
1285
|
-
- 실생활 비유
|
|
1286
|
-
- 핵심 개념 3가지
|
|
1287
|
-
|
|
1288
|
-
2. **Why (왜 필요해?)** → 사용 이유와 장점
|
|
1289
|
-
- 문제 상황
|
|
1290
|
-
- 해결 방법
|
|
1291
|
-
- 실제 사용 사례
|
|
1292
|
-
|
|
1293
|
-
3. **How (어떻게 써?)** → 실습 중심 학습
|
|
1294
|
-
- 최소 예제 (Hello World)
|
|
1295
|
-
- 실용적 예제 (CRUD API)
|
|
1296
|
-
- 자주 묻는 질문
|
|
1297
|
-
|
|
1298
|
-
4. **Practice (실전 적용)** → MoAI-ADK와 통합
|
|
1299
|
-
- SPEC → TEST → CODE 흐름으로 실습
|
|
1300
|
-
- Alfred가 단계별 안내
|
|
1301
|
-
- 완성된 코드 품질 검증
|
|
1302
|
-
|
|
1303
|
-
**특징**:
|
|
1304
|
-
|
|
1305
|
-
- 복잡한 개념을 쉽게 풀어서 설명
|
|
1306
|
-
- 실생활 비유로 이해도 향상
|
|
1307
|
-
- 단계별로 함께 실습
|
|
1308
|
-
- 자주 묻는 질문에 답변
|
|
1309
|
-
|
|
1310
|
-
**사용**:
|
|
1311
|
-
|
|
1312
|
-
```text
|
|
1313
|
-
/output-style study-with-alfred
|
|
1314
|
-
```
|
|
1315
|
-
|
|
1316
|
-
---
|
|
1317
|
-
|
|
1318
|
-
### 스타일 전환 가이드
|
|
1319
|
-
|
|
1320
|
-
**언제 전환할까요?**
|
|
1321
|
-
|
|
1322
|
-
| 상황 | 권장 스타일 | 이유 |
|
|
1323
|
-
| ------------------- | ----------------------- | -------------------------------- |
|
|
1324
|
-
| **실무 개발** | Agentic Coding | Fast/Collab 자동 전환, 효율 중심 |
|
|
1325
|
-
| **MoAI-ADK 학습** | MoAI ADK Learning | SPEC-First, TAG, TRUST 개념 이해 |
|
|
1326
|
-
| **새 기술 학습** | Study with Alfred | What-Why-How-Practice 4단계 |
|
|
1327
|
-
| **반복 작업** | Agentic Coding (Fast) | 최소 설명, 빠른 실행 |
|
|
1328
|
-
| **팀 협업** | Agentic Coding (Collab) | 트레이드오프 분석, 브레인스토밍 |
|
|
1329
|
-
|
|
1330
|
-
**스타일 전환 예시**:
|
|
1331
|
-
|
|
1332
|
-
```text
|
|
1333
|
-
# MoAI-ADK 처음 시작 시
|
|
1334
|
-
/output-style moai-adk-learning
|
|
1335
|
-
|
|
1336
|
-
# 새로운 프레임워크 배울 때
|
|
1337
|
-
/output-style study-with-alfred
|
|
1338
|
-
"FastAPI를 배우고 싶어요"
|
|
1339
|
-
|
|
1340
|
-
# 실무 개발 시작
|
|
1341
|
-
/output-style agentic-coding
|
|
1342
|
-
/alfred:1-spec "사용자 인증 시스템"
|
|
1343
|
-
```
|
|
1344
|
-
|
|
1345
|
-
---
|
|
1346
|
-
|
|
1347
|
-
## ■ Universal Language Support
|
|
1348
|
-
|
|
1349
|
-
Alfred는 **17개 주요 프로그래밍 언어**를 지원하며, 각 언어에 최적화된 도구 체인을 자동으로 선택합니다.
|
|
1350
|
-
|
|
1351
|
-
### 지원 언어 & 도구 (17개 언어)
|
|
1352
|
-
|
|
1353
|
-
#### 백엔드 & 시스템 (8개)
|
|
1354
|
-
|
|
1355
|
-
| 언어 | 테스트 프레임워크 | 린터/포매터 | 빌드 도구 | 타입 시스템 |
|
|
1356
|
-
| -------------- | ----------------- | --------------- | -------------- | ----------- |
|
|
1357
|
-
| **Python** | pytest | ruff, black | uv, pip | mypy |
|
|
1358
|
-
| **TypeScript** | Vitest, Jest | Biome, ESLint | npm, pnpm, bun | Built-in |
|
|
1359
|
-
| **Java** | JUnit | Checkstyle | Maven, Gradle | Built-in |
|
|
1360
|
-
| **Go** | go test | gofmt, golint | go build | Built-in |
|
|
1361
|
-
| **Rust** | cargo test | rustfmt, clippy | cargo | Built-in |
|
|
1362
|
-
| **Kotlin** | JUnit | ktlint | Gradle | Built-in |
|
|
1363
|
-
| **PHP** | PHPUnit | PHP CS Fixer | Composer | PHPStan |
|
|
1364
|
-
| **Ruby** | RSpec | RuboCop | Bundler | Sorbet |
|
|
1365
|
-
|
|
1366
|
-
#### 모바일 & 프론트엔드 (3개)
|
|
1367
|
-
|
|
1368
|
-
| 언어/프레임워크 | 테스트 프레임워크 | 린터/포매터 | 빌드 도구 | 플랫폼 |
|
|
1369
|
-
| ------------------ | ----------------- | ---------------- | ------------- | ----------------- |
|
|
1370
|
-
| **Dart (Flutter)** | flutter test | dart analyze | flutter | iOS, Android, Web |
|
|
1371
|
-
| **Swift** | XCTest | SwiftLint | xcodebuild | iOS, macOS |
|
|
1372
|
-
| **JavaScript** | Jest, Vitest | ESLint, Prettier | webpack, Vite | Web, Node.js |
|
|
1373
|
-
|
|
1374
|
-
#### 시스템 & 스크립트 (6개)
|
|
1375
|
-
|
|
1376
|
-
| 언어 | 테스트 프레임워크 | 린터/포매터 | 빌드 도구 | 특징 |
|
|
1377
|
-
| ----------- | ----------------- | --------------- | --------------- | ----------------- |
|
|
1378
|
-
| **C++** | Google Test | clang-format | CMake | 고성능 시스템 |
|
|
1379
|
-
| **C** | CUnit | clang-format | Make, CMake | 임베디드, 시스템 |
|
|
1380
|
-
| **C#** | NUnit, xUnit | StyleCop | MSBuild, dotnet | .NET 생태계 |
|
|
1381
|
-
| **Haskell** | HUnit | stylish-haskell | Cabal, Stack | 함수형 프로그래밍 |
|
|
1382
|
-
| **Shell** | Bats | shellcheck | - | 자동화 스크립트 |
|
|
1383
|
-
| **Lua** | busted | luacheck | - | 임베디드 스크립팅 |
|
|
1384
|
-
|
|
1385
|
-
### 자동 언어 감지
|
|
1386
|
-
|
|
1387
|
-
Alfred는 프로젝트 루트의 설정 파일을 자동으로 감지하여 언어와 도구 체인을 선택합니다:
|
|
1388
|
-
|
|
1389
|
-
| 감지 파일 | 언어 | 추가 감지 |
|
|
1390
|
-
| ------------------------------------ | ------------ | ------------------------------------- |
|
|
1391
|
-
| `pyproject.toml`, `requirements.txt` | Python | `setup.py`, `poetry.lock` |
|
|
1392
|
-
| `package.json` + `tsconfig.json` | TypeScript | `yarn.lock`, `pnpm-lock.yaml` |
|
|
1393
|
-
| `package.json` (tsconfig 없음) | JavaScript | `webpack.config.js`, `vite.config.js` |
|
|
1394
|
-
| `pom.xml`, `build.gradle` | Java | `settings.gradle`, `build.gradle.kts` |
|
|
1395
|
-
| `go.mod` | Go | `go.sum` |
|
|
1396
|
-
| `Cargo.toml` | Rust | `Cargo.lock` |
|
|
1397
|
-
| `pubspec.yaml` | Dart/Flutter | `flutter/packages/` |
|
|
1398
|
-
| `Package.swift` | Swift | `Podfile`, `Cartfile` |
|
|
1399
|
-
| `build.gradle.kts` + `kotlin` | Kotlin | `settings.gradle.kts` |
|
|
1400
|
-
| `composer.json` | PHP | `composer.lock` |
|
|
1401
|
-
| `Gemfile` | Ruby | `Gemfile.lock` |
|
|
1402
|
-
| `CMakeLists.txt` | C++ | `conanfile.txt` |
|
|
1403
|
-
| `Makefile` | C | `*.c`, `*.h` |
|
|
1404
|
-
| `*.csproj` | C# | `*.sln` |
|
|
1405
|
-
| `*.cabal` | Haskell | `stack.yaml` |
|
|
1406
|
-
| `*.sh` | Shell | `.bashrc`, `.zshrc` |
|
|
1407
|
-
| `*.lua` | Lua | `luarocks` |
|
|
1408
|
-
|
|
1409
|
-
### 언어별 TRUST 5원칙 적용
|
|
1410
|
-
|
|
1411
|
-
모든 언어는 동일한 TRUST 5원칙을 따르며, 언어별 최적 도구를 자동 사용합니다:
|
|
1412
|
-
|
|
1413
|
-
#### 주요 언어 TRUST 도구
|
|
1414
|
-
|
|
1415
|
-
| 원칙 | Python | TypeScript | Java | Go | Rust | Ruby |
|
|
1416
|
-
| -------------- | ----------- | ---------------------- | ---------- | -------- | ----------- | -------- |
|
|
1417
|
-
| **T**est First | pytest | Vitest/Jest | JUnit | go test | cargo test | RSpec |
|
|
1418
|
-
| **R**eadable | ruff, black | Biome, ESLint | Checkstyle | gofmt | rustfmt | RuboCop |
|
|
1419
|
-
| **U**nified | mypy | Built-in | Built-in | Built-in | Built-in | Sorbet |
|
|
1420
|
-
| **S**ecured | bandit | eslint-plugin-security | SpotBugs | gosec | cargo-audit | Brakeman |
|
|
1421
|
-
| **T**rackable | @TAG | @TAG | @TAG | @TAG | @TAG | @TAG |
|
|
1422
|
-
|
|
1423
|
-
#### 추가 언어 TRUST 도구
|
|
1424
|
-
|
|
1425
|
-
| 원칙 | PHP | C++ | C# |
|
|
1426
|
-
| -------------- | ------------ | ------------ | ------------------ |
|
|
1427
|
-
| **T**est First | PHPUnit | Google Test | NUnit |
|
|
1428
|
-
| **R**eadable | PHP CS Fixer | clang-format | StyleCop |
|
|
1429
|
-
| **U**nified | PHPStan | Built-in | Built-in |
|
|
1430
|
-
| **S**ecured | RIPS | cppcheck | Security Code Scan |
|
|
1431
|
-
| **T**rackable | @TAG | @TAG | @TAG |
|
|
1432
|
-
|
|
1433
|
-
**공통 원칙**:
|
|
1434
|
-
|
|
1435
|
-
- 모든 언어는 `@TAG 시스템`으로 SPEC→TEST→CODE→DOC 추적성 보장
|
|
1436
|
-
- 언어별 표준 도구 체인을 자동 감지 및 적용
|
|
1437
|
-
- TRUST 5원칙은 모든 프로젝트에 일관되게 적용
|
|
1438
|
-
|
|
1439
|
-
### 다중 언어 프로젝트 지원
|
|
1440
|
-
|
|
1441
|
-
**Monorepo 및 혼합 언어 프로젝트**도 완벽 지원:
|
|
1442
|
-
|
|
1443
|
-
```text
|
|
1444
|
-
my-project/
|
|
1445
|
-
├── backend/ # Python (FastAPI)
|
|
1446
|
-
│ ├── pyproject.toml
|
|
1447
|
-
│ └── src/
|
|
1448
|
-
├── frontend/ # TypeScript (React)
|
|
1449
|
-
│ ├── package.json
|
|
1450
|
-
│ └── src/
|
|
1451
|
-
└── mobile/ # Dart (Flutter)
|
|
1452
|
-
├── pubspec.yaml
|
|
1453
|
-
└── lib/
|
|
1454
|
-
```
|
|
1455
|
-
|
|
1456
|
-
Alfred는 각 디렉토리의 언어를 자동 감지하고 적절한 도구 체인을 사용합니다.
|
|
1457
|
-
|
|
1458
|
-
---
|
|
1459
|
-
|
|
1460
|
-
## ■ TRUST 5원칙
|
|
1461
|
-
|
|
1462
|
-
Alfred가 모든 코드에 자동으로 적용하는 품질 기준입니다.
|
|
1463
|
-
|
|
1464
|
-
### T - Test First (테스트 우선)
|
|
1465
|
-
|
|
1466
|
-
- SPEC 기반 테스트 케이스 작성
|
|
1467
|
-
- TDD RED → GREEN → REFACTOR 사이클
|
|
1468
|
-
- 테스트 커버리지 ≥ 85%
|
|
1469
|
-
|
|
1470
|
-
### R - Readable (가독성)
|
|
1471
|
-
|
|
1472
|
-
- 파일 ≤ 300 LOC
|
|
1473
|
-
- 함수 ≤ 50 LOC
|
|
1474
|
-
- 매개변수 ≤ 5개
|
|
1475
|
-
- 복잡도 ≤ 10
|
|
1476
|
-
|
|
1477
|
-
### U - Unified (통일성)
|
|
1478
|
-
|
|
1479
|
-
- 타입 안전성 또는 런타임 검증
|
|
1480
|
-
- 아키텍처 일관성
|
|
1481
|
-
- 코딩 스타일 통일
|
|
1482
|
-
|
|
1483
|
-
### S - Secured (보안)
|
|
1484
|
-
|
|
1485
|
-
- 입력 검증
|
|
1486
|
-
- 로깅 및 감사
|
|
1487
|
-
- 비밀 관리
|
|
1488
|
-
- 정적 분석
|
|
1489
|
-
|
|
1490
|
-
### T - Trackable (추적성)
|
|
1491
|
-
|
|
1492
|
-
- `@SPEC → @TEST → @CODE → @DOC` TAG 체인
|
|
1493
|
-
- CODE-FIRST 원칙 (코드 직접 스캔)
|
|
1494
|
-
- HISTORY 섹션 기록
|
|
1495
|
-
|
|
1496
|
-
### 자동 검증
|
|
1497
|
-
|
|
1498
|
-
```text
|
|
1499
|
-
# TDD 구현 완료 후 자동 실행
|
|
1500
|
-
/alfred:2-build AUTH-001
|
|
1501
|
-
|
|
1502
|
-
# 또는 수동 실행
|
|
1503
|
-
/alfred:3-sync
|
|
1504
|
-
|
|
1505
|
-
# trust-checker 에이전트가 자동으로 검증:
|
|
1506
|
-
# ✅ Test Coverage: 87% (목표: 85%)
|
|
1507
|
-
# ✅ Code Constraints: 모든 파일 300 LOC 이하
|
|
1508
|
-
# ✅ TAG Chain: 무결성 확인 완료
|
|
1509
|
-
```
|
|
1510
|
-
|
|
1511
|
-
---
|
|
1512
|
-
|
|
1513
|
-
## ■ 업그레이드 가이드
|
|
1514
|
-
|
|
1515
|
-
### 1단계: 패키지 업데이트
|
|
1516
|
-
|
|
1517
|
-
```bash
|
|
1518
|
-
moai-adk update
|
|
1519
|
-
|
|
1520
|
-
# 또는 (tool 모드 - 권장)
|
|
1521
|
-
uv tool upgrade moai-adk
|
|
1522
|
-
|
|
1523
|
-
# 또는 (pip 모드 - 레거시)
|
|
1524
|
-
uv pip install --upgrade moai-adk
|
|
1525
|
-
```
|
|
1526
|
-
|
|
1527
|
-
### 2단계: 프로젝트 업데이트
|
|
1528
|
-
|
|
1529
|
-
```bash
|
|
1530
|
-
cd your-project
|
|
1531
|
-
moai-adk init .
|
|
1532
|
-
```
|
|
1533
|
-
|
|
1534
|
-
**자동 백업**: 업데이트 전 `.moai-backups/{timestamp}/`에 자동 백업 생성
|
|
1535
|
-
|
|
1536
|
-
### 3단계: Claude Code 최적화
|
|
1537
|
-
|
|
1538
|
-
```text
|
|
1539
|
-
$ claude
|
|
1540
|
-
> /alfred:0-project
|
|
1541
|
-
```
|
|
1542
|
-
|
|
1543
|
-
병합 프롬프트에서 **Merge** 선택 → 기존 문서 유지 + 새 템플릿 추가
|
|
1544
|
-
|
|
1545
|
-
### 검증 체크리스트
|
|
1546
|
-
|
|
1547
|
-
```bash
|
|
1548
|
-
# 상태 확인
|
|
1549
|
-
moai-adk status
|
|
1550
|
-
|
|
1551
|
-
## 출력 예시:
|
|
1552
|
-
╭────── Project Status ──────╮
|
|
1553
|
-
│ Mode team │
|
|
1554
|
-
│ Locale ko │
|
|
1555
|
-
│ SPECs 23 │
|
|
1556
|
-
│ Branch develop │
|
|
1557
|
-
│ Git Status Clean │
|
|
1558
|
-
╰────────────────────────────╯
|
|
1559
|
-
```
|
|
1560
|
-
|
|
1561
|
-
```bash
|
|
1562
|
-
# 시스템 진단
|
|
1563
|
-
moai-adk doctor
|
|
1564
|
-
|
|
1565
|
-
## 출력 예시:
|
|
1566
|
-
Running system diagnostics...
|
|
1567
|
-
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
|
1568
|
-
┃ Check ┃ Status ┃
|
|
1569
|
-
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
|
|
1570
|
-
│ Python >= 3.13 │ ✓ │
|
|
1571
|
-
│ Git installed │ ✓ │
|
|
1572
|
-
│ Project structure (.moai/) │ ✓ │
|
|
1573
|
-
│ Config file (.moai/config.json) │ ✓ │
|
|
1574
|
-
└──────────────────────────────────────────┴────────┘
|
|
1575
|
-
```
|
|
1576
|
-
|
|
1577
|
-
---
|
|
1578
|
-
|
|
1579
|
-
## ■ FAQ
|
|
1580
|
-
|
|
1581
|
-
### Q1: MoAI-ADK는 어떤 프로젝트에 적합한가요?
|
|
1582
|
-
|
|
1583
|
-
**A**: 다음과 같은 프로젝트에 적합합니다:
|
|
1584
|
-
|
|
1585
|
-
- ✅ 새로운 프로젝트 (그린필드)
|
|
1586
|
-
- ✅ 기존 프로젝트 (레거시 도입)
|
|
1587
|
-
- ✅ 개인 프로젝트 (Personal 모드)
|
|
1588
|
-
- ✅ 팀 프로젝트 (Team 모드, GitFlow 지원)
|
|
1589
|
-
- ✅ 모든 주요 프로그래밍 언어
|
|
1590
|
-
|
|
1591
|
-
### Q2: Claude Code가 필수인가요?
|
|
1592
|
-
|
|
1593
|
-
**A**: 네, MoAI-ADK는 Claude Code 환경에서 동작하도록 설계되었습니다. Claude Code는 Anthropic의 공식 CLI 도구로, AI 에이전트 시스템을 완벽하게 지원합니다.
|
|
1594
|
-
|
|
1595
|
-
### Q3: 기존 프로젝트에 도입할 수 있나요?
|
|
1596
|
-
|
|
1597
|
-
**A**: 네, `moai-adk init .` 명령으로 기존 프로젝트에 안전하게 설치할 수 있습니다. Alfred는 기존 코드 구조를 분석하여 `.moai/` 폴더에 문서와 설정만 추가합니다.
|
|
1598
|
-
|
|
1599
|
-
### Q4: Personal 모드와 Team 모드의 차이는?
|
|
1600
|
-
|
|
1601
|
-
**A**:
|
|
1602
|
-
|
|
1603
|
-
- **Personal 모드**: 로컬 작업 중심, 체크포인트만 생성
|
|
1604
|
-
- **Team 모드**: GitFlow 지원, Draft PR 자동 생성, develop 브랜치 기반
|
|
1605
|
-
|
|
1606
|
-
### Q5: SPEC 메타데이터는 어떻게 관리하나요?
|
|
1607
|
-
|
|
1608
|
-
**A**: `.moai/memory/spec-metadata.md`에 전체 가이드가 있습니다.
|
|
1609
|
-
|
|
1610
|
-
- **필수 7개**: id, version, status, created, updated, author, priority
|
|
1611
|
-
- **선택 9개**: category, labels, depends_on, blocks, related_specs, related_issue, scope
|
|
1612
|
-
- **HISTORY 섹션**: 모든 변경 이력 기록 (필수)
|
|
1613
|
-
|
|
1614
|
-
### Q6: TDD 단계별로 커밋하나요?
|
|
1615
|
-
|
|
1616
|
-
**A**: 아니요, v0.3.0부터 **TDD 전체 사이클(RED→GREEN→REFACTOR) 완료 후 1회만 커밋**합니다. 이전처럼 각 단계별로 3번 커밋하지 않습니다.
|
|
1617
|
-
|
|
1618
|
-
### Q7: Context Engineering이란?
|
|
1619
|
-
|
|
1620
|
-
**A**:
|
|
1621
|
-
|
|
1622
|
-
- **JIT Retrieval**: 필요한 순간에만 문서 로드 (초기 컨텍스트 최소화)
|
|
1623
|
-
- **Explore 에이전트**: 대규모 코드베이스 효율적 탐색
|
|
1624
|
-
|
|
1625
|
-
### Q8: 자동 백업은 어떻게 작동하나요?
|
|
1626
|
-
|
|
1627
|
-
**A**:
|
|
1628
|
-
|
|
1629
|
-
- **Template Processor**: 업데이트 전 `.moai-backups/alfred-{timestamp}/` 자동 백업
|
|
1630
|
-
- **Event-Driven Checkpoint**: 위험한 작업 전 자동 checkpoint 생성
|
|
1631
|
-
- **보존 정책**: 최대 10개 유지, 7일 후 자동 정리
|
|
1632
|
-
|
|
1633
|
-
### Q9: /model 명령어를 사용해야 하나요?
|
|
1634
|
-
|
|
1635
|
-
**A**: **선택사항**입니다. Alfred는 이미 각 에이전트에 최적 모델을 할당했으므로:
|
|
1636
|
-
|
|
1637
|
-
- ✅ **기본 설정 유지** (권장): Alfred가 자동으로 작업별 최적 모델 사용
|
|
1638
|
-
- ⚡ **패스트 모드**: `/model haiku` - 반복 작업 시 전체 세션을 Haiku로
|
|
1639
|
-
- 🧠 **스마트 모드**: `/model sonnet` - 복잡한 판단이 계속 필요할 때
|
|
1640
|
-
|
|
1641
|
-
**Pro Tip**: 기본 설정으로도 Haiku/Sonnet이 혼합 사용되므로 성능과 비용이 이미 최적화되어 있습니다.
|
|
1642
|
-
|
|
1643
|
-
### Q10: Haiku와 Sonnet의 비용 차이는?
|
|
1644
|
-
|
|
1645
|
-
**A**:
|
|
1646
|
-
|
|
1647
|
-
- **Haiku**: $1 / 1M 입력 토큰, $5 / 1M 출력 토큰
|
|
1648
|
-
- **Sonnet**: $3 / 1M 입력 토큰, $15 / 1M 출력 토큰
|
|
1649
|
-
- **절감 효과**: Haiku 에이전트 사용 시 **비용 67% 절감**
|
|
1650
|
-
|
|
1651
|
-
**예시 (100만 토큰 기준)**:
|
|
1652
|
-
|
|
1653
|
-
- 100% Sonnet: $18 (입력 + 출력)
|
|
1654
|
-
- MoAI-ADK (혼합): $6~$9 (작업 특성에 따라)
|
|
1655
|
-
- **절감액**: $9~$12 (50~67%)
|
|
1656
|
-
|
|
1657
|
-
---
|
|
1658
|
-
|
|
1659
|
-
## ■ 문제 해결
|
|
1660
|
-
|
|
1661
|
-
### 설치 문제
|
|
1662
|
-
|
|
1663
|
-
```bash
|
|
1664
|
-
# Python 버전 확인 (3.13+ 필요)
|
|
1665
|
-
python --version
|
|
1666
|
-
|
|
1667
|
-
# uv 설치 확인
|
|
1668
|
-
uv --version
|
|
1669
|
-
|
|
1670
|
-
# uv가 없다면 먼저 설치 (필수)
|
|
1671
|
-
# macOS/Linux:
|
|
1672
|
-
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
1673
|
-
|
|
1674
|
-
# Windows:
|
|
1675
|
-
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
1676
|
-
|
|
1677
|
-
# moai-adk 재설치 (tool 모드 - 권장)
|
|
1678
|
-
uv tool uninstall moai-adk
|
|
1679
|
-
uv tool install moai-adk
|
|
1680
|
-
|
|
1681
|
-
# 또는 (pip 모드 - 레거시)
|
|
1682
|
-
uv pip install moai-adk --force-reinstall
|
|
1683
|
-
```
|
|
1684
|
-
|
|
1685
|
-
### 초기화 문제
|
|
1686
|
-
|
|
1687
|
-
```bash
|
|
1688
|
-
# 프로젝트 상태 확인
|
|
1689
|
-
moai-adk status
|
|
1690
|
-
```
|
|
1691
|
-
|
|
1692
|
-
**출력 예시**:
|
|
1693
|
-
|
|
1694
|
-
```text
|
|
1695
|
-
╭────── Project Status ──────╮
|
|
1696
|
-
│ Mode team │
|
|
1697
|
-
│ Locale ko │
|
|
1698
|
-
│ SPECs 23 │
|
|
1699
|
-
│ Branch develop │
|
|
1700
|
-
│ Git Status Clean │
|
|
1701
|
-
╰────────────────────────────╯
|
|
1702
|
-
```
|
|
1703
|
-
|
|
1704
|
-
```bash
|
|
1705
|
-
# 시스템 진단
|
|
1706
|
-
moai-adk doctor
|
|
1707
|
-
```
|
|
1708
|
-
|
|
1709
|
-
**출력 예시**:
|
|
1710
|
-
|
|
1711
|
-
```text
|
|
1712
|
-
Running system diagnostics...
|
|
1713
|
-
|
|
1714
|
-
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
|
1715
|
-
┃ Check ┃ Status ┃
|
|
1716
|
-
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
|
|
1717
|
-
│ Python >= 3.13 │ ✓ │
|
|
1718
|
-
│ Git installed │ ✓ │
|
|
1719
|
-
│ Project structure (.moai/) │ ✓ │
|
|
1720
|
-
│ Config file (.moai/config.json) │ ✓ │
|
|
1721
|
-
└──────────────────────────────────────────┴────────┘
|
|
1722
|
-
```
|
|
1723
|
-
|
|
1724
|
-
```bash
|
|
1725
|
-
# 강제 재초기화 (문제가 있을 경우)
|
|
1726
|
-
moai-adk init . --force
|
|
1727
|
-
```
|
|
1728
|
-
|
|
1729
|
-
### Claude Code 문제
|
|
1730
|
-
|
|
1731
|
-
```text
|
|
1732
|
-
# 설정 확인
|
|
1733
|
-
ls -la .claude/
|
|
1734
|
-
|
|
1735
|
-
# Alfred 커맨드 확인
|
|
1736
|
-
ls -la .claude/commands/alfred/
|
|
1737
|
-
|
|
1738
|
-
# 출력 스타일 확인
|
|
1739
|
-
/output-style agentic-coding
|
|
1740
|
-
```
|
|
1741
|
-
|
|
1742
|
-
### 일반적인 에러
|
|
1743
|
-
|
|
1744
|
-
#### 에러: "moai-adk: command not found"
|
|
1745
|
-
|
|
1746
|
-
```bash
|
|
1747
|
-
# PATH 확인 및 전체 경로 사용
|
|
1748
|
-
~/.local/bin/moai-adk --version
|
|
1749
|
-
|
|
1750
|
-
# 또는 pip로 재설치
|
|
1751
|
-
pip install --force-reinstall moai-adk
|
|
1752
|
-
```
|
|
1753
|
-
|
|
1754
|
-
#### 에러: ".moai/ 디렉토리를 찾을 수 없습니다"
|
|
1755
|
-
|
|
1756
|
-
```bash
|
|
1757
|
-
# 초기화 실행
|
|
1758
|
-
moai-adk init .
|
|
1759
|
-
|
|
1760
|
-
# 또는 Claude Code에서
|
|
1761
|
-
/alfred:0-project
|
|
1762
|
-
```
|
|
1763
|
-
|
|
1764
|
-
#### 에러: "SPEC ID 중복"
|
|
1765
|
-
|
|
1766
|
-
```bash
|
|
1767
|
-
# 기존 SPEC 확인
|
|
1768
|
-
rg "@SPEC:" -n .moai/specs/
|
|
1769
|
-
|
|
1770
|
-
# 새로운 ID 사용
|
|
1771
|
-
/alfred:1-spec "새 기능 설명"
|
|
1772
|
-
```
|
|
1773
|
-
|
|
1774
|
-
---
|
|
1775
|
-
|
|
1776
|
-
## ■ 문서 및 지원
|
|
1777
|
-
|
|
1778
|
-
### 공식 문서
|
|
1779
|
-
|
|
1780
|
-
- **GitHub Repository**: https://github.com/modu-ai/moai-adk
|
|
1781
|
-
- **PyPI Package**: https://pypi.org/project/moai-adk/
|
|
1782
|
-
- **Issue Tracker**: https://github.com/modu-ai/moai-adk/issues
|
|
1783
|
-
- **Discussions**: https://github.com/modu-ai/moai-adk/discussions
|
|
1784
|
-
|
|
1785
|
-
### 커뮤니티
|
|
1786
|
-
|
|
1787
|
-
- **GitHub Discussions**: 질문, 아이디어, 피드백 공유
|
|
1788
|
-
- **Issue Tracker**: 버그 리포트, 기능 요청
|
|
1789
|
-
|
|
1790
|
-
### 기여하기
|
|
1791
|
-
|
|
1792
|
-
MoAI-ADK는 오픈소스 프로젝트입니다. 여러분의 기여를 환영합니다!
|
|
1793
|
-
|
|
1794
|
-
1. Fork the repository
|
|
1795
|
-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
1796
|
-
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
1797
|
-
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
1798
|
-
5. Open a Pull Request
|
|
1799
|
-
|
|
1800
|
-
### 라이선스
|
|
1801
|
-
|
|
1802
|
-
MIT License - 자유롭게 사용하실 수 있습니다.
|
|
1803
|
-
|
|
1804
|
-
---
|
|
1805
|
-
|
|
1806
|
-
## ■ 감사의 말
|
|
1807
|
-
|
|
1808
|
-
MoAI-ADK는 다음 프로젝트와 커뮤니티의 도움으로 만들어졌습니다:
|
|
1809
|
-
|
|
1810
|
-
- **모두의AI Community**: 지속적인 피드백과 개선 아이디어
|
|
1811
|
-
|
|
1812
|
-
---
|
|
1813
|
-
|
|
1814
|
-
**Made with ❤️ by MoAI Team**
|
|
1815
|
-
|
|
1816
|
-
**🎩 Alfred**: "여러분의 개발 여정을 함께하겠습니다!"
|