oh-my-customcode 0.140.0 → 0.142.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/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 49 agents. 118 skills. 23 rules. One command.
16
+ 49 agents. 121 skills. 23 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcode && cd your-project && omcustom init
@@ -132,7 +132,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
132
132
 
133
133
  ---
134
134
 
135
- ### Skills (118)
135
+ ### Skills (121)
136
136
 
137
137
  | Category | Count | Includes |
138
138
  |----------|-------|----------|
@@ -222,7 +222,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
222
222
 
223
223
  ---
224
224
 
225
- ### Guides (54)
225
+ ### Guides (57)
226
226
 
227
227
  Reference documentation covering best practices, architecture decisions, and integration patterns. Located in `guides/` at project root, covering topics from agent design to CI/CD to observability.
228
228
 
@@ -272,14 +272,14 @@ your-project/
272
272
  ├── CLAUDE.md # Entry point
273
273
  ├── .claude/
274
274
  │ ├── agents/ # 49 agent definitions
275
- │ ├── skills/ # 118 skill modules
275
+ │ ├── skills/ # 121 skill modules
276
276
  │ ├── rules/ # 22 governance rules (R000-R021)
277
277
  │ ├── hooks/ # 15 lifecycle hook scripts
278
278
  │ ├── schemas/ # Tool input validation schemas
279
279
  │ ├── specs/ # Extracted canonical specs
280
280
  │ ├── contexts/ # 4 shared context files
281
281
  │ └── ontology/ # Knowledge graph for RAG
282
- └── guides/ # 54 reference documents
282
+ └── guides/ # 57 reference documents
283
283
  ```
284
284
 
285
285
  ---
package/dist/cli/index.js CHANGED
@@ -2334,7 +2334,7 @@ var init_package = __esm(() => {
2334
2334
  workspaces: [
2335
2335
  "packages/*"
2336
2336
  ],
2337
- version: "0.140.0",
2337
+ version: "0.142.0",
2338
2338
  description: "Batteries-included agent harness for Claude Code",
2339
2339
  type: "module",
2340
2340
  bin: {
package/dist/index.js CHANGED
@@ -2014,7 +2014,7 @@ var package_default = {
2014
2014
  workspaces: [
2015
2015
  "packages/*"
2016
2016
  ],
2017
- version: "0.140.0",
2017
+ version: "0.142.0",
2018
2018
  description: "Batteries-included agent harness for Claude Code",
2019
2019
  type: "module",
2020
2020
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.140.0",
6
+ "version": "0.142.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: instinct-extractor
3
+ description: 다중 세션 transcript에서 반복 실패 패턴(instinct)을 자동 채굴하여 신규 skill candidate 생성
4
+ scope: core
5
+ user-invocable: true
6
+ argument-hint: "[--days <n>] [--min-repeat <n>] [--dry-run]"
7
+ version: 0.1.0
8
+ effort: medium
9
+ ---
10
+
11
+ # Instinct Extractor
12
+
13
+ 세션 transcript 시계열에서 _instinct_ (실패 학습 + 대응 본능) 패턴을 자동 채굴하여 신규 skill candidate를 생성한다.
14
+ R016 연속 개선 루프의 자동화 단계로, 사람이 명시적으로 호출하거나 R016 Skill Promotion 트리거(동일 패턴 3회 이상 반복)에 의해 자동 실행된다.
15
+
16
+ ## skill-extractor와의 차별점
17
+
18
+ | 자산 | trigger | input | output |
19
+ |------|---------|-------|--------|
20
+ | `skill-extractor` | 명시 호출 (`--mode success` / `--mode failure`) | 단일 세션 task trajectory + feedback memory | SKILL.md candidate |
21
+ | `instinct-extractor` | 자동/스케줄 (R016 3회 반복 트리거) | 다중 세션 transcript 시계열 (N일 범위) | failure pattern + 대응 본능 클러스터 → SKILL.md candidate |
22
+
23
+ **보완 관계**: `skill-extractor --mode failure`는 현재 세션의 feedback memory를 분석한다.
24
+ `instinct-extractor`는 여러 세션을 가로질러 시계열 패턴을 채굴한다.
25
+ 두 스킬은 경쟁하지 않으며, instinct-extractor가 발견한 후보를 skill-extractor의 결과물과 교차 검증하는 것을 권장한다.
26
+
27
+ ## Usage
28
+
29
+ ```
30
+ /instinct-extractor # 최근 14일 transcript 분석
31
+ /instinct-extractor --days 30 # 분석 범위 확장
32
+ /instinct-extractor --min-repeat 2 # 반복 임계값 낮춤 (기본: 3)
33
+ /instinct-extractor --dry-run # 제안만 출력, 파일 미생성
34
+ ```
35
+
36
+ ## Options
37
+
38
+ ```
39
+ --days, -d 분석할 transcript 범위 (일 단위, 기본: 14)
40
+ --min-repeat, -r instinct 후보 최소 반복 횟수 (기본: 3)
41
+ --dry-run 후보 목록만 stdout 출력, mgr-creator 위임 없음
42
+ --cluster-only 클러스터링 결과만 출력, SKILL.md 제안 없음
43
+ ```
44
+
45
+ ## 입력
46
+
47
+ ```
48
+ ~/.claude/projects/*/session-*.jsonl # Claude Code 세션 transcript
49
+ .claude/agent-memory*/feedback_*.md # 누적 feedback memory (보조)
50
+ ```
51
+
52
+ transcript 파일이 없을 경우: `"분석 가능한 transcript 없음 (--days 범위 내)"` 보고 후 종료.
53
+
54
+ ## 워크플로우
55
+
56
+ ### Phase 1: Transcript 스캔
57
+
58
+ ```bash
59
+ # 분석 대상 수집
60
+ find ~/.claude/projects -name "session-*.jsonl" \
61
+ -newer $(date -v-${DAYS}d +%Y-%m-%dT00:00:00) 2>/dev/null
62
+ ```
63
+
64
+ 각 transcript에서 다음 이벤트 추출:
65
+ - `type: "error"` — 오류 발생 기록
66
+ - `type: "correction"` — 사용자 수정 지시
67
+ - `type: "feedback"` — 부정 피드백 (`"no"`, `"wrong"`, `"don't"` 키워드 포함)
68
+ - `type: "retry"` — 동일 작업 재시도
69
+
70
+ ### Phase 2: 패턴 클러스터링
71
+
72
+ 추출된 이벤트를 `(domain, action_verb, error_class)` 튜플로 그룹화:
73
+
74
+ ```
75
+ Cluster: (agent-design, write, missing-frontmatter)
76
+ → sessions: [s1, s3, s7], count: 4
77
+ → first_seen: 2026-05-01, last_seen: 2026-05-15
78
+ → example_corrections: ["bypassPermissions 누락", "name 필드 없음"]
79
+ ```
80
+
81
+ 필터링 기준:
82
+ - `count >= --min-repeat` (기본: 3)
83
+ - `last_seen` >= 7일 이내 (오래된 패턴 제외)
84
+ - 기존 skill과 80% 이상 키워드 겹침 → 새 skill 대신 기존 skill 업데이트 제안
85
+
86
+ ### Phase 3: Instinct 후보 생성
87
+
88
+ 각 클러스터를 "instinct 후보"로 명명:
89
+
90
+ ```
91
+ instinct: prevent-missing-bypassPermissions
92
+ 근거: 4회 반복 (2주), agent spawn 시 mode 누락
93
+ 대응 패턴: spawn 전 bypassPermissions 자가 체크
94
+ 제안 자산: 기존 R010 강화 OR 신규 guard skill
95
+ ```
96
+
97
+ **분류 기준**:
98
+
99
+ | 패턴 성격 | 권장 자산 |
100
+ |-----------|----------|
101
+ | 동일 실수 반복 (행동 교정) | feedback memory 강화 |
102
+ | 워크플로우 절차 누락 | 기존 skill 섹션 추가 |
103
+ | 명확한 재사용 루틴 | 신규 SKILL.md 제안 |
104
+ | 규칙 미준수 (R007~R022) | 해당 rule 자가 체크 섹션 강화 제안 |
105
+
106
+ context fork cap (12개) 확인: 신규 skill이 `context: fork` 필요 시 현재 사용량 체크.
107
+ 현재 cap: 10/12 (secretary/dev-lead/de-lead/qa-lead-routing, dag-orchestration, task-decomposition, worker-reviewer-pipeline, deep-plan, professor-triage, roundtable-debate).
108
+
109
+ ### Phase 4: 사용자 제시
110
+
111
+ ```
112
+ [instinct-extractor] {N}개 instinct 후보 발견 (최근 {DAYS}일, {M}개 세션)
113
+
114
+ 1. [high] prevent-missing-bypassPermissions
115
+ 반복: 4회 | 마지막: 2026-05-15 | 도메인: agent-design
116
+ 대응 본능: spawn 전 mode 체크 → skill 후보: bypassPermissions-guard
117
+
118
+ 2. [medium] transcript-scan-format-mismatch
119
+ 반복: 3회 | 마지막: 2026-05-10 | 도메인: memory
120
+ 대응 본능: JSONL 파싱 전 format 버전 체크
121
+
122
+ 생성할 항목 선택 [1-N], "all", 또는 "skip":
123
+ ```
124
+
125
+ ### Phase 5: Skill Candidate 생성 (승인 시)
126
+
127
+ mgr-creator에 위임:
128
+ - 후보 이름 및 설명
129
+ - 클러스터 데이터 (반복 횟수, 예시 수정 사항)
130
+ - 분류 결과 (신규 skill / 기존 확장 / rule 강화)
131
+ - 기존 skill과의 겹침 경고
132
+
133
+ ## 아티팩트 출력
134
+
135
+ ```
136
+ .claude/outputs/sessions/{YYYY-MM-DD}/instinct-extractor-{HHmmss}.md
137
+ ```
138
+
139
+ CC v2.1.121+ 환경에서 `.claude/outputs/` 직접 Write 가능 (`bypassPermissions` 모드).
140
+ CC < v2.1.121 환경: `/tmp/instinct-extractor-{ts}.md` 경유 후 이동.
141
+
142
+ ## R016 자동화 연동
143
+
144
+ R016 Defect Response Matrix의 "Skill Promotion" 조건:
145
+ > feedback memory가 동일 패턴으로 3회 이상 반복 → skill-extractor `--mode failure` 실행 권장
146
+
147
+ `instinct-extractor`는 이 조건을 **cross-session 범위로 확장**한다:
148
+ - 단일 세션의 feedback memory 분석 → `skill-extractor --mode failure`
149
+ - 다중 세션 시계열 채굴 → `instinct-extractor`
150
+
151
+ R016 트리거 감지 시 오케스트레이터는 두 스킬을 순차 실행하여 결과를 교차 검증할 수 있다.
152
+
153
+ ## 통합
154
+
155
+ | 시스템 | 연동 방식 |
156
+ |--------|----------|
157
+ | `skill-extractor --mode failure` | 보완 관계 — 결과 교차 검증 권장 |
158
+ | R016 (continuous-improvement) | 3회 반복 트리거 → 자동 실행 후보 |
159
+ | mgr-creator | 승인된 후보 SKILL.md 생성 위임 |
160
+ | sys-memory-keeper | 채굴 결과를 project memory로 보존 |
161
+ | feedback-collector | feedback 이벤트 소스 공유 |
162
+ | R011 (memory) | User Model의 Override Decisions 반영 |
163
+
164
+ ## 안전 규칙
165
+
166
+ - **사용자 승인 필수**: skill 자동 생성 없음, 항상 사용자 확인 후 mgr-creator 위임
167
+ - **중복 체크**: 기존 skill과 80%+ 겹침 시 신규 생성 대신 업데이트 권장
168
+ - **dry-run 모드**: 부작용 없는 미리보기
169
+ - **context fork cap 체크**: `context: fork` 필요 skill은 cap(12) 초과 여부 사전 확인
170
+
171
+ ## 한계
172
+
173
+ - **transcript 형식 의존**: CC `session-*.jsonl` 스키마 변경 시 파싱 재구현 필요.
174
+ AgentMemory 마이그레이션(#1169, Phase 3 DECOUPLE) 완료 후 transcript 경로/형식 재검토 예정.
175
+ - **클러스터링 정확도**: 키워드 기반 클러스터링으로 의미적 동의어 처리 제한.
176
+ - **Phase γ 제약**: #1169 AgentMemory Phase 3 이전에는 transcript 형식 불안정 — `--dry-run` 권장.
@@ -137,3 +137,60 @@ IMPORTANT: Restart this Claude Code session for plugin changes to take effect.
137
137
  - Profiles define a subset: plugins not listed in `enabled` or `disabled` keep their current state
138
138
  - Profile JSON `enabled`/`disabled` lists use full plugin keys: `<name>@<marketplace>` format
139
139
  - All `.claude/` writes use the /tmp bypass pattern (see Implementation rules above)
140
+
141
+ ## Manifest Profile Integration
142
+
143
+ `templates/manifest.json` 의 `profiles` 키는 **자산 필터링** (에이전트·스킬·가이드 범위)을 정의합니다. 기존 `.claude/profiles/*.json` 의 **플러그인 전환** 역할과 분리된 개념입니다.
144
+
145
+ ### 두 프로필 시스템 비교
146
+
147
+ | 시스템 | 경로 | 역할 | 적용 시점 |
148
+ |--------|------|------|-----------|
149
+ | Plugin profiles | `.claude/profiles/*.json` | `~/.claude/settings.json` plugin on/off | 세션 재시작 후 |
150
+ | Manifest profiles | `templates/manifest.json#profiles` | 설치 시 에이전트·스킬·가이드 범위 지정 | `omcustom install --profile <name>` |
151
+
152
+ ### Manifest Profile 사용 시나리오
153
+
154
+ ```bash
155
+ # 최소 자산으로 설치 (학습·실험 환경)
156
+ omcustom install --profile minimal
157
+
158
+ # Web 앱 개발 전용 자산 설치
159
+ omcustom install --profile web-app
160
+
161
+ # 데이터 엔지니어링 전용 자산 설치
162
+ omcustom install --profile data-eng
163
+
164
+ # 전체 자산 설치 (기본값)
165
+ omcustom install --profile full
166
+ # 또는 (profile 생략 시 full과 동일)
167
+ omcustom install
168
+ ```
169
+
170
+ ### include 패턴 해석 규칙
171
+
172
+ | 패턴 | 의미 | 예시 |
173
+ |------|------|------|
174
+ | `"*"` | 해당 카테고리 전체 포함 | `"include": "*"` |
175
+ | `"mgr-*"` | glob 패턴, 접두사 매칭 | mgr-creator, mgr-gitnerd 등 |
176
+ | `{"scope": "core"}` | SKILL.md의 scope 필드 기준 | scope: core인 스킬 전체 |
177
+ | `"react-best-practices"` | 특정 스킬/가이드 이름 | 해당 항목만 포함 |
178
+
179
+ ### Plugin + Manifest 프로필 연동 가이드
180
+
181
+ 동일 이름(예: `web-app`)으로 두 시스템을 함께 사용할 수 있습니다:
182
+
183
+ ```bash
184
+ # 1. Manifest profile로 자산 설치
185
+ omcustom install --profile web-app
186
+
187
+ # 2. Plugin profile로 플러그인 전환
188
+ /profile load web-app
189
+ ```
190
+
191
+ 두 시스템은 독립적이므로 어느 하나만 사용해도 무방합니다.
192
+
193
+ ### 관련 문서
194
+
195
+ - `guides/profiles/manifest-install.md` — 전체 사용 가이드 및 프로필별 자산 표
196
+ - `templates/manifest.json#profiles` — 프로필 정의 소스
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: sec-agentshield-wrapper
3
+ description: Pre-flight security analysis before code changes — identifies trust boundary risks, dangerous patterns, and provides proceed/caution/block advisory before implementation starts
4
+ scope: core
5
+ version: 0.1.0
6
+ user-invocable: true
7
+ effort: medium
8
+ argument-hint: '"<파일/영역 설명> — <변경 의도>"'
9
+ ---
10
+
11
+ # 보안 사전 분석 Wrapper (sec-agentshield-wrapper)
12
+
13
+ 코드 작업을 시작하기 전에 보안 위험을 사전 식별하는 pre-flight 스킬.
14
+ 작업 진입 전 단계에서 트러스트 경계, 위험 패턴, 권한 변경을 분석하여 진행 여부 advisory를 제공한다.
15
+
16
+ ## 기존 보안 자산과의 차별점
17
+
18
+ | 자산 | 시점 | 강점 | 약점 |
19
+ |------|------|------|------|
20
+ | `sec-codeql-expert` | post-write (작성 후 분석) | CodeQL 정적 분석, CVE 매칭, SARIF 출력 | 코드가 이미 작성된 후 문제 발견 |
21
+ | `adversarial-review` | post-write (리뷰 단계) | 공격자 마인드, STRIDE+OWASP 4단계 리뷰 | 구현 완료 후 대규모 수정 필요할 수 있음 |
22
+ | `cve-triage` | issue-triggered (CVE 발생 후) | CVE 평가, 재현 분석, 패치 검증 | 알려진 CVE에만 반응, 사전 예방 불가 |
23
+ | **sec-agentshield-wrapper** | **pre-write (작업 시작 전)** | **사전 차단, 작업 진입 전 위험 식별** | 휴리스틱 기반, 구현 세부사항 미파악 |
24
+
25
+ **핵심 차별점**: 이 스킬은 코드를 쓰기 _전에_ 실행한다. 작업 범위와 의도만으로 위험 패턴을 식별하여 설계 단계에서 보안 방향을 잡는다.
26
+
27
+ ## 워크플로우
28
+
29
+ ### 입력 형식
30
+
31
+ ```
32
+ /sec-agentshield-wrapper "<변경 대상 파일/영역> — <변경 의도>"
33
+ ```
34
+
35
+ 예시:
36
+ ```
37
+ /sec-agentshield-wrapper "auth-middleware.ts — refresh token 처리 추가"
38
+ /sec-agentshield-wrapper "UserController.java — 외부 API 호출 기능 추가"
39
+ /sec-agentshield-wrapper "upload.py — 파일 업로드 엔드포인트 신규 구현"
40
+ ```
41
+
42
+ ### 1단계: 트러스트 경계 영역 식별
43
+
44
+ 변경 대상 파일/영역이 트러스트 경계에 해당하는지 판단한다.
45
+
46
+ **고위험 영역 분류**:
47
+
48
+ | 영역 유형 | 예시 | 위험 수준 |
49
+ |-----------|------|-----------|
50
+ | 인증/인가 로직 | auth, jwt, session, permission | CRITICAL |
51
+ | 외부 입력 처리 | request body, query params, file upload | HIGH |
52
+ | 외부 API 호출 | HTTP client, SDK wrapper, webhook | HIGH |
53
+ | 데이터 직렬화 | JSON parse, YAML, XML | MEDIUM |
54
+ | 파일 시스템 접근 | read/write path, temp files | MEDIUM |
55
+ | 설정/환경 변수 | config, env, secrets | HIGH |
56
+ | 데이터베이스 쿼리 | raw SQL, ORM query builder | HIGH |
57
+
58
+ CRG `query_graph` 활용 권장 — 변경 함수의 caller 체인을 추적하여 트러스트 경계 도달 여부를 확인한다.
59
+
60
+ ### 2단계: 위험 패턴 매칭
61
+
62
+ 변경 의도에서 다음 위험 패턴을 식별한다:
63
+
64
+ **자동 트리거 패턴**:
65
+
66
+ | 패턴 키워드 | 위험 유형 | 체크 항목 |
67
+ |-------------|-----------|-----------|
68
+ | token, jwt, session | 토큰 위조/재사용 | 서명 검증, 만료 처리, 재사용 방지 |
69
+ | refresh, rotation | 토큰 갱신 경쟁 조건 | 원자성, 동시 요청 처리 |
70
+ | upload, file, multipart | 파일 업로드 공격 | 확장자 검증, 경로 탐색, 크기 제한 |
71
+ | admin, role, permission | 권한 상승 | 역할 검증, 최소 권한, 기본값 |
72
+ | external, api, webhook | SSRF/외부 요청 | URL 화이트리스트, 타임아웃, 재시도 |
73
+ | query, sql, filter | SQL 인젝션 | 파라미터화 쿼리, ORM 사용 여부 |
74
+ | eval, exec, subprocess | 코드 실행 | 입력 새니타이즈, 허용 명령 목록 |
75
+ | serialize, deserialize, pickle | 역직렬화 공격 | 신뢰할 수 없는 데이터 처리 여부 |
76
+ | redirect, url, callback | 오픈 리다이렉트 | URL 검증, 도메인 화이트리스트 |
77
+
78
+ ### 3단계: Advisory 출력
79
+
80
+ 분석 결과를 3가지 레벨로 출력한다:
81
+
82
+ - **PROCEED** — 식별된 고위험 패턴 없음, 표준 구현 진행 가능
83
+ - **CAUTION** — 주의 필요 항목 존재, 체크리스트와 함께 진행
84
+ - **BLOCK** — 설계 재검토 권장, 보안 전문가 리뷰 후 진행
85
+
86
+ ## 출력 형식
87
+
88
+ ```markdown
89
+ ## 보안 사전 분석 — sec-agentshield-wrapper
90
+
91
+ **대상**: {파일/영역}
92
+ **의도**: {변경 의도}
93
+ **Advisory**: PROCEED | CAUTION | BLOCK
94
+
95
+ ### 트러스트 경계 분석
96
+
97
+ | 영역 | 해당 여부 | 위험 수준 |
98
+ |------|-----------|-----------|
99
+ | {영역명} | Yes/No | CRITICAL/HIGH/MEDIUM/LOW |
100
+
101
+ ### 식별된 위험 패턴
102
+
103
+ | 패턴 | 위험 유형 | 권장 사항 |
104
+ |------|-----------|-----------|
105
+ | {패턴} | {유형} | {권장} |
106
+
107
+ ### 구현 전 체크리스트
108
+
109
+ - [ ] {체크 항목 1}
110
+ - [ ] {체크 항목 2}
111
+
112
+ ### 권장 후속 작업
113
+
114
+ - 구현 후: `adversarial-review` 로 공격자 관점 리뷰
115
+ - 패턴 기반 분석: `sec-codeql-expert` 로 CodeQL 정적 분석
116
+ - CVE 관련: `cve-triage` 로 의존성 취약점 확인
117
+ ```
118
+
119
+ ## 호출 패턴 예시
120
+
121
+ **단일 파일**:
122
+ ```
123
+ /sec-agentshield-wrapper "auth-middleware.ts — refresh token 처리 추가"
124
+ ```
125
+
126
+ **여러 파일/영역**:
127
+ ```
128
+ /sec-agentshield-wrapper "UserService.java, AuthController.java — OAuth2 로그인 플로우 추가"
129
+ ```
130
+
131
+ **신규 기능**:
132
+ ```
133
+ /sec-agentshield-wrapper "upload/ 디렉토리 — 사용자 파일 업로드 기능 신규 구현"
134
+ ```
135
+
136
+ ## 다른 자산과의 조합
137
+
138
+ 권장 보안 파이프라인:
139
+
140
+ ```
141
+ sec-agentshield-wrapper (pre-write)
142
+ → 구현
143
+ → adversarial-review (post-write, 공격자 관점)
144
+ → sec-codeql-expert (post-write, 정적 분석)
145
+ ```
146
+
147
+ CVE 발생 시 별도 트리거:
148
+ ```
149
+ cve-triage (CVE 이슈 수신 시)
150
+ → sec-codeql-expert (영향 범위 분석)
151
+ ```
152
+
153
+ ## CRG 통합 (선택)
154
+
155
+ CRG MCP 연결 시 1단계 트러스트 경계 분석 정확도가 향상된다:
156
+
157
+ | CRG 도구 | 활용 목적 |
158
+ |----------|-----------|
159
+ | `query_graph` | 변경 함수의 caller 체인 추적, 트러스트 경계 도달 여부 확인 |
160
+ | `get_impact_radius` | 변경의 영향 반경 파악, 위험 확산 범위 예측 |
161
+ | `detect_changes` | 보안 관련 함수의 의미적 변경 감지 |
162
+
163
+ CRG 미연결 시 Grep + Read 조합으로 fallback.
164
+
165
+ ## 한계
166
+
167
+ - **휴리스틱 기반**: 키워드 매칭과 영역 분류 기반이므로 100% recall을 보장하지 않음
168
+ - **구현 세부사항 미파악**: 실제 코드가 없으므로 로직 플로우 분석 불가
169
+ - **False positive 가능성**: 보안 관련 키워드가 포함되어도 실제 위험이 없을 수 있음
170
+ - **보완 필요**: 구현 후 `adversarial-review` + `sec-codeql-expert` 조합으로 보완 권장
171
+
172
+ ## Permission Mode
173
+
174
+ 이 스킬에서 Agent 도구를 사용하여 에이전트를 스폰할 경우, 항상 `mode: "bypassPermissions"` 를 전달해야 한다. Agent 도구의 기본값(`acceptEdits`)은 에이전트 frontmatter `permissionMode` 를 덮어쓰므로 무인 실행 중 권한 프롬프트가 발생할 수 있다.
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: semble-integration
3
+ description: Semble (MinishLab) MCP wrapper — semantic code search via embeddings (98% token reduction vs grep+read, NDCG@10=0.854)
4
+ scope: core
5
+ version: 0.1.0
6
+ user-invocable: true
7
+ effort: low
8
+ ---
9
+
10
+ # Semble Integration Skill
11
+
12
+ [MinishLab/semble](https://github.com/MinishLab/semble) MCP 서버의 의미 기반 코드 검색 도구를 노출하는 wrapper 스킬.
13
+ 코드 인식 청킹 + 정적 임베딩 + BM25 + RRF 조합으로 transformer 수준 정확도를 CPU에서 달성한다.
14
+
15
+ ## 목적
16
+
17
+ - **~98% 토큰 절감** (grep+Read 대비): 전체 파일 읽기 없이 의미적으로 관련된 코드 청크만 반환
18
+ - **의미 기반 검색**: 자연어 쿼리로 "비슷한 코드 찾기", "에러 핸들링 패턴 검색" 등 구조 검색이 어려운 작업에 특화
19
+ - **NDCG@10 = 0.854**: transformer 모델 수준 정확도를 CPU 인덱싱 (~250ms), 쿼리 (~1.5ms)로 달성
20
+ - **R013 ecomode 보완**: context 사용량 ≥ 60% 시점에 Semble 호출로 추가 파일 읽기 비용 절감
21
+
22
+ ## CRG와의 보완 관계
23
+
24
+ Semble과 CRG는 서로 다른 검색 축을 담당하며 상호 보완적이다.
25
+
26
+ | 도구 | 검색 유형 | 강점 | 약점 |
27
+ |------|----------|------|------|
28
+ | `crg-integration` | 구조 (AST) | 호출 그래프, 영향 분석, recall-우선 | 의미 검색 약함 |
29
+ | `semble-integration` | 의미 (임베딩) | 자연어 쿼리, "비슷한 코드 찾기" | 구조 정보 없음 |
30
+
31
+ **사용 가이드**:
32
+ - "이 함수의 caller는?" → CRG (`query_graph`)
33
+ - "에러 핸들링 코드 패턴" → Semble
34
+ - "변경 영향 범위" → CRG (`get_impact_radius`)
35
+ - "인증 관련 코드 전부 찾기" → Semble (자연어 쿼리)
36
+
37
+ ## 노출 도구
38
+
39
+ Semble MCP 서버가 제공하는 도구를 통해 다음 기능을 수행한다.
40
+ 구체적인 tool 이름은 MCP 서버 설치 후 Claude Code MCP introspection으로 확인한다.
41
+
42
+ | 기능 | 설명 |
43
+ |------|------|
44
+ | 의미 검색 | 자연어 쿼리로 코드베이스 내 관련 청크 반환 |
45
+ | 인덱싱 | 코드베이스를 code-aware 청킹 + 정적 임베딩으로 인덱싱 (CPU ~250ms) |
46
+ | 결과 ranking | BM25 + RRF + embedding fusion으로 최종 랭킹 결정 |
47
+
48
+ > 자세한 tool 사양은 `guides/token-efficiency/semble.md` 참조.
49
+
50
+ ## 설치 가이드
51
+
52
+ > R001 정책: auto-install 스크립트 금지. 아래 명령어는 **사용자가 직접** 실행한다.
53
+
54
+ ### 1단계: 패키지 설치
55
+
56
+ ```bash
57
+ # uv 기반 설치 (권장)
58
+ uv tool install semble
59
+ ```
60
+
61
+ ### 2단계: MCP 서버 등록
62
+
63
+ ```bash
64
+ # 방법 A: claude mcp 명령어 (권장)
65
+ claude mcp add semble -- semble mcp
66
+
67
+ # 방법 B: .mcp.json 수동 편집
68
+ # 프로젝트 루트 또는 ~/.claude/.mcp.json 직접 수정
69
+ ```
70
+
71
+ `.mcp.json` 수동 설정 예시:
72
+
73
+ ```json
74
+ {
75
+ "mcpServers": {
76
+ "semble": {
77
+ "command": "semble",
78
+ "args": ["mcp"]
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ auto-install hook 또는 스크립트로 `.mcp.json`을 자동 수정하는 방식은 R001 위반이다.
85
+
86
+ ### 3단계: 인덱싱
87
+
88
+ ```bash
89
+ # 명시적 인덱싱 (선택 — 첫 MCP 호출 시 lazy 인덱싱도 가능)
90
+ semble index
91
+ ```
92
+
93
+ 자세한 설치/설정 절차는 `guides/token-efficiency/semble.md` 참조.
94
+
95
+ ## 사용 패턴
96
+
97
+ ### 의미 기반 코드 검색
98
+
99
+ ```
100
+ "인증 미들웨어 관련 코드 찾아줘"
101
+ → Semble 의미 검색 → 관련 청크 반환 → 전체 파일 읽기 없이 컨텍스트 주입
102
+ ```
103
+
104
+ ### 패턴 검색
105
+
106
+ ```
107
+ "에러 핸들링 컨벤션이 어떻게 되어 있어?"
108
+ → Semble "error handling convention" 쿼리 → 패턴 예시 청크 반환
109
+ ```
110
+
111
+ ### dev-review/adversarial-review와 조합
112
+
113
+ ```
114
+ 1. Semble로 유사 패턴 사전 조사
115
+ 2. /dev-review {focused_files} → 범위를 좁힌 리뷰
116
+ ```
117
+
118
+ ### CRG와 결합 사용
119
+
120
+ ```
121
+ 1. Semble "authentication related code" → 관련 파일 목록 식별
122
+ 2. CRG get_impact_radius(identified_files) → 영향 범위 확인
123
+ 3. 두 결과를 조합하여 완전한 컨텍스트 구성
124
+ ```
125
+
126
+ ## R013 Ecomode와의 관계
127
+
128
+ R013 ecomode가 자동 활성화되는 시점 (context 사용량 ≥ 60%)에서 Semble을 적극 활용한다:
129
+
130
+ | Ecomode 상황 | Semble 활용법 |
131
+ |-------------|--------------|
132
+ | 광범위 grep 대신 | Semble 의미 검색 → 관련 청크만 추출 |
133
+ | 파일 전체 읽기 대신 | Semble으로 관련 섹션만 수신 |
134
+ | 패턴 파악 시 | Semble 쿼리 → 대표 예시만 수집 |
135
+
136
+ ## 다른 자산과의 관계
137
+
138
+ ### 보완 관계 (함께 사용)
139
+
140
+ | 자산 | 조합 방식 |
141
+ |------|----------|
142
+ | `crg-integration` | Semble (의미) + CRG (구조) 결합으로 완전한 코드 이해 |
143
+ | `dev-review` | Semble로 유사 패턴 사전 조사 → dev-review 입력 최적화 |
144
+ | `adversarial-review` | Semble로 관련 보안 패턴 수집 → adversarial-review 컨텍스트 보강 |
145
+
146
+ ### 대체 후보 (일부 use case)
147
+
148
+ | 기존 방식 | Semble 대체 가능 여부 |
149
+ |----------|---------------------|
150
+ | `claude-mem:smart-explore` 의 자연어 탐색 | 일부 대체 가능 — 구조 탐색은 CRG 유지 |
151
+ | grep + Read 조합의 패턴 검색 | 대체 권장 (98% 토큰 절감) |
152
+
153
+ ## 트러블슈팅
154
+
155
+ | 증상 | 원인 | 해결 |
156
+ |------|------|------|
157
+ | MCP 도구가 보이지 않음 | `.mcp.json` 미설정 또는 `claude mcp add` 미실행 | MCP 등록 확인, Claude Code 재시작 |
158
+ | `command not found: semble` | uv tool install 미실행 또는 PATH 누락 | `uv tool install semble` 재실행, `which semble` 확인 |
159
+ | 인덱싱 오류 | 초기 인덱싱 미완료 | `semble index` 실행 후 재시도 |
160
+ | 검색 결과 없음 | 인덱싱 범위 외 또는 쿼리 불명확 | 인덱싱 재실행, 쿼리 구체화 |
161
+ | 서버 연결 실패 | Semble MCP 서버 미실행 | MCP 서버 로그 확인, Claude Code 재시작 |
162
+ | uv 미설치 | uv 패키지 매니저 없음 | `curl -LsSf https://astral.sh/uv/install.sh \| sh` (사용자 직접 실행) |
163
+
164
+ ## 참고
165
+
166
+ - 상세 설치/설정: `guides/token-efficiency/semble.md`
167
+ - 관련 이슈: #1173 (scout:integrate Semble)
168
+ - 기술 출처: [MinishLab/semble](https://github.com/MinishLab/semble)
169
+ - 보완 자산: `crg-integration` (구조 기반 검색)