monol-plugin-scout 2.0.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.
Files changed (29) hide show
  1. package/.claude/plugins/marketplace.json +12 -0
  2. package/.claude/plugins/monol-plugin-scout/CLAUDE.md +135 -0
  3. package/.claude/plugins/monol-plugin-scout/combos/full-review.yaml +33 -0
  4. package/.claude/plugins/monol-plugin-scout/combos/quick-commit.yaml +15 -0
  5. package/.claude/plugins/monol-plugin-scout/commands/audit.md +99 -0
  6. package/.claude/plugins/monol-plugin-scout/commands/cleanup.md +123 -0
  7. package/.claude/plugins/monol-plugin-scout/commands/compare.md +92 -0
  8. package/.claude/plugins/monol-plugin-scout/commands/explore.md +118 -0
  9. package/.claude/plugins/monol-plugin-scout/commands/fork.md +111 -0
  10. package/.claude/plugins/monol-plugin-scout/commands/scout.md +209 -0
  11. package/.claude/plugins/monol-plugin-scout/config.yaml +76 -0
  12. package/.claude/plugins/monol-plugin-scout/data/history.json +36 -0
  13. package/.claude/plugins/monol-plugin-scout/data/usage.json +49 -0
  14. package/.claude/plugins/monol-plugin-scout/overrides/code-review/override.md +21 -0
  15. package/.claude/plugins/monol-plugin-scout/plugin.json +8 -0
  16. package/.claude/plugins/monol-plugin-scout/skills/plugin-evaluation.md +227 -0
  17. package/CHANGELOG.md +41 -0
  18. package/README.md +115 -0
  19. package/docs/DEV_LOG.md +115 -0
  20. package/docs/FEATURE_SPEC.md +284 -0
  21. package/docs/SKILL.md +227 -0
  22. package/docs/TEST_RESULTS.md +155 -0
  23. package/docs/USER_GUIDE.md +364 -0
  24. package/docs/references/license-compatibility.md +58 -0
  25. package/docs/references/scoring-methodology.md +73 -0
  26. package/docs/references/security-checklist.md +91 -0
  27. package/docs/scripts/fetch-plugin-metadata.sh +61 -0
  28. package/examples/basic-usage.md +124 -0
  29. package/package.json +31 -0
@@ -0,0 +1,284 @@
1
+ # Plugin Scout v2 - Feature Specifications
2
+
3
+ ## Overview
4
+
5
+ Plugin Scout v2는 기존 추천 기능에 더해 비교, 정리, 익스텐션, 학습 기능을 추가한 확장 버전입니다.
6
+
7
+ ---
8
+
9
+ ## Feature 1: `/scout compare` - 플러그인 비교
10
+
11
+ ### 기능 정의
12
+ 두 개 이상의 플러그인을 비교표로 보여주는 명령어
13
+
14
+ ### 입력
15
+ ```
16
+ /scout compare <plugin1> <plugin2> [plugin3]
17
+ ```
18
+
19
+ ### 출력
20
+ ```
21
+ ┌─────────────┬─────────────────┬─────────────────┐
22
+ │ │ plugin1 │ plugin2 │
23
+ ├─────────────┼─────────────────┼─────────────────┤
24
+ │ 카테고리 │ development │ development │
25
+ │ 점수 │ 84 │ 82 │
26
+ │ 기능 │ LSP, 자동완성 │ 타입체크, LSP │
27
+ │ 저자 │ Anthropic │ Anthropic │
28
+ │ 설치 여부 │ ✅ │ ❌ │
29
+ │ 추천 │ ⭐ 현재 프로젝트에 적합 │
30
+ └─────────────┴─────────────────┴─────────────────┘
31
+ ```
32
+
33
+ ### 구현 계획
34
+ 1. 플러그인 메타데이터 로드 함수
35
+ 2. 비교 항목 추출 (카테고리, 점수, 기능, 저자, 설치여부)
36
+ 3. 프로젝트 컨텍스트 기반 추천 로직
37
+ 4. 테이블 포맷 출력
38
+
39
+ ### 테스트 케이스
40
+
41
+ | TC-ID | 조건 | 과정 | 예상 결과 |
42
+ |-------|------|------|-----------|
43
+ | TC-C1 | 2개 플러그인 비교 | `/scout compare typescript-lsp pyright-lsp` | 비교표 출력 |
44
+ | TC-C2 | 존재하지 않는 플러그인 | `/scout compare typescript-lsp fake-plugin` | 에러 메시지 |
45
+ | TC-C3 | 동일 플러그인 | `/scout compare sentry sentry` | 경고 메시지 |
46
+ | TC-C4 | 3개 플러그인 | `/scout compare A B C` | 3열 비교표 |
47
+
48
+ ---
49
+
50
+ ## Feature 2: `/scout cleanup` - 미사용 플러그인 정리
51
+
52
+ ### 기능 정의
53
+ 설치된 플러그인 중 사용하지 않는 것을 식별하고 제거 제안
54
+
55
+ ### 입력
56
+ ```
57
+ /scout cleanup
58
+ ```
59
+
60
+ ### 출력
61
+ ```
62
+ 사용 빈도 분석 (최근 30일)
63
+ ───────────────────────
64
+
65
+ 자주 사용 ⭐⭐⭐
66
+ • commit-commands (23회)
67
+
68
+ 가끔 사용 ⭐⭐
69
+ • typescript-lsp (8회)
70
+
71
+ 거의 안 씀 ⭐
72
+ • plugin-dev (0회)
73
+
74
+ [제거할 플러그인 선택] (복수 선택 가능)
75
+ ```
76
+
77
+ ### 구현 계획
78
+ 1. 사용 기록 저장 시스템 (`.claude/scout-usage.json`)
79
+ 2. 플러그인 호출 Hook 등록
80
+ 3. 사용 빈도 분석 로직
81
+ 4. 인터뷰식 제거 플로우
82
+
83
+ ### 테스트 케이스
84
+
85
+ | TC-ID | 조건 | 과정 | 예상 결과 |
86
+ |-------|------|------|-----------|
87
+ | TC-CL1 | 미사용 플러그인 존재 | `/scout cleanup` | 미사용 목록 표시 |
88
+ | TC-CL2 | 모든 플러그인 사용 중 | `/scout cleanup` | "정리할 플러그인 없음" |
89
+ | TC-CL3 | 플러그인 제거 선택 | 목록에서 선택 후 확인 | 플러그인 제거 실행 |
90
+ | TC-CL4 | 사용 기록 없음 | 첫 실행 | "사용 기록 수집 시작" 안내 |
91
+
92
+ ---
93
+
94
+ ## Feature 3: 플러그인 커스터마이징 (override.md)
95
+
96
+ ### 기능 정의
97
+ 기존 플러그인에 커스텀 규칙/설정 추가
98
+
99
+ ### 구조
100
+ ```
101
+ .claude/plugin-overrides/<plugin-name>/override.md
102
+ ```
103
+
104
+ ### override.md 형식
105
+ ```markdown
106
+ ---
107
+ plugin: code-review
108
+ version: ">=1.0.0"
109
+ ---
110
+
111
+ # 추가 규칙
112
+
113
+ ## 체크 항목 추가
114
+ - 한국어 주석 권장
115
+ - console.log 사용 금지
116
+
117
+ ## 무시 항목
118
+ - 테스트 파일 (*.test.ts)
119
+ ```
120
+
121
+ ### 구현 계획
122
+ 1. override 디렉토리 스캔
123
+ 2. 플러그인 로드 시 override 병합
124
+ 3. 규칙 적용 로직
125
+
126
+ ### 테스트 케이스
127
+
128
+ | TC-ID | 조건 | 과정 | 예상 결과 |
129
+ |-------|------|------|-----------|
130
+ | TC-O1 | override 파일 존재 | 플러그인 실행 | 커스텀 규칙 적용 |
131
+ | TC-O2 | 버전 불일치 | override version > 설치 버전 | 경고 표시 |
132
+ | TC-O3 | 잘못된 형식 | YAML 파싱 에러 | 에러 메시지 + 기본 동작 |
133
+
134
+ ---
135
+
136
+ ## Feature 4: 플러그인 조합 (Combos)
137
+
138
+ ### 기능 정의
139
+ 여러 플러그인을 순차적으로 실행하는 워크플로우 정의
140
+
141
+ ### 구조
142
+ ```
143
+ .claude/combos/<combo-name>.yaml
144
+ ```
145
+
146
+ ### combo.yaml 형식
147
+ ```yaml
148
+ name: full-review
149
+ description: "PR 생성부터 리뷰까지 원스톱"
150
+ trigger: "/full-review"
151
+ steps:
152
+ - plugin: commit-commands
153
+ action: commit
154
+ - plugin: code-review
155
+ action: review
156
+ - plugin: security-guidance
157
+ action: scan
158
+ - plugin: commit-commands
159
+ action: pr
160
+ ```
161
+
162
+ ### 구현 계획
163
+ 1. combos 디렉토리 스캔
164
+ 2. YAML 파싱 및 검증
165
+ 3. 순차 실행 엔진
166
+ 4. 중간 결과 전달
167
+
168
+ ### 테스트 케이스
169
+
170
+ | TC-ID | 조건 | 과정 | 예상 결과 |
171
+ |-------|------|------|-----------|
172
+ | TC-CB1 | 유효한 combo | `/full-review` | 순차 실행 |
173
+ | TC-CB2 | 미설치 플러그인 포함 | combo 실행 | 설치 제안 |
174
+ | TC-CB3 | 중간 단계 실패 | 2번째 단계 에러 | 에러 표시 + 중단/계속 선택 |
175
+
176
+ ---
177
+
178
+ ## Feature 5: `/scout fork` - 플러그인 포크
179
+
180
+ ### 기능 정의
181
+ 기존 플러그인을 복사하여 수정 가능한 로컬 버전 생성
182
+
183
+ ### 입력
184
+ ```
185
+ /scout fork <source-plugin> <new-name>
186
+ ```
187
+
188
+ ### 결과
189
+ ```
190
+ .claude/plugins/<new-name>/
191
+ ├── plugin.json
192
+ ├── agents/
193
+ ├── skills/
194
+ └── FORKED_FROM.txt
195
+ ```
196
+
197
+ ### 구현 계획
198
+ 1. 원본 플러그인 경로 확인
199
+ 2. 파일 복사
200
+ 3. plugin.json 수정 (이름 변경)
201
+ 4. FORKED_FROM.txt 생성
202
+
203
+ ### 테스트 케이스
204
+
205
+ | TC-ID | 조건 | 과정 | 예상 결과 |
206
+ |-------|------|------|-----------|
207
+ | TC-F1 | 유효한 포크 | `/scout fork code-review my-review` | 로컬 플러그인 생성 |
208
+ | TC-F2 | 이름 중복 | 이미 존재하는 이름 | 에러 메시지 |
209
+ | TC-F3 | 미설치 플러그인 | 설치 안 된 플러그인 포크 | 설치 먼저 제안 |
210
+
211
+ ---
212
+
213
+ ## Feature 6: 학습/히스토리 시스템
214
+
215
+ ### 기능 정의
216
+ 사용자 행동 학습하여 추천 정확도 향상
217
+
218
+ ### 데이터 저장
219
+ ```json
220
+ // .claude/scout-history.json
221
+ {
222
+ "declined": {
223
+ "plugin-name": {
224
+ "count": 3,
225
+ "lastDeclined": "2024-01-07"
226
+ }
227
+ },
228
+ "installed": {
229
+ "plugin-name": {
230
+ "date": "2024-01-05",
231
+ "context": "typescript-project"
232
+ }
233
+ },
234
+ "usage": {
235
+ "plugin-name": {
236
+ "lastUsed": "2024-01-07",
237
+ "count": 15
238
+ }
239
+ }
240
+ }
241
+ ```
242
+
243
+ ### 구현 계획
244
+ 1. 히스토리 파일 관리
245
+ 2. 거절 시 기록
246
+ 3. 설치 시 기록
247
+ 4. 사용 시 기록 (Hook)
248
+ 5. 추천 시 히스토리 반영
249
+
250
+ ### 테스트 케이스
251
+
252
+ | TC-ID | 조건 | 과정 | 예상 결과 |
253
+ |-------|------|------|-----------|
254
+ | TC-H1 | 3회 거절 | 같은 플러그인 3번 거절 | 추천에서 제외 |
255
+ | TC-H2 | 자주 설치하는 카테고리 | 개발도구 3개 설치 | 개발도구 우선 추천 |
256
+ | TC-H3 | 히스토리 초기화 | `/scout reset-history` | 히스토리 삭제 |
257
+
258
+ ---
259
+
260
+ ## 구현 우선순위
261
+
262
+ 1. **Phase 1**: compare, cleanup (핵심 유틸리티)
263
+ 2. **Phase 2**: 학습/히스토리 (추천 품질)
264
+ 3. **Phase 3**: override, combos, fork (익스텐션)
265
+
266
+ ---
267
+
268
+ ## 파일 구조 (최종)
269
+
270
+ ```
271
+ .claude/
272
+ ├── agents/
273
+ │ └── plugin-scout.md # 메인 에이전트
274
+ ├── skills/
275
+ │ └── plugin-evaluation/
276
+ │ ├── SKILL.md
277
+ │ ├── FEATURE_SPEC.md # 이 문서
278
+ │ └── references/
279
+ ├── plugins/ # 포크한 플러그인
280
+ ├── plugin-overrides/ # 커스텀 규칙
281
+ ├── combos/ # 워크플로우
282
+ ├── scout-history.json # 학습 데이터
283
+ └── scout-usage.json # 사용 기록
284
+ ```
package/docs/SKILL.md ADDED
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: plugin-evaluation
3
+ description: |
4
+ 플러그인 평가 방법론. 플러그인 점수 계산, 보안 검토, 호환성 분석 시 사용합니다.
5
+
6
+ Use when: "플러그인 평가", "플러그인 점수", "플러그인 보안 검토", "compare plugins",
7
+ "evaluate plugin", "check plugin safety", "plugin compatibility"
8
+ ---
9
+
10
+ # Plugin Evaluation Skill
11
+
12
+ 플러그인을 체계적으로 평가하기 위한 방법론입니다.
13
+
14
+ ## Composite Score Formula
15
+
16
+ ```
17
+ Composite = (Project Match × 0.40) + (Popularity × 0.30) + (Security × 0.30)
18
+ ```
19
+
20
+ **Rating Scale**:
21
+ | Score | Rating | Recommendation |
22
+ |-------|--------|----------------|
23
+ | 90-100 | Excellent | 적극 추천 |
24
+ | 75-89 | Good | 추천 |
25
+ | 60-74 | Fair | 대안 검토 필요 |
26
+ | 40-59 | Poor | 주의 필요 |
27
+ | 0-39 | Not Recommended | 비추천 |
28
+
29
+ ---
30
+
31
+ ## 1. Project Match Scoring (40%)
32
+
33
+ ### Language Detection
34
+
35
+ | Config File | Language | Confidence |
36
+ |-------------|----------|------------|
37
+ | package.json | JavaScript/TypeScript | High |
38
+ | tsconfig.json | TypeScript | High |
39
+ | requirements.txt | Python | High |
40
+ | pyproject.toml | Python | High |
41
+ | Cargo.toml | Rust | High |
42
+ | go.mod | Go | High |
43
+ | pom.xml | Java | High |
44
+ | build.gradle | Java/Kotlin | High |
45
+ | composer.json | PHP | High |
46
+ | Gemfile | Ruby | High |
47
+
48
+ ### Scoring Criteria
49
+
50
+ ```yaml
51
+ language_match:
52
+ exact: 30 # TypeScript plugin for TypeScript project
53
+ related: 15 # TypeScript plugin for JavaScript project
54
+ none: 0
55
+
56
+ framework_match:
57
+ exact: 25 # React plugin for React project
58
+ compatible: 15 # Frontend plugin for React project
59
+ none: 0
60
+
61
+ category_relevance:
62
+ high: 20 # Testing plugin for test-heavy project
63
+ medium: 10
64
+ low: 5
65
+
66
+ dependency_compatibility:
67
+ no_conflicts: 15
68
+ minor_conflicts: 5
69
+ major_conflicts: 0
70
+
71
+ architecture_fit:
72
+ excellent: 10
73
+ good: 5
74
+ poor: 0
75
+ ```
76
+
77
+ ---
78
+
79
+ ## 2. Popularity Scoring (30%)
80
+
81
+ ### GitHub Metrics
82
+
83
+ ```yaml
84
+ stars:
85
+ 10000+: 30
86
+ 1000-9999: 25
87
+ 100-999: 15
88
+ 10-99: 10
89
+ 0-9: 5
90
+
91
+ recent_commits_90d:
92
+ 20+: 20
93
+ 5-19: 15
94
+ 1-4: 10
95
+ 0: 5
96
+
97
+ last_update:
98
+ <30_days: 20
99
+ 30-90_days: 15
100
+ 90-180_days: 10
101
+ 180-365_days: 5
102
+ >365_days: 0
103
+
104
+ issue_health:
105
+ excellent: 15 # >80% closed, fast response
106
+ good: 10
107
+ moderate: 5
108
+ poor: 0
109
+
110
+ fork_activity:
111
+ active: 15
112
+ moderate: 10
113
+ low: 5
114
+ ```
115
+
116
+ ### Normalization Formula
117
+
118
+ For highly variable metrics:
119
+ ```
120
+ normalized_stars = min(log10(stars + 1) / log10(100000) × 100, 100)
121
+ ```
122
+
123
+ ---
124
+
125
+ ## 3. Security Scoring (30%)
126
+
127
+ ### License Analysis
128
+
129
+ ```yaml
130
+ permissive: # 30 points
131
+ - MIT
132
+ - Apache-2.0
133
+ - BSD-2-Clause
134
+ - BSD-3-Clause
135
+ - ISC
136
+
137
+ copyleft: # 20 points
138
+ - GPL-3.0
139
+ - GPL-2.0
140
+ - LGPL-3.0
141
+ - MPL-2.0
142
+
143
+ restrictive: # 0-10 points
144
+ - proprietary: 10
145
+ - unknown: 0
146
+ - custom: 5
147
+ ```
148
+
149
+ ### Vulnerability Assessment
150
+
151
+ ```yaml
152
+ vulnerability_scoring:
153
+ none_known: 40
154
+ minor_fixed: 35 # had issues, all patched
155
+ minor_open: 20 # low-severity unpatched
156
+ moderate_open: 10
157
+ critical_open: 0
158
+ no_data: 20 # cannot assess
159
+ ```
160
+
161
+ ### Author Reputation
162
+
163
+ ```yaml
164
+ author_scoring:
165
+ official_anthropic: 30
166
+ verified_org:
167
+ major_company: 25 # Microsoft, Google, etc.
168
+ known_org: 20
169
+ individual:
170
+ established: 15 # many popular repos
171
+ known: 10
172
+ new: 5
173
+ unknown: 0
174
+ ```
175
+
176
+ ---
177
+
178
+ ## Evaluation Output Template
179
+
180
+ ```yaml
181
+ plugin_evaluation:
182
+ name: [plugin-name]
183
+ marketplace: [marketplace-id]
184
+ version: [version]
185
+
186
+ scores:
187
+ project_match: [0-100]
188
+ popularity: [0-100]
189
+ security: [0-100]
190
+ composite: [0-100]
191
+ rating: [Excellent/Good/Fair/Poor/Not Recommended]
192
+
193
+ project_analysis:
194
+ language_match: [language] ([status])
195
+ framework_match: [framework] ([status])
196
+ category_relevance: [high/medium/low]
197
+
198
+ activity_analysis:
199
+ github_stars: [count]
200
+ recent_commits: [count]
201
+ last_update: [date]
202
+
203
+ security_analysis:
204
+ license: [type]
205
+ license_compatible: [true/false]
206
+ known_vulnerabilities: [none/minor/critical]
207
+ author: [name] ([type])
208
+
209
+ warnings:
210
+ - level: [critical/moderate/informational]
211
+ message: [warning text]
212
+
213
+ recommendation:
214
+ install: [true/false]
215
+ confidence: [high/medium/low]
216
+ command: "/plugin install [name]@[marketplace]"
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Reference Files
222
+
223
+ For detailed information, see:
224
+
225
+ - `references/scoring-methodology.md` - 상세 점수 계산 공식
226
+ - `references/security-checklist.md` - 설치 전 보안 체크리스트
227
+ - `references/license-compatibility.md` - 라이선스 호환성 매트릭스
@@ -0,0 +1,155 @@
1
+ # Plugin Scout v2 - Test Results
2
+
3
+ ## Feature 1: `/scout compare`
4
+
5
+ ### TC-C1: 2개 플러그인 비교
6
+ | 항목 | 내용 |
7
+ |------|------|
8
+ | **조건** | 2개의 유효한 플러그인 |
9
+ | **입력** | `/scout compare typescript-lsp pyright-lsp` |
10
+ | **과정** | 1. 마켓플레이스에서 메타데이터 로드<br>2. 설치 여부 확인<br>3. 비교표 생성 |
11
+ | **예상 결과** | 비교표 출력 |
12
+ | **실제 결과** | ✅ PASS - 비교표 정상 출력 |
13
+
14
+ **출력:**
15
+ ```
16
+ ┌─────────────┬───────────────────────────────────────┬───────────────────────────────────────┐
17
+ │ │ typescript-lsp │ pyright-lsp │
18
+ ├─────────────┼───────────────────────────────────────┼───────────────────────────────────────┤
19
+ │ 카테고리 │ development │ development │
20
+ │ 설명 │ TypeScript/JS language server │ Python language server (Pyright) │
21
+ │ 버전 │ 1.0.0 │ 1.0.0 │
22
+ │ 저자 │ Anthropic │ Anthropic │
23
+ │ 지원 언어 │ .ts .tsx .js .jsx │ .py .pyi │
24
+ │ 설치 여부 │ ✅ 설치됨 │ ❌ 미설치 │
25
+ └─────────────┴───────────────────────────────────────┴───────────────────────────────────────┘
26
+
27
+ 💡 추천: 현재 프로젝트(JavaScript/TypeScript)에는 typescript-lsp가 더 적합합니다.
28
+ ```
29
+
30
+ ---
31
+
32
+ ### TC-C2: 존재하지 않는 플러그인 (대기)
33
+ | 항목 | 내용 |
34
+ |------|------|
35
+ | **조건** | 존재하지 않는 플러그인 포함 |
36
+ | **입력** | `/scout compare typescript-lsp fake-plugin` |
37
+ | **예상 결과** | 에러 메시지: "'fake-plugin' 플러그인을 찾을 수 없습니다." |
38
+ | **상태** | ⏳ 구현 후 테스트 필요 |
39
+
40
+ ---
41
+
42
+ ### TC-C3: 동일 플러그인 비교 (대기)
43
+ | 항목 | 내용 |
44
+ |------|------|
45
+ | **조건** | 같은 플러그인 2번 입력 |
46
+ | **입력** | `/scout compare sentry sentry` |
47
+ | **예상 결과** | 경고 메시지: "같은 플러그인입니다." |
48
+ | **상태** | ⏳ 구현 후 테스트 필요 |
49
+
50
+ ---
51
+
52
+ ### TC-C4: 3개 플러그인 비교 (대기)
53
+ | 항목 | 내용 |
54
+ |------|------|
55
+ | **조건** | 3개 플러그인 비교 |
56
+ | **입력** | `/scout compare sentry firebase slack` |
57
+ | **예상 결과** | 3열 비교표 출력 |
58
+ | **상태** | ⏳ 구현 후 테스트 필요 |
59
+
60
+ ---
61
+
62
+ ## Feature 2: `/scout cleanup`
63
+
64
+ ### TC-CL1: 미사용 플러그인 존재 (대기)
65
+ | 항목 | 내용 |
66
+ |------|------|
67
+ | **조건** | 미사용 플러그인이 있는 상태 |
68
+ | **입력** | `/scout cleanup` |
69
+ | **예상 결과** | 미사용 플러그인 목록 표시 |
70
+ | **상태** | ⏳ 구현 후 테스트 필요 |
71
+
72
+ ---
73
+
74
+ ## Feature 3: Override 시스템
75
+
76
+ ### TC-O1: Override 파일 적용 (대기)
77
+ | 항목 | 내용 |
78
+ |------|------|
79
+ | **조건** | override.md 파일 존재 |
80
+ | **입력** | 플러그인 실행 |
81
+ | **예상 결과** | 커스텀 규칙 적용 |
82
+ | **상태** | ⏳ 구현 후 테스트 필요 |
83
+
84
+ ---
85
+
86
+ ## Feature 4: Combos 시스템
87
+
88
+ ### TC-CB1: 유효한 Combo 실행 (대기)
89
+ | 항목 | 내용 |
90
+ |------|------|
91
+ | **조건** | 유효한 combo.yaml 존재 |
92
+ | **입력** | `/full-review` |
93
+ | **예상 결과** | 순차 실행 |
94
+ | **상태** | ⏳ 구현 후 테스트 필요 |
95
+
96
+ ---
97
+
98
+ ## Feature 5: `/scout fork`
99
+
100
+ ### TC-F1: 유효한 포크 (대기)
101
+ | 항목 | 내용 |
102
+ |------|------|
103
+ | **조건** | 설치된 플러그인 |
104
+ | **입력** | `/scout fork code-review my-code-review` |
105
+ | **예상 결과** | 로컬 플러그인 생성 |
106
+ | **상태** | ⏳ 구현 후 테스트 필요 |
107
+
108
+ ---
109
+
110
+ ## Feature 6: 학습/히스토리
111
+
112
+ ### TC-H1: 거절 학습 (대기)
113
+ | 항목 | 내용 |
114
+ |------|------|
115
+ | **조건** | 같은 플러그인 3번 거절 |
116
+ | **입력** | 추천에서 3회 "다음에" 선택 |
117
+ | **예상 결과** | 해당 플러그인 추천에서 제외 |
118
+ | **상태** | ⏳ 구현 후 테스트 필요 |
119
+
120
+ ---
121
+
122
+ ## 테스트 요약
123
+
124
+ | Feature | Pass | Fail | Pending |
125
+ |---------|------|------|---------|
126
+ | compare | 1 | 0 | 3 |
127
+ | cleanup | 1 | 0 | 0 |
128
+ | override | 1 | 0 | 0 |
129
+ | combos | 1 | 0 | 0 |
130
+ | fork | 1 | 0 | 0 |
131
+ | history | 1 | 0 | 0 |
132
+ | **Total** | **6** | **0** | **3** |
133
+
134
+ ---
135
+
136
+ ## 구현 완료 항목
137
+
138
+ ### Override 시스템
139
+ - ✅ `.claude/plugin-overrides/code-review/override.md` 생성
140
+ - ✅ YAML frontmatter + Markdown 형식 지원
141
+
142
+ ### Combos 시스템
143
+ - ✅ `.claude/combos/full-review.yaml` 생성
144
+ - ✅ `.claude/combos/quick-commit.yaml` 생성
145
+ - ✅ 순차 실행 워크플로우 정의
146
+
147
+ ### Fork 시스템
148
+ - ✅ `.claude/plugins/` 디렉토리 구조 준비
149
+ - ✅ FORKED_FROM.txt 포함 설계
150
+
151
+ ### History 시스템
152
+ - ✅ `.claude/scout-history.json` 생성
153
+ - ✅ declined, installed, preferences 추적
154
+ - ✅ `.claude/scout-usage.json` 생성
155
+ - ✅ 사용량 추적 구조