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.
- package/.claude/plugins/marketplace.json +12 -0
- package/.claude/plugins/monol-plugin-scout/CLAUDE.md +135 -0
- package/.claude/plugins/monol-plugin-scout/combos/full-review.yaml +33 -0
- package/.claude/plugins/monol-plugin-scout/combos/quick-commit.yaml +15 -0
- package/.claude/plugins/monol-plugin-scout/commands/audit.md +99 -0
- package/.claude/plugins/monol-plugin-scout/commands/cleanup.md +123 -0
- package/.claude/plugins/monol-plugin-scout/commands/compare.md +92 -0
- package/.claude/plugins/monol-plugin-scout/commands/explore.md +118 -0
- package/.claude/plugins/monol-plugin-scout/commands/fork.md +111 -0
- package/.claude/plugins/monol-plugin-scout/commands/scout.md +209 -0
- package/.claude/plugins/monol-plugin-scout/config.yaml +76 -0
- package/.claude/plugins/monol-plugin-scout/data/history.json +36 -0
- package/.claude/plugins/monol-plugin-scout/data/usage.json +49 -0
- package/.claude/plugins/monol-plugin-scout/overrides/code-review/override.md +21 -0
- package/.claude/plugins/monol-plugin-scout/plugin.json +8 -0
- package/.claude/plugins/monol-plugin-scout/skills/plugin-evaluation.md +227 -0
- package/CHANGELOG.md +41 -0
- package/README.md +115 -0
- package/docs/DEV_LOG.md +115 -0
- package/docs/FEATURE_SPEC.md +284 -0
- package/docs/SKILL.md +227 -0
- package/docs/TEST_RESULTS.md +155 -0
- package/docs/USER_GUIDE.md +364 -0
- package/docs/references/license-compatibility.md +58 -0
- package/docs/references/scoring-methodology.md +73 -0
- package/docs/references/security-checklist.md +91 -0
- package/docs/scripts/fetch-plugin-metadata.sh +61 -0
- package/examples/basic-usage.md +124 -0
- 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
|
+
- ✅ 사용량 추적 구조
|