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 +5 -5
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/skills/instinct-extractor/SKILL.md +176 -0
- package/templates/.claude/skills/profile/SKILL.md +57 -0
- package/templates/.claude/skills/sec-agentshield-wrapper/SKILL.md +174 -0
- package/templates/.claude/skills/semble-integration/SKILL.md +169 -0
- package/templates/CLAUDE.md +13 -2
- package/templates/README.md +2 -2
- package/templates/guides/profiles/manifest-install.md +177 -0
- package/templates/guides/security/agentshield-pre-flight.md +196 -0
- package/templates/guides/skill-promotion/instinct-extraction.md +114 -0
- package/templates/guides/token-efficiency/semble.md +188 -0
- package/templates/manifest.json +109 -4
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Semble 통합 가이드
|
|
2
|
+
|
|
3
|
+
> **출처**: [MinishLab/semble](https://github.com/MinishLab/semble)
|
|
4
|
+
> **관련 이슈**: #1173 (scout:integrate Semble)
|
|
5
|
+
> **wrapper 스킬**: `.claude/skills/semble-integration/SKILL.md`
|
|
6
|
+
|
|
7
|
+
## Semble 개요
|
|
8
|
+
|
|
9
|
+
Semble은 [MinishLab](https://github.com/MinishLab)이 개발한 MCP(Model Context Protocol) 서버로, 코드 인식 청킹(Chonkie) + 정적 임베딩(Model2Vec potion-code-16M) + BM25 + RRF 조합으로 의미 기반 코드 검색을 제공한다.
|
|
10
|
+
|
|
11
|
+
### 핵심 특성
|
|
12
|
+
|
|
13
|
+
| 항목 | 값 |
|
|
14
|
+
|------|-----|
|
|
15
|
+
| 구현 | Python MCP server |
|
|
16
|
+
| 청킹 엔진 | Chonkie (code-aware chunking) |
|
|
17
|
+
| 임베딩 모델 | Model2Vec potion-code-16M (정적 임베딩) |
|
|
18
|
+
| 검색 방식 | BM25 + RRF + embedding fusion |
|
|
19
|
+
| GitHub | ~1.5k stars (2026-05 기준) |
|
|
20
|
+
| 토큰 절감 | **~98%** (grep+Read 대비) |
|
|
21
|
+
| 정확도 | NDCG@10 = **0.854** (transformer 모델 수준) |
|
|
22
|
+
|
|
23
|
+
### R013 Ecomode 정합성
|
|
24
|
+
|
|
25
|
+
Semble의 ~98% 토큰 절감은 R013 ecomode의 목표와 직접 정합한다. ecomode가 context 사용량 ≥ 60%에서 자동 활성화될 때, Semble 호출로 광범위한 grep+Read 비용을 대폭 줄일 수 있다.
|
|
26
|
+
|
|
27
|
+
## 벤치마크 요약
|
|
28
|
+
|
|
29
|
+
| 지표 | 값 | 비고 |
|
|
30
|
+
|------|-----|------|
|
|
31
|
+
| CPU 인덱싱 | ~250ms (레포당 평균) | GPU 불필요 |
|
|
32
|
+
| 쿼리 응답 | ~1.5ms | 실시간 응답 수준 |
|
|
33
|
+
| NDCG@10 | 0.854 | transformer 모델 대비 동급 |
|
|
34
|
+
| 토큰 사용량 | ~98% 절감 | grep+Read 전략 대비 |
|
|
35
|
+
|
|
36
|
+
> **출처**: #1173 이슈 본문 및 MinishLab/semble 공식 벤치마크
|
|
37
|
+
|
|
38
|
+
### CRG와의 비교
|
|
39
|
+
|
|
40
|
+
| 항목 | Semble | CRG (code-review-graph) |
|
|
41
|
+
|------|--------|------------------------|
|
|
42
|
+
| 검색 방식 | 의미 기반 (임베딩) | 구조 기반 (AST) |
|
|
43
|
+
| 강점 | 자연어 쿼리, 패턴 유사성 | 호출 그래프, 의존성 분석 |
|
|
44
|
+
| 약점 | 구조 정보 없음 | 의미 검색 약함 |
|
|
45
|
+
| 토큰 절감 | ~98% (grep+Read 대비) | 8.2× |
|
|
46
|
+
| 정확도 | NDCG@10 = 0.854 | precision 0.38 (recall-우선) |
|
|
47
|
+
|
|
48
|
+
두 도구는 서로 다른 검색 축을 담당하며 결합 시 시너지 효과가 크다.
|
|
49
|
+
|
|
50
|
+
## 설치
|
|
51
|
+
|
|
52
|
+
> **R001 정책**: auto-install 스크립트 또는 hook 작성 금지. 아래 명령어는 개발자가 직접 실행한다.
|
|
53
|
+
|
|
54
|
+
### 패키지 설치
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# uv 기반 설치 (권장)
|
|
58
|
+
uv tool install semble
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
uv가 없는 경우 먼저 설치한다 (사용자 직접 실행):
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### MCP 서버 등록
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# 방법 A: claude mcp 명령어 (권장)
|
|
71
|
+
claude mcp add semble -- semble mcp
|
|
72
|
+
|
|
73
|
+
# 방법 B: .mcp.json 수동 편집
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`.mcp.json` 수동 설정 (프로젝트 루트 또는 `~/.claude/.mcp.json`):
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"mcpServers": {
|
|
81
|
+
"semble": {
|
|
82
|
+
"command": "semble",
|
|
83
|
+
"args": ["mcp"]
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**주의**: `.mcp.json`을 자동으로 수정하는 스크립트나 hook은 R001 위반이다. 반드시 수동 편집한다.
|
|
90
|
+
|
|
91
|
+
설정 후 Claude Code를 재시작하면 MCP 도구가 활성화된다.
|
|
92
|
+
|
|
93
|
+
### 설치 확인
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# 바이너리 확인
|
|
97
|
+
which semble
|
|
98
|
+
|
|
99
|
+
# 버전 확인
|
|
100
|
+
semble --version
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 인덱싱
|
|
104
|
+
|
|
105
|
+
Semble은 첫 MCP 호출 시 lazy 인덱싱을 수행하지만, 대용량 코드베이스의 경우 명시적 인덱싱을 권장한다:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# 프로젝트 루트에서 실행
|
|
109
|
+
semble index
|
|
110
|
+
|
|
111
|
+
# 특정 경로만 인덱싱
|
|
112
|
+
semble index --path src/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
인덱싱은 로컬 캐시에 저장된다. `.gitignore`에 추가를 권장한다.
|
|
116
|
+
|
|
117
|
+
## 사용 시나리오
|
|
118
|
+
|
|
119
|
+
### 의미 검색 → Semble
|
|
120
|
+
|
|
121
|
+
자연어 쿼리로 코드 의미를 파악해야 할 때 Semble을 사용한다:
|
|
122
|
+
|
|
123
|
+
| 작업 | 도구 | 이유 |
|
|
124
|
+
|------|------|------|
|
|
125
|
+
| "인증 관련 코드 전부 찾기" | Semble | 자연어 의미 검색 |
|
|
126
|
+
| "에러 핸들링 컨벤션 파악" | Semble | 패턴 유사성 검색 |
|
|
127
|
+
| "이 로직과 비슷한 코드 찾기" | Semble | 의미 유사성 |
|
|
128
|
+
| "데이터 직렬화 예시 수집" | Semble | 코드 패턴 검색 |
|
|
129
|
+
|
|
130
|
+
### 구조 분석 → CRG
|
|
131
|
+
|
|
132
|
+
코드 구조와 의존성을 파악해야 할 때 CRG를 사용한다:
|
|
133
|
+
|
|
134
|
+
| 작업 | 도구 | 이유 |
|
|
135
|
+
|------|------|------|
|
|
136
|
+
| "이 함수의 caller는?" | CRG (`query_graph`) | AST 기반 호출 그래프 |
|
|
137
|
+
| "변경 영향 범위 파악" | CRG (`get_impact_radius`) | 의존성 트리 분석 |
|
|
138
|
+
| "PR 리뷰 전 변경 폭 파악" | CRG (`detect_changes`) | 의미적 diff |
|
|
139
|
+
|
|
140
|
+
### 결합 사용 예시
|
|
141
|
+
|
|
142
|
+
두 도구를 결합하면 의미 + 구조 양면에서 완전한 코드 이해가 가능하다:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
1. Semble "authentication middleware" → 관련 파일 목록 식별
|
|
146
|
+
2. CRG get_impact_radius(identified_files) → 영향 범위 확인
|
|
147
|
+
3. Semble "auth error handling" → 에러 처리 패턴 수집
|
|
148
|
+
4. /dev-review {focused_files} → 좁혀진 범위의 상세 리뷰
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## R013 Ecomode 통합
|
|
152
|
+
|
|
153
|
+
context ≥ 60%에서 광범위한 파일 읽기 대신 Semble을 우선 사용한다:
|
|
154
|
+
|
|
155
|
+
| 기존 방식 | Semble 대체 |
|
|
156
|
+
|----------|-----------|
|
|
157
|
+
| `Grep(pattern, recursive)` + `Read(file)` | Semble 의미 검색 단일 호출 |
|
|
158
|
+
| `Read(multiple_files[])` 패턴 파악 목적 | Semble 쿼리 → 관련 청크만 수신 |
|
|
159
|
+
| grep으로 키워드 검색 후 파일 읽기 | Semble 자연어 쿼리로 직접 청크 추출 |
|
|
160
|
+
|
|
161
|
+
## Explore 에이전트 힌트
|
|
162
|
+
|
|
163
|
+
Explore 에이전트가 Semble MCP를 사용 가능한 환경에서는, 코드베이스 탐색 시 grep+Read 조합보다 Semble 의미 검색을 우선 호출하는 것을 권장한다.
|
|
164
|
+
|
|
165
|
+
> Explore 에이전트 description 갱신은 별도 이슈로 추적 가능 (본 PR scope 외).
|
|
166
|
+
|
|
167
|
+
## 트러블슈팅
|
|
168
|
+
|
|
169
|
+
| 증상 | 원인 | 해결 방법 |
|
|
170
|
+
|------|------|---------|
|
|
171
|
+
| MCP 도구가 Claude Code에 보이지 않음 | `.mcp.json` 미설정 또는 `claude mcp add` 미실행 | MCP 등록 확인 후 Claude Code 재시작 |
|
|
172
|
+
| `command not found: semble` | 패키지 미설치 또는 PATH 누락 | `uv tool install semble`, `which semble` 확인 |
|
|
173
|
+
| uv 명령어 없음 | uv 미설치 | `curl -LsSf https://astral.sh/uv/install.sh \| sh` 실행 |
|
|
174
|
+
| 첫 호출이 느림 | lazy 인덱싱 진행 중 | 정상 동작. `semble index`로 사전 인덱싱 권장 |
|
|
175
|
+
| 검색 결과 없음 | 인덱싱 범위 외 또는 쿼리 불명확 | `semble index` 재실행, 쿼리 구체화 |
|
|
176
|
+
| MCP 연결 실패 | Semble MCP 서버 미실행 | MCP 서버 로그 확인, `semble --version`으로 바이너리 확인 |
|
|
177
|
+
| 인덱싱 실패 | 권한 문제 또는 코드베이스 경로 오류 | 실행 경로 확인, `semble index --path .` 시도 |
|
|
178
|
+
|
|
179
|
+
## 참고 자료
|
|
180
|
+
|
|
181
|
+
- **GitHub**: [MinishLab/semble](https://github.com/MinishLab/semble)
|
|
182
|
+
- **wrapper 스킬**: `.claude/skills/semble-integration/SKILL.md`
|
|
183
|
+
- **관련 이슈**: #1173 (scout:integrate Semble)
|
|
184
|
+
- **보완 도구**: `guides/token-efficiency/crg.md` (구조 기반 검색)
|
|
185
|
+
- **관련 규칙**:
|
|
186
|
+
- [[r001]] (MUST-safety.md): auto-install 금지 정책
|
|
187
|
+
- [[r013]] (SHOULD-ecomode.md): context budget 관리, ecomode 통합
|
|
188
|
+
- [[crg-integration]]: 구조 기반 검색 — 의미 검색 보완 대상
|
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.142.0",
|
|
3
3
|
"lastUpdated": "2026-05-18T00:00:00.000Z",
|
|
4
4
|
"omcustomMinClaudeCode": "2.1.121",
|
|
5
5
|
"omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"name": "skills",
|
|
21
21
|
"path": ".claude/skills",
|
|
22
22
|
"description": "Reusable skill modules (includes slash commands)",
|
|
23
|
-
"files":
|
|
23
|
+
"files": 121
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"name": "guides",
|
|
27
27
|
"path": "guides",
|
|
28
28
|
"description": "Reference documentation",
|
|
29
|
-
"files":
|
|
29
|
+
"files": 57
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"name": "hooks",
|
|
@@ -47,5 +47,110 @@
|
|
|
47
47
|
"files": 8
|
|
48
48
|
}
|
|
49
49
|
],
|
|
50
|
-
"source": "https://github.com/baekenough/oh-my-customcode"
|
|
50
|
+
"source": "https://github.com/baekenough/oh-my-customcode",
|
|
51
|
+
"profiles": {
|
|
52
|
+
"minimal": {
|
|
53
|
+
"description": "Essential assets only — core SW Engineers + Managers. Reduces deactivation cost on first use.",
|
|
54
|
+
"include": {
|
|
55
|
+
"agents": ["mgr-*", "lang-*-expert", "sys-memory-keeper"],
|
|
56
|
+
"skills": [
|
|
57
|
+
{"scope": "core"},
|
|
58
|
+
{"scope": "harness"}
|
|
59
|
+
],
|
|
60
|
+
"guides": ["agent-design", "git-safety", "claude-code"]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"full": {
|
|
64
|
+
"description": "All assets (default). Equivalent to installing without --profile flag.",
|
|
65
|
+
"include": "*"
|
|
66
|
+
},
|
|
67
|
+
"web-app": {
|
|
68
|
+
"description": "Full-stack web application development profile.",
|
|
69
|
+
"include": {
|
|
70
|
+
"agents": [
|
|
71
|
+
"lang-typescript-expert",
|
|
72
|
+
"lang-python-expert",
|
|
73
|
+
"fe-vercel-agent",
|
|
74
|
+
"fe-design-expert",
|
|
75
|
+
"be-fastapi-expert",
|
|
76
|
+
"be-express-expert",
|
|
77
|
+
"be-nestjs-expert",
|
|
78
|
+
"db-postgres-expert",
|
|
79
|
+
"db-supabase-expert",
|
|
80
|
+
"db-redis-expert",
|
|
81
|
+
"infra-docker-expert",
|
|
82
|
+
"mgr-*"
|
|
83
|
+
],
|
|
84
|
+
"skills": [
|
|
85
|
+
{"scope": "core"},
|
|
86
|
+
"react-best-practices",
|
|
87
|
+
"typescript-best-practices",
|
|
88
|
+
"fastapi-best-practices",
|
|
89
|
+
"nextjs-best-practices"
|
|
90
|
+
],
|
|
91
|
+
"guides": [
|
|
92
|
+
"agent-design",
|
|
93
|
+
"git-safety",
|
|
94
|
+
"claude-code",
|
|
95
|
+
"drizzle-orm",
|
|
96
|
+
"docker",
|
|
97
|
+
"fastapi",
|
|
98
|
+
"nextjs",
|
|
99
|
+
"react"
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"data-eng": {
|
|
104
|
+
"description": "Data engineering sessions — Airflow, Spark, Kafka, Snowflake, dbt.",
|
|
105
|
+
"include": {
|
|
106
|
+
"agents": [
|
|
107
|
+
"de-airflow-expert",
|
|
108
|
+
"de-dbt-expert",
|
|
109
|
+
"de-spark-expert",
|
|
110
|
+
"de-kafka-expert",
|
|
111
|
+
"de-snowflake-expert",
|
|
112
|
+
"de-pipeline-expert",
|
|
113
|
+
"db-postgres-expert",
|
|
114
|
+
"db-redis-expert",
|
|
115
|
+
"db-alembic-expert",
|
|
116
|
+
"lang-python-expert",
|
|
117
|
+
"mgr-*"
|
|
118
|
+
],
|
|
119
|
+
"skills": [
|
|
120
|
+
{"scope": "core"},
|
|
121
|
+
"airflow-best-practices",
|
|
122
|
+
"dbt-best-practices"
|
|
123
|
+
],
|
|
124
|
+
"guides": [
|
|
125
|
+
"agent-design",
|
|
126
|
+
"git-safety",
|
|
127
|
+
"airflow",
|
|
128
|
+
"dbt",
|
|
129
|
+
"snowflake"
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"harness-dev": {
|
|
134
|
+
"description": "oh-my-customcode harness development — agent, skill, rule authoring.",
|
|
135
|
+
"include": {
|
|
136
|
+
"agents": [
|
|
137
|
+
"mgr-*",
|
|
138
|
+
"arch-*",
|
|
139
|
+
"sys-*",
|
|
140
|
+
"wiki-curator",
|
|
141
|
+
"tracker-checkpoint"
|
|
142
|
+
],
|
|
143
|
+
"skills": [
|
|
144
|
+
{"scope": "harness"}
|
|
145
|
+
],
|
|
146
|
+
"guides": [
|
|
147
|
+
"agent-design",
|
|
148
|
+
"git-safety",
|
|
149
|
+
"claude-code",
|
|
150
|
+
"skill-authoring",
|
|
151
|
+
"agent-workflow"
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
51
156
|
}
|