monol-plugin-scout 2.1.3 → 4.1.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-plugin/plugin.json +1 -1
- package/CHANGELOG.md +244 -0
- package/monol-plugin-scout-pkg/CLAUDE.md +125 -8
- package/monol-plugin-scout-pkg/api/mock/categories.json +81 -0
- package/monol-plugin-scout-pkg/api/mock/insights.json +111 -0
- package/monol-plugin-scout-pkg/api/mock/marketplace.json +501 -0
- package/monol-plugin-scout-pkg/api/mock/trending.json +96 -0
- package/monol-plugin-scout-pkg/commands/console.md +79 -0
- package/monol-plugin-scout-pkg/commands/frequency.md +32 -0
- package/monol-plugin-scout-pkg/commands/install.md +32 -0
- package/monol-plugin-scout-pkg/commands/priority.md +30 -0
- package/monol-plugin-scout-pkg/commands/quiet.md +32 -0
- package/monol-plugin-scout-pkg/commands/schedule.md +32 -0
- package/monol-plugin-scout-pkg/commands/scout.md +8 -5
- package/monol-plugin-scout-pkg/commands/skills.md +160 -0
- package/monol-plugin-scout-pkg/commands/team.md +32 -0
- package/monol-plugin-scout-pkg/commands/timing.md +32 -0
- package/monol-plugin-scout-pkg/commands/trust.md +85 -0
- package/monol-plugin-scout-pkg/commands/trusted-install.md +98 -0
- package/monol-plugin-scout-pkg/commands/uninstall.md +31 -0
- package/monol-plugin-scout-pkg/config.yaml +57 -0
- package/monol-plugin-scout-pkg/data/.cache/676d5ab664292155e5f509c69d4edae1 +10 -0
- package/monol-plugin-scout-pkg/data/.session +8 -0
- package/monol-plugin-scout-pkg/data/analytics.json +102 -0
- package/monol-plugin-scout-pkg/data/history.json +67 -11
- package/monol-plugin-scout-pkg/data/logs/scout.log +1 -0
- package/monol-plugin-scout-pkg/data/schedules.json +17 -0
- package/monol-plugin-scout-pkg/data/team.json +53 -0
- package/monol-plugin-scout-pkg/data/usage.json +100 -7
- package/monol-plugin-scout-pkg/docs/ARCHITECTURE.md +201 -0
- package/monol-plugin-scout-pkg/hooks/generate-insights.sh +102 -0
- package/monol-plugin-scout-pkg/hooks/hooks.json +36 -1
- package/monol-plugin-scout-pkg/hooks/on-session-end.sh +136 -0
- package/monol-plugin-scout-pkg/hooks/on-session-start.sh +43 -0
- package/monol-plugin-scout-pkg/hooks/on-stop.md +79 -0
- package/monol-plugin-scout-pkg/hooks/open-console.sh +111 -0
- package/monol-plugin-scout-pkg/hooks/open-dashboard.sh +61 -0
- package/monol-plugin-scout-pkg/hooks/track-usage.sh +59 -0
- package/monol-plugin-scout-pkg/lib/ai-recommender.sh +505 -0
- package/monol-plugin-scout-pkg/lib/cache.sh +194 -0
- package/monol-plugin-scout-pkg/lib/data-validator.sh +360 -0
- package/monol-plugin-scout-pkg/lib/error-handler.sh +296 -0
- package/monol-plugin-scout-pkg/lib/logger.sh +263 -0
- package/monol-plugin-scout-pkg/lib/plugin-manager.sh +239 -0
- package/monol-plugin-scout-pkg/lib/priority-scorer.sh +262 -0
- package/monol-plugin-scout-pkg/lib/profile-learner.sh +339 -0
- package/monol-plugin-scout-pkg/lib/project-analyzer.sh +281 -0
- package/monol-plugin-scout-pkg/lib/recommendation-controller.sh +290 -0
- package/monol-plugin-scout-pkg/lib/rejection-learner.sh +232 -0
- package/monol-plugin-scout-pkg/lib/scheduler.sh +275 -0
- package/monol-plugin-scout-pkg/lib/skill-scout.sh +729 -0
- package/monol-plugin-scout-pkg/lib/sync.sh +221 -0
- package/monol-plugin-scout-pkg/lib/team-learner.sh +450 -0
- package/monol-plugin-scout-pkg/lib/team-manager.sh +369 -0
- package/monol-plugin-scout-pkg/lib/trend-learner.sh +428 -0
- package/monol-plugin-scout-pkg/lib/trust-manager.sh +261 -0
- package/monol-plugin-scout-pkg/lib/trusted-installer.sh +738 -0
- package/monol-plugin-scout-pkg/plugin.json +3 -2
- package/monol-plugin-scout-pkg/skills/audit.md +6 -0
- package/monol-plugin-scout-pkg/skills/cleanup.md +6 -0
- package/monol-plugin-scout-pkg/skills/compare.md +6 -0
- package/monol-plugin-scout-pkg/skills/console.md +315 -0
- package/monol-plugin-scout-pkg/skills/explore.md +6 -0
- package/monol-plugin-scout-pkg/skills/fork.md +6 -0
- package/monol-plugin-scout-pkg/skills/frequency.md +93 -0
- package/monol-plugin-scout-pkg/skills/install.md +127 -0
- package/monol-plugin-scout-pkg/skills/priority.md +77 -0
- package/monol-plugin-scout-pkg/skills/quiet.md +73 -0
- package/monol-plugin-scout-pkg/skills/schedule.md +95 -0
- package/monol-plugin-scout-pkg/skills/scout.md +27 -17
- package/monol-plugin-scout-pkg/skills/skills.md +230 -0
- package/monol-plugin-scout-pkg/skills/team.md +117 -0
- package/monol-plugin-scout-pkg/skills/timing.md +97 -0
- package/monol-plugin-scout-pkg/skills/trust.md +120 -0
- package/monol-plugin-scout-pkg/skills/trusted-install.md +264 -0
- package/monol-plugin-scout-pkg/skills/uninstall.md +100 -0
- package/monol-plugin-scout-pkg/web/components/activity-chart.js +208 -0
- package/monol-plugin-scout-pkg/web/components/index.js +27 -0
- package/monol-plugin-scout-pkg/web/components/insight-card.js +365 -0
- package/monol-plugin-scout-pkg/web/components/overview.js +154 -0
- package/monol-plugin-scout-pkg/web/components/plugin-list.js +242 -0
- package/monol-plugin-scout-pkg/web/components/stats-card.js +126 -0
- package/monol-plugin-scout-pkg/web/components/team-list.js +346 -0
- package/monol-plugin-scout-pkg/web/console.html +2098 -0
- package/monol-plugin-scout-pkg/web/dashboard.html +2106 -0
- package/monol-plugin-scout-pkg/web/manifest.json +29 -0
- package/package.json +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 스마트 타이밍 - 추천 시점 설정 (한글: 타이밍, 추천시점, 언제추천)
|
|
3
|
+
argument-hint: "[after-commit | after-pr | always] [on | off]"
|
|
4
|
+
allowed-tools: [Read, Bash]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /scout timing - 스마트 타이밍 설정
|
|
8
|
+
|
|
9
|
+
플러그인 추천이 표시되는 시점을 제어합니다.
|
|
10
|
+
|
|
11
|
+
## 사용법
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/scout timing # 현재 설정 확인
|
|
15
|
+
/scout timing after-commit on # 커밋 후에만 추천
|
|
16
|
+
/scout timing after-pr on # PR 후에만 추천
|
|
17
|
+
/scout timing always # 항상 추천 (기본값)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 인자: $ARGUMENTS
|
|
21
|
+
|
|
22
|
+
## 동작
|
|
23
|
+
|
|
24
|
+
### 현재 설정 확인 (기본)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/recommendation-controller.sh status
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 커밋 후 추천만 활성화
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/recommendation-controller.sh smart-timing after-commit true
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
커밋 완료 후에만 플러그인 추천이 표시됩니다.
|
|
37
|
+
|
|
38
|
+
### PR 후 추천만 활성화
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/recommendation-controller.sh smart-timing after-pr true
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
PR 생성 후에만 플러그인 추천이 표시됩니다.
|
|
45
|
+
|
|
46
|
+
### 항상 추천 (기본값)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/recommendation-controller.sh smart-timing after-commit false
|
|
50
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/recommendation-controller.sh smart-timing after-pr false
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 스마트 타이밍 옵션
|
|
54
|
+
|
|
55
|
+
| 옵션 | 설명 | 적합한 상황 |
|
|
56
|
+
|------|------|------------|
|
|
57
|
+
| always | 항상 추천 | 기본 설정 |
|
|
58
|
+
| after-commit | 커밋 후에만 | 작업 완료 시점에 추천 원할 때 |
|
|
59
|
+
| after-pr | PR 후에만 | 코드 리뷰 전 추천 원할 때 |
|
|
60
|
+
|
|
61
|
+
## 출력 형식
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
## 스마트 타이밍 설정
|
|
65
|
+
|
|
66
|
+
| 설정 | 상태 |
|
|
67
|
+
|------|------|
|
|
68
|
+
| 커밋 후 추천 | 비활성화 |
|
|
69
|
+
| PR 후 추천 | 비활성화 |
|
|
70
|
+
| 현재 모드 | 항상 추천 |
|
|
71
|
+
|
|
72
|
+
### 설정 변경
|
|
73
|
+
- `/scout timing after-commit on` - 커밋 후에만 추천
|
|
74
|
+
- `/scout timing after-pr on` - PR 후에만 추천
|
|
75
|
+
- `/scout timing always` - 항상 추천
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 예시
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
/scout timing
|
|
82
|
+
→ 현재 스마트 타이밍 설정 표시
|
|
83
|
+
|
|
84
|
+
/scout timing after-commit on
|
|
85
|
+
→ 커밋 후에만 추천 활성화
|
|
86
|
+
|
|
87
|
+
/scout timing after-pr on
|
|
88
|
+
→ PR 후에만 추천 활성화
|
|
89
|
+
|
|
90
|
+
/scout timing always
|
|
91
|
+
→ 모든 타이밍 제한 해제
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 관련 명령어
|
|
95
|
+
|
|
96
|
+
- `/scout quiet` - 무음 모드 (모든 추천 비활성화)
|
|
97
|
+
- `/scout frequency` - 추천 빈도 설정
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 신뢰 작성자 관리 - 자동 설치 신뢰 목록 관리 (한글: 신뢰관리, 트러스트)
|
|
3
|
+
argument-hint: "[@author | remove @author | list | export]"
|
|
4
|
+
allowed-tools: [Read, Bash, AskUserQuestion]
|
|
5
|
+
hooks:
|
|
6
|
+
Stop:
|
|
7
|
+
- hooks:
|
|
8
|
+
- type: command
|
|
9
|
+
command: "bash ${CLAUDE_PLUGIN_ROOT}/hooks/track-usage.sh trust"
|
|
10
|
+
timeout: 5
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Trust Management — 신뢰 작성자 관리
|
|
14
|
+
|
|
15
|
+
Scout 플러그인의 자동 설치(auto-install) 기능에서 사용하는 **신뢰 작성자 목록**을 관리하는 스킬입니다.
|
|
16
|
+
|
|
17
|
+
## 개요
|
|
18
|
+
|
|
19
|
+
Scout이 MCP 서버 플러그인을 자동으로 설치할 때, 작성자가 신뢰 목록에 포함되어 있으면 추가 확인 없이 설치를 승인합니다. 이를 통해 반복적인 확인 과정을 줄이면서도 보안을 유지할 수 있습니다.
|
|
20
|
+
|
|
21
|
+
신뢰 목록은 `config.yaml`의 `auto_install.trusted_authors` 배열에 저장되며, 모든 변경 사항은 `data/logs/events.jsonl`에 기록됩니다.
|
|
22
|
+
|
|
23
|
+
## 서브커맨드
|
|
24
|
+
|
|
25
|
+
### 추가 — `trust @author` 또는 `trust add @author`
|
|
26
|
+
|
|
27
|
+
신뢰 작성자를 목록에 추가합니다.
|
|
28
|
+
|
|
29
|
+
**흐름:**
|
|
30
|
+
1. 인자에서 작성자 이름 파싱 (`@` 접두어 자동 제거)
|
|
31
|
+
2. 이미 신뢰 목록에 있는지 확인
|
|
32
|
+
3. **사용자 확인** (AskUserQuestion): 신뢰 추가의 의미를 설명하고 승인 요청
|
|
33
|
+
4. 승인 시 `lib/trust-manager.sh add <author>` 실행
|
|
34
|
+
5. `events.jsonl`에 `trust_add` 이벤트 기록
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
bash "${CLAUDE_PLUGIN_ROOT}/lib/trust-manager.sh" add "vercel"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 제거 — `trust remove @author`
|
|
41
|
+
|
|
42
|
+
신뢰 작성자를 목록에서 제거합니다.
|
|
43
|
+
|
|
44
|
+
**제한사항:**
|
|
45
|
+
- `Anthropic`은 보호된 작성자이며 제거할 수 없습니다.
|
|
46
|
+
|
|
47
|
+
**흐름:**
|
|
48
|
+
1. 보호 작성자 여부 확인
|
|
49
|
+
2. 목록에 존재하는지 확인
|
|
50
|
+
3. `lib/trust-manager.sh remove <author>` 실행
|
|
51
|
+
4. `events.jsonl`에 `trust_remove` 이벤트 기록
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
bash "${CLAUDE_PLUGIN_ROOT}/lib/trust-manager.sh" remove "vercel"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 조회 — `trust list`
|
|
58
|
+
|
|
59
|
+
현재 신뢰 작성자 전체 목록을 표시합니다.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bash "${CLAUDE_PLUGIN_ROOT}/lib/trust-manager.sh" list
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
출력 예시:
|
|
66
|
+
```
|
|
67
|
+
=== Trusted Authors ===
|
|
68
|
+
1. Anthropic
|
|
69
|
+
2. vercel
|
|
70
|
+
3. supabase
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 감사 내보내기 — `trust export`
|
|
74
|
+
|
|
75
|
+
신뢰 관련 전체 감사 로그를 JSON 파일로 내보냅니다.
|
|
76
|
+
|
|
77
|
+
**수집 대상:**
|
|
78
|
+
- `events.jsonl`에서 신뢰 관련 이벤트 (trust_add, trust_remove)
|
|
79
|
+
- `history.json`에서 신뢰 기반 자동 설치 로그 (trustedInstallLog)
|
|
80
|
+
- 현재 신뢰 작성자 목록
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
bash "${CLAUDE_PLUGIN_ROOT}/lib/trust-manager.sh" export
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
출력 파일: `data/trust-audit-export.json`
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"exported_at": "2026-02-12T10:30:00Z",
|
|
91
|
+
"current_trusted_authors": ["Anthropic", "vercel"],
|
|
92
|
+
"trust_events": [...],
|
|
93
|
+
"trusted_install_log": [...]
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## 자동 설치와의 통합
|
|
98
|
+
|
|
99
|
+
Scout의 `install` 스킬이 MCP 서버를 설치할 때:
|
|
100
|
+
|
|
101
|
+
1. 서버 메타데이터에서 `author` 필드를 확인
|
|
102
|
+
2. `is_trusted(author)` 호출로 신뢰 여부 판단
|
|
103
|
+
3. 신뢰 작성자 → 사용자 확인 없이 즉시 설치
|
|
104
|
+
4. 비신뢰 작성자 → 사용자에게 설치 확인 요청
|
|
105
|
+
|
|
106
|
+
이 흐름은 `lib/trust-manager.sh`의 `is_trusted` 함수를 소싱하여 사용합니다:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
source "${CLAUDE_PLUGIN_ROOT}/lib/trust-manager.sh"
|
|
110
|
+
if is_trusted "$author"; then
|
|
111
|
+
# 자동 승인
|
|
112
|
+
fi
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 보안 고려사항
|
|
116
|
+
|
|
117
|
+
- **Anthropic은 항상 신뢰**: 기본 보호 작성자로 제거할 수 없습니다.
|
|
118
|
+
- **감사 추적**: 모든 신뢰 변경은 `events.jsonl`에 타임스탬프와 함께 기록됩니다.
|
|
119
|
+
- **내보내기**: `export` 서브커맨드로 전체 감사 이력을 검토할 수 있습니다.
|
|
120
|
+
- **사용자 확인**: 추가 시 반드시 사용자 확인을 거칩니다 (스킬/커맨드 레벨).
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 신뢰된 플러그인 자동 설치 - Anthropic 공식 플러그인 자동 설치 관리 (한글: 자동설치, 신뢰설치)
|
|
3
|
+
argument-hint: "[on | off | status | check | run]"
|
|
4
|
+
allowed-tools: [Read, Bash, AskUserQuestion]
|
|
5
|
+
hooks:
|
|
6
|
+
Stop:
|
|
7
|
+
- hooks:
|
|
8
|
+
- type: command
|
|
9
|
+
command: "bash ${CLAUDE_PLUGIN_ROOT}/hooks/track-usage.sh trusted-install"
|
|
10
|
+
timeout: 5
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /scout trusted-install - 신뢰된 플러그인 자동 설치
|
|
14
|
+
|
|
15
|
+
Anthropic 등 신뢰된 저자의 공식 플러그인을 자동으로 설치하고 관리합니다.
|
|
16
|
+
|
|
17
|
+
## 사용법
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/scout trusted-install on # 자동 설치 활성화 (opt-in)
|
|
21
|
+
/scout trusted-install off # 자동 설치 비활성화 (opt-out)
|
|
22
|
+
/scout trusted-install status # 현재 설정 + 마지막 실행 결과
|
|
23
|
+
/scout trusted-install check # 드라이런: 무엇이 설치될지 미리 확인
|
|
24
|
+
/scout trusted-install run # 즉시 실행 (수동 트리거)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 인자: $ARGUMENTS
|
|
28
|
+
|
|
29
|
+
## 개요
|
|
30
|
+
|
|
31
|
+
Trusted Auto-Install은 공식 마켓플레이스에 등록된 신뢰된 저자의 플러그인을 자동으로 감지하고 설치하는 기능입니다. 수동으로 마켓플레이스를 탐색하지 않아도 새 공식 플러그인이 출시되면 자동으로 환경에 반영됩니다.
|
|
32
|
+
|
|
33
|
+
**핵심 원칙:**
|
|
34
|
+
- 사용자의 **명시적 opt-in** 없이는 동작하지 않습니다
|
|
35
|
+
- config.yaml과 history.json **이중 확인**으로 우발적 실행을 방지합니다
|
|
36
|
+
- 설치 대상은 **trusted_authors** 목록에 등록된 저자(기본: Anthropic)만 해당합니다
|
|
37
|
+
|
|
38
|
+
## 동작
|
|
39
|
+
|
|
40
|
+
### Subcommand: `on` (활성화)
|
|
41
|
+
|
|
42
|
+
1. **사용자 확인** (AskUserQuestion):
|
|
43
|
+
```yaml
|
|
44
|
+
questions:
|
|
45
|
+
- question: "신뢰된 저자(Anthropic 등)의 공식 플러그인을 자동 설치하시겠습니까?"
|
|
46
|
+
header: "Trusted Auto-Install 활성화"
|
|
47
|
+
options:
|
|
48
|
+
- label: "활성화"
|
|
49
|
+
description: "세션 시작 시 새 공식 플러그인을 자동 설치합니다"
|
|
50
|
+
- label: "취소"
|
|
51
|
+
description: "변경하지 않습니다"
|
|
52
|
+
multiSelect: false
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
2. 사용자가 "활성화"를 선택하면:
|
|
56
|
+
```bash
|
|
57
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/trusted-installer.sh enable
|
|
58
|
+
```
|
|
59
|
+
- config.yaml `auto_install.enabled` → `true`
|
|
60
|
+
- history.json `preferences.trustedAutoInstall` → `true`
|
|
61
|
+
|
|
62
|
+
3. 결과 안내:
|
|
63
|
+
```markdown
|
|
64
|
+
## Trusted Auto-Install 활성화됨
|
|
65
|
+
|
|
66
|
+
신뢰된 저자: Anthropic
|
|
67
|
+
마켓플레이스: claude-plugins-official
|
|
68
|
+
|
|
69
|
+
다음 세션 시작 시 자동으로 새 공식 플러그인을 확인하고 설치합니다.
|
|
70
|
+
`/scout trusted-install check`로 미리 확인할 수 있습니다.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Subcommand: `off` (비활성화)
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/trusted-installer.sh disable
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
결과 안내:
|
|
80
|
+
```markdown
|
|
81
|
+
## Trusted Auto-Install 비활성화됨
|
|
82
|
+
|
|
83
|
+
자동 설치가 중지되었습니다.
|
|
84
|
+
`/scout trusted-install on`으로 다시 활성화할 수 있습니다.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Subcommand: `status` (상태 확인)
|
|
88
|
+
|
|
89
|
+
1. config.yaml 설정 읽기:
|
|
90
|
+
```bash
|
|
91
|
+
cat ${CLAUDE_PLUGIN_ROOT}/config.yaml
|
|
92
|
+
```
|
|
93
|
+
`auto_install` 섹션의 설정을 표시합니다.
|
|
94
|
+
|
|
95
|
+
2. 마지막 실행 결과 표시:
|
|
96
|
+
```bash
|
|
97
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/trusted-installer.sh status
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
3. 출력 형식:
|
|
101
|
+
```markdown
|
|
102
|
+
## Trusted Auto-Install 상태
|
|
103
|
+
|
|
104
|
+
| 항목 | 값 |
|
|
105
|
+
|------|------|
|
|
106
|
+
| 활성화 (config) | true / false |
|
|
107
|
+
| 활성화 (history) | true / false |
|
|
108
|
+
| 신뢰된 저자 | Anthropic |
|
|
109
|
+
| LSP 언어 필터 | true |
|
|
110
|
+
| 충돌 감지 | true |
|
|
111
|
+
|
|
112
|
+
### 마지막 실행
|
|
113
|
+
- 시간: 2026-02-12T10:30:00Z
|
|
114
|
+
- 설치됨: 2개
|
|
115
|
+
- 건너뜀: 1개
|
|
116
|
+
- 신규 출시: 0개
|
|
117
|
+
- 오류: 0개
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Subcommand: `check` (드라이런)
|
|
121
|
+
|
|
122
|
+
설치 없이 무엇이 설치될지 미리 확인합니다.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/trusted-installer.sh check
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
출력에 포함되는 정보:
|
|
129
|
+
- 현재 활성/비활성 상태
|
|
130
|
+
- 신뢰된 저자 목록
|
|
131
|
+
- **설치 후보**: 마켓플레이스에 있지만 아직 설치되지 않은 플러그인
|
|
132
|
+
- **신규 출시**: 이전 캐시 대비 새로 추가된 플러그인
|
|
133
|
+
- 현재 설치된 플러그인 수
|
|
134
|
+
|
|
135
|
+
### Subcommand: `run` (즉시 실행)
|
|
136
|
+
|
|
137
|
+
활성화 상태에서 즉시 자동 설치를 실행합니다.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/trusted-installer.sh run
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**실행 파이프라인:**
|
|
144
|
+
|
|
145
|
+
1. `is_enabled()` 확인 → 비활성화면 안내 후 종료
|
|
146
|
+
2. 캐시 디렉토리 생성 (`$DATA_DIR/.cache/`)
|
|
147
|
+
3. `detect_new_releases()` — 이전 캐시와 현재 마켓플레이스 비교
|
|
148
|
+
4. `filter_relevant()` — 설치 후보 필터링
|
|
149
|
+
- 마켓플레이스에서 신뢰된 저자의 플러그인 추출
|
|
150
|
+
- 이미 설치된 플러그인 제외
|
|
151
|
+
- LSP 언어 필터 적용 (프로젝트와 무관한 LSP 제외)
|
|
152
|
+
- 충돌 감지 (동일 기능 플러그인 중복 방지)
|
|
153
|
+
5. 후보별 `execute_install()` + `record_install()`
|
|
154
|
+
6. `write_install_report()` → `.last-auto-install.json` 저장
|
|
155
|
+
7. 로거에 요약 기록
|
|
156
|
+
|
|
157
|
+
## 안전 메커니즘
|
|
158
|
+
|
|
159
|
+
### 이중 확인 (Dual-Gate)
|
|
160
|
+
|
|
161
|
+
자동 설치가 동작하려면 두 곳 모두 `true`여야 합니다:
|
|
162
|
+
|
|
163
|
+
| 위치 | 키 | 설명 |
|
|
164
|
+
|------|-----|------|
|
|
165
|
+
| config.yaml | `auto_install.enabled` | 설정 파일 레벨 |
|
|
166
|
+
| history.json | `preferences.trustedAutoInstall` | 사용자 선호 레벨 |
|
|
167
|
+
|
|
168
|
+
어느 한 쪽이라도 `false`이면 자동 설치가 실행되지 않습니다.
|
|
169
|
+
|
|
170
|
+
### LSP 언어 필터링
|
|
171
|
+
|
|
172
|
+
`lsp_language_filter: true` 설정 시, LSP 플러그인은 현재 프로젝트의 언어와 매칭될 때만 설치됩니다.
|
|
173
|
+
|
|
174
|
+
| LSP 플러그인 | 매칭 조건 |
|
|
175
|
+
|-------------|----------|
|
|
176
|
+
| typescript-lsp | package.json 또는 tsconfig.json 존재 |
|
|
177
|
+
| pyright-lsp | requirements.txt, pyproject.toml, setup.py 존재 |
|
|
178
|
+
| gopls-lsp | go.mod 존재 |
|
|
179
|
+
| rust-analyzer-lsp | Cargo.toml 존재 |
|
|
180
|
+
| jdtls-lsp | pom.xml 또는 build.gradle 존재 |
|
|
181
|
+
| php-lsp | composer.json 존재 |
|
|
182
|
+
| clangd-lsp | *.c, *.cpp, *.h 파일 존재 |
|
|
183
|
+
| swift-lsp | *.swift 파일 존재 |
|
|
184
|
+
| kotlin-lsp | *.kt, *.kts 파일 존재 |
|
|
185
|
+
| csharp-lsp | *.cs 파일 존재 |
|
|
186
|
+
| lua-lsp | *.lua 파일 존재 |
|
|
187
|
+
|
|
188
|
+
LSP가 아닌 일반 플러그인은 항상 매칭됩니다 (필터링 없음).
|
|
189
|
+
|
|
190
|
+
### 충돌 감지
|
|
191
|
+
|
|
192
|
+
`check_conflicts: true` 설정 시, 동일 기능 그룹 내 플러그인이 이미 설치되어 있으면 새 플러그인 설치를 건너뜁니다.
|
|
193
|
+
|
|
194
|
+
| 그룹 | 포함 플러그인 |
|
|
195
|
+
|------|-------------|
|
|
196
|
+
| formatters | prettier-format, eslint-fix, biome-format |
|
|
197
|
+
| linters | eslint-lsp, biome-lsp |
|
|
198
|
+
| git | commit-commands, git-helper, conventional-commits |
|
|
199
|
+
|
|
200
|
+
### 신규 출시 감지
|
|
201
|
+
|
|
202
|
+
`detect_new_releases: true` 설정 시, 이전에 캐시된 마켓플레이스 카탈로그와 현재를 비교하여 새로 추가된 플러그인을 감지합니다. 감지 결과는 `check` 및 `run` 실행 시 리포트에 포함됩니다.
|
|
203
|
+
|
|
204
|
+
### 오프라인 폴백
|
|
205
|
+
|
|
206
|
+
마켓플레이스 파일에 접근할 수 없는 경우:
|
|
207
|
+
1. 로컬 캐시 (`$DATA_DIR/.cache/trusted-catalog.json`) 사용
|
|
208
|
+
2. 캐시도 없으면 조용히 종료 (에러 없음)
|
|
209
|
+
|
|
210
|
+
### 설치 리포트
|
|
211
|
+
|
|
212
|
+
모든 `run` 실행 후 `$DATA_DIR/.last-auto-install.json`에 결과가 기록됩니다:
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"timestamp": "2026-02-12T10:30:00Z",
|
|
217
|
+
"installed": ["plugin-a", "plugin-b"],
|
|
218
|
+
"skipped": [],
|
|
219
|
+
"newReleases": [],
|
|
220
|
+
"errors": [],
|
|
221
|
+
"summary": "Installed 2, Skipped 0, New 0"
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## 설정 (config.yaml)
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
auto_install:
|
|
229
|
+
enabled: false # /scout trusted-install on 으로 opt-in
|
|
230
|
+
trusted_authors: ["Anthropic"]
|
|
231
|
+
marketplace: "claude-plugins-official"
|
|
232
|
+
lsp_language_filter: true # LSP는 프로젝트 언어 매칭 필요
|
|
233
|
+
scope: "user"
|
|
234
|
+
cache_catalog: true # marketplace 카탈로그 로컬 캐시
|
|
235
|
+
cache_ttl: 86400 # 24시간
|
|
236
|
+
detect_new_releases: true # 이전 vs 현재 비교
|
|
237
|
+
check_conflicts: true # 동일 기능 플러그인 감지
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## 예시
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
/scout trusted-install on
|
|
244
|
+
→ AskUserQuestion으로 확인 후 활성화
|
|
245
|
+
|
|
246
|
+
/scout trusted-install off
|
|
247
|
+
→ 즉시 비활성화
|
|
248
|
+
|
|
249
|
+
/scout trusted-install status
|
|
250
|
+
→ 설정 상태 + 마지막 실행 결과
|
|
251
|
+
|
|
252
|
+
/scout trusted-install check
|
|
253
|
+
→ 설치 후보 목록 표시 (변경 없음)
|
|
254
|
+
|
|
255
|
+
/scout trusted-install run
|
|
256
|
+
→ 누락된 공식 플러그인 설치 실행
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
## 관련 명령어
|
|
260
|
+
|
|
261
|
+
- `/scout install` — 수동 플러그인 설치
|
|
262
|
+
- `/scout uninstall` — 플러그인 제거
|
|
263
|
+
- `/scout explore` — 마켓플레이스 탐색
|
|
264
|
+
- `/scout audit` — 플러그인 보안 감사
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 플러그인 제거 - 설치된 플러그인을 제거합니다 (한글: 제거, 삭제, 언인스톨)
|
|
3
|
+
argument-hint: "<plugin-name>"
|
|
4
|
+
allowed-tools: [Read, Bash, AskUserQuestion]
|
|
5
|
+
hooks:
|
|
6
|
+
Stop:
|
|
7
|
+
- hooks:
|
|
8
|
+
- type: command
|
|
9
|
+
command: "bash ${CLAUDE_PLUGIN_ROOT}/hooks/track-usage.sh uninstall"
|
|
10
|
+
timeout: 5
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /scout uninstall - 플러그인 제거
|
|
14
|
+
|
|
15
|
+
설치된 플러그인을 제거합니다.
|
|
16
|
+
|
|
17
|
+
## 사용법
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/scout uninstall <plugin-name> # 플러그인 제거
|
|
21
|
+
/scout remove <plugin-name> # 별칭
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 인자: $ARGUMENTS
|
|
25
|
+
|
|
26
|
+
## 동작
|
|
27
|
+
|
|
28
|
+
### Phase 1: 플러그인 확인
|
|
29
|
+
|
|
30
|
+
1. **설치 여부 확인**:
|
|
31
|
+
```bash
|
|
32
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/plugin-manager.sh status <plugin-name>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
2. **사용량 확인**:
|
|
36
|
+
- usage.json에서 해당 플러그인의 사용 통계 조회
|
|
37
|
+
- 최근 사용 빈도 확인
|
|
38
|
+
|
|
39
|
+
### Phase 2: 사용자 확인
|
|
40
|
+
|
|
41
|
+
AskUserQuestion으로 제거 확인:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
questions:
|
|
45
|
+
- question: "<plugin-name> 플러그인을 제거하시겠습니까?"
|
|
46
|
+
header: "제거 확인"
|
|
47
|
+
options:
|
|
48
|
+
- label: "제거"
|
|
49
|
+
description: "지금 제거합니다"
|
|
50
|
+
- label: "비활성화만"
|
|
51
|
+
description: "제거하지 않고 비활성화만"
|
|
52
|
+
- label: "취소"
|
|
53
|
+
description: "제거하지 않습니다"
|
|
54
|
+
multiSelect: false
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Phase 3: 제거 실행
|
|
58
|
+
|
|
59
|
+
사용자가 "제거"를 선택한 경우:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/plugin-manager.sh uninstall <plugin-name>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
사용자가 "비활성화만"을 선택한 경우:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
bash ${CLAUDE_PLUGIN_ROOT}/lib/plugin-manager.sh disable <plugin-name>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Phase 4: 결과 안내
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## 제거 완료
|
|
75
|
+
|
|
76
|
+
**플러그인**: <plugin-name>
|
|
77
|
+
|
|
78
|
+
Claude Code를 재시작하면 완전히 제거됩니다.
|
|
79
|
+
|
|
80
|
+
### 복원하려면
|
|
81
|
+
```
|
|
82
|
+
/scout install <plugin-name>
|
|
83
|
+
```
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 예시
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
/scout uninstall old-formatter
|
|
90
|
+
→ old-formatter 제거
|
|
91
|
+
|
|
92
|
+
/scout remove unused-plugin
|
|
93
|
+
→ unused-plugin 제거
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 안전 규칙
|
|
97
|
+
|
|
98
|
+
1. **항상 사용자 확인 필요** - 자동 제거 금지
|
|
99
|
+
2. **백업 생성** - 제거 전 settings.json 백업
|
|
100
|
+
3. **복원 안내** - 재설치 방법 안내
|