maskweaver 0.8.16 → 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 +20 -17
- 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/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
|
@@ -1,158 +1,112 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Weave 워크플로우 도움말
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /weave-help - Weave 워크플로우 도움말
|
|
6
|
-
|
|
7
|
-
## Weave란?
|
|
8
|
-
|
|
9
|
-
Maskweaver의 **Phase-Driven Development** 워크플로우입니다.
|
|
10
|
-
"AI가 검증하고, 유저가 확인한다"
|
|
11
|
-
|
|
12
|
-
**멀티 플랜**: 하나의 프로젝트에서 여러 플랜을 동시에 관리할 수 있습니다.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## 버전 확인
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
44
|
-
| `/weave-
|
|
45
|
-
| `/weave-
|
|
46
|
-
| `/weave-
|
|
47
|
-
| `/weave-
|
|
48
|
-
| `/weave-
|
|
49
|
-
| `/weave-
|
|
50
|
-
| `/weave-
|
|
51
|
-
| `/weave-
|
|
52
|
-
| `/weave-
|
|
53
|
-
| `/weave-
|
|
54
|
-
| `/weave-
|
|
55
|
-
| `/weave-
|
|
56
|
-
| `/weave-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/weave-
|
|
66
|
-
↓
|
|
67
|
-
/weave-
|
|
68
|
-
↓
|
|
69
|
-
/weave-
|
|
70
|
-
↓
|
|
71
|
-
/weave-
|
|
72
|
-
↓
|
|
73
|
-
/weave-
|
|
74
|
-
↓
|
|
75
|
-
/weave-
|
|
76
|
-
↓
|
|
77
|
-
/weave-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
### 마스크 자동 선택
|
|
115
|
-
|
|
116
|
-
작업 맥락에 따라 전문가 마스크가 자동 선택됩니다:
|
|
117
|
-
- 아키텍처 → Martin Fowler
|
|
118
|
-
- 테스트 → Kent Beck
|
|
119
|
-
- React → Dan Abramov
|
|
120
|
-
- 성능 → Linus Torvalds
|
|
121
|
-
|
|
122
|
-
### 글로벌 지식 공유
|
|
123
|
-
|
|
124
|
-
트러블슈팅 경험이 프로젝트 간 공유됩니다:
|
|
125
|
-
- 에러 발생 시 → 과거 솔루션 검색
|
|
126
|
-
- 해결 시 → 새 솔루션 기록
|
|
127
|
-
|
|
128
|
-
### 다층 자동 검증
|
|
129
|
-
|
|
130
|
-
Phase 실행 시 자동 검증:
|
|
131
|
-
1. TypeCheck → Lint → Build
|
|
132
|
-
2. Unit Tests → E2E Tests
|
|
133
|
-
3. Screenshot → A11y Check
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## 빠른 시작
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
# 1. 초기화 (프로젝트당 1회)
|
|
141
|
-
/weave-init
|
|
142
|
-
|
|
143
|
-
# 2. (추천) spec + plan을 한 번에 생성
|
|
144
|
-
/weave-prepare wiki/
|
|
145
|
-
|
|
146
|
-
# 3. 계획 검토 후 승인 게이트 통과
|
|
147
|
-
/weave-refine-plan # (선택) notes 반영
|
|
148
|
-
/weave-approve-plan
|
|
149
|
-
|
|
150
|
-
# 4. 다음 Phase 자동 선택 실행
|
|
151
|
-
/weave-craft
|
|
152
|
-
|
|
153
|
-
# 5. 새 기능 추가? 새 플랜!
|
|
154
|
-
/weave-design docs/new-feature
|
|
155
|
-
|
|
156
|
-
# 6. 플랜 사이 전환
|
|
157
|
-
/weave-switch emotion-diary
|
|
158
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: Weave 워크플로우 도움말
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-help - Weave 워크플로우 도움말
|
|
6
|
+
|
|
7
|
+
## Weave란?
|
|
8
|
+
|
|
9
|
+
Maskweaver의 **Phase-Driven Development** 워크플로우입니다.
|
|
10
|
+
"AI가 검증하고, 유저가 확인한다"
|
|
11
|
+
|
|
12
|
+
**멀티 플랜**: 하나의 프로젝트에서 여러 플랜을 동시에 관리할 수 있습니다.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 버전 확인
|
|
17
|
+
|
|
18
|
+
| 방법 | 명령어 |
|
|
19
|
+
|------|--------|
|
|
20
|
+
| CLI | `maskweaver --version` 또는 `maskweaver -V` |
|
|
21
|
+
| npm | `npm list maskweaver` |
|
|
22
|
+
| 채팅 내 | `maskweaver_status` 도구 사용 |
|
|
23
|
+
| Weave | `/weave help` |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 핵심 철학
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
1. 테스트 먼저 (Protect Before Change)
|
|
31
|
+
2. 작게 자주 (Small & Often)
|
|
32
|
+
3. 동작이 정답 (Working > Perfect)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 통합 후 명령어 목록 (v0.9+)
|
|
38
|
+
|
|
39
|
+
| 명령어 | 설명 |
|
|
40
|
+
|--------|------|
|
|
41
|
+
| `/weave-init` | Weave 초기화 (프로젝트당 1회) |
|
|
42
|
+
| `/weave-map [deep]` | 코드베이스 구조 분석 + GDC 그래프 연동 |
|
|
43
|
+
| `/weave-interview [docs]` | 코드베이스 맵 기반 멀티스텝 요구사항 인터뷰 |
|
|
44
|
+
| `/weave-prepare [docs]` | **research + spec + plan을 한 번에 생성** (큰 계획은 자동 분할) |
|
|
45
|
+
| `/weave-refine-plan` | `tasks/plan-notes.md` 지시문을 plan에 자동 반영 |
|
|
46
|
+
| `/weave-approve` | 구현 전 계획 승인 게이트 통과 |
|
|
47
|
+
| `/weave-craft [phase-id]` | 활성 플랜의 Phase 실행 준비 (실행 컨텍스트 생성) |
|
|
48
|
+
| `/weave-build [action]` | **자율 빌드 루프** — run, status, stop, list, resume, sync |
|
|
49
|
+
| `/weave-status` | 전체 플랜 목록 + 진행 상황 |
|
|
50
|
+
| `/weave-worktree` | git worktree 기반 병렬 작업 관리 |
|
|
51
|
+
| `/weave-verify` | 빌드/테스트 검증 실행 (프로젝트 유형 자동 감지) |
|
|
52
|
+
| `/weave-archive` | 검증된 변경사항 아카이브 |
|
|
53
|
+
| `/weave-troubleshoot [error]` | 글로벌 지식 검색 / 솔루션 기록 (`--record`) |
|
|
54
|
+
| `/weave-repair` | plan YAML 자동 검사 및 수리 |
|
|
55
|
+
| `/weave-agents [flags]` | 에이전트 동기화 (`--sync`) / 설정 초기화 (`--init`) |
|
|
56
|
+
| `/weave-help` | 이 도움말 |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 워크플로우
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
/weave-init ← 프로젝트 초기화 (1회)
|
|
64
|
+
↓
|
|
65
|
+
/weave-prepare docs/ ← research + spec + plan 한 번에 생성
|
|
66
|
+
↓
|
|
67
|
+
/weave-refine-plan ← (선택) plan-notes 기반 자동 정제
|
|
68
|
+
↓
|
|
69
|
+
/weave-approve ← 구현 전 계획 승인 (필수)
|
|
70
|
+
↓
|
|
71
|
+
/weave-craft ← 다음 Phase 자동 선택 실행 준비
|
|
72
|
+
↓
|
|
73
|
+
/weave-build ← 자율 빌드 루프 실행
|
|
74
|
+
↓
|
|
75
|
+
/weave-verify ← 검증
|
|
76
|
+
↓
|
|
77
|
+
/weave-archive ← 아카이브
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 파일 구조
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
.opencode/weave/
|
|
86
|
+
├── state.yaml ← 활성 플랜 추적
|
|
87
|
+
├── specs/
|
|
88
|
+
│ └── *.yaml ← baseline spec
|
|
89
|
+
└── plans/
|
|
90
|
+
└── *.yaml ← 플랜
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 마이그레이션 노트 (v0.9)
|
|
96
|
+
|
|
97
|
+
| 기존 명령어 | 새 명령어 | 비고 |
|
|
98
|
+
|-------------|-----------|------|
|
|
99
|
+
| `approve-plan` | `approve` | alias로 v0.9까지 동작 |
|
|
100
|
+
| `build-resume` | `build --resume` | alias로 v0.9까지 동작 |
|
|
101
|
+
| `loop-run` | `build` | alias로 v0.9까지 동작 |
|
|
102
|
+
| `loop-status` | `build --status` | alias로 v0.9까지 동작 |
|
|
103
|
+
| `loop-stop` | `build --stop` | alias로 v0.9까지 동작 |
|
|
104
|
+
| `loop-list` | `build --list` | alias로 v0.9까지 동작 |
|
|
105
|
+
| `loop-sync` | `build --sync` | alias로 v0.9까지 동작 |
|
|
106
|
+
| `record` | `troubleshoot --record` | alias로 v0.9까지 동작 |
|
|
107
|
+
| `sync-agents` | `agents --sync` | alias로 v0.9까지 동작 |
|
|
108
|
+
| `init-config` | `agents --init` | alias로 v0.9까지 동작 |
|
|
109
|
+
| `research` | `prepare` | deprecated alias (v0.9 경고) |
|
|
110
|
+
| `spec` | `prepare` | deprecated alias (v0.9 경고) |
|
|
111
|
+
| `design` | `prepare` | deprecated alias (v0.9 경고) |
|
|
112
|
+
| `flow` | `prepare` → `approve` → `craft` | deprecated alias (v0.9 경고) |
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 코드베이스 맵 결과를 바탕으로 사용자 요구사항 인터뷰 수행
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-interview - 요구사항 인터뷰
|
|
6
|
+
|
|
7
|
+
## 개요
|
|
8
|
+
|
|
9
|
+
`/weave-map` 분석 결과를 바탕으로 **사용자와의 멀티스텝 인터뷰**를 수행합니다.
|
|
10
|
+
코드베이스의 현재 상태와 구조적 변경 가능성을 파악하고, 명확해질 때까지 질문을 반복합니다.
|
|
11
|
+
|
|
12
|
+
**사용법**:
|
|
13
|
+
- `/weave-interview` — 기본 인터뷰 (코드베이스 맵 기반)
|
|
14
|
+
- `/weave-interview docs/` — 문서 경로를 함께 참조하며 인터뷰
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 데이터 로드 방법 (필수)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
1. .opencode/weave/maps/map-result.yaml 로드 (map 먼저 실행되어 있어야 함)
|
|
22
|
+
2. map 결과가 없으면: 자동으로 기본 map 분석 수행 후 진행
|
|
23
|
+
3. (선택) docsPath의 문서 로드
|
|
24
|
+
4. 코드베이스 기술 스택 및 구조적 이슈 확인
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 입력
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
docsPath: "docs/" # (선택) 요구사항 문서 경로
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 동작 흐름
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
1. 코드베이스 맵 결과 로드 (없으면 자동 생성)
|
|
41
|
+
2. 구조적 변경 감지 (structural changes)
|
|
42
|
+
- 현재 상태 vs 제안된 변경
|
|
43
|
+
- Breaking change 여부
|
|
44
|
+
- 영향받는 파일 목록
|
|
45
|
+
3. 사용자에게 질문 생성
|
|
46
|
+
- 변경 영역에 대한 의도 확인
|
|
47
|
+
- 우선순위 및 범위 조정
|
|
48
|
+
4. 충분한 명확성 달성 시 인터뷰 종료
|
|
49
|
+
- 종료 기준: 모든 structural changes에 대해 agreed 상태
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 출력 예시
|
|
55
|
+
|
|
56
|
+
### 인터뷰 진행 중
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
## 🎤 Weave Interview
|
|
60
|
+
|
|
61
|
+
**기반 맵**: `map-20250428-a1b2`
|
|
62
|
+
**프로젝트 타입**: TypeScript / React
|
|
63
|
+
|
|
64
|
+
### 감지된 구조적 변경
|
|
65
|
+
|
|
66
|
+
1. **Auth 모듈 분리**
|
|
67
|
+
- 현재: `src/lib/auth.ts` (단일 파일)
|
|
68
|
+
- 제안: `src/auth/` 디렉토리로 분리
|
|
69
|
+
- 영향: 8개 파일
|
|
70
|
+
- Breaking: ❌ 아니오
|
|
71
|
+
|
|
72
|
+
2. **Prisma → Drizzle 마이그레이션**
|
|
73
|
+
- 현재: Prisma ORM
|
|
74
|
+
- 제안: Drizzle ORM으로 전환
|
|
75
|
+
- 영향: 15개 파일
|
|
76
|
+
- Breaking: ⚠️ 예 (DB 스키마 변경)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 질문
|
|
81
|
+
|
|
82
|
+
> **Q1**: Auth 모듈 분리는 단순 코드 구조 개선인가요, 아니면 새로운 인증 기능(예: OAuth) 추가를 위한 준비인가요?
|
|
83
|
+
>
|
|
84
|
+
> 답변 후 다음 질문으로 진행합니다.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 인터뷰 완료
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
## ✅ Interview Complete
|
|
91
|
+
|
|
92
|
+
**모든 구조적 변경이 명확해졌습니다.**
|
|
93
|
+
|
|
94
|
+
| 변경 영역 | 상태 | 결정 |
|
|
95
|
+
|-----------|------|------|
|
|
96
|
+
| Auth 모듈 분리 | ✅ Agreed | 디렉토리 분리 + OAuth 확장 준비 |
|
|
97
|
+
| Prisma → Drizzle | ⏳ Pending | Phase 2로 연기 (현재는 Prisma 유지) |
|
|
98
|
+
|
|
99
|
+
### 다음 단계
|
|
100
|
+
- `/weave-design` — 결정사항을 바탕으로 계획 수립
|
|
101
|
+
- `/weave-prepare` — research + spec + plan 한 번에 생성
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 아티팩트 저장 위치
|
|
107
|
+
|
|
108
|
+
인터뷰 결과는 `.opencode/weave/interviews/`에 저장됩니다:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
.opencode/weave/interviews/
|
|
112
|
+
└── interview-{id}.yaml # 질문-답변 기록 및 structural changes 상태
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 관련 명령어
|
|
118
|
+
|
|
119
|
+
- `/weave-map` — 코드베이스 맵 생성 (인터뷰 선행 조건)
|
|
120
|
+
- `/weave-design` — 인터뷰 결과를 바탕으로 계획 수립
|
|
121
|
+
- `/weave-prepare` — 전체 워크플로우 한 번에 실행
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 코드베이스 구조를 분석하고 지식 그래프(knowledge graph) 생성
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-map - 코드베이스 맵 분석
|
|
6
|
+
|
|
7
|
+
## 개요
|
|
8
|
+
|
|
9
|
+
현재 프로젝트의 코드베이스 구조를 분석하여 **기술 스택 자동 감지**, **디렉토리 구조 분석**, **GDC 그래프 연동** 결과를 생성합니다.
|
|
10
|
+
`deep` 옵션 사용 시 `graphify-windows` 스킬을 활용한 딥 그래프 분석도 수행합니다.
|
|
11
|
+
|
|
12
|
+
**사용법**:
|
|
13
|
+
- `/weave-map` — 기본 코드베이스 분석
|
|
14
|
+
- `/weave-map --deep` — 심층 그래프 분석 (graphify-windows)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 데이터 로드 방법 (필수)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
1. 프로젝트 루트의 package.json, tsconfig.json, Cargo.toml, go.mod 등 탐지
|
|
22
|
+
2. GDC 설정 확인 (.gdc/config.yaml 또는 .opencode/gdc/)
|
|
23
|
+
3. GDC 활성화 시: gdc graph + gdc stats 명령 실행
|
|
24
|
+
4. deep 옵션 시: graphify-windows 스킬 실행
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 입력
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
deep: false # (선택) true 시 graphify-windows 딥 분석 실행
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 출력 예시
|
|
38
|
+
|
|
39
|
+
### 기본 분석
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
## 🗺️ Codebase Map
|
|
43
|
+
|
|
44
|
+
**프로젝트 타입**: TypeScript / Node.js
|
|
45
|
+
**기술 스택**: React, Next.js, Prisma, Tailwind
|
|
46
|
+
|
|
47
|
+
### 디렉토리 구조
|
|
48
|
+
```
|
|
49
|
+
src/
|
|
50
|
+
├── app/ # Next.js App Router
|
|
51
|
+
├── components/ # React 컴포넌트
|
|
52
|
+
├── lib/ # 유틸리티
|
|
53
|
+
└── db/ # Prisma 스키마
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### GDC 그래프
|
|
57
|
+
- **노드**: 42개
|
|
58
|
+
- **엣지**: 78개
|
|
59
|
+
- **커버리지**: 85% 구현, 60% 테스트
|
|
60
|
+
|
|
61
|
+
### 주요 의존성
|
|
62
|
+
- next: ^14.0
|
|
63
|
+
- react: ^18.2
|
|
64
|
+
- @prisma/client: ^5.0
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 심층 분석 (deep)
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## 🗺️ Codebase Map (Deep)
|
|
71
|
+
|
|
72
|
+
**그래프 분석 완료**
|
|
73
|
+
|
|
74
|
+
### 커뮤니티 클러스터
|
|
75
|
+
| 클러스터 | 파일 수 | 핵심 엔티티 |
|
|
76
|
+
|----------|--------|------------|
|
|
77
|
+
| C1 | 12 | User, Auth, Session |
|
|
78
|
+
| C2 | 8 | Post, Comment, Feed |
|
|
79
|
+
| C3 | 6 | Payment, Subscription |
|
|
80
|
+
|
|
81
|
+
### 구조적 이슈
|
|
82
|
+
- ⚠️ 순환 의존성: `src/lib/api.ts` ↔ `src/lib/auth.ts`
|
|
83
|
+
- ⚠️ 고립 노드: `src/utils/legacy-helpers.ts` (참조 없음)
|
|
84
|
+
|
|
85
|
+
### 추천 리팩토링
|
|
86
|
+
1. `api.ts`와 `auth.ts` 순환 의존성 해소
|
|
87
|
+
2. `legacy-helpers.ts` 제거 또는 통합
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 아티팩트 저장 위치
|
|
93
|
+
|
|
94
|
+
분석 결과는 `.opencode/weave/maps/`에 저장됩니다:
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
.opencode/weave/maps/
|
|
98
|
+
├── map-report.yaml # 구조 분석 요약
|
|
99
|
+
├── map-result.yaml # GDC 연동 결과
|
|
100
|
+
└── graphify-report.html # deep 분석 시 생성
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 관련 명령어
|
|
106
|
+
|
|
107
|
+
- `/weave-interview` — 맵 결과를 바탕으로 사용자 인터뷰
|
|
108
|
+
- `/weave-design` — 분석 결과를 바탕으로 계획 수립
|
|
109
|
+
- `/weave-init` — weave 워크스페이스 초기화
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 글로벌 지식 검색 및 솔루션 기록
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /weave-troubleshoot - 트러블슈팅
|
|
6
|
+
|
|
7
|
+
## 개요
|
|
8
|
+
|
|
9
|
+
글로벌 지식베이스에서 유사한 문제의 해결책을 검색하거나, 새로운 해결책을 기록합니다.
|
|
10
|
+
|
|
11
|
+
**이전 명령어**: `record` (v0.9까지 deprecated alias, `--record` 플래그로 대체)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 사용법
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 해결책 검색
|
|
19
|
+
/weave-troubleshoot "Cannot find module 'xyz'"
|
|
20
|
+
|
|
21
|
+
# 새 해결책 기록
|
|
22
|
+
/weave-troubleshoot --record error="..." solution="..."
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 입력
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
error: "..." # (검색 시 필수) 검색할 에러 메시지
|
|
31
|
+
record: true # (선택) 기록 모드 활성화
|
|
32
|
+
solution: "..." # (record 시 필수) 기록할 해결책
|
|
33
|
+
context: "..." # (선택) 추가 맥락
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 출력 예시
|
|
39
|
+
|
|
40
|
+
### 검색
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
## 💡 유사한 해결책 발견
|
|
44
|
+
|
|
45
|
+
### 1. (exact, 점수: 95%)
|
|
46
|
+
**상황**: Cannot find module 'react'
|
|
47
|
+
**해결책**: npm install react react-dom
|
|
48
|
+
**효과성**: ⭐⭐⭐⭐⭐
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 기록
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
✅ 트러블슈팅 솔루션이 기록되었습니다 (ID: 42)
|
|
55
|
+
|
|
56
|
+
다음에 비슷한 에러가 발생하면 자동으로 이 해결책을 제안합니다.
|
|
57
|
+
```
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -13,5 +13,9 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { type Plugin } from '@opencode-ai/plugin';
|
|
15
15
|
export declare const MaskweaverPlugin: Plugin;
|
|
16
|
-
|
|
16
|
+
declare const _default: {
|
|
17
|
+
id: string;
|
|
18
|
+
server: Plugin;
|
|
19
|
+
};
|
|
20
|
+
export default _default;
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;EAYE;AAGF,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6yBxD,eAAO,MAAM,gBAAgB,EAAE,MAkY9B,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;EAYE;AAGF,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6yBxD,eAAO,MAAM,gBAAgB,EAAE,MAkY9B,CAAC;;;;;AAEF,wBAGE"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -504,12 +504,12 @@ function createSelectMaskTool(maskLoader, activeMask, setActiveMask) {
|
|
|
504
504
|
return `Error: Mask "${args.maskId}" not found.\nAvailable: ${available.map(m => m.id).join(', ')}`;
|
|
505
505
|
}
|
|
506
506
|
setActiveMask(mask);
|
|
507
|
-
return `✓ Mask activated: ${mask.profile.name}
|
|
508
|
-
|
|
509
|
-
"${mask.profile.tagline}"
|
|
510
|
-
|
|
511
|
-
Expertise: ${mask.profile.expertise.join(', ')}
|
|
512
|
-
|
|
507
|
+
return `✓ Mask activated: ${mask.profile.name}
|
|
508
|
+
|
|
509
|
+
"${mask.profile.tagline}"
|
|
510
|
+
|
|
511
|
+
Expertise: ${mask.profile.expertise.join(', ')}
|
|
512
|
+
|
|
513
513
|
The mask prompt will be injected into all future messages.`;
|
|
514
514
|
}
|
|
515
515
|
catch (e) {
|
|
@@ -571,11 +571,11 @@ function createMaskweaverStatusTool(maskLoader, masksDir, activeMask) {
|
|
|
571
571
|
catch (_e) { /* ignore */ }
|
|
572
572
|
}
|
|
573
573
|
const active = activeMask();
|
|
574
|
-
return `Maskweaver v${VERSION}
|
|
575
|
-
Masks directory: ${masksDir}
|
|
576
|
-
Available: ${maskLoader ? 'yes' : 'no'}
|
|
577
|
-
Total masks: ${masksCount}
|
|
578
|
-
Categories: ${categoriesCount}
|
|
574
|
+
return `Maskweaver v${VERSION}
|
|
575
|
+
Masks directory: ${masksDir}
|
|
576
|
+
Available: ${maskLoader ? 'yes' : 'no'}
|
|
577
|
+
Total masks: ${masksCount}
|
|
578
|
+
Categories: ${categoriesCount}
|
|
579
579
|
Active mask: ${active ? `${active.profile.name} (${active.metadata.id})` : 'none'}`;
|
|
580
580
|
},
|
|
581
581
|
};
|
|
@@ -889,7 +889,7 @@ export const MaskweaverPlugin = async ({ client, directory, project, worktree, $
|
|
|
889
889
|
}
|
|
890
890
|
// Slashcommand tool (handles /weave etc. on first run without restart)
|
|
891
891
|
if (isToolActive('slashcommand')) {
|
|
892
|
-
const slashcommandTool = createSlashcommandTool();
|
|
892
|
+
const slashcommandTool = createSlashcommandTool(getAssetsDir());
|
|
893
893
|
tools.slashcommand = {
|
|
894
894
|
description: slashcommandTool.description,
|
|
895
895
|
args: wrapSchema(slashcommandTool.args),
|
|
@@ -914,10 +914,10 @@ export const MaskweaverPlugin = async ({ client, directory, project, worktree, $
|
|
|
914
914
|
// System prompt transform - inject active mask
|
|
915
915
|
'experimental.chat.system.transform': async (_input, output) => {
|
|
916
916
|
if (state?.activeMask) {
|
|
917
|
-
const maskPrompt = `<ACTIVE_PERSONA>
|
|
918
|
-
You are currently embodying the "${state.activeMask.profile.name}" persona.
|
|
919
|
-
|
|
920
|
-
${buildRichPrompt(state.activeMask)}
|
|
917
|
+
const maskPrompt = `<ACTIVE_PERSONA>
|
|
918
|
+
You are currently embodying the "${state.activeMask.profile.name}" persona.
|
|
919
|
+
|
|
920
|
+
${buildRichPrompt(state.activeMask)}
|
|
921
921
|
</ACTIVE_PERSONA>`;
|
|
922
922
|
(output.system ||= []).push(maskPrompt);
|
|
923
923
|
}
|
|
@@ -972,5 +972,8 @@ ${buildRichPrompt(state.activeMask)}
|
|
|
972
972
|
},
|
|
973
973
|
};
|
|
974
974
|
};
|
|
975
|
-
export default
|
|
975
|
+
export default {
|
|
976
|
+
id: 'maskweaver',
|
|
977
|
+
server: MaskweaverPlugin,
|
|
978
|
+
};
|
|
976
979
|
//# sourceMappingURL=index.js.map
|