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.
Files changed (87) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +244 -0
  3. package/monol-plugin-scout-pkg/CLAUDE.md +125 -8
  4. package/monol-plugin-scout-pkg/api/mock/categories.json +81 -0
  5. package/monol-plugin-scout-pkg/api/mock/insights.json +111 -0
  6. package/monol-plugin-scout-pkg/api/mock/marketplace.json +501 -0
  7. package/monol-plugin-scout-pkg/api/mock/trending.json +96 -0
  8. package/monol-plugin-scout-pkg/commands/console.md +79 -0
  9. package/monol-plugin-scout-pkg/commands/frequency.md +32 -0
  10. package/monol-plugin-scout-pkg/commands/install.md +32 -0
  11. package/monol-plugin-scout-pkg/commands/priority.md +30 -0
  12. package/monol-plugin-scout-pkg/commands/quiet.md +32 -0
  13. package/monol-plugin-scout-pkg/commands/schedule.md +32 -0
  14. package/monol-plugin-scout-pkg/commands/scout.md +8 -5
  15. package/monol-plugin-scout-pkg/commands/skills.md +160 -0
  16. package/monol-plugin-scout-pkg/commands/team.md +32 -0
  17. package/monol-plugin-scout-pkg/commands/timing.md +32 -0
  18. package/monol-plugin-scout-pkg/commands/trust.md +85 -0
  19. package/monol-plugin-scout-pkg/commands/trusted-install.md +98 -0
  20. package/monol-plugin-scout-pkg/commands/uninstall.md +31 -0
  21. package/monol-plugin-scout-pkg/config.yaml +57 -0
  22. package/monol-plugin-scout-pkg/data/.cache/676d5ab664292155e5f509c69d4edae1 +10 -0
  23. package/monol-plugin-scout-pkg/data/.session +8 -0
  24. package/monol-plugin-scout-pkg/data/analytics.json +102 -0
  25. package/monol-plugin-scout-pkg/data/history.json +67 -11
  26. package/monol-plugin-scout-pkg/data/logs/scout.log +1 -0
  27. package/monol-plugin-scout-pkg/data/schedules.json +17 -0
  28. package/monol-plugin-scout-pkg/data/team.json +53 -0
  29. package/monol-plugin-scout-pkg/data/usage.json +100 -7
  30. package/monol-plugin-scout-pkg/docs/ARCHITECTURE.md +201 -0
  31. package/monol-plugin-scout-pkg/hooks/generate-insights.sh +102 -0
  32. package/monol-plugin-scout-pkg/hooks/hooks.json +36 -1
  33. package/monol-plugin-scout-pkg/hooks/on-session-end.sh +136 -0
  34. package/monol-plugin-scout-pkg/hooks/on-session-start.sh +43 -0
  35. package/monol-plugin-scout-pkg/hooks/on-stop.md +79 -0
  36. package/monol-plugin-scout-pkg/hooks/open-console.sh +111 -0
  37. package/monol-plugin-scout-pkg/hooks/open-dashboard.sh +61 -0
  38. package/monol-plugin-scout-pkg/hooks/track-usage.sh +59 -0
  39. package/monol-plugin-scout-pkg/lib/ai-recommender.sh +505 -0
  40. package/monol-plugin-scout-pkg/lib/cache.sh +194 -0
  41. package/monol-plugin-scout-pkg/lib/data-validator.sh +360 -0
  42. package/monol-plugin-scout-pkg/lib/error-handler.sh +296 -0
  43. package/monol-plugin-scout-pkg/lib/logger.sh +263 -0
  44. package/monol-plugin-scout-pkg/lib/plugin-manager.sh +239 -0
  45. package/monol-plugin-scout-pkg/lib/priority-scorer.sh +262 -0
  46. package/monol-plugin-scout-pkg/lib/profile-learner.sh +339 -0
  47. package/monol-plugin-scout-pkg/lib/project-analyzer.sh +281 -0
  48. package/monol-plugin-scout-pkg/lib/recommendation-controller.sh +290 -0
  49. package/monol-plugin-scout-pkg/lib/rejection-learner.sh +232 -0
  50. package/monol-plugin-scout-pkg/lib/scheduler.sh +275 -0
  51. package/monol-plugin-scout-pkg/lib/skill-scout.sh +729 -0
  52. package/monol-plugin-scout-pkg/lib/sync.sh +221 -0
  53. package/monol-plugin-scout-pkg/lib/team-learner.sh +450 -0
  54. package/monol-plugin-scout-pkg/lib/team-manager.sh +369 -0
  55. package/monol-plugin-scout-pkg/lib/trend-learner.sh +428 -0
  56. package/monol-plugin-scout-pkg/lib/trust-manager.sh +261 -0
  57. package/monol-plugin-scout-pkg/lib/trusted-installer.sh +738 -0
  58. package/monol-plugin-scout-pkg/plugin.json +3 -2
  59. package/monol-plugin-scout-pkg/skills/audit.md +6 -0
  60. package/monol-plugin-scout-pkg/skills/cleanup.md +6 -0
  61. package/monol-plugin-scout-pkg/skills/compare.md +6 -0
  62. package/monol-plugin-scout-pkg/skills/console.md +315 -0
  63. package/monol-plugin-scout-pkg/skills/explore.md +6 -0
  64. package/monol-plugin-scout-pkg/skills/fork.md +6 -0
  65. package/monol-plugin-scout-pkg/skills/frequency.md +93 -0
  66. package/monol-plugin-scout-pkg/skills/install.md +127 -0
  67. package/monol-plugin-scout-pkg/skills/priority.md +77 -0
  68. package/monol-plugin-scout-pkg/skills/quiet.md +73 -0
  69. package/monol-plugin-scout-pkg/skills/schedule.md +95 -0
  70. package/monol-plugin-scout-pkg/skills/scout.md +27 -17
  71. package/monol-plugin-scout-pkg/skills/skills.md +230 -0
  72. package/monol-plugin-scout-pkg/skills/team.md +117 -0
  73. package/monol-plugin-scout-pkg/skills/timing.md +97 -0
  74. package/monol-plugin-scout-pkg/skills/trust.md +120 -0
  75. package/monol-plugin-scout-pkg/skills/trusted-install.md +264 -0
  76. package/monol-plugin-scout-pkg/skills/uninstall.md +100 -0
  77. package/monol-plugin-scout-pkg/web/components/activity-chart.js +208 -0
  78. package/monol-plugin-scout-pkg/web/components/index.js +27 -0
  79. package/monol-plugin-scout-pkg/web/components/insight-card.js +365 -0
  80. package/monol-plugin-scout-pkg/web/components/overview.js +154 -0
  81. package/monol-plugin-scout-pkg/web/components/plugin-list.js +242 -0
  82. package/monol-plugin-scout-pkg/web/components/stats-card.js +126 -0
  83. package/monol-plugin-scout-pkg/web/components/team-list.js +346 -0
  84. package/monol-plugin-scout-pkg/web/console.html +2098 -0
  85. package/monol-plugin-scout-pkg/web/dashboard.html +2106 -0
  86. package/monol-plugin-scout-pkg/web/manifest.json +29 -0
  87. 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. **복원 안내** - 재설치 방법 안내