maskweaver 0.7.12 → 0.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/assets/agents/squad-operator.md +31 -30
- package/assets/commands/weave-craft.md +307 -226
- package/assets/commands/weave-design.md +164 -135
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -139,7 +139,7 @@ profile:
|
|
|
139
139
|
|
|
140
140
|
**Phase 기반 개발** — "AI가 검증하고, 유저가 확인한다"
|
|
141
141
|
|
|
142
|
-
Weave는
|
|
142
|
+
Weave는 Maskweaver의 핵심 워크플로우입니다. 작업을 테스트 가능한 Phase로 나누고, 전문가 마스크를 자동 선택하며, 유저에게 전달하기 전에 자체 검증 루프를 실행합니다.
|
|
143
143
|
|
|
144
144
|
#### 명령어
|
|
145
145
|
|
package/README.md
CHANGED
|
@@ -158,7 +158,7 @@ Smart subagents for cost-efficient multi-agent workflows:
|
|
|
158
158
|
|
|
159
159
|
**Phase-Driven Development** — "AI verifies, Human validates"
|
|
160
160
|
|
|
161
|
-
Weave is Maskweaver's flagship workflow
|
|
161
|
+
Weave is Maskweaver's flagship workflow. It breaks work into testable phases, auto-selects expert masks, and runs self-verification loops before handing off to you.
|
|
162
162
|
|
|
163
163
|
#### Commands
|
|
164
164
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Squad Operator - Squad 미션을 조율하고 워커에게 작업 할당"
|
|
3
|
-
model: google/gemini-2.5-flash
|
|
4
3
|
mode: subagent
|
|
5
4
|
temperature: 0.3
|
|
6
5
|
permission:
|
|
7
6
|
edit: allow
|
|
8
7
|
bash: allow
|
|
8
|
+
task:
|
|
9
|
+
"*": allow
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Squad Operator
|
|
@@ -150,35 +151,35 @@ permission:
|
|
|
150
151
|
2. 미션 분석 및 task 분해
|
|
151
152
|
3. 각 task를 워커에게 할당 (squad assign)
|
|
152
153
|
4. 워커 결과 수집 및 상태 업데이트
|
|
153
|
-
5. 모든 task 완료 시 가면술사에게 보고
|
|
154
|
-
|
|
155
|
-
## 병렬 실행 전략
|
|
156
|
-
|
|
157
|
-
### DAG 기반 작업 분해
|
|
158
|
-
작업을 할당할 때 **의존성(dependencies)**을 명시적으로 설정합니다:
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
squad({ action: "assign", squadId, description: "DB 스키마 설계", assignee: "worker-1" })
|
|
162
|
-
→ taskId: "task-001"
|
|
163
|
-
|
|
164
|
-
squad({ action: "assign", squadId, description: "API 라우트 구현", assignee: "worker-2",
|
|
165
|
-
dependencies: ["task-001"] }) // task-001 완료 후 실행
|
|
166
|
-
→ taskId: "task-002"
|
|
167
|
-
|
|
168
|
-
squad({ action: "assign", squadId, description: "프론트엔드 UI", assignee: "worker-3" })
|
|
169
|
-
→ taskId: "task-003" // 독립 작업, 병렬 실행 가능
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### 실행 계획 확인
|
|
173
|
-
```
|
|
174
|
-
squad({ action: "plan", squadId })
|
|
175
|
-
→ Wave 0: [task-001, task-003] (병렬)
|
|
176
|
-
→ Wave 1: [task-002] (task-001 의존)
|
|
177
|
-
→ 병렬도: 1.5x
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Git Worktree 격리
|
|
181
|
-
각 병렬 task는 독립된 git worktree에서 실행되어 파일 충돌을 방지합니다.
|
|
154
|
+
5. 모든 task 완료 시 가면술사에게 보고
|
|
155
|
+
|
|
156
|
+
## 병렬 실행 전략
|
|
157
|
+
|
|
158
|
+
### DAG 기반 작업 분해
|
|
159
|
+
작업을 할당할 때 **의존성(dependencies)**을 명시적으로 설정합니다:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
squad({ action: "assign", squadId, description: "DB 스키마 설계", assignee: "worker-1" })
|
|
163
|
+
→ taskId: "task-001"
|
|
164
|
+
|
|
165
|
+
squad({ action: "assign", squadId, description: "API 라우트 구현", assignee: "worker-2",
|
|
166
|
+
dependencies: ["task-001"] }) // task-001 완료 후 실행
|
|
167
|
+
→ taskId: "task-002"
|
|
168
|
+
|
|
169
|
+
squad({ action: "assign", squadId, description: "프론트엔드 UI", assignee: "worker-3" })
|
|
170
|
+
→ taskId: "task-003" // 독립 작업, 병렬 실행 가능
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 실행 계획 확인
|
|
174
|
+
```
|
|
175
|
+
squad({ action: "plan", squadId })
|
|
176
|
+
→ Wave 0: [task-001, task-003] (병렬)
|
|
177
|
+
→ Wave 1: [task-002] (task-001 의존)
|
|
178
|
+
→ 병렬도: 1.5x
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Git Worktree 격리
|
|
182
|
+
각 병렬 task는 독립된 git worktree에서 실행되어 파일 충돌을 방지합니다.
|
|
182
183
|
```
|
|
183
184
|
|
|
184
185
|
## 결과 보고
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: weave-craft
|
|
3
|
-
description: Phase 실행 (Build + Self-Verify Loop with Mask
|
|
3
|
+
description: Phase 실행 (Build + Self-Verify Loop with Mask-First Execution)
|
|
4
4
|
usage: /weave craft [phase-id]
|
|
5
5
|
examples:
|
|
6
6
|
- /weave craft P1
|
|
@@ -11,168 +11,308 @@ examples:
|
|
|
11
11
|
|
|
12
12
|
## 개요
|
|
13
13
|
|
|
14
|
-
특정 Phase를 실행합니다. AI가 자동으로 검증 루프를
|
|
14
|
+
특정 Phase를 실행합니다. **모든 작업을 마스크를 통해 실행**하고, AI가 자동으로 검증 루프를 돌린 뒤 유저에게 전달합니다.
|
|
15
15
|
|
|
16
16
|
**Maskweaver 통합**:
|
|
17
|
-
- 🎭 **Masks**: Task
|
|
17
|
+
- 🎭 **Masks**: 모든 Task를 전문가 마스크에 위임 (Mask-First)
|
|
18
18
|
- 🧠 **Global Knowledge**: 과거 트러블슈팅 경험 검색/기록
|
|
19
19
|
- ✅ **Verify**: 다층 AI 자동 검증 시스템
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## 🎭 Mask-First Execution Principle (핵심 원칙)
|
|
24
|
+
|
|
25
|
+
### 원칙: "가면술사는 코드를 직접 작성하지 않는다"
|
|
26
|
+
|
|
27
|
+
당신은 **가면술사(Mask Weaver)**입니다. 실행 단계에서 당신의 역할은 **전문가를 오케스트레이션**하는 것이지, 모든 것을 직접 하는 것이 아닙니다.
|
|
28
|
+
|
|
29
|
+
> ⚡ **왜 모든 Task에 마스크를 소환해야 하는가?**
|
|
30
|
+
>
|
|
31
|
+
> 1. **새로운 세션 = 깨끗한 컨텍스트**: 각 마스크 소환은 새로운 서브에이전트 세션을 생성합니다
|
|
32
|
+
> 2. **레이어 분리**: 구현 세부사항이 가면술사의 전략적 컨텍스트를 오염시키지 않습니다
|
|
33
|
+
> 3. **컨텍스트 유지**: 가면술사의 작업 기억은 줄어들지 않으므로 후반 Phase까지 일관성을 유지합니다
|
|
34
|
+
> 4. **전문성 극대화**: 각 전문가가 자신의 영역에 100% 집중합니다
|
|
35
|
+
> 5. **병렬 처리 가능**: 독립적인 Task는 Squad로 병렬 실행이 가능합니다
|
|
36
|
+
|
|
37
|
+
### 가면술사가 직접 하는 것 (극히 제한)
|
|
38
|
+
|
|
39
|
+
| 직접 처리 | 예시 |
|
|
40
|
+
|-----------|------|
|
|
41
|
+
| Task 분해 및 의존성 분석 | "어떤 순서로, 누구에게 맡길까" |
|
|
42
|
+
| 마스크 결과 통합 | 여러 전문가 결과를 하나로 합침 |
|
|
43
|
+
| 검증 결과 판단 | PASS/FAIL 판단 후 다음 행동 결정 |
|
|
44
|
+
| 유저 커뮤니케이션 | 진행 보고, 도움 요청 |
|
|
45
|
+
|
|
46
|
+
### 가면술사가 직접 하면 안 되는 것 (안티패턴)
|
|
47
|
+
|
|
48
|
+
| ❌ 안티패턴 | ✅ 올바른 방법 |
|
|
49
|
+
|------------|---------------|
|
|
50
|
+
| 직접 코드 작성 | 🎭 전문가 마스크 소환 |
|
|
51
|
+
| 직접 테스트 작성 | 🎭 Kent Beck 소환 |
|
|
52
|
+
| 직접 버그 수정 | 🎭 해당 도메인 전문가 소환 |
|
|
53
|
+
| 직접 리팩토링 | 🎭 Robert C. Martin 소환 |
|
|
54
|
+
| 직접 설정 파일 수정 | 🎭 Linus Torvalds 소환 |
|
|
55
|
+
|
|
56
|
+
> 💡 **"내가 빨리 할 수 있을 것 같은데..."는 가장 위험한 함정입니다.**
|
|
57
|
+
> 직접 처리할수록 컨텍스트가 소모되어 후반으로 갈수록 판단력이 떨어집니다.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
23
61
|
## 실행 흐름
|
|
24
62
|
|
|
25
63
|
```
|
|
26
|
-
1. UNDERSTAND (Phase 요구사항 확인)
|
|
64
|
+
1. UNDERSTAND (Phase 요구사항 확인) ← ✋ 가면술사
|
|
27
65
|
↓
|
|
28
|
-
2. DESIGN (Task 분해 +
|
|
66
|
+
2. DESIGN (Task 분해 + 마스크 배정) ← ✋ 가면술사 + 🎭 아키텍트
|
|
29
67
|
↓
|
|
30
68
|
3. BUILD + SELF-VERIFY LOOP
|
|
31
69
|
├─ 각 Task에 대해:
|
|
32
|
-
│ ├─
|
|
33
|
-
│ ├─ 테스트 먼저 (Red)
|
|
34
|
-
│ ├─ 최소 구현 (Green)
|
|
35
|
-
│
|
|
36
|
-
│
|
|
37
|
-
│
|
|
38
|
-
│
|
|
39
|
-
|
|
70
|
+
│ ├─ 🎭 전문가 마스크 소환 (필수!)
|
|
71
|
+
│ │ ├─ 테스트 먼저 (Red)
|
|
72
|
+
│ │ ├─ 최소 구현 (Green)
|
|
73
|
+
│ │ └─ 정리 (Refactor)
|
|
74
|
+
│ ├─ 🤖 AI 자동 검증 → PASS/FAIL
|
|
75
|
+
│ │ ├─ PASS → 다음 Task
|
|
76
|
+
│ │ └─ FAIL ─┐
|
|
77
|
+
│ │ ├─ 글로벌 지식 검색 🔍
|
|
78
|
+
│ │ ├─ 🎭 마스크 로테이션 (다른 전문가 소환)
|
|
79
|
+
│ │ └─ 재검증
|
|
80
|
+
│ └─ 5회 초과 → 유저에게 도움 요청
|
|
40
81
|
↓
|
|
41
|
-
4.
|
|
82
|
+
4. INTEGRATION (통합 검증) ← 🎭 통합 전문가 소환
|
|
83
|
+
↓
|
|
84
|
+
5. USER HANDOFF (유저 테스트) ← ✋ 가면술사
|
|
42
85
|
```
|
|
43
86
|
|
|
44
87
|
---
|
|
45
88
|
|
|
46
|
-
##
|
|
89
|
+
## 단계별 상세
|
|
90
|
+
|
|
91
|
+
### Step 1: UNDERSTAND → 가면술사 ✋ (유일한 직접 처리)
|
|
47
92
|
|
|
48
|
-
|
|
93
|
+
PLAN.yaml에서 Phase 정보를 읽고 현재 상태를 파악합니다.
|
|
49
94
|
|
|
50
|
-
|
|
95
|
+
```
|
|
96
|
+
가면술사가 직접 확인:
|
|
97
|
+
1. Phase 요구사항 읽기
|
|
98
|
+
2. 완료 조건 확인
|
|
99
|
+
3. 이전 Phase 결과물 확인
|
|
100
|
+
4. 배정된 마스크 목록 확인
|
|
101
|
+
```
|
|
51
102
|
|
|
52
103
|
---
|
|
53
104
|
|
|
54
|
-
###
|
|
105
|
+
### Step 2: DESIGN → 🎭 마스크 소환
|
|
55
106
|
|
|
56
|
-
|
|
107
|
+
Task 분해와 설계를 위해 **아키텍트 마스크를 소환**합니다.
|
|
57
108
|
|
|
58
109
|
```
|
|
59
|
-
|
|
60
|
-
- Simple file creation
|
|
61
|
-
- Minor styling adjustments
|
|
62
|
-
- Configuration changes
|
|
63
|
-
- Straightforward bug fixes
|
|
110
|
+
Task 분해 및 설계:
|
|
64
111
|
|
|
65
|
-
|
|
112
|
+
Task(dummy-human):
|
|
113
|
+
Mask: Martin Fowler (Task Decomposition)
|
|
114
|
+
Task: "Phase [P?]의 요구사항을 분석하고:
|
|
115
|
+
1. 독립적 Task로 분해 (각 Task는 30분~1시간 단위)
|
|
116
|
+
2. Task 간 의존성 그래프 작성
|
|
117
|
+
3. 각 Task에 최적 전문가 마스크 배정
|
|
118
|
+
4. 병렬 실행 가능한 Task 식별
|
|
119
|
+
5. 각 Task의 성공 기준(Done Condition) 정의
|
|
120
|
+
6. 위험 Task 식별 및 대응 방안"
|
|
121
|
+
|
|
122
|
+
→ 가면술사가 결과를 받아 실행 순서 결정
|
|
66
123
|
```
|
|
67
124
|
|
|
68
|
-
|
|
125
|
+
**Task 설계 결과 예시**:
|
|
126
|
+
```markdown
|
|
127
|
+
### Task 분해 결과
|
|
128
|
+
|
|
129
|
+
| # | Task | 마스크 | 의존성 | 병렬 가능 |
|
|
130
|
+
|---|------|--------|--------|----------|
|
|
131
|
+
| T1 | DB 스키마 설계 | 🎭 Martin Fowler | 없음 | ✅ |
|
|
132
|
+
| T2 | API 엔드포인트 구현 | 🎭 Robert C. Martin | T1 | ❌ |
|
|
133
|
+
| T3 | React 컴포넌트 구현 | 🎭 Dan Abramov | 없음 | ✅ |
|
|
134
|
+
| T4 | 테스트 스위트 작성 | 🎭 Kent Beck | T2, T3 | ❌ |
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Step 3: BUILD → 🎭 모든 Task에 마스크 소환 (핵심!)
|
|
69
140
|
|
|
70
|
-
|
|
141
|
+
**모든 Task는 반드시 전문가 마스크를 소환하여 실행합니다.**
|
|
142
|
+
|
|
143
|
+
#### 실행 전략 A: 순차 실행 (의존성 있는 Task)
|
|
71
144
|
|
|
72
145
|
```
|
|
73
|
-
|
|
146
|
+
Task T1 - DB 스키마 설계:
|
|
74
147
|
|
|
75
148
|
Task(dummy-human):
|
|
76
|
-
Mask:
|
|
77
|
-
Task: "
|
|
78
|
-
|
|
149
|
+
Mask: Martin Fowler (Data Modeling)
|
|
150
|
+
Task: "다음 요구사항에 맞는 DB 스키마를 설계하고 구현해줘:
|
|
151
|
+
[요구사항]
|
|
152
|
+
|
|
153
|
+
수행할 작업:
|
|
154
|
+
1. 테이블/컬렉션 설계
|
|
155
|
+
2. 관계 및 인덱스 정의
|
|
156
|
+
3. 마이그레이션 파일 작성
|
|
157
|
+
4. 스키마 테스트 작성"
|
|
158
|
+
|
|
159
|
+
→ 검증 → PASS → 다음 Task
|
|
160
|
+
```
|
|
79
161
|
|
|
80
|
-
|
|
162
|
+
```
|
|
163
|
+
Task T2 - API 구현:
|
|
81
164
|
|
|
82
165
|
Task(dummy-human):
|
|
83
|
-
Mask:
|
|
84
|
-
Task: "
|
|
85
|
-
|
|
166
|
+
Mask: Robert C. Martin (Clean Architecture)
|
|
167
|
+
Task: "T1의 DB 스키마를 기반으로 API를 구현해줘:
|
|
168
|
+
[스키마 요약]
|
|
169
|
+
|
|
170
|
+
수행할 작업:
|
|
171
|
+
1. 엔드포인트 설계 (RESTful)
|
|
172
|
+
2. 컨트롤러/서비스/레포지토리 레이어 구현
|
|
173
|
+
3. 입력 검증 미들웨어
|
|
174
|
+
4. 에러 핸들링
|
|
175
|
+
5. 단위 테스트 작성"
|
|
176
|
+
|
|
177
|
+
→ 검증 → PASS → 다음 Task
|
|
178
|
+
```
|
|
86
179
|
|
|
87
|
-
|
|
180
|
+
#### 실행 전략 B: 병렬 실행 (독립 Task) → Squad 활용
|
|
88
181
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
182
|
+
```
|
|
183
|
+
병렬 실행 가능한 Task 발견:
|
|
184
|
+
|
|
185
|
+
가면술사:
|
|
186
|
+
1. squad start → "Phase P1 병렬 실행"
|
|
187
|
+
2. squad squad (frontend) → "Dan Abramov: React 컴포넌트 구현"
|
|
188
|
+
3. squad squad (backend) → "Martin Fowler: API 레이어 구현"
|
|
189
|
+
4. squad squad (testing) → "Kent Beck: 테스트 스위트 작성"
|
|
93
190
|
|
|
94
|
-
→
|
|
191
|
+
→ 각 Squad에 오퍼레이터 위임
|
|
192
|
+
→ 결과 수집 → 통합 검증
|
|
95
193
|
```
|
|
96
194
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
195
|
+
#### Task별 전문가 마스크 매칭 가이드
|
|
196
|
+
|
|
197
|
+
| Task 유형 | 필수 마스크 | 왜 이 전문가인가 |
|
|
198
|
+
|----------|-----------|----------------|
|
|
199
|
+
| DB 스키마 / 데이터 모델 | 🎭 **Martin Fowler** | 데이터 모델링, 정규화, 관계 설계 |
|
|
200
|
+
| API 설계 / 서비스 레이어 | 🎭 **Robert C. Martin** | 클린 아키텍처, SOLID, 레이어 분리 |
|
|
201
|
+
| React 컴포넌트 / 상태관리 | 🎭 **Dan Abramov** | React 패턴, hooks, 성능 최적화 |
|
|
202
|
+
| 비즈니스 로직 / 알고리즘 | 🎭 **Kent Beck** | TDD로 정확성 보장, 단순성 |
|
|
203
|
+
| 성능 최적화 / 시스템 | 🎭 **Linus Torvalds** | 시스템 레벨 효율성, 메모리 최적화 |
|
|
204
|
+
| ML/AI 관련 기능 | 🎭 **Andrew Ng** | ML 파이프라인, 모델 아키텍처 |
|
|
205
|
+
| 인프라 / DevOps | 🎭 **Linus Torvalds** | 실용적 툴링, 성능 중심 |
|
|
206
|
+
| 설정 / 환경 구성 | 🎭 **Linus Torvalds** | 실용적, 최소주의 설정 |
|
|
207
|
+
| CSS / 스타일링 | 🎭 **Dan Abramov** | 프론트엔드 전문성 |
|
|
208
|
+
| 문서화 | 🎭 **Martin Fowler** | 명확한 커뮤니케이션, 패턴 문서화 |
|
|
209
|
+
| 리팩토링 | 🎭 **Robert C. Martin** | 코드 클린업, 원칙 기반 리팩토링 |
|
|
210
|
+
|
|
211
|
+
> 💡 **위 목록에 없는 유형?** → 가상 전문가를 즉석에서 **창조**하라.
|
|
212
|
+
> 예: "보안 전문가 + UX 경험이 있는 시니어 아키텍트"
|
|
101
213
|
|
|
102
214
|
---
|
|
103
215
|
|
|
104
|
-
|
|
216
|
+
### Step 3.5: BUILD 중 검증 실패 → 🎭 마스크 로테이션
|
|
105
217
|
|
|
106
|
-
|
|
218
|
+
검증 실패 시에도 **다른 관점의 전문가를 소환**합니다.
|
|
107
219
|
|
|
108
220
|
```
|
|
109
|
-
|
|
221
|
+
검증 실패 시 마스크 로테이션:
|
|
222
|
+
|
|
223
|
+
1차 실패:
|
|
224
|
+
→ 글로벌 지식 검색 🔍
|
|
225
|
+
→ 원래 마스크에게 재시도 지시
|
|
226
|
+
|
|
227
|
+
2차 실패:
|
|
228
|
+
→ 🎭 다른 관점의 마스크 소환
|
|
229
|
+
Task(dummy-human):
|
|
230
|
+
Mask: [다른 전문가]
|
|
231
|
+
Task: "이전 전문가가 해결하지 못한 문제를 다른 관점에서 분석해줘:
|
|
232
|
+
[에러 상세]
|
|
233
|
+
[이전 시도 요약]"
|
|
234
|
+
|
|
235
|
+
3차 이상 실패:
|
|
236
|
+
→ 🎭 디버깅 전문가 소환
|
|
237
|
+
Task(dummy-human):
|
|
238
|
+
Mask: Linus Torvalds (Pragmatic Debugging)
|
|
239
|
+
Task: "이 문제의 근본 원인을 찾아줘.
|
|
240
|
+
지금까지 시도한 것: [...]
|
|
241
|
+
복잡한 해법 말고 가장 단순한 수정안을 제시해."
|
|
242
|
+
```
|
|
110
243
|
|
|
111
|
-
|
|
112
|
-
1. squad start → "Phase P1 Parallel Execution"
|
|
113
|
-
2. squad squad (ui-squad) → "Dan Abramov: Build the React components"
|
|
114
|
-
3. squad squad (api-squad) → "Martin Fowler: Implement the API layer"
|
|
115
|
-
4. squad squad (test-squad) → "Kent Beck: Write comprehensive test suite"
|
|
244
|
+
**마스크 로테이션 매트릭스**:
|
|
116
245
|
|
|
117
|
-
|
|
118
|
-
|
|
246
|
+
| 원래 마스크 | 1차 로테이션 | 2차 로테이션 |
|
|
247
|
+
|----------|-----------|-----------|
|
|
248
|
+
| Kent Beck (TDD) | Martin Fowler (구조적 관점) | Linus Torvalds (실용적 관점) |
|
|
249
|
+
| Dan Abramov (React) | Kent Beck (테스트 관점) | Robert C. Martin (설계 관점) |
|
|
250
|
+
| Martin Fowler (설계) | Linus Torvalds (성능 관점) | Kent Beck (단순성 관점) |
|
|
251
|
+
| Linus Torvalds (성능) | Martin Fowler (구조적 관점) | Jeff Dean (대규모 시스템 관점) |
|
|
252
|
+
| Robert C. Martin (클린) | Kent Beck (실용적 TDD) | Linus Torvalds (실용적 관점) |
|
|
119
253
|
|
|
120
|
-
|
|
121
|
-
- Parallel execution (faster than sequential)
|
|
122
|
-
- Each expert focuses 100% on their domain
|
|
123
|
-
- Clean integration point at the end
|
|
254
|
+
> 💡 **다른 전문가가 보면 다른 문제가 보인다.** 로테이션은 터널 비전을 깨뜨린다.
|
|
124
255
|
|
|
125
256
|
---
|
|
126
257
|
|
|
127
|
-
###
|
|
258
|
+
### Step 4: INTEGRATION → 🎭 통합 전문가 소환
|
|
128
259
|
|
|
129
|
-
|
|
260
|
+
모든 Task가 완료된 후, **통합 검증 전문가를 소환**합니다.
|
|
130
261
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
262
|
+
```
|
|
263
|
+
통합 검증:
|
|
264
|
+
|
|
265
|
+
Task(dummy-human):
|
|
266
|
+
Mask: Martin Fowler (Integration Review)
|
|
267
|
+
Task: "Phase [P?]의 모든 구현물을 통합 관점에서 검토해줘:
|
|
268
|
+
1. 컴포넌트 간 인터페이스 일관성
|
|
269
|
+
2. 코드 스타일 통일성
|
|
270
|
+
3. 불필요한 중복 코드 식별
|
|
271
|
+
4. 전체 빌드 및 테스트 실행
|
|
272
|
+
5. 통합 테스트 추가 필요성 판단"
|
|
273
|
+
```
|
|
140
274
|
|
|
141
275
|
---
|
|
142
276
|
|
|
143
|
-
###
|
|
277
|
+
### Step 5: USER HANDOFF → 가면술사 ✋
|
|
144
278
|
|
|
145
|
-
|
|
146
|
-
Analyze Task
|
|
147
|
-
↓
|
|
148
|
-
Can you finish in 5 minutes?
|
|
149
|
-
├─ YES → 🟢 Handle directly
|
|
150
|
-
└─ NO → Single focused task?
|
|
151
|
-
├─ YES → 🟡 Summon domain expert
|
|
152
|
-
└─ NO → Multiple independent tasks?
|
|
153
|
-
├─ YES → 🔴 Squad parallel
|
|
154
|
-
└─ NO → 🟡 Sequential expert delegation
|
|
155
|
-
```
|
|
279
|
+
모든 Task와 통합 검증을 통과한 후, 유저에게 보고합니다:
|
|
156
280
|
|
|
157
|
-
|
|
281
|
+
```markdown
|
|
282
|
+
## ✅ Phase P1 검증 완료!
|
|
283
|
+
|
|
284
|
+
### 🤖 AI 자동 테스트 결과
|
|
285
|
+
| 테스트 | 결과 |
|
|
286
|
+
|--------|------|
|
|
287
|
+
| Build | ✅ 성공 |
|
|
288
|
+
| Unit Tests | ✅ 15/15 |
|
|
289
|
+
| Lint | ✅ 통과 |
|
|
290
|
+
| E2E | ✅ 3/3 |
|
|
291
|
+
|
|
292
|
+
### 🎭 사용된 마스크 (세션 로그)
|
|
293
|
+
| # | 마스크 | 담당 Task | 결과 |
|
|
294
|
+
|---|--------|----------|------|
|
|
295
|
+
| 1 | Martin Fowler | Task 분해 + DB 설계 | ✅ |
|
|
296
|
+
| 2 | Robert C. Martin | API 구현 | ✅ |
|
|
297
|
+
| 3 | Dan Abramov | React 컴포넌트 | ✅ (재시도 1회) |
|
|
298
|
+
| 4 | Kent Beck | 테스트 스위트 | ✅ |
|
|
299
|
+
| 5 | Martin Fowler | 통합 검증 | ✅ |
|
|
300
|
+
|
|
301
|
+
### 📊 마스크 소환 통계
|
|
302
|
+
- 총 소환: 5회 (5개 세션)
|
|
303
|
+
- 재시도 로테이션: 1회
|
|
304
|
+
- 컨텍스트 레이어: 5 계층 분리
|
|
158
305
|
|
|
159
|
-
###
|
|
306
|
+
### 🔗 접속
|
|
307
|
+
http://localhost:5173
|
|
160
308
|
|
|
161
|
-
|
|
309
|
+
### 👤 사람만 판단 가능한 것
|
|
310
|
+
- [ ] 느낌이 의도대로인가요?
|
|
311
|
+
- [ ] 사용성이 좋은가요?
|
|
312
|
+
- [ ] 원하던 기능이 맞나요?
|
|
162
313
|
|
|
314
|
+
**[Approve]** **[Changes]** **[Later]**
|
|
163
315
|
```
|
|
164
|
-
Stuck on React state bug:
|
|
165
|
-
- First attempt: Dan Abramov approach
|
|
166
|
-
- Still failing → Summon Kent Beck
|
|
167
|
-
"Review this from a TDD perspective - maybe we need better test coverage first."
|
|
168
|
-
|
|
169
|
-
Stuck on performance issue:
|
|
170
|
-
- First attempt: Linus Torvalds approach
|
|
171
|
-
- Still failing → Summon Martin Fowler
|
|
172
|
-
"Maybe this is an architecture problem, not just optimization."
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
> 💡 **Tip**: Different experts see different problems. Rotation breaks tunnel vision.
|
|
176
316
|
|
|
177
317
|
---
|
|
178
318
|
|
|
@@ -182,101 +322,43 @@ AI가 **유저에게 전달하기 전에** 실행하는 자동 검증 단계:
|
|
|
182
322
|
|
|
183
323
|
| Layer | 검증 유형 | 도구 | 실패 시 동작 |
|
|
184
324
|
|-------|----------|------|-------------|
|
|
185
|
-
| 1️⃣ | TypeCheck | `tsc --noEmit` |
|
|
186
|
-
| 2️⃣ | Lint | `npm run lint` |
|
|
187
|
-
| 3️⃣ | Build | `npm run build` |
|
|
188
|
-
| 4️⃣ | Unit Tests | `npm test` |
|
|
189
|
-
| 5️⃣ | E2E Tests | `playwright test` |
|
|
190
|
-
| 6️⃣ | Screenshot |
|
|
191
|
-
| 7️⃣ | API Check | `fetch` / `curl` |
|
|
192
|
-
| 8️⃣ | A11y | axe-core / Lighthouse |
|
|
325
|
+
| 1️⃣ | TypeCheck | `tsc --noEmit` | 🎭 해당 마스크 재소환 |
|
|
326
|
+
| 2️⃣ | Lint | `npm run lint` | 🎭 해당 마스크 재소환 |
|
|
327
|
+
| 3️⃣ | Build | `npm run build` | 🎭 해당 마스크 재소환 |
|
|
328
|
+
| 4️⃣ | Unit Tests | `npm test` | 🎭 해당 마스크 재소환 |
|
|
329
|
+
| 5️⃣ | E2E Tests | `playwright test` | 🎭 마스크 로테이션 |
|
|
330
|
+
| 6️⃣ | Screenshot | browser_subagent | 🎭 UI 전문가 소환 |
|
|
331
|
+
| 7️⃣ | API Check | `fetch` / `curl` | 🎭 서버 전문가 소환 |
|
|
332
|
+
| 8️⃣ | A11y | axe-core / Lighthouse | 🎭 접근성 전문가 소환 |
|
|
193
333
|
|
|
194
|
-
### 검증 재시도 루프
|
|
334
|
+
### 검증 재시도 루프 (마스크 기반)
|
|
195
335
|
|
|
196
336
|
```
|
|
197
337
|
검증 실행
|
|
198
338
|
↓
|
|
199
339
|
실패?
|
|
200
|
-
├─ YES
|
|
201
|
-
│ ↓
|
|
202
|
-
│ 글로벌 지식에서 유사 해결책 검색 🔍
|
|
203
|
-
│ ↓
|
|
204
|
-
│
|
|
205
|
-
│
|
|
206
|
-
│
|
|
207
|
-
│ ├─
|
|
208
|
-
│ └─
|
|
209
|
-
│ ↓
|
|
210
|
-
│ [ESCALATE]
|
|
211
|
-
│
|
|
212
|
-
└─ NO ─→ 다음 Layer
|
|
340
|
+
├─ YES ─────────────────────────────────┐
|
|
341
|
+
│ ↓ │
|
|
342
|
+
│ 글로벌 지식에서 유사 해결책 검색 🔍 │
|
|
343
|
+
│ ↓ │
|
|
344
|
+
│ 재시도 카운터 확인 │
|
|
345
|
+
│ ├─ 1회차: 🎭 같은 마스크 재소환 │
|
|
346
|
+
│ ├─ 2회차: 🎭 마스크 로테이션 │
|
|
347
|
+
│ ├─ 3~4회차: 🎭 디버깅 전문가 │
|
|
348
|
+
│ └─ 5회차: 유저에게 도움 요청 │
|
|
349
|
+
│ ↓ │
|
|
350
|
+
│ [ESCALATE] │
|
|
351
|
+
│ │
|
|
352
|
+
└─ NO ─→ 다음 Layer ────────────────────┘
|
|
213
353
|
```
|
|
214
354
|
|
|
215
|
-
### 검증 도구 상세
|
|
216
|
-
|
|
217
|
-
#### Playwright (E2E + Screenshot)
|
|
218
|
-
|
|
219
|
-
```typescript
|
|
220
|
-
// E2E 테스트
|
|
221
|
-
npx playwright test
|
|
222
|
-
|
|
223
|
-
// 스크린샷 캡처
|
|
224
|
-
await page.goto('http://localhost:3000');
|
|
225
|
-
await page.screenshot({ path: 'screenshot.png', fullPage: true });
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
#### browser_subagent (시각적 테스트)
|
|
229
|
-
|
|
230
|
-
Antigravity의 browser_subagent를 활용:
|
|
231
|
-
1. 브라우저에서 페이지 로드
|
|
232
|
-
2. 특정 요소 확인
|
|
233
|
-
3. 스크린샷 캡처
|
|
234
|
-
4. DOM 분석
|
|
235
|
-
|
|
236
|
-
#### DevTools 연동
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
// Console 에러 확인
|
|
240
|
-
page.on('console', msg => {
|
|
241
|
-
if (msg.type() === 'error') recordError(msg.text());
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
// Network 요청 검증
|
|
245
|
-
page.on('response', response => {
|
|
246
|
-
if (response.status() >= 400) recordError(`${response.url()}: ${response.status()}`);
|
|
247
|
-
});
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
#### 접근성 검사 (axe-core)
|
|
251
|
-
|
|
252
|
-
```typescript
|
|
253
|
-
const AxeBuilder = require('@axe-core/playwright').default;
|
|
254
|
-
const results = await new AxeBuilder({ page }).analyze();
|
|
255
|
-
// violations 배열로 접근성 이슈 확인
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## 마스크 자동 선택
|
|
260
|
-
|
|
261
|
-
AI가 작업 맥락을 분석하여 적합한 전문가 마스크를 선택합니다:
|
|
262
|
-
|
|
263
|
-
| 작업 유형 | 자동 선택 마스크 |
|
|
264
|
-
|----------|-----------------|
|
|
265
|
-
| 아키텍처/설계 | 🏗️ Martin Fowler |
|
|
266
|
-
| 테스트/TDD | 🧪 Kent Beck |
|
|
267
|
-
| React/프론트엔드 | ⚛️ Dan Abramov |
|
|
268
|
-
| 성능/시스템 | 🐧 Linus Torvalds |
|
|
269
|
-
| ML/AI | 🧠 Andrew Ng |
|
|
270
|
-
|
|
271
|
-
**마스크 로테이션**: 같은 에러가 반복되면 다른 관점의 마스크로 교체
|
|
272
|
-
|
|
273
355
|
---
|
|
274
356
|
|
|
275
357
|
## 글로벌 지식 검색 (Cross-Project RAG)
|
|
276
358
|
|
|
277
359
|
에러 발생 시:
|
|
278
360
|
1. `~/.maskweaver/knowledge.sqlite`에서 유사 에러 검색
|
|
279
|
-
2. 과거 해결책 참조하여
|
|
361
|
+
2. 과거 해결책 참조하여 마스크에게 힌트 전달
|
|
280
362
|
3. 성공적으로 해결되면 새 솔루션 기록
|
|
281
363
|
|
|
282
364
|
```
|
|
@@ -285,8 +367,8 @@ AI가 작업 맥락을 분석하여 적합한 전문가 마스크를 선택합
|
|
|
285
367
|
글로벌 지식베이스 검색 🔍
|
|
286
368
|
↓
|
|
287
369
|
유사 솔루션 발견?
|
|
288
|
-
├─ YES →
|
|
289
|
-
└─ NO →
|
|
370
|
+
├─ YES → 🎭 마스크에게 힌트와 함께 재소환
|
|
371
|
+
└─ NO → 🎭 마스크 로테이션으로 새로운 관점 시도
|
|
290
372
|
↓
|
|
291
373
|
해결 성공 → 솔루션 기록 📝
|
|
292
374
|
```
|
|
@@ -296,52 +378,30 @@ AI가 작업 맥락을 분석하여 적합한 전문가 마스크를 선택합
|
|
|
296
378
|
## 진행 상황 출력
|
|
297
379
|
|
|
298
380
|
```markdown
|
|
299
|
-
###
|
|
300
|
-
|
|
301
|
-
#### Task 1: EmotionButton 컴포넌트
|
|
302
|
-
- [x] 마스크 선택: 🧪 Kent Beck
|
|
303
|
-
- [x] 테스트 작성
|
|
304
|
-
- [x] 구현
|
|
305
|
-
- [x] 검증 ✅
|
|
381
|
+
### Phase P1 진행 상황
|
|
306
382
|
|
|
307
|
-
####
|
|
308
|
-
- [x] 마스크 선택: ⚛️ Dan Abramov
|
|
309
|
-
- [x] 테스트 작성
|
|
310
|
-
- [x] 구현
|
|
311
|
-
- [ ] 검증 🔄 (재시도 2/5)
|
|
312
|
-
- 💡 유사 솔루션 발견: "React state 업데이트 타이밍 이슈"
|
|
313
|
-
- 수정: useEffect 의존성 배열 추가
|
|
314
|
-
```
|
|
383
|
+
#### 🎭 마스크 세션 기록
|
|
315
384
|
|
|
316
|
-
|
|
385
|
+
##### Session 1: Martin Fowler → Task 분해
|
|
386
|
+
- [x] Task 분해 완료 (5개 Task 도출)
|
|
387
|
+
- [x] 의존성 분석 완료
|
|
317
388
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
```markdown
|
|
323
|
-
## ✅ Phase P1 검증 완료!
|
|
324
|
-
|
|
325
|
-
### 🤖 AI 자동 테스트 결과
|
|
326
|
-
| 테스트 | 결과 |
|
|
327
|
-
|--------|------|
|
|
328
|
-
| Build | ✅ 성공 |
|
|
329
|
-
| Unit Tests | ✅ 15/15 |
|
|
330
|
-
| Lint | ✅ 통과 |
|
|
331
|
-
|
|
332
|
-
### 🎭 사용된 마스크
|
|
333
|
-
- Kent Beck (테스트)
|
|
334
|
-
- Dan Abramov (React 컴포넌트)
|
|
335
|
-
|
|
336
|
-
### 🔗 접속
|
|
337
|
-
http://localhost:5173
|
|
389
|
+
##### Session 2: Martin Fowler → DB 스키마
|
|
390
|
+
- [x] 테이블 설계
|
|
391
|
+
- [x] 마이그레이션 작성
|
|
392
|
+
- [x] 검증 ✅
|
|
338
393
|
|
|
339
|
-
|
|
340
|
-
- [
|
|
341
|
-
- [
|
|
342
|
-
- [
|
|
394
|
+
##### Session 3: Robert C. Martin → API 구현
|
|
395
|
+
- [x] 컨트롤러 구현
|
|
396
|
+
- [x] 서비스 레이어
|
|
397
|
+
- [x] 검증 ✅
|
|
343
398
|
|
|
344
|
-
|
|
399
|
+
##### Session 4: Dan Abramov → React 컴포넌트
|
|
400
|
+
- [x] 컴포넌트 구현
|
|
401
|
+
- [ ] 검증 🔄 (재시도 2/5)
|
|
402
|
+
- 1차: Dan Abramov → 상태 관리 버그
|
|
403
|
+
- 2차: 🎭 Kent Beck 로테이션 → TDD 관점 재접근
|
|
404
|
+
- 💡 유사 솔루션 발견: "React state 업데이트 타이밍 이슈"
|
|
345
405
|
```
|
|
346
406
|
|
|
347
407
|
---
|
|
@@ -359,9 +419,14 @@ http://localhost:5173
|
|
|
359
419
|
### 글로벌 지식베이스 검색 결과
|
|
360
420
|
- 유사 솔루션 3개 시도했으나 실패
|
|
361
421
|
|
|
362
|
-
### 시도한 마스크
|
|
363
|
-
|
|
364
|
-
|
|
422
|
+
### 🎭 시도한 마스크 로테이션
|
|
423
|
+
| 순서 | 마스크 | 접근 방식 | 결과 |
|
|
424
|
+
|------|--------|----------|------|
|
|
425
|
+
| 1 | Dan Abramov | 상태 관리 수정 | ❌ |
|
|
426
|
+
| 2 | Kent Beck | TDD 관점 재접근 | ❌ |
|
|
427
|
+
| 3 | Martin Fowler | 구조적 리팩토링 | ❌ |
|
|
428
|
+
| 4 | Linus Torvalds | 근본 원인 분석 | ❌ |
|
|
429
|
+
| 5 | Jeff Dean | 대안 아키텍처 | ❌ |
|
|
365
430
|
|
|
366
431
|
### 제안
|
|
367
432
|
- [제안 1]
|
|
@@ -372,9 +437,9 @@ http://localhost:5173
|
|
|
372
437
|
|
|
373
438
|
---
|
|
374
439
|
|
|
375
|
-
## 코드 품질 체크
|
|
440
|
+
## 코드 품질 체크 → 🎭 마스크가 수행
|
|
376
441
|
|
|
377
|
-
각 Task 완료 시
|
|
442
|
+
각 Task 완료 시 해당 마스크가 다음을 자체 점검합니다:
|
|
378
443
|
|
|
379
444
|
```yaml
|
|
380
445
|
SOLID:
|
|
@@ -389,3 +454,19 @@ DRY:
|
|
|
389
454
|
- "같은 코드가 반복되는가?"
|
|
390
455
|
- "공통 함수로 추출할 것이 있는가?"
|
|
391
456
|
```
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
## 마스크 소환 통계 목표
|
|
461
|
+
|
|
462
|
+
각 Phase 실행 시 **최소 마스크 소환 횟수**:
|
|
463
|
+
|
|
464
|
+
| 단계 | 최소 소환 | 설명 |
|
|
465
|
+
|------|----------|------|
|
|
466
|
+
| DESIGN (Task 분해) | 1회 | 아키텍트 마스크 |
|
|
467
|
+
| BUILD (Task 실행) | Task 수만큼 | 각 Task마다 1명 이상 |
|
|
468
|
+
| 검증 실패 로테이션 | 실패당 1회 | 다른 관점의 마스크 |
|
|
469
|
+
| INTEGRATION | 1회 | 통합 전문가 |
|
|
470
|
+
| **합계** | **Task 수 + 2 이상** | Phase 당 최소 5~8회 |
|
|
471
|
+
|
|
472
|
+
> 📊 **마스크 사용률 100%가 목표입니다.** 가면술사가 직접 코드를 작성한 건수가 0이어야 합니다.
|
|
@@ -25,113 +25,32 @@ examples:
|
|
|
25
25
|
|
|
26
26
|
**Maskweaver 통합**:
|
|
27
27
|
- 📚 **Memory**: 과거 유사 프로젝트 검색하여 계획 참조
|
|
28
|
-
- 🎭 **Masks**:
|
|
28
|
+
- 🎭 **Masks**: 모든 분석/설계 단계에서 전문가 마스크 적극 소환
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
## 🎭
|
|
32
|
+
## 🎭 Mask-First Principle (핵심 원칙)
|
|
33
33
|
|
|
34
|
-
###
|
|
34
|
+
### 원칙: "가면술사는 직접 작업하지 않는다"
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
당신은 **가면술사(Mask Weaver)**입니다. 당신의 힘은 적절한 전문가를 소환하여 위임하는 것에 있습니다.
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
Complex Architecture Decision:
|
|
46
|
-
|
|
47
|
-
Task(dummy-human):
|
|
48
|
-
Mask: Martin Fowler (Enterprise Architecture)
|
|
49
|
-
Task: "Analyze these requirements and propose a layer structure,
|
|
50
|
-
key components, and design patterns to use."
|
|
51
|
-
|
|
52
|
-
Task(dummy-human):
|
|
53
|
-
Mask: Linus Torvalds (System Performance)
|
|
54
|
-
Task: "Review the proposed architecture for performance bottlenecks
|
|
55
|
-
and scalability concerns."
|
|
56
|
-
|
|
57
|
-
→ Mask Weaver synthesizes both perspectives into final decision.
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**Why This Works**:
|
|
61
|
-
- Each expert focuses on their domain of excellence
|
|
62
|
-
- You maintain strategic oversight without context pollution
|
|
63
|
-
- Multiple perspectives prevent blind spots
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
### 2. Technology Choices → Squad Parallel Analysis
|
|
68
|
-
|
|
69
|
-
For **important technology selections** (framework, database, etc.):
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
Mask Weaver:
|
|
73
|
-
1. squad start → "Optimal Tech Stack Decision"
|
|
74
|
-
2. squad squad (arch-squad) → "Martin Fowler: Maintainability analysis"
|
|
75
|
-
3. squad squad (perf-squad) → "Linus Torvalds: Performance analysis"
|
|
76
|
-
4. squad squad (dx-squad) → "Dan Abramov: Developer experience analysis"
|
|
77
|
-
|
|
78
|
-
→ Collect results → Weigh trade-offs → Final decision
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Benefits**:
|
|
82
|
-
- Parallel expert analysis (not sequential bottleneck)
|
|
83
|
-
- Each expert defends their domain priorities
|
|
84
|
-
- Balanced decision with documented trade-offs
|
|
38
|
+
> ⚡ **왜 마스크를 최대한 사용해야 하는가?**
|
|
39
|
+
>
|
|
40
|
+
> 1. **새로운 세션 생성**: 각 마스크 소환(Task)은 새로운 서브에이전트 세션을 만듭니다
|
|
41
|
+
> 2. **컨텍스트 레이어 분리**: 각 세션은 독립된 컨텍스트를 가지므로 주 컨텍스트가 오염되지 않습니다
|
|
42
|
+
> 3. **전략적 판단력 보존**: 가면술사의 작업 기억이 세부사항으로 오염되지 않아 전체 그림을 유지합니다
|
|
43
|
+
> 4. **전문성 극대화**: 각 영역의 최고 전문가가 집중 분석하므로 품질이 향상됩니다
|
|
85
44
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### 3. When to Summon vs Handle Directly
|
|
89
|
-
|
|
90
|
-
| Situation | Action |
|
|
91
|
-
|-----------|--------|
|
|
92
|
-
| Reading & summarizing requirements | Handle directly |
|
|
93
|
-
| Obvious tech stack (project already decided) | Handle directly |
|
|
94
|
-
| Architecture trade-offs with long-term impact | 🎭 **Summon Martin Fowler** |
|
|
95
|
-
| Performance-critical design | 🎭 **Summon Linus Torvalds** |
|
|
96
|
-
| Multiple valid approaches, need comparison | 🔀 **Squad council** |
|
|
97
|
-
|
|
98
|
-
> 💡 **Rule of Thumb**: If the decision will be hard to reverse later, summon experts. If it's tactical, handle it yourself.
|
|
45
|
+
**핵심 규칙**: 가면술사가 직접 처리하는 것은 **경로 해석(RESOLVE)**과 **유저 커뮤니케이션**뿐입니다. 나머지 모든 분석/설계 작업은 마스크를 소환하여 위임합니다.
|
|
99
46
|
|
|
100
47
|
---
|
|
101
48
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
| Domain | Expert to Summon | Strength |
|
|
105
|
-
|--------|------------------|----------|
|
|
106
|
-
| Architecture & Patterns | **Martin Fowler** | Enterprise patterns, SOLID, refactoring |
|
|
107
|
-
| System Design & Performance | **Linus Torvalds** | Pragmatic, performance-focused |
|
|
108
|
-
| Frontend Architecture | **Dan Abramov** | React patterns, state management |
|
|
109
|
-
| Testing Strategy | **Kent Beck** | TDD, test design, simplicity |
|
|
110
|
-
| Data & ML | **Andrew Ng** | ML best practices, data pipelines |
|
|
49
|
+
## 🎭 단계별 필수 마스크 소환 가이드
|
|
111
50
|
|
|
112
|
-
|
|
51
|
+
### Step 0: RESOLVE → 가면술사 직접 처리 ✋
|
|
113
52
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
0. RESOLVE (입력 해석 → 실제 경로 찾기)
|
|
118
|
-
↓
|
|
119
|
-
1. INTAKE (문서 분석)
|
|
120
|
-
↓
|
|
121
|
-
2. CLARIFY (불명확한 부분 질문)
|
|
122
|
-
↓
|
|
123
|
-
3. PLAN (계획서 제시)
|
|
124
|
-
↓
|
|
125
|
-
4. FEEDBACK (유저 피드백 → 수정)
|
|
126
|
-
↓
|
|
127
|
-
5. APPROVE (승인 시 PLAN.yaml 생성)
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## 단계별 상세
|
|
133
|
-
|
|
134
|
-
### Step 0: RESOLVE (경로 해석)
|
|
53
|
+
이 단계만 가면술사가 직접 합니다. 경로 탐색은 당신의 도구를 사용하는 단순 작업입니다.
|
|
135
54
|
|
|
136
55
|
**입력 유형별 처리**:
|
|
137
56
|
|
|
@@ -165,42 +84,60 @@ Mask Weaver:
|
|
|
165
84
|
|
|
166
85
|
---
|
|
167
86
|
|
|
168
|
-
### Step 1: INTAKE
|
|
87
|
+
### Step 1: INTAKE → 🎭 마스크 소환 (필수)
|
|
169
88
|
|
|
170
|
-
|
|
171
|
-
1. **해석된 경로**의 모든 문서 읽기 (md, yaml, txt)
|
|
172
|
-
2. 핵심 기능 추출
|
|
173
|
-
3. 도메인 용어 파악
|
|
174
|
-
4. 기술적 요구사항 식별
|
|
175
|
-
5. **과거 유사 프로젝트 검색** (Memory 시스템)
|
|
89
|
+
요구사항 문서 분석은 **반드시 전문가 마스크를 소환**하여 수행합니다.
|
|
176
90
|
|
|
177
|
-
|
|
178
|
-
```markdown
|
|
179
|
-
## 📄 문서 분석 결과
|
|
180
|
-
|
|
181
|
-
### 핵심 기능
|
|
182
|
-
1. [기능 1]
|
|
183
|
-
2. [기능 2]
|
|
91
|
+
**필수 소환 마스크**: 도메인별 적합한 전문가
|
|
184
92
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
- Backend: [...]
|
|
188
|
-
- Database: [...]
|
|
93
|
+
```
|
|
94
|
+
📄 요구사항 분석:
|
|
189
95
|
|
|
190
|
-
|
|
191
|
-
|
|
96
|
+
Task(dummy-human):
|
|
97
|
+
Mask: Martin Fowler (Requirements Analysis)
|
|
98
|
+
Task: "다음 요구사항 문서들을 읽고 분석해줘:
|
|
99
|
+
[문서 경로 목록]
|
|
100
|
+
|
|
101
|
+
분석 결과를 다음 형식으로 정리:
|
|
102
|
+
1. 핵심 기능 목록 (우선순위순)
|
|
103
|
+
2. 도메인 용어 사전
|
|
104
|
+
3. 기술적 요구사항 (Frontend/Backend/Database)
|
|
105
|
+
4. 비기능적 요구사항 (성능, 보안, 확장성)
|
|
106
|
+
5. 불명확한 부분 목록
|
|
107
|
+
6. 잠재적 위험 요소"
|
|
192
108
|
```
|
|
193
109
|
|
|
110
|
+
**프로젝트 유형별 마스크 선택**:
|
|
111
|
+
|
|
112
|
+
| 프로젝트 유형 | 분석 마스크 | 이유 |
|
|
113
|
+
|-------------|-----------|------|
|
|
114
|
+
| 웹 애플리케이션 | Martin Fowler | 엔터프라이즈 패턴, 계층 구조 |
|
|
115
|
+
| 시스템/인프라 | Linus Torvalds | 성능, 확장성 관점 |
|
|
116
|
+
| ML/AI 프로젝트 | Andrew Ng | 데이터 파이프라인, 모델 아키텍처 |
|
|
117
|
+
| 프론트엔드 중심 | Dan Abramov | 상태 관리, UX 패턴 |
|
|
118
|
+
| 테스트/품질 중심 | Kent Beck | 테스트 전략, 품질 메트릭 |
|
|
119
|
+
|
|
194
120
|
---
|
|
195
121
|
|
|
196
|
-
### Step 2: CLARIFY
|
|
122
|
+
### Step 2: CLARIFY → 🎭 마스크 소환 (필수)
|
|
123
|
+
|
|
124
|
+
불명확한 부분 식별도 **전문가에게 위임**합니다. INTAKE 분석 결과를 바탕으로 추가 마스크를 소환합니다.
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
❓ 요구사항 불명확점 분석:
|
|
197
128
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
129
|
+
Task(dummy-human):
|
|
130
|
+
Mask: Robert C. Martin (Clean Architecture)
|
|
131
|
+
Task: "INTAKE 분석 결과를 검토하고:
|
|
132
|
+
1. 아키텍처적으로 불명확한 부분 식별
|
|
133
|
+
2. 기술 선택이 필요한 부분 제시
|
|
134
|
+
3. 각 선택지의 트레이드오프 분석
|
|
135
|
+
4. 유저에게 확인해야 할 질문 목록 생성
|
|
136
|
+
|
|
137
|
+
특히 '나중에 바꾸기 어려운 결정'을 모두 찾아줘."
|
|
138
|
+
```
|
|
202
139
|
|
|
203
|
-
|
|
140
|
+
**질문 리스트를 유저에게 제시** (이건 가면술사가 직접):
|
|
204
141
|
```markdown
|
|
205
142
|
## ❓ 확인이 필요합니다
|
|
206
143
|
|
|
@@ -214,13 +151,63 @@ Mask Weaver:
|
|
|
214
151
|
|
|
215
152
|
---
|
|
216
153
|
|
|
217
|
-
### Step 3: PLAN
|
|
154
|
+
### Step 3: PLAN → 🎭 다중 마스크 소환 (필수)
|
|
155
|
+
|
|
156
|
+
계획 수립은 **가장 많은 마스크를 소환해야 하는 단계**입니다.
|
|
157
|
+
|
|
158
|
+
#### 3-1. 아키텍처 설계 🎭
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
Task(dummy-human):
|
|
162
|
+
Mask: Martin Fowler (Enterprise Architecture)
|
|
163
|
+
Task: "요구사항 분석 결과와 유저 답변을 바탕으로:
|
|
164
|
+
1. 전체 아키텍처 설계 (레이어 구조, 핵심 컴포넌트)
|
|
165
|
+
2. 사용할 디자인 패턴
|
|
166
|
+
3. 데이터 모델 초안
|
|
167
|
+
4. API 설계 방향"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### 3-2. 아키텍처 리뷰 🎭
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
Task(dummy-human):
|
|
174
|
+
Mask: Linus Torvalds (System Performance)
|
|
175
|
+
Task: "Martin Fowler가 설계한 아키텍처를 검토하고:
|
|
176
|
+
1. 성능 병목 지점 식별
|
|
177
|
+
2. 확장성 문제 지적
|
|
178
|
+
3. 과도한 추상화 지적
|
|
179
|
+
4. 실용적 대안 제시"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
#### 3-3. 테스트 전략 수립 🎭
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
Task(dummy-human):
|
|
186
|
+
Mask: Kent Beck (TDD Strategy)
|
|
187
|
+
Task: "이 프로젝트의 테스트 전략을 수립해줘:
|
|
188
|
+
1. 테스트 피라미드 구조 (Unit/Integration/E2E 비율)
|
|
189
|
+
2. 각 Phase별 필수 테스트 항목
|
|
190
|
+
3. TDD를 적용할 핵심 모듈 식별
|
|
191
|
+
4. 테스트 인프라 요구사항"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
#### 3-4. Phase 분해 🎭
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
Task(dummy-human):
|
|
198
|
+
Mask: 프로젝트 매니저 (Agile PM)
|
|
199
|
+
Task: "아키텍처 설계와 테스트 전략을 통합하여:
|
|
200
|
+
1. 전체 작업을 Phase로 분해 (반나절~하루 단위)
|
|
201
|
+
2. 각 Phase의 완료 조건 정의
|
|
202
|
+
3. Phase 간 의존성 식별
|
|
203
|
+
4. 각 Phase에서 사용할 마스크 사전 배정
|
|
204
|
+
5. 리스크가 높은 Phase 식별 및 대응 방안"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### 가면술사: 통합 및 제시 ✋
|
|
218
208
|
|
|
219
|
-
|
|
220
|
-
- 한 Phase = 반나절 ~ 하루 작업량
|
|
221
|
-
- 끝나면 유저가 뭔가 "해볼 수 있어야" 함
|
|
209
|
+
위 4개 마스크의 결과를 **가면술사가 통합**하여 유저에게 제시합니다:
|
|
222
210
|
|
|
223
|
-
**출력 형식**:
|
|
224
211
|
```markdown
|
|
225
212
|
## 📋 실행 계획서
|
|
226
213
|
|
|
@@ -232,12 +219,17 @@ Mask Weaver:
|
|
|
232
219
|
- Backend: [...]
|
|
233
220
|
- Note: 진행하면서 조정될 수 있습니다
|
|
234
221
|
|
|
222
|
+
### 🎭 마스크 전문가 합의
|
|
223
|
+
- **Martin Fowler**: [아키텍처 핵심 의견]
|
|
224
|
+
- **Linus Torvalds**: [성능 관련 리뷰 의견]
|
|
225
|
+
- **Kent Beck**: [테스트 전략 요약]
|
|
226
|
+
|
|
235
227
|
### Phase 계획
|
|
236
228
|
|
|
237
|
-
| Phase | 이름 | 완료 조건 | 예상 시간 |
|
|
238
|
-
|
|
239
|
-
| P1 | [...] | [...] | 2-3시간 |
|
|
240
|
-
| P2 | [...] | [...] | 2-3시간 |
|
|
229
|
+
| Phase | 이름 | 완료 조건 | 예상 시간 | 배정 마스크 |
|
|
230
|
+
|-------|------|----------|----------|-----------|
|
|
231
|
+
| P1 | [...] | [...] | 2-3시간 | 🎭 Kent Beck, Dan Abramov |
|
|
232
|
+
| P2 | [...] | [...] | 2-3시간 | 🎭 Martin Fowler, Linus Torvalds |
|
|
241
233
|
|
|
242
234
|
---
|
|
243
235
|
이 계획이 괜찮으세요? 수정이 필요하면 말씀해주세요.
|
|
@@ -245,7 +237,7 @@ Mask Weaver:
|
|
|
245
237
|
|
|
246
238
|
---
|
|
247
239
|
|
|
248
|
-
### Step 4: APPROVE
|
|
240
|
+
### Step 4: APPROVE → 가면술사 직접 ✋
|
|
249
241
|
|
|
250
242
|
**생성 파일**: `.opencode/weave/PLAN.yaml`
|
|
251
243
|
|
|
@@ -261,11 +253,19 @@ architecture:
|
|
|
261
253
|
backend: "[...]"
|
|
262
254
|
database: "[...]"
|
|
263
255
|
|
|
256
|
+
expert_review:
|
|
257
|
+
architecture: "Martin Fowler - [핵심 의견]"
|
|
258
|
+
performance: "Linus Torvalds - [핵심 의견]"
|
|
259
|
+
testing: "Kent Beck - [핵심 의견]"
|
|
260
|
+
|
|
264
261
|
phases:
|
|
265
262
|
- id: "P1"
|
|
266
263
|
name: "[Phase 이름]"
|
|
267
264
|
status: "pending"
|
|
268
265
|
done_when: "[완료 조건]"
|
|
266
|
+
assigned_masks:
|
|
267
|
+
- "Kent Beck"
|
|
268
|
+
- "Dan Abramov"
|
|
269
269
|
checklist:
|
|
270
270
|
- "[체크 항목 1]"
|
|
271
271
|
- "[체크 항목 2]"
|
|
@@ -278,6 +278,12 @@ phases:
|
|
|
278
278
|
|
|
279
279
|
📁 생성된 파일: `.opencode/weave/PLAN.yaml`
|
|
280
280
|
|
|
281
|
+
### 🎭 사용된 전문가 마스크
|
|
282
|
+
- Martin Fowler (아키텍처 설계)
|
|
283
|
+
- Linus Torvalds (성능 리뷰)
|
|
284
|
+
- Kent Beck (테스트 전략)
|
|
285
|
+
- PM (Phase 분해)
|
|
286
|
+
|
|
281
287
|
### 다음 단계
|
|
282
288
|
Phase 1을 시작하려면:
|
|
283
289
|
/weave craft P1
|
|
@@ -285,9 +291,32 @@ Phase 1을 시작하려면:
|
|
|
285
291
|
|
|
286
292
|
---
|
|
287
293
|
|
|
294
|
+
## 실행 흐름 요약
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
0. RESOLVE (입력 해석) ← ✋ 가면술사 직접
|
|
298
|
+
↓
|
|
299
|
+
1. INTAKE (문서 분석) ← 🎭 마스크 소환 (1개)
|
|
300
|
+
↓
|
|
301
|
+
2. CLARIFY (불명확 분석) ← 🎭 마스크 소환 (1개) + ✋ 유저 질문
|
|
302
|
+
↓
|
|
303
|
+
3. PLAN ← 🎭 마스크 소환 (3~4개)
|
|
304
|
+
├─ 아키텍처 설계 🎭 Martin Fowler
|
|
305
|
+
├─ 아키텍처 리뷰 🎭 Linus Torvalds
|
|
306
|
+
├─ 테스트 전략 🎭 Kent Beck
|
|
307
|
+
└─ Phase 분해 🎭 PM
|
|
308
|
+
↓
|
|
309
|
+
4. APPROVE (승인 → PLAN.yaml) ← ✋ 가면술사 직접
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
> 📊 **마스크 사용 목표**: 최소 5~6회 마스크 소환 (INTAKE 1 + CLARIFY 1 + PLAN 3~4)
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
288
316
|
## 주의사항
|
|
289
317
|
|
|
290
|
-
1.
|
|
291
|
-
2.
|
|
292
|
-
|
|
293
|
-
|
|
318
|
+
1. **마스크를 아끼지 마라**: 조금이라도 전문성이 필요하면 소환하라. 각 소환은 새 세션을 만들어 컨텍스트를 보존한다.
|
|
319
|
+
2. **Phase는 작게**: 큰 Phase는 분할
|
|
320
|
+
3. **마스크 결과를 통합하라**: 여러 마스크의 결과를 가면술사가 종합하는 것이 핵심 역할
|
|
321
|
+
4. **아키텍처는 유연하게**: "변경 가능"을 명시
|
|
322
|
+
5. **직접 분석하지 마라**: "내가 빨리 할 수 있을 것 같은데..."는 안티패턴. 전문가에게 위임하라.
|