maskweaver 0.8.15 → 0.9.0
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 +640 -657
- package/README.md +672 -689
- package/assets/commands/meta/commands.json +254 -0
- package/assets/commands/weave-agents.md +62 -0
- package/assets/commands/weave-approve.md +61 -0
- package/assets/commands/weave-build.md +99 -0
- package/assets/commands/weave-help.md +112 -158
- package/assets/commands/weave-interview.md +121 -0
- package/assets/commands/weave-map.md +109 -0
- package/assets/commands/weave-troubleshoot.md +57 -0
- package/dist/plugin/index.d.ts +5 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +42 -18
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/tools/command-registry.d.ts +51 -0
- package/dist/plugin/tools/command-registry.d.ts.map +1 -0
- package/dist/plugin/tools/command-registry.js +348 -0
- package/dist/plugin/tools/command-registry.js.map +1 -0
- package/dist/plugin/tools/slashcommand.d.ts +1 -1
- package/dist/plugin/tools/slashcommand.d.ts.map +1 -1
- package/dist/plugin/tools/slashcommand.js +47 -193
- package/dist/plugin/tools/slashcommand.js.map +1 -1
- package/dist/plugin/tools/weave.d.ts +14 -35
- package/dist/plugin/tools/weave.d.ts.map +1 -1
- package/dist/plugin/tools/weave.js +247 -213
- package/dist/plugin/tools/weave.js.map +1 -1
- package/package.json +142 -142
- package/postinstall.mjs +64 -14
- package/assets/commands/weave-approve-plan.md +0 -57
- package/assets/commands/weave-design.md +0 -296
- package/assets/commands/weave-flow.md +0 -48
- package/assets/commands/weave-plan.md +0 -15
- package/assets/commands/weave-research.md +0 -51
- package/assets/commands/weave-spec.md +0 -227
- package/assets/commands/weave-switch.md +0 -170
package/README.ko.md
CHANGED
|
@@ -1,657 +1,640 @@
|
|
|
1
|
-
# 🎭 Maskweaver: OpenCode를 위한 전문가 페르소나 프레임워크
|
|
2
|
-
|
|
3
|
-
<div align="center">
|
|
4
|
-
|
|
5
|
-
<img src="docs/images/hero.png" width="800" alt="Maskweaver Hero Image">
|
|
6
|
-
|
|
7
|
-
> **AI 페르소나를 위한 npm** — OpenCode 어시스턴트에게 독보적인 전문가 인격을 더하세요
|
|
8
|
-
|
|
9
|
-
[](https://github.com/ulgerang/maskweaver/releases)
|
|
10
|
-
[](LICENSE)
|
|
11
|
-
[](https://www.npmjs.com/package/maskweaver)
|
|
12
|
-
|
|
13
|
-
[English](README.md) | [한국어](README.ko.md)
|
|
14
|
-
|
|
15
|
-
</div>
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 🔌 OpenCode 통합
|
|
20
|
-
|
|
21
|
-
**Maskweaver는 [OpenCode](https://github.com/sst/opencode) 생태계의 핵심 구성 요소입니다.**
|
|
22
|
-
|
|
23
|
-
본 프로젝트는 독립적인 라이브러리로도 사용 가능하지만, 기본적으로 OpenCode 에이전트들이 특정 분야의 전문 지식을 갖출 수 있도록 설계되었습니다:
|
|
24
|
-
- **전문가 페르소나 (Masks)**: 전설적인 개발자들의 철학을 담은 표준 YAML 프로필.
|
|
25
|
-
- **스마트 위임**: OpenCode에 최적화된 멀티 에이전트 워크플로우.
|
|
26
|
-
- **프로젝트 메모리**: 코드베이스 전체에 대한 하이브리드 의미론적 검색.
|
|
27
|
-
- **🆕 Weave 워크플로우**: AI 자체 검증이 포함된 Phase 기반 개발.
|
|
28
|
-
- **🔗 GDC 통합**: Graph-Driven Codebase 지원으로 리서치 품질 향상 및 설계 시점 검증 게이트 추가.
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## 왜 Maskweaver인가요?
|
|
33
|
-
|
|
34
|
-
레이스 컨디션 버그로 고생 중이라면, **린 토발즈**가 코드를 봐준다면 얼마나 좋을까요?
|
|
35
|
-
|
|
36
|
-
```typescript
|
|
37
|
-
// 일반 AI 답변 대신...
|
|
38
|
-
"코드에 잠재적 레이스 컨디션이 있습니다."
|
|
39
|
-
|
|
40
|
-
// 린 토발즈 수준의 인사이트:
|
|
41
|
-
"이건 멍청한 코드야. 메모리 배리어도 안 썼잖아. 어셈블리 봐봐 -
|
|
42
|
-
컴파일러가 로드 순서 바꿨어. smp_rmb() 쓰든지, 아예 이 멍청한
|
|
43
|
-
락 없이 다시 설계해."
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**Maskweaver가 이걸 가능하게 합니다.** AI 어시스턴트에 전문가 페르소나(가면)를 씌워 깊은 도메인 지식과 독특한 사고방식을 부여합니다.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 설치
|
|
51
|
-
|
|
52
|
-
### 빠른 설치
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# npm
|
|
56
|
-
npm install maskweaver
|
|
57
|
-
|
|
58
|
-
# bun
|
|
59
|
-
bun add maskweaver
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### OpenCode 플러그인 설정
|
|
63
|
-
|
|
64
|
-
OpenCode 설정에 추가하면 끝!
|
|
65
|
-
|
|
66
|
-
**전역** (`~/.config/opencode/opencode.json`):
|
|
67
|
-
```json
|
|
68
|
-
{
|
|
69
|
-
"plugin": ["maskweaver"]
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**또는 프로젝트별** (프로젝트 루트의 `opencode.json`):
|
|
74
|
-
```json
|
|
75
|
-
{
|
|
76
|
-
"plugin": ["maskweaver"]
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
> 참고: OpenCode는 npm 패키지를 이름으로 설치합니다. `maskweaver`를 사용하세요 (`maskweaver/plugin` 아님).
|
|
81
|
-
|
|
82
|
-
OpenCode가 시작 시 자동으로 `~/.cache/opencode/node_modules/`에 플러그인을 설치합니다.
|
|
83
|
-
|
|
84
|
-
**Windows:** `%USERPROFILE%\.config\opencode\opencode.json`
|
|
85
|
-
|
|
86
|
-
### 완료 알림 소리 (선택)
|
|
87
|
-
|
|
88
|
-
Maskweaver는 생성이 끝나서 세션이 idle 상태가 되면(`session.idle`) 알림 소리를 재생할 수 있습니다.
|
|
89
|
-
|
|
90
|
-
`.opencode/maskweaver.json`(프로젝트) 또는 `~/.config/opencode/maskweaver.json`(전역)에 설정하세요:
|
|
91
|
-
|
|
92
|
-
```jsonc
|
|
93
|
-
{
|
|
94
|
-
"notifications": {
|
|
95
|
-
"completionSound": {
|
|
96
|
-
"enabled": true
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
끄려면:
|
|
103
|
-
|
|
104
|
-
```jsonc
|
|
105
|
-
{
|
|
106
|
-
"notifications": {
|
|
107
|
-
"completionSound": {
|
|
108
|
-
"enabled": false
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 설치된 버전 확인
|
|
115
|
-
|
|
116
|
-
Maskweaver 버전을 확인하는 여러 방법:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
# CLI (터미널)
|
|
120
|
-
maskweaver --version
|
|
121
|
-
# 또는
|
|
122
|
-
maskweaver -V
|
|
123
|
-
|
|
124
|
-
# npm
|
|
125
|
-
npm list maskweaver
|
|
126
|
-
|
|
127
|
-
# OpenCode 채팅 내에서
|
|
128
|
-
# maskweaver_status 도구를 사용하거나:
|
|
129
|
-
/weave help
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
```typescript
|
|
133
|
-
// 프로그래밍 방식 (Node.js / TypeScript)
|
|
134
|
-
import { VERSION } from 'maskweaver';
|
|
135
|
-
console.log(VERSION); // "0.7.29"
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## 빠른 시작
|
|
141
|
-
|
|
142
|
-
### 첫 사용
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# AI 어시스턴트 채팅에서:
|
|
146
|
-
@maskweaver 린 토발즈 가면으로 이 C 코드 리뷰해줘
|
|
147
|
-
|
|
148
|
-
# 또는 더미인간에게 위임:
|
|
149
|
-
@dummy-human 린 토발즈 가면으로 멀티스레딩 코드 리뷰
|
|
150
|
-
@dummy-flash "unsafe" 들어간 파일 전부 찾아줘
|
|
151
|
-
@dummy-premium 이 모놀리스를 마이크로서비스로 설계해줘
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## 기능
|
|
157
|
-
|
|
158
|
-
### 🎭 전문가 페르소나 (가면)
|
|
159
|
-
|
|
160
|
-
전설적인 개발자의 인격을 AI에 적용:
|
|
161
|
-
|
|
162
|
-
```yaml
|
|
163
|
-
# masks/software-engineering/linus-torvalds.yaml
|
|
164
|
-
profile:
|
|
165
|
-
name: Linus Torvalds
|
|
166
|
-
expertise:
|
|
167
|
-
- 커널 수준 시스템 프로그래밍
|
|
168
|
-
- 성능 최적화
|
|
169
|
-
- 메모리 관리 및 동시성
|
|
170
|
-
|
|
171
|
-
thinkingStyle: |
|
|
172
|
-
상향식, 실용적 접근. 이론이 아닌 코드부터.
|
|
173
|
-
복잡함을 무자비하게 제거.
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
**현재 가면:**
|
|
177
|
-
- 🐧 **린 토발즈** - 시스템, C, 리눅스, 성능
|
|
178
|
-
- 🏗️ **마틴 파울러** - 아키텍처, 리팩토링, 패턴
|
|
179
|
-
- 🧪 **켄트 벡** - TDD, XP, 테스팅
|
|
180
|
-
- 🧠 **앤드류 응** - ML/AI 시스템
|
|
181
|
-
- ⚛️ **댄 아브라모프** - React, 프론트엔드 아키텍처
|
|
182
|
-
|
|
183
|
-
### 🤖 더미인간 시스템
|
|
184
|
-
|
|
185
|
-
비용 효율적인 멀티 에이전트 워크플로우를 위한 스마트 서브에이전트:
|
|
186
|
-
|
|
187
|
-
| 에이전트 | 모델 등급 | 비용 | 최적 용도 |
|
|
188
|
-
|---------|----------|------|-----------|
|
|
189
|
-
| `@dummy-flash` | 빠름 | 💰 | 파일 검색, 요약, 간단한 작업 |
|
|
190
|
-
| `@dummy-human` | 균형 | 💰💰 | 코드 작성, 리뷰, 일반 작업 |
|
|
191
|
-
| `@dummy-premium` | 강력 | 💰💰💰 | 아키텍처, 복잡한 디버깅 |
|
|
192
|
-
|
|
193
|
-
### 🧵 Weave 워크플로우
|
|
194
|
-
|
|
195
|
-
**Phase 기반 개발** — "AI가 검증하고, 유저가 확인한다"
|
|
196
|
-
|
|
197
|
-
Weave는 Maskweaver의 핵심 워크플로우입니다. 작업을 테스트 가능한 Phase로 나누고, 전문가 마스크를 자동 선택하며, 유저 전달 전 구조화된 검증 단계를 제공합니다.
|
|
198
|
-
|
|
199
|
-
#### 명령어
|
|
200
|
-
|
|
201
|
-
| 명령어 | 설명 |
|
|
202
|
-
|--------|------|
|
|
203
|
-
| `/weave init` | Weave 초기화 (프로젝트당 1회) |
|
|
204
|
-
| `/weave
|
|
205
|
-
| `/weave
|
|
206
|
-
| `/weave
|
|
207
|
-
| `/weave
|
|
208
|
-
| `/weave
|
|
209
|
-
| `/weave
|
|
210
|
-
| `/weave
|
|
211
|
-
| `/weave
|
|
212
|
-
| `/weave
|
|
213
|
-
| `/weave
|
|
214
|
-
| `/weave
|
|
215
|
-
| `/weave help` | 도움말 표시 |
|
|
216
|
-
|
|
217
|
-
> Tip: OpenCode 채팅에서는 `/weave ...` 형태로 실행하고, 내부적으로는 `weave command=...` 도구 호출로 매핑됩니다.
|
|
218
|
-
|
|
219
|
-
#### 워크플로우
|
|
220
|
-
|
|
221
|
-
```
|
|
222
|
-
0. INIT (1회): /weave init
|
|
223
|
-
↓
|
|
224
|
-
1.
|
|
225
|
-
-
|
|
226
|
-
↓
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
↓
|
|
238
|
-
5.
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
|
251
|
-
|
|
252
|
-
|
|
|
253
|
-
|
|
|
254
|
-
|
|
|
255
|
-
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
import {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
- `maskweaver/
|
|
401
|
-
- `maskweaver/
|
|
402
|
-
- `maskweaver/
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
```
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
1. 무엇을 시도했는지
|
|
642
|
-
2. 무슨 일이 일어났는지
|
|
643
|
-
3. 무엇을 예상했는지
|
|
644
|
-
|
|
645
|
-
자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.
|
|
646
|
-
|
|
647
|
-
---
|
|
648
|
-
|
|
649
|
-
## 📄 라이선스
|
|
650
|
-
|
|
651
|
-
MIT - [LICENSE](LICENSE) 참조
|
|
652
|
-
|
|
653
|
-
---
|
|
654
|
-
|
|
655
|
-
<p align="center">
|
|
656
|
-
<sub>🎭와 함께 제작 by <a href="https://github.com/ulgerang">ULJI SOFT</a></sub>
|
|
657
|
-
</p>
|
|
1
|
+
# 🎭 Maskweaver: OpenCode를 위한 전문가 페르소나 프레임워크
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
<img src="docs/images/hero.png" width="800" alt="Maskweaver Hero Image">
|
|
6
|
+
|
|
7
|
+
> **AI 페르소나를 위한 npm** — OpenCode 어시스턴트에게 독보적인 전문가 인격을 더하세요
|
|
8
|
+
|
|
9
|
+
[](https://github.com/ulgerang/maskweaver/releases)
|
|
10
|
+
[](LICENSE)
|
|
11
|
+
[](https://www.npmjs.com/package/maskweaver)
|
|
12
|
+
|
|
13
|
+
[English](README.md) | [한국어](README.ko.md)
|
|
14
|
+
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 🔌 OpenCode 통합
|
|
20
|
+
|
|
21
|
+
**Maskweaver는 [OpenCode](https://github.com/sst/opencode) 생태계의 핵심 구성 요소입니다.**
|
|
22
|
+
|
|
23
|
+
본 프로젝트는 독립적인 라이브러리로도 사용 가능하지만, 기본적으로 OpenCode 에이전트들이 특정 분야의 전문 지식을 갖출 수 있도록 설계되었습니다:
|
|
24
|
+
- **전문가 페르소나 (Masks)**: 전설적인 개발자들의 철학을 담은 표준 YAML 프로필.
|
|
25
|
+
- **스마트 위임**: OpenCode에 최적화된 멀티 에이전트 워크플로우.
|
|
26
|
+
- **프로젝트 메모리**: 코드베이스 전체에 대한 하이브리드 의미론적 검색.
|
|
27
|
+
- **🆕 Weave 워크플로우**: AI 자체 검증이 포함된 Phase 기반 개발.
|
|
28
|
+
- **🔗 GDC 통합**: Graph-Driven Codebase 지원으로 리서치 품질 향상 및 설계 시점 검증 게이트 추가.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 왜 Maskweaver인가요?
|
|
33
|
+
|
|
34
|
+
레이스 컨디션 버그로 고생 중이라면, **린 토발즈**가 코드를 봐준다면 얼마나 좋을까요?
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// 일반 AI 답변 대신...
|
|
38
|
+
"코드에 잠재적 레이스 컨디션이 있습니다."
|
|
39
|
+
|
|
40
|
+
// 린 토발즈 수준의 인사이트:
|
|
41
|
+
"이건 멍청한 코드야. 메모리 배리어도 안 썼잖아. 어셈블리 봐봐 -
|
|
42
|
+
컴파일러가 로드 순서 바꿨어. smp_rmb() 쓰든지, 아예 이 멍청한
|
|
43
|
+
락 없이 다시 설계해."
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Maskweaver가 이걸 가능하게 합니다.** AI 어시스턴트에 전문가 페르소나(가면)를 씌워 깊은 도메인 지식과 독특한 사고방식을 부여합니다.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 설치
|
|
51
|
+
|
|
52
|
+
### 빠른 설치
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# npm
|
|
56
|
+
npm install maskweaver
|
|
57
|
+
|
|
58
|
+
# bun
|
|
59
|
+
bun add maskweaver
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### OpenCode 플러그인 설정
|
|
63
|
+
|
|
64
|
+
OpenCode 설정에 추가하면 끝!
|
|
65
|
+
|
|
66
|
+
**전역** (`~/.config/opencode/opencode.json`):
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"plugin": ["maskweaver"]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**또는 프로젝트별** (프로젝트 루트의 `opencode.json`):
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"plugin": ["maskweaver"]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
> 참고: OpenCode는 npm 패키지를 이름으로 설치합니다. `maskweaver`를 사용하세요 (`maskweaver/plugin` 아님).
|
|
81
|
+
|
|
82
|
+
OpenCode가 시작 시 자동으로 `~/.cache/opencode/node_modules/`에 플러그인을 설치합니다.
|
|
83
|
+
|
|
84
|
+
**Windows:** `%USERPROFILE%\.config\opencode\opencode.json`
|
|
85
|
+
|
|
86
|
+
### 완료 알림 소리 (선택)
|
|
87
|
+
|
|
88
|
+
Maskweaver는 생성이 끝나서 세션이 idle 상태가 되면(`session.idle`) 알림 소리를 재생할 수 있습니다.
|
|
89
|
+
|
|
90
|
+
`.opencode/maskweaver.json`(프로젝트) 또는 `~/.config/opencode/maskweaver.json`(전역)에 설정하세요:
|
|
91
|
+
|
|
92
|
+
```jsonc
|
|
93
|
+
{
|
|
94
|
+
"notifications": {
|
|
95
|
+
"completionSound": {
|
|
96
|
+
"enabled": true
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
끄려면:
|
|
103
|
+
|
|
104
|
+
```jsonc
|
|
105
|
+
{
|
|
106
|
+
"notifications": {
|
|
107
|
+
"completionSound": {
|
|
108
|
+
"enabled": false
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 설치된 버전 확인
|
|
115
|
+
|
|
116
|
+
Maskweaver 버전을 확인하는 여러 방법:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# CLI (터미널)
|
|
120
|
+
maskweaver --version
|
|
121
|
+
# 또는
|
|
122
|
+
maskweaver -V
|
|
123
|
+
|
|
124
|
+
# npm
|
|
125
|
+
npm list maskweaver
|
|
126
|
+
|
|
127
|
+
# OpenCode 채팅 내에서
|
|
128
|
+
# maskweaver_status 도구를 사용하거나:
|
|
129
|
+
/weave help
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// 프로그래밍 방식 (Node.js / TypeScript)
|
|
134
|
+
import { VERSION } from 'maskweaver';
|
|
135
|
+
console.log(VERSION); // "0.7.29"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 빠른 시작
|
|
141
|
+
|
|
142
|
+
### 첫 사용
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# AI 어시스턴트 채팅에서:
|
|
146
|
+
@maskweaver 린 토발즈 가면으로 이 C 코드 리뷰해줘
|
|
147
|
+
|
|
148
|
+
# 또는 더미인간에게 위임:
|
|
149
|
+
@dummy-human 린 토발즈 가면으로 멀티스레딩 코드 리뷰
|
|
150
|
+
@dummy-flash "unsafe" 들어간 파일 전부 찾아줘
|
|
151
|
+
@dummy-premium 이 모놀리스를 마이크로서비스로 설계해줘
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 기능
|
|
157
|
+
|
|
158
|
+
### 🎭 전문가 페르소나 (가면)
|
|
159
|
+
|
|
160
|
+
전설적인 개발자의 인격을 AI에 적용:
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
# masks/software-engineering/linus-torvalds.yaml
|
|
164
|
+
profile:
|
|
165
|
+
name: Linus Torvalds
|
|
166
|
+
expertise:
|
|
167
|
+
- 커널 수준 시스템 프로그래밍
|
|
168
|
+
- 성능 최적화
|
|
169
|
+
- 메모리 관리 및 동시성
|
|
170
|
+
|
|
171
|
+
thinkingStyle: |
|
|
172
|
+
상향식, 실용적 접근. 이론이 아닌 코드부터.
|
|
173
|
+
복잡함을 무자비하게 제거.
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**현재 가면:**
|
|
177
|
+
- 🐧 **린 토발즈** - 시스템, C, 리눅스, 성능
|
|
178
|
+
- 🏗️ **마틴 파울러** - 아키텍처, 리팩토링, 패턴
|
|
179
|
+
- 🧪 **켄트 벡** - TDD, XP, 테스팅
|
|
180
|
+
- 🧠 **앤드류 응** - ML/AI 시스템
|
|
181
|
+
- ⚛️ **댄 아브라모프** - React, 프론트엔드 아키텍처
|
|
182
|
+
|
|
183
|
+
### 🤖 더미인간 시스템
|
|
184
|
+
|
|
185
|
+
비용 효율적인 멀티 에이전트 워크플로우를 위한 스마트 서브에이전트:
|
|
186
|
+
|
|
187
|
+
| 에이전트 | 모델 등급 | 비용 | 최적 용도 |
|
|
188
|
+
|---------|----------|------|-----------|
|
|
189
|
+
| `@dummy-flash` | 빠름 | 💰 | 파일 검색, 요약, 간단한 작업 |
|
|
190
|
+
| `@dummy-human` | 균형 | 💰💰 | 코드 작성, 리뷰, 일반 작업 |
|
|
191
|
+
| `@dummy-premium` | 강력 | 💰💰💰 | 아키텍처, 복잡한 디버깅 |
|
|
192
|
+
|
|
193
|
+
### 🧵 Weave 워크플로우
|
|
194
|
+
|
|
195
|
+
**Phase 기반 개발** — "AI가 검증하고, 유저가 확인한다"
|
|
196
|
+
|
|
197
|
+
Weave는 Maskweaver의 핵심 워크플로우입니다. 작업을 테스트 가능한 Phase로 나누고, 전문가 마스크를 자동 선택하며, 유저 전달 전 구조화된 검증 단계를 제공합니다.
|
|
198
|
+
|
|
199
|
+
#### 명령어
|
|
200
|
+
|
|
201
|
+
| 명령어 | 설명 |
|
|
202
|
+
|--------|------|
|
|
203
|
+
| `/weave init` | Weave 초기화 (프로젝트당 1회) |
|
|
204
|
+
| `/weave prepare [docs]` | research + spec + plan을 한 번에 생성 (큰 계획은 자동 분할) |
|
|
205
|
+
| `/weave refine-plan` | `tasks/plan-notes.md` 지시문을 active plan에 반영 |
|
|
206
|
+
| `/weave approve` | 구현 전 사람이 계획 승인(게이트) |
|
|
207
|
+
| `/weave craft [P#]` | Phase 실행 컨텍스트/가이드 생성 |
|
|
208
|
+
| `/weave build` | 자율 빌드 루프 (`action=run/status/stop/list/resume/sync`) |
|
|
209
|
+
| `/weave verify` | 빌드/테스트 검증 실행 (자동 감지) |
|
|
210
|
+
| `/weave worktree ...` | git worktree 기반 병렬 작업 관리 |
|
|
211
|
+
| `/weave status` | 프로젝트 진행 상황 및 통계 확인 |
|
|
212
|
+
| `/weave agents` | 에이전트 파일 동기화 또는 설정 초기화 (`sync=true` / `init=true`) |
|
|
213
|
+
| `/weave troubleshoot` | 글로벌 지식 검색 (`record=true`로 솔루션 저장) |
|
|
214
|
+
| `/weave archive` | 검증된 변경사항 아카이브 |
|
|
215
|
+
| `/weave help` | 도움말 표시 |
|
|
216
|
+
|
|
217
|
+
> Tip: OpenCode 채팅에서는 `/weave ...` 형태로 실행하고, 내부적으로는 `weave command=...` 도구 호출로 매핑됩니다.
|
|
218
|
+
|
|
219
|
+
#### 워크플로우
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
0. INIT (1회): /weave init
|
|
223
|
+
↓
|
|
224
|
+
1. PLAN: /weave prepare docs/
|
|
225
|
+
- research + spec + phase plan을 한 번에 생성 (큰 계획은 자동 분할)
|
|
226
|
+
↓
|
|
227
|
+
2. REFINE (선택): /weave refine-plan
|
|
228
|
+
- tasks/plan-notes.md 기반 계획 정제
|
|
229
|
+
↓
|
|
230
|
+
3. APPROVAL GATE: /weave approve
|
|
231
|
+
- craft 실행 전 필수 승인
|
|
232
|
+
↓
|
|
233
|
+
4. CRAFT: /weave craft
|
|
234
|
+
- Phase 실행 계획과 다음 액션 안내 생성
|
|
235
|
+
- 구현/검증 후 approve로 phase 완료 처리
|
|
236
|
+
- `/weave verify`로 빌드/테스트 검증 가능
|
|
237
|
+
↓
|
|
238
|
+
5. HANDOFF: 유저가 UX/의도 확인 후 다음 Phase로 진행
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### 다층 AI 검증 시스템
|
|
242
|
+
|
|
243
|
+
유저에게 전달하기 전, AI가 다음 검증 레이어를 실행합니다:
|
|
244
|
+
|
|
245
|
+
| 레이어 | 유형 | 도구 |
|
|
246
|
+
|--------|------|------|
|
|
247
|
+
| 1️⃣ TypeCheck | 빌드 | `tsc --noEmit` |
|
|
248
|
+
| 2️⃣ Lint | 빌드 | `eslint` |
|
|
249
|
+
| 3️⃣ Build | 빌드 | `npm run build` |
|
|
250
|
+
| 4️⃣ Unit Tests | 테스트 | `jest` / `vitest` |
|
|
251
|
+
| 5️⃣ E2E Tests | 테스트 | **Playwright** |
|
|
252
|
+
| 6️⃣ Screenshot | 시각 | Playwright / 브라우저 캡처 |
|
|
253
|
+
| 7️⃣ API Check | API | `fetch` 헬스 체크 |
|
|
254
|
+
| 8️⃣ A11y | 접근성 | `axe-core` |
|
|
255
|
+
| 0️⃣ GDC Check | 설계 | `gdc check --machine` |
|
|
256
|
+
|
|
257
|
+
#### GDC 통합 (Graph-Driven Codebase)
|
|
258
|
+
|
|
259
|
+
Weave는 [GDC](https://github.com/ulgerang/gdc)(Graph-Driven Codebase)와 통합되어 리서치 품질을 향상시키고 설계 시점 검증 게이트를 추가합니다:
|
|
260
|
+
|
|
261
|
+
**리서치 강화:**
|
|
262
|
+
- `.gdc` 워크스페이스 자동 감지
|
|
263
|
+
- GDC `stats`, `graph`, `check` 결과를 `tasks/research.md`에 포함
|
|
264
|
+
- 그래프 엣지 기반 의존성 영향 범위(Blast Radius) 분석
|
|
265
|
+
- 기능 키워드와 매칭된 재사용 후보 노드
|
|
266
|
+
- 새 보고서 섹션: `GDC Node Coverage`, `Dependency Blast Radius`, `Existing Spec vs Implementation Drift`, `Candidate Reuse Nodes`
|
|
267
|
+
|
|
268
|
+
**Pre-Verify 게이트:**
|
|
269
|
+
GDC가 감지되면 `weave verify`와 `weave flow`가 자동으로 실행:
|
|
270
|
+
1. `gdc sync --machine` - 스펙과 구현 동기화
|
|
271
|
+
2. `gdc check --machine` - 스펙/구현 일치성 검증
|
|
272
|
+
|
|
273
|
+
GDC check의 블로킹 에러는 검증을 중단시킵니다(`strictVerify` 모드로 설정 가능).
|
|
274
|
+
|
|
275
|
+
**설정** (`maskweaver.config.json`):
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"gdc": {
|
|
279
|
+
"enabled": "auto",
|
|
280
|
+
"strictVerify": false,
|
|
281
|
+
"autoSyncOnPrepare": true
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
- `enabled`: `true` | `false` | `"auto"` (기본값: `.gdc` 디렉터리 자동 감지)
|
|
287
|
+
- `strictVerify`: `true`면 GDC check 실패 시 검증 차단; `false`면 경고 후 계속 진행
|
|
288
|
+
- `autoSyncOnPrepare`: `weave prepare` 시 `gdc sync` 실행
|
|
289
|
+
|
|
290
|
+
#### 마스크 자동 선택
|
|
291
|
+
|
|
292
|
+
AI가 각 작업에 가장 적합한 전문가를 자동으로 선택합니다:
|
|
293
|
+
|
|
294
|
+
| 작업 유형 | 자동 선택 마스크 |
|
|
295
|
+
|----------|-----------------|
|
|
296
|
+
| 아키텍처/설계 | 🏗️ 마틴 파울러 |
|
|
297
|
+
| 테스트/TDD | 🧪 켄트 벡 |
|
|
298
|
+
| React/프론트엔드 | ⚛️ 댄 아브라모프 |
|
|
299
|
+
| 성능/시스템 | 🐧 린 토발즈 |
|
|
300
|
+
| ML/AI | 🧠 앤드류 응 |
|
|
301
|
+
|
|
302
|
+
#### 글로벌 지식 베이스 (프로젝트 간 RAG)
|
|
303
|
+
|
|
304
|
+
트러블슈팅 솔루션이 전역으로 저장되어 모든 프로젝트에서 공유됩니다:
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
에러 발생 → ~/.maskweaver/knowledge.sqlite 검색
|
|
308
|
+
├── 발견 → 솔루션 적용 → 재시도
|
|
309
|
+
└── 미발견 → 직접 해결 → 향후를 위해 솔루션 기록
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 🧠 메모리 시스템
|
|
313
|
+
|
|
314
|
+
과거 대화, 결정, 가면 효과를 기억:
|
|
315
|
+
|
|
316
|
+
```typescript
|
|
317
|
+
import { memory } from 'maskweaver';
|
|
318
|
+
|
|
319
|
+
// 프로젝트 지식 인덱싱
|
|
320
|
+
await memory.indexFile('./docs/architecture.md', embedFn);
|
|
321
|
+
|
|
322
|
+
// 여러 프로바이더로 의미론적 검색:
|
|
323
|
+
const results = await memory.hybridSearch(
|
|
324
|
+
'인증은 어떻게 작동하나요?',
|
|
325
|
+
embedding,
|
|
326
|
+
{ limit: 5, minScore: 0.7 }
|
|
327
|
+
);
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**임베딩 프로바이더:**
|
|
331
|
+
- 🦙 **Ollama** - 로컬, 프라이빗 (bge-m3, nomic-embed)
|
|
332
|
+
- 🤖 **OpenAI** - text-embedding-3-large
|
|
333
|
+
- 🚀 **VoyageAI** - 코드 특화 임베딩!
|
|
334
|
+
- 🔀 **OpenRouter** - 여러 프로바이더 접근
|
|
335
|
+
- 📝 **Text-only** - 임베딩 없음, 순수 FTS5
|
|
336
|
+
|
|
337
|
+
### 🗂️ 컨텍스트 시스템
|
|
338
|
+
|
|
339
|
+
파일 연결로 장기 실행 기능 추적:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# 기능 시작
|
|
343
|
+
@context start name="oauth-login" goal="OAuth2 플로우 구현"
|
|
344
|
+
|
|
345
|
+
# 기능 컨텍스트에 파일 추가
|
|
346
|
+
@context add file="src/auth/oauth.ts"
|
|
347
|
+
|
|
348
|
+
# 상태 확인
|
|
349
|
+
@context status
|
|
350
|
+
|
|
351
|
+
# 완료 표시
|
|
352
|
+
@context done
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### 🔄 회고 시스템
|
|
356
|
+
|
|
357
|
+
각 세션 후 가면 효과 평가:
|
|
358
|
+
|
|
359
|
+
```typescript
|
|
360
|
+
{
|
|
361
|
+
"trigger": "session_end",
|
|
362
|
+
"masksUsed": [
|
|
363
|
+
{
|
|
364
|
+
"name": "linus-torvalds",
|
|
365
|
+
"task": "멀티스레딩 코드 리뷰",
|
|
366
|
+
"effectiveness": 9.5
|
|
367
|
+
}
|
|
368
|
+
],
|
|
369
|
+
"wellDone": ["치명적 레이스 컨디션 3개 발견"],
|
|
370
|
+
"lessons": ["린 토발즈 가면은 동시성 리뷰에 탁월"]
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## 📦 패키지 구조
|
|
377
|
+
|
|
378
|
+
Maskweaver는 모듈식 exports를 가진 단일 npm 패키지입니다:
|
|
379
|
+
|
|
380
|
+
```typescript
|
|
381
|
+
// 기본 export - OpenCode 플러그인
|
|
382
|
+
import maskweaver from 'maskweaver';
|
|
383
|
+
|
|
384
|
+
// Named exports - 모듈 네임스페이스
|
|
385
|
+
import { core, memory, context, retrospect, verify, weave } from 'maskweaver';
|
|
386
|
+
|
|
387
|
+
// 서브경로 imports - 직접 모듈 접근
|
|
388
|
+
import { hybridSearch } from 'maskweaver/memory';
|
|
389
|
+
import { createFeature } from 'maskweaver/context';
|
|
390
|
+
import { MaskLoader } from 'maskweaver/core';
|
|
391
|
+
import { WeaveOrchestrator, GlobalKnowledge } from 'maskweaver/weave';
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
**모듈:**
|
|
395
|
+
- `maskweaver/core` - 가면 로딩, 검증 (YAML/JSON)
|
|
396
|
+
- `maskweaver/memory` - 임베딩 + 벡터 검색 (5개 프로바이더)
|
|
397
|
+
- `maskweaver/context` - 기능 기반 작업 추적
|
|
398
|
+
- `maskweaver/verify` - 교차 가면 코드 리뷰
|
|
399
|
+
- `maskweaver/retrospect` - 세션 효과 분석
|
|
400
|
+
- `maskweaver/weave` - Phase 기반 개발 워크플로우
|
|
401
|
+
- `maskweaver/gdc` - GDC(Graph-Driven Codebase) 통합 유틸리티
|
|
402
|
+
- `maskweaver/plugin` - OpenCode 플러그인 엔트리 포인트
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## 🧵 Weave 사용 가이드
|
|
407
|
+
|
|
408
|
+
### 0단계: 초기화 (프로젝트당 1회)
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
/weave init
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### 1단계: 플랜 생성
|
|
415
|
+
|
|
416
|
+
research + spec + plan을 한 번에 생성:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
/weave prepare docs/
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
그 다음 계획을 승인합니다:
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
/weave approve
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
AI가 수행하는 작업:
|
|
429
|
+
1. 경로 내 모든 문서 읽기
|
|
430
|
+
2. 유사한 과거 프로젝트를 메모리에서 검색
|
|
431
|
+
3. 필요시 명확화 질문
|
|
432
|
+
4. 승인을 위한 **Phase 계획서** 제시
|
|
433
|
+
|
|
434
|
+
출력 예시:
|
|
435
|
+
```markdown
|
|
436
|
+
## 📋 실행 계획서
|
|
437
|
+
|
|
438
|
+
### 비전
|
|
439
|
+
AI 인사이트가 포함된 현대적 감정 일기 앱 구축
|
|
440
|
+
|
|
441
|
+
### Phase 계획
|
|
442
|
+
| Phase | 이름 | 완료 조건 | 예상 시간 |
|
|
443
|
+
|-------|------|----------|----------|
|
|
444
|
+
| P1 | 감정 선택 UI | 유저가 감정을 선택할 수 있음 | 2-3시간 |
|
|
445
|
+
| P2 | 데이터 저장 | 감정이 스토리지에 저장됨 | 2-3시간 |
|
|
446
|
+
| P3 | 히스토리 뷰 | 유저가 과거 기록을 볼 수 있음 | 2-3시간 |
|
|
447
|
+
|
|
448
|
+
이 계획이 괜찮으세요? 변경이 필요하면 말씀해주세요.
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
### 2단계: 계획 승인(필수)
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
/weave approve
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### 3단계: Phase 실행 계획 생성 (Craft)
|
|
458
|
+
|
|
459
|
+
승인 후 실행 시작:
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
/weave craft
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
`/weave craft`는 phase 실행 컨텍스트를 생성합니다(phase 미지정 시 다음 phase 자동 선택). 구현 반영 후 같은 명령으로 계획을 다시 확인할 수 있습니다.
|
|
466
|
+
|
|
467
|
+
### 4단계: 구현 진행
|
|
468
|
+
|
|
469
|
+
```txt
|
|
470
|
+
weave command=craft phaseId="P1"
|
|
471
|
+
weave command=verify
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
자율 빌드 루프:
|
|
475
|
+
|
|
476
|
+
```txt
|
|
477
|
+
weave command=build action=run phaseIds="P1,P2"
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### 5단계: Phase 완료 처리
|
|
481
|
+
|
|
482
|
+
```txt
|
|
483
|
+
weave command=verify
|
|
484
|
+
weave command=approve
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### 6단계: 핸드오프 & 검증
|
|
488
|
+
|
|
489
|
+
모든 검증이 통과되면:
|
|
490
|
+
|
|
491
|
+
```markdown
|
|
492
|
+
## ✅ Phase P1 검증 완료!
|
|
493
|
+
|
|
494
|
+
### 🤖 AI 테스트 결과
|
|
495
|
+
| 테스트 | 결과 |
|
|
496
|
+
|--------|------|
|
|
497
|
+
| Build | ✅ 성공 |
|
|
498
|
+
| Unit Tests | ✅ 15/15 |
|
|
499
|
+
| Lint | ✅ 통과 |
|
|
500
|
+
|
|
501
|
+
### 🎭 사용된 마스크
|
|
502
|
+
- 켄트 벡 (테스트)
|
|
503
|
+
- 댄 아브라모프 (React 컴포넌트)
|
|
504
|
+
|
|
505
|
+
### 🔗 접속
|
|
506
|
+
http://localhost:5173
|
|
507
|
+
|
|
508
|
+
### 👤 사람만 판단 가능한 것
|
|
509
|
+
- [ ] 느낌이 의도대로인가요?
|
|
510
|
+
- [ ] 사용성이 좋은가요?
|
|
511
|
+
- [ ] 원하던 기능이 맞나요?
|
|
512
|
+
|
|
513
|
+
**[승인]** **[변경 요청]** **[나중에]**
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### 6단계: 언제든지 상태 확인
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
/weave status
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
출력:
|
|
523
|
+
```markdown
|
|
524
|
+
## 📊 Weave 진행 상황
|
|
525
|
+
|
|
526
|
+
**프로젝트**: 감정 일기 앱
|
|
527
|
+
**진행률**: 40%
|
|
528
|
+
|
|
529
|
+
[████████░░░░░░░░░░░░] 2/5
|
|
530
|
+
|
|
531
|
+
### Phases
|
|
532
|
+
✅ **P1**: 감정 선택 UI (2.5h) [kent-beck, dan-abramov]
|
|
533
|
+
🔄 **P2**: 데이터 저장
|
|
534
|
+
⏳ **P3**: 히스토리 뷰
|
|
535
|
+
⏳ **P4**: 통계
|
|
536
|
+
⏳ **P5**: 테마 설정
|
|
537
|
+
|
|
538
|
+
### 글로벌 지식 통계
|
|
539
|
+
- 총 트러블슈팅 기록: 47개
|
|
540
|
+
- 이 프로젝트에서 활용: 3개
|
|
541
|
+
- 새로 기록됨: 1개
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
---
|
|
545
|
+
|
|
546
|
+
## 🎭 가면 만들기
|
|
547
|
+
|
|
548
|
+
가면은 간단한 YAML 파일입니다:
|
|
549
|
+
|
|
550
|
+
```yaml
|
|
551
|
+
# masks/my-expert.yaml
|
|
552
|
+
metadata:
|
|
553
|
+
id: my-expert
|
|
554
|
+
version: '1.0'
|
|
555
|
+
language: ko
|
|
556
|
+
|
|
557
|
+
profile:
|
|
558
|
+
name: 에이다 러브레이스
|
|
559
|
+
tagline: 컴퓨팅의 선구자 - 최초의 프로그래머
|
|
560
|
+
|
|
561
|
+
expertise:
|
|
562
|
+
- 알고리즘 설계
|
|
563
|
+
- 수학적 사고
|
|
564
|
+
- 해석 기관
|
|
565
|
+
|
|
566
|
+
thinkingStyle: |
|
|
567
|
+
수학적 엄밀함과 시적 상상력을 결합합니다.
|
|
568
|
+
다른 사람들이 놓치는 패턴을 봅니다.
|
|
569
|
+
|
|
570
|
+
behavior:
|
|
571
|
+
systemPrompt: |
|
|
572
|
+
당신은 최초의 컴퓨터 프로그래머 에이다 러브레이스입니다.
|
|
573
|
+
|
|
574
|
+
알고리즘을 시로 봅니다 - 우아하고, 정확하고, 아름답게.
|
|
575
|
+
수학적 변환과 논리적 흐름의 관점에서 생각합니다.
|
|
576
|
+
|
|
577
|
+
communicationStyle:
|
|
578
|
+
tone: 사려깊은
|
|
579
|
+
verbosity: 적당한
|
|
580
|
+
technicalDepth: 전문가
|
|
581
|
+
|
|
582
|
+
usage:
|
|
583
|
+
suitableFor:
|
|
584
|
+
- 알고리즘 설계 및 최적화
|
|
585
|
+
- 수학적 문제 해결
|
|
586
|
+
- 코드의 패턴 인식
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
---
|
|
590
|
+
|
|
591
|
+
## 🌍 다국어
|
|
592
|
+
|
|
593
|
+
지원 준비 완료:
|
|
594
|
+
- 🇺🇸 영어
|
|
595
|
+
- 🇰🇷 한국어
|
|
596
|
+
- 🇨🇳 중국어 *(준비중)*
|
|
597
|
+
- 🇯🇵 일본어 *(준비중)*
|
|
598
|
+
|
|
599
|
+
가면은 여러 언어 버전을 가질 수 있습니다:
|
|
600
|
+
```
|
|
601
|
+
masks/
|
|
602
|
+
├── linus-torvalds.en.yaml
|
|
603
|
+
├── linus-torvalds.ko.yaml
|
|
604
|
+
└── linus-torvalds.zh.yaml
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
---
|
|
608
|
+
|
|
609
|
+
## 🤝 기여하기
|
|
610
|
+
|
|
611
|
+
도움이 필요합니다!
|
|
612
|
+
|
|
613
|
+
### 가면 추가
|
|
614
|
+
|
|
615
|
+
`masks/`에 YAML 파일을 만들고 PR을 제출하세요:
|
|
616
|
+
- ✅ 실제 전문성 (도메인 지식)
|
|
617
|
+
- ✅ 독특한 인격 (사고 방식)
|
|
618
|
+
- ✅ 명확한 사용 사례 (언제 사용할지)
|
|
619
|
+
- ✅ 예시 (예상 동작)
|
|
620
|
+
|
|
621
|
+
### 버그 리포트
|
|
622
|
+
|
|
623
|
+
다음 내용으로 이슈를 열어주세요:
|
|
624
|
+
1. 무엇을 시도했는지
|
|
625
|
+
2. 무슨 일이 일어났는지
|
|
626
|
+
3. 무엇을 예상했는지
|
|
627
|
+
|
|
628
|
+
자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## 📄 라이선스
|
|
633
|
+
|
|
634
|
+
MIT - [LICENSE](LICENSE) 참조
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
<p align="center">
|
|
639
|
+
<sub>🎭와 함께 제작 by <a href="https://github.com/ulgerang">ULJI SOFT</a></sub>
|
|
640
|
+
</p>
|