monol-plugin-scout 2.0.5 → 2.0.6
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-plugin/plugin.json +1 -1
- package/monol-plugin-scout-pkg/plugin.json +1 -1
- package/monol-plugin-scout-pkg/skills/audit.md +98 -0
- package/monol-plugin-scout-pkg/skills/cleanup.md +122 -0
- package/monol-plugin-scout-pkg/skills/compare.md +91 -0
- package/monol-plugin-scout-pkg/skills/explore.md +117 -0
- package/monol-plugin-scout-pkg/skills/fork.md +110 -0
- package/monol-plugin-scout-pkg/skills/scout.md +206 -0
- package/package.json +1 -1
- package/monol-plugin-scout-pkg/skills/plugin-evaluation/SKILL.md +0 -227
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 설치된 플러그인 보안 및 업데이트 점검
|
|
3
|
+
argument-hint: "[--security | --updates]"
|
|
4
|
+
allowed-tools: [Read, Glob, Bash, WebFetch]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout audit - 보안 및 업데이트 점검
|
|
8
|
+
|
|
9
|
+
설치된 플러그인의 보안 및 업데이트 상태를 점검합니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout audit # 전체 점검
|
|
15
|
+
/scout audit --security # 보안만 점검
|
|
16
|
+
/scout audit --updates # 업데이트만 점검
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 인자: $ARGUMENTS
|
|
20
|
+
|
|
21
|
+
## 동작
|
|
22
|
+
|
|
23
|
+
### 1. 설치된 플러그인 조회
|
|
24
|
+
|
|
25
|
+
`~/.claude/settings.json`과 `.claude/settings.json`에서 `enabledPlugins` 확인.
|
|
26
|
+
|
|
27
|
+
### 2. 보안 점검 항목
|
|
28
|
+
|
|
29
|
+
| 항목 | 상태 | 설명 |
|
|
30
|
+
|------|------|------|
|
|
31
|
+
| 라이선스 | ✓ / ⚠ / ✗ | MIT/Apache (✓), GPL (⚠), Unknown (✗) |
|
|
32
|
+
| 취약점 | ✓ / ✗ | npm audit, GitHub Security Advisories |
|
|
33
|
+
| 저자 검증 | ✓ / ⚠ | Official (✓), Verified (⚠), Unverified (✗) |
|
|
34
|
+
| 업데이트 | ✓ / ⚠ | <1년 (✓), 1년+ (⚠) |
|
|
35
|
+
|
|
36
|
+
### 3. 점검 결과 출력
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
🔒 플러그인 보안 점검
|
|
40
|
+
|
|
41
|
+
설치된 플러그인: 7개
|
|
42
|
+
|
|
43
|
+
## 보안 상태
|
|
44
|
+
|
|
45
|
+
| 플러그인 | 라이선스 | 취약점 | 저자 | 업데이트 |
|
|
46
|
+
|----------|----------|--------|------|----------|
|
|
47
|
+
| typescript-lsp | ✓ MIT | ✓ | ✓ Official | ✓ 2일 전 |
|
|
48
|
+
| code-review | ✓ Apache | ✓ | ✓ Official | ✓ 7일 전 |
|
|
49
|
+
| old-plugin | ⚠ GPL | ✓ | ⚠ Unverified | ✗ 14개월 전 |
|
|
50
|
+
|
|
51
|
+
## 경고 (1개)
|
|
52
|
+
|
|
53
|
+
⚠ old-plugin
|
|
54
|
+
- 14개월간 업데이트 없음
|
|
55
|
+
- 검증되지 않은 저자
|
|
56
|
+
- GPL 라이선스 (제한적 호환성)
|
|
57
|
+
|
|
58
|
+
권장: /plugin uninstall old-plugin
|
|
59
|
+
|
|
60
|
+
## 업데이트 가능 (2개)
|
|
61
|
+
|
|
62
|
+
| 플러그인 | 현재 | 최신 |
|
|
63
|
+
|----------|------|------|
|
|
64
|
+
| typescript-lsp | 1.2.0 | 1.3.0 |
|
|
65
|
+
| code-review | 2.0.0 | 2.1.0 |
|
|
66
|
+
|
|
67
|
+
업데이트: /plugin update <name>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 4. 심각한 경고
|
|
71
|
+
|
|
72
|
+
보안 문제가 심각한 경우:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
🚨 보안 경고
|
|
76
|
+
|
|
77
|
+
다음 플러그인에 알려진 취약점이 있습니다:
|
|
78
|
+
|
|
79
|
+
• vulnerable-plugin (CVE-2025-1234)
|
|
80
|
+
심각도: High
|
|
81
|
+
영향: 원격 코드 실행 가능
|
|
82
|
+
|
|
83
|
+
즉시 제거를 권장합니다:
|
|
84
|
+
/plugin uninstall vulnerable-plugin
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 예시
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
/scout audit
|
|
91
|
+
→ 전체 보안 및 업데이트 점검
|
|
92
|
+
|
|
93
|
+
/scout audit --security
|
|
94
|
+
→ 보안만 점검
|
|
95
|
+
|
|
96
|
+
/scout audit --updates
|
|
97
|
+
→ 업데이트 가능 여부만 확인
|
|
98
|
+
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 미사용 플러그인 정리 제안
|
|
3
|
+
argument-hint: "[--dry-run | --force]"
|
|
4
|
+
allowed-tools: [Read, Glob, Bash, AskUserQuestion]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout cleanup - 미사용 플러그인 정리
|
|
8
|
+
|
|
9
|
+
오래된 미사용 플러그인만 정리 제안합니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout cleanup # 미사용 플러그인 분석 및 정리 제안
|
|
15
|
+
/scout cleanup --dry-run # 정리 대상만 표시 (삭제 안 함)
|
|
16
|
+
/scout cleanup --force # 확인 없이 정리
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 인자: $ARGUMENTS
|
|
20
|
+
|
|
21
|
+
## 동작
|
|
22
|
+
|
|
23
|
+
### 1. 사용 기록 로드
|
|
24
|
+
|
|
25
|
+
`.claude/plugins/monol-plugin-scout/data/usage.json`에서 사용 기록 로드:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"plugins": {
|
|
30
|
+
"typescript-lsp": {
|
|
31
|
+
"installed": "2025-12-01",
|
|
32
|
+
"usageCount": 42,
|
|
33
|
+
"lastUsed": "2026-01-18"
|
|
34
|
+
},
|
|
35
|
+
"old-plugin": {
|
|
36
|
+
"installed": "2025-10-01",
|
|
37
|
+
"usageCount": 3,
|
|
38
|
+
"lastUsed": "2025-10-15"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. 정리 기준 적용
|
|
45
|
+
|
|
46
|
+
`config.yaml`의 설정 기준:
|
|
47
|
+
- `cleanup.unused_days`: 미사용 임계값 (기본 30일)
|
|
48
|
+
- `cleanup.low_usage_count`: 저사용 임계값 (기본 3회)
|
|
49
|
+
|
|
50
|
+
정리 대상:
|
|
51
|
+
- 30일 이상 미사용 (lastUsed가 30일 이전)
|
|
52
|
+
- 설치 후 한 번도 사용 안 함 (lastUsed가 null이고 설치 후 7일 경과)
|
|
53
|
+
|
|
54
|
+
### 3. 정리 대상 표시
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
📊 플러그인 정리 제안
|
|
58
|
+
|
|
59
|
+
오래된 미사용 플러그인이 2개 있습니다:
|
|
60
|
+
|
|
61
|
+
• plugin-dev
|
|
62
|
+
설치: 2025-11-15 (53일 전)
|
|
63
|
+
마지막 사용: 없음
|
|
64
|
+
|
|
65
|
+
• old-unused-plugin
|
|
66
|
+
설치: 2025-10-01 (98일 전)
|
|
67
|
+
마지막 사용: 2025-10-15 (84일 전)
|
|
68
|
+
|
|
69
|
+
나머지 5개 플러그인은 최근 활발히 사용 중입니다. ✓
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 4. 인터뷰식 정리
|
|
73
|
+
|
|
74
|
+
AskUserQuestion으로 정리할 플러그인 선택:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
questions:
|
|
78
|
+
- question: "정리할 플러그인을 선택하세요"
|
|
79
|
+
header: "정리"
|
|
80
|
+
options:
|
|
81
|
+
- label: "plugin-dev"
|
|
82
|
+
description: "53일간 미사용"
|
|
83
|
+
- label: "old-unused-plugin"
|
|
84
|
+
description: "84일간 미사용"
|
|
85
|
+
- label: "전체 삭제"
|
|
86
|
+
description: "위 플러그인 모두 삭제"
|
|
87
|
+
- label: "취소"
|
|
88
|
+
description: "정리하지 않음"
|
|
89
|
+
multiSelect: true
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. 정리 실행
|
|
93
|
+
|
|
94
|
+
선택한 플러그인 제거:
|
|
95
|
+
```bash
|
|
96
|
+
/plugin uninstall <plugin-name>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
사용 기록에서도 제거.
|
|
100
|
+
|
|
101
|
+
## 에러 처리
|
|
102
|
+
|
|
103
|
+
- **사용 기록 없음**:
|
|
104
|
+
```
|
|
105
|
+
사용 기록이 없습니다. 플러그인 사용 후 다시 시도해주세요.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- **정리 대상 없음**:
|
|
109
|
+
```
|
|
110
|
+
정리할 미사용 플러그인이 없습니다.
|
|
111
|
+
모든 플러그인이 활발히 사용 중입니다. ✓
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 예시
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
/scout cleanup
|
|
118
|
+
→ 미사용 플러그인 분석 및 정리 제안
|
|
119
|
+
|
|
120
|
+
/scout cleanup --dry-run
|
|
121
|
+
→ 정리 대상만 표시 (삭제 안 함)
|
|
122
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 플러그인 비교표 생성
|
|
3
|
+
argument-hint: "<plugin1> <plugin2> [plugin3]"
|
|
4
|
+
allowed-tools: [Read, Glob, Grep, WebFetch]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout compare - 플러그인 비교
|
|
8
|
+
|
|
9
|
+
두 개 이상의 플러그인을 비교표로 보여줍니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout compare <plugin1> <plugin2>
|
|
15
|
+
/scout compare <plugin1> <plugin2> <plugin3>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 인자: $ARGUMENTS
|
|
19
|
+
|
|
20
|
+
## 동작
|
|
21
|
+
|
|
22
|
+
### 1. 인자 파싱
|
|
23
|
+
|
|
24
|
+
최소 2개, 최대 4개의 플러그인 이름을 받습니다.
|
|
25
|
+
|
|
26
|
+
### 2. 플러그인 메타데이터 로드
|
|
27
|
+
|
|
28
|
+
각 플러그인에 대해:
|
|
29
|
+
- 마켓플레이스에서 메타데이터 조회
|
|
30
|
+
- 설치 여부 확인 (`enabledPlugins`)
|
|
31
|
+
- `plugin-evaluation` 스킬로 점수 계산
|
|
32
|
+
|
|
33
|
+
### 3. 비교표 생성
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
┌─────────────┬─────────────────┬─────────────────┐
|
|
37
|
+
│ │ typescript-lsp │ pyright-lsp │
|
|
38
|
+
├─────────────┼─────────────────┼─────────────────┤
|
|
39
|
+
│ 카테고리 │ development │ development │
|
|
40
|
+
│ 점수 │ 84 │ 82 │
|
|
41
|
+
│ 언어 │ TypeScript/JS │ Python │
|
|
42
|
+
│ 저자 │ Anthropic │ Anthropic │
|
|
43
|
+
│ 설치 │ ✓ │ - │
|
|
44
|
+
│ 프로젝트 │ 적합 │ 부적합 │
|
|
45
|
+
└─────────────┴─────────────────┴─────────────────┘
|
|
46
|
+
|
|
47
|
+
추천: 현재 프로젝트(TypeScript)에는 typescript-lsp가 더 적합합니다.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 4. 비교 항목
|
|
51
|
+
|
|
52
|
+
| 항목 | 설명 |
|
|
53
|
+
|------|------|
|
|
54
|
+
| 카테고리 | development, productivity, security, testing |
|
|
55
|
+
| 종합 점수 | 0-100 |
|
|
56
|
+
| 주요 기능 | 플러그인 설명에서 추출 |
|
|
57
|
+
| 저자/출처 | 저자 이름 및 소스 타입 |
|
|
58
|
+
| 설치 여부 | ✓ / - |
|
|
59
|
+
| 프로젝트 적합성 | 현재 프로젝트 컨텍스트 기반 |
|
|
60
|
+
|
|
61
|
+
### 5. 추천 제시
|
|
62
|
+
|
|
63
|
+
현재 프로젝트 컨텍스트를 기반으로 어떤 플러그인이 더 적합한지 한 줄 추천.
|
|
64
|
+
|
|
65
|
+
## 에러 처리
|
|
66
|
+
|
|
67
|
+
- **플러그인 없음**:
|
|
68
|
+
```
|
|
69
|
+
'{name}' 플러그인을 찾을 수 없습니다.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
- **동일 플러그인**:
|
|
73
|
+
```
|
|
74
|
+
같은 플러그인입니다. 다른 플러그인을 선택해주세요.
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- **인자 부족**:
|
|
78
|
+
```
|
|
79
|
+
비교할 플러그인을 2개 이상 지정해주세요.
|
|
80
|
+
사용법: /scout compare <plugin1> <plugin2>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 예시
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
/scout compare typescript-lsp pyright-lsp
|
|
87
|
+
→ 두 LSP 플러그인 비교
|
|
88
|
+
|
|
89
|
+
/scout compare sentry firebase slack
|
|
90
|
+
→ 세 외부 서비스 플러그인 비교
|
|
91
|
+
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 마켓플레이스 카테고리별 탐색
|
|
3
|
+
argument-hint: "[category | --search <keyword>]"
|
|
4
|
+
allowed-tools: [Read, Glob, WebFetch, AskUserQuestion]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout explore - 마켓플레이스 탐색
|
|
8
|
+
|
|
9
|
+
마켓플레이스를 카테고리별로 탐색합니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout explore # 전체 카테고리 보기
|
|
15
|
+
/scout explore <category> # 특정 카테고리 탐색
|
|
16
|
+
/scout explore --search <keyword> # 키워드 검색
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 인자: $ARGUMENTS
|
|
20
|
+
|
|
21
|
+
## 카테고리
|
|
22
|
+
|
|
23
|
+
| 카테고리 | 설명 | 예시 플러그인 |
|
|
24
|
+
|----------|------|---------------|
|
|
25
|
+
| development | 개발 도구 | typescript-lsp, pyright-lsp, feature-dev |
|
|
26
|
+
| productivity | 생산성 | commit-commands, code-review |
|
|
27
|
+
| security | 보안 | security-guidance |
|
|
28
|
+
| testing | 테스트 | playwright |
|
|
29
|
+
| external | 외부 서비스 | slack, github, notion, sentry |
|
|
30
|
+
| database | 데이터베이스 | firebase, supabase |
|
|
31
|
+
|
|
32
|
+
## 동작
|
|
33
|
+
|
|
34
|
+
### 1. 인자 없는 경우 (전체 카테고리)
|
|
35
|
+
|
|
36
|
+
카테고리 목록과 각 카테고리의 플러그인 수 표시:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
📦 마켓플레이스 탐색
|
|
40
|
+
|
|
41
|
+
카테고리를 선택하세요:
|
|
42
|
+
|
|
43
|
+
• development (12개)
|
|
44
|
+
LSP, 코드 분석, 기능 개발
|
|
45
|
+
|
|
46
|
+
• productivity (8개)
|
|
47
|
+
커밋, PR, 이슈 관리
|
|
48
|
+
|
|
49
|
+
• security (3개)
|
|
50
|
+
보안 검사, 경고
|
|
51
|
+
|
|
52
|
+
• testing (4개)
|
|
53
|
+
E2E, 브라우저 자동화
|
|
54
|
+
|
|
55
|
+
• external (15개)
|
|
56
|
+
Slack, GitHub, Notion 연동
|
|
57
|
+
|
|
58
|
+
• database (5개)
|
|
59
|
+
Firebase, Supabase
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
AskUserQuestion으로 카테고리 선택:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
questions:
|
|
66
|
+
- question: "어떤 카테고리를 탐색할까요?"
|
|
67
|
+
header: "카테고리"
|
|
68
|
+
options:
|
|
69
|
+
- label: "개발 도구"
|
|
70
|
+
description: "12개 플러그인"
|
|
71
|
+
- label: "생산성"
|
|
72
|
+
description: "8개 플러그인"
|
|
73
|
+
- label: "외부 서비스"
|
|
74
|
+
description: "15개 플러그인"
|
|
75
|
+
- label: "전체 보기"
|
|
76
|
+
description: "모든 플러그인"
|
|
77
|
+
multiSelect: false
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. 카테고리 지정 시
|
|
81
|
+
|
|
82
|
+
해당 카테고리의 플러그인 목록 표시:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
📦 development 카테고리 (12개)
|
|
86
|
+
|
|
87
|
+
| 플러그인 | 점수 | 설명 | 설치 |
|
|
88
|
+
|----------|------|------|------|
|
|
89
|
+
| typescript-lsp | 84 | TypeScript/JS 코드 인텔리전스 | ✓ |
|
|
90
|
+
| feature-dev | 82 | 기능 개발 워크플로우 | - |
|
|
91
|
+
| greptile | 78 | AI 기반 코드베이스 검색 | - |
|
|
92
|
+
...
|
|
93
|
+
|
|
94
|
+
설치하려면: /plugin install <name>@<marketplace>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 3. 키워드 검색
|
|
98
|
+
|
|
99
|
+
`--search` 옵션으로 플러그인 이름/설명 검색:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
/scout explore --search typescript
|
|
103
|
+
→ 'typescript' 포함 플러그인 검색
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 예시
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
/scout explore
|
|
110
|
+
→ 카테고리 목록 표시
|
|
111
|
+
|
|
112
|
+
/scout explore development
|
|
113
|
+
→ 개발 도구 카테고리 탐색
|
|
114
|
+
|
|
115
|
+
/scout explore --search slack
|
|
116
|
+
→ 'slack' 관련 플러그인 검색
|
|
117
|
+
```
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 플러그인 포크 및 커스터마이징
|
|
3
|
+
argument-hint: "<source-plugin> <new-name> [--local]"
|
|
4
|
+
allowed-tools: [Read, Write, Bash, Glob]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout fork - 플러그인 포크
|
|
8
|
+
|
|
9
|
+
플러그인을 복사하여 커스텀 버전을 만듭니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout fork <source-plugin> <new-name>
|
|
15
|
+
/scout fork <source-plugin> <new-name> --local
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 인자: $ARGUMENTS
|
|
19
|
+
|
|
20
|
+
## 동작
|
|
21
|
+
|
|
22
|
+
### 1. 소스 플러그인 확인
|
|
23
|
+
|
|
24
|
+
- 설치된 플러그인인지 확인
|
|
25
|
+
- 마켓플레이스에서 플러그인 위치 조회
|
|
26
|
+
|
|
27
|
+
### 2. 포크 생성
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 로컬 플러그인 디렉토리에 복사
|
|
31
|
+
.claude/plugins/<new-name>/
|
|
32
|
+
├── plugin.json # 이름 변경
|
|
33
|
+
├── agents/ # 원본 복사
|
|
34
|
+
├── commands/ # 원본 복사
|
|
35
|
+
├── skills/ # 원본 복사
|
|
36
|
+
└── FORKED_FROM.txt # 원본 정보 기록
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 3. 메타데이터 업데이트
|
|
40
|
+
|
|
41
|
+
`plugin.json` 수정:
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"name": "<new-name>",
|
|
45
|
+
"version": "1.0.0",
|
|
46
|
+
"forkedFrom": "<source-plugin>",
|
|
47
|
+
"description": "Forked from <source-plugin>",
|
|
48
|
+
"author": "<current-user>"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 4. 포크 완료 메시지
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
✅ 플러그인 포크 완료
|
|
56
|
+
|
|
57
|
+
원본: code-review
|
|
58
|
+
새 이름: my-code-review
|
|
59
|
+
|
|
60
|
+
생성 위치:
|
|
61
|
+
.claude/plugins/my-code-review/
|
|
62
|
+
├── plugin.json
|
|
63
|
+
├── commands/
|
|
64
|
+
│ └── review.md
|
|
65
|
+
└── FORKED_FROM.txt
|
|
66
|
+
|
|
67
|
+
다음 단계:
|
|
68
|
+
1. 플러그인 파일 수정
|
|
69
|
+
2. /plugin reload로 적용
|
|
70
|
+
3. /my-code-review로 사용
|
|
71
|
+
|
|
72
|
+
Tip: overrides/를 사용해 원본을 유지하면서 규칙만 추가할 수도 있습니다.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Override vs Fork
|
|
76
|
+
|
|
77
|
+
| 방식 | 용도 | 장점 |
|
|
78
|
+
|------|------|------|
|
|
79
|
+
| Override | 규칙만 추가/수정 | 원본 업데이트 자동 반영 |
|
|
80
|
+
| Fork | 전체 커스터마이징 | 완전한 제어 |
|
|
81
|
+
|
|
82
|
+
Override 예시:
|
|
83
|
+
```
|
|
84
|
+
overrides/code-review/override.md
|
|
85
|
+
→ code-review 플러그인에 추가 규칙 적용
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 에러 처리
|
|
89
|
+
|
|
90
|
+
- **소스 플러그인 없음**:
|
|
91
|
+
```
|
|
92
|
+
'{source}' 플러그인을 찾을 수 없습니다.
|
|
93
|
+
설치된 플러그인: /plugin list
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
- **이름 충돌**:
|
|
97
|
+
```
|
|
98
|
+
'{new-name}' 플러그인이 이미 존재합니다.
|
|
99
|
+
다른 이름을 사용해주세요.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 예시
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
/scout fork code-review my-code-review
|
|
106
|
+
→ code-review를 my-code-review로 복사
|
|
107
|
+
|
|
108
|
+
/scout fork typescript-lsp custom-lsp --local
|
|
109
|
+
→ 로컬 전용으로 포크
|
|
110
|
+
```
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 플러그인 마켓플레이스 스캔 및 추천
|
|
3
|
+
argument-hint: "[--quick | --category <cat> | compare | cleanup | explore | audit | fork]"
|
|
4
|
+
allowed-tools: [Read, Glob, Grep, Bash, WebFetch, AskUserQuestion]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout - 플러그인 마켓플레이스 스캔 및 추천
|
|
8
|
+
|
|
9
|
+
프로젝트 컨텍스트를 분석하고 호환되는 플러그인을 발견합니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout # 프로젝트 분석 후 추천
|
|
15
|
+
/scout --quick # 빠른 스캔 (점수 80+ 만 표시)
|
|
16
|
+
/scout --category <cat> # 특정 카테고리만 스캔
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 서브커맨드
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
/scout compare <a> <b> # 플러그인 비교 → compare.md 참조
|
|
23
|
+
/scout cleanup # 미사용 플러그인 정리 → cleanup.md 참조
|
|
24
|
+
/scout explore [category] # 마켓플레이스 탐색 → explore.md 참조
|
|
25
|
+
/scout audit # 보안/업데이트 점검 → audit.md 참조
|
|
26
|
+
/scout fork <src> <name> # 플러그인 포크 → fork.md 참조
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 인자: $ARGUMENTS
|
|
30
|
+
|
|
31
|
+
## 동작
|
|
32
|
+
|
|
33
|
+
### Phase 1: 프로젝트 컨텍스트 분석
|
|
34
|
+
|
|
35
|
+
1. **프로젝트 타입 감지**:
|
|
36
|
+
```
|
|
37
|
+
package.json → Node.js/JavaScript/TypeScript
|
|
38
|
+
requirements.txt → Python
|
|
39
|
+
pyproject.toml → Python (modern)
|
|
40
|
+
Cargo.toml → Rust
|
|
41
|
+
go.mod → Go
|
|
42
|
+
pom.xml / build.gradle → Java
|
|
43
|
+
composer.json → PHP
|
|
44
|
+
Gemfile → Ruby
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
2. **프레임워크 식별** (의존성에서 추출):
|
|
48
|
+
- React, Vue, Angular, Svelte (frontend)
|
|
49
|
+
- Express, Fastify, NestJS (Node backend)
|
|
50
|
+
- FastAPI, Django, Flask (Python)
|
|
51
|
+
- Spring, Quarkus (Java)
|
|
52
|
+
|
|
53
|
+
3. **설치된 플러그인 확인**:
|
|
54
|
+
- `~/.claude/settings.json`의 `enabledPlugins`
|
|
55
|
+
- `.claude/settings.json`의 프로젝트 플러그인
|
|
56
|
+
- 이미 설치된 플러그인은 추천에서 제외
|
|
57
|
+
|
|
58
|
+
### Phase 2: 마켓플레이스 스캔
|
|
59
|
+
|
|
60
|
+
1. **설정된 마켓플레이스 조회**:
|
|
61
|
+
```bash
|
|
62
|
+
cat ~/.claude/settings.json | grep -A 20 "extraKnownMarketplaces"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. **마켓플레이스 메타데이터 로드**:
|
|
66
|
+
- GitHub: `.claude-plugin/marketplace.json` 가져오기
|
|
67
|
+
- 로컬: 디렉토리 구조 읽기
|
|
68
|
+
- 플러그인 정보 파싱 (이름, 설명, 카테고리, 저자)
|
|
69
|
+
|
|
70
|
+
3. **플러그인 인벤토리 구축**:
|
|
71
|
+
- 플러그인 이름과 버전
|
|
72
|
+
- 카테고리 (development, productivity, security, testing)
|
|
73
|
+
- 저자/조직
|
|
74
|
+
- 소스 타입 (github, git, npm, local)
|
|
75
|
+
|
|
76
|
+
### Phase 3: 평가 및 점수 계산
|
|
77
|
+
|
|
78
|
+
`plugin-evaluation` 스킬을 적용하여 종합 점수 계산:
|
|
79
|
+
|
|
80
|
+
**종합 점수 = (프로젝트 매칭 × 0.4) + (인기도 × 0.3) + (보안 × 0.3)**
|
|
81
|
+
|
|
82
|
+
#### 프로젝트 매칭 (40%)
|
|
83
|
+
| 기준 | 점수 |
|
|
84
|
+
|------|------|
|
|
85
|
+
| 언어 정확 매칭 | 30 |
|
|
86
|
+
| 프레임워크 호환성 | 25 |
|
|
87
|
+
| 카테고리 관련성 | 20 |
|
|
88
|
+
| 의존성 호환성 | 15 |
|
|
89
|
+
| 아키텍처 적합성 | 10 |
|
|
90
|
+
|
|
91
|
+
#### 인기도 (30%)
|
|
92
|
+
| 기준 | 점수 |
|
|
93
|
+
|------|------|
|
|
94
|
+
| GitHub 스타 (10k+: 30, 1k+: 25, 100+: 15) | 0-30 |
|
|
95
|
+
| 최근 커밋 (90일) | 0-20 |
|
|
96
|
+
| 업데이트 최신성 | 0-20 |
|
|
97
|
+
| 이슈 응답 건강도 | 0-15 |
|
|
98
|
+
| 포크 활동 | 0-15 |
|
|
99
|
+
|
|
100
|
+
#### 보안 (30%)
|
|
101
|
+
| 기준 | 점수 |
|
|
102
|
+
|------|------|
|
|
103
|
+
| 라이선스 (MIT/Apache: 30, GPL: 20, Unknown: 0) | 0-30 |
|
|
104
|
+
| 알려진 취약점 | 0-40 |
|
|
105
|
+
| 저자 평판 (Official: 30, Verified: 20) | 0-30 |
|
|
106
|
+
|
|
107
|
+
### Phase 4: 추천 제시
|
|
108
|
+
|
|
109
|
+
추천 결과를 다음 형식으로 출력:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
## Plugin Scout Report
|
|
113
|
+
|
|
114
|
+
**프로젝트**: [감지된 언어] + [프레임워크]
|
|
115
|
+
**설치된 플러그인**: [개수] ([목록])
|
|
116
|
+
|
|
117
|
+
### 추천 플러그인
|
|
118
|
+
|
|
119
|
+
#### 1. [plugin-name] (점수: XX/100)
|
|
120
|
+
**추천 이유**: [프로젝트 컨텍스트 기반 설명]
|
|
121
|
+
|
|
122
|
+
| 지표 | 점수 | 상세 |
|
|
123
|
+
|------|------|------|
|
|
124
|
+
| 프로젝트 매칭 | XX | [이유] |
|
|
125
|
+
| 인기도 | XX | [스타, 활동] |
|
|
126
|
+
| 보안 | XX | [라이선스, 저자] |
|
|
127
|
+
|
|
128
|
+
**설치**: `/plugin install [name]@[marketplace]`
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
[상위 3-5개 플러그인 반복]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 인터뷰식 설치
|
|
136
|
+
|
|
137
|
+
AskUserQuestion 도구를 사용해 대화형으로 설치:
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
questions:
|
|
141
|
+
- question: "어떤 종류의 플러그인을 찾으시나요?"
|
|
142
|
+
header: "카테고리"
|
|
143
|
+
options:
|
|
144
|
+
- label: "개발 도구"
|
|
145
|
+
description: "LSP, 코드 분석, 기능 개발"
|
|
146
|
+
- label: "생산성"
|
|
147
|
+
description: "커밋, PR, 이슈 관리"
|
|
148
|
+
- label: "외부 서비스"
|
|
149
|
+
description: "Slack, GitHub, Notion 연동"
|
|
150
|
+
- label: "전체 스캔"
|
|
151
|
+
description: "프로젝트 분석 후 맞춤 추천"
|
|
152
|
+
multiSelect: false
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
설치 선택 시 `multiSelect: true`로 복수 선택 가능하게.
|
|
156
|
+
|
|
157
|
+
## 안전 규칙
|
|
158
|
+
|
|
159
|
+
1. **자동 설치 금지** - 항상 사용자 동의 필요
|
|
160
|
+
2. **보안 경고 표시**:
|
|
161
|
+
- 알 수 없거나 제한적인 라이선스
|
|
162
|
+
- 1년 이상 업데이트 없음
|
|
163
|
+
- 검증되지 않은 저자
|
|
164
|
+
- 알려진 취약점
|
|
165
|
+
3. **설치 전 확인** - 설치 명령 반복 후 승인 대기
|
|
166
|
+
|
|
167
|
+
## 보안 경고 형식
|
|
168
|
+
|
|
169
|
+
```markdown
|
|
170
|
+
**보안 경고**: [plugin-name]
|
|
171
|
+
- 라이선스: [type] - [영향]
|
|
172
|
+
- 마지막 업데이트: [date] - [우려 사항]
|
|
173
|
+
- 저자: [name] - [검증 상태]
|
|
174
|
+
- 취약점: [status]
|
|
175
|
+
|
|
176
|
+
주의해서 진행하세요. 신뢰하는 소스만 설치하세요.
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## 에러 처리
|
|
180
|
+
|
|
181
|
+
- **마켓플레이스 없음**:
|
|
182
|
+
```
|
|
183
|
+
설정된 마켓플레이스가 없습니다. 추가하세요:
|
|
184
|
+
/plugin marketplace add anthropics/claude-code-plugins
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- **네트워크 에러**: 캐시된 데이터 사용, 문제 보고
|
|
188
|
+
|
|
189
|
+
- **프로젝트 감지 실패**:
|
|
190
|
+
```
|
|
191
|
+
프로젝트 타입을 감지할 수 없습니다.
|
|
192
|
+
어떤 언어/프레임워크를 사용하시나요?
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## 예시
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
/scout
|
|
199
|
+
→ 프로젝트 분석 후 맞춤 플러그인 추천
|
|
200
|
+
|
|
201
|
+
/scout --quick
|
|
202
|
+
→ 점수 80점 이상 플러그인만 빠르게 표시
|
|
203
|
+
|
|
204
|
+
/scout --category development
|
|
205
|
+
→ 개발 도구 카테고리만 스캔
|
|
206
|
+
```
|
package/package.json
CHANGED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
skill: plugin-evaluation
|
|
3
|
-
description: 플러그인 평가 방법론. 플러그인 점수 계산, 보안 검토, 호환성 분석 시 사용합니다.
|
|
4
|
-
proactive: false
|
|
5
|
-
triggers:
|
|
6
|
-
- plugin_install
|
|
7
|
-
- plugin_compare
|
|
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
|
-
- `docs/references/scoring-methodology.md` - 상세 점수 계산 공식
|
|
226
|
-
- `docs/references/security-checklist.md` - 설치 전 보안 체크리스트
|
|
227
|
-
- `docs/references/license-compatibility.md` - 라이선스 호환성 매트릭스
|