oh-my-customcode 0.143.0 → 0.144.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/dist/cli/index.js CHANGED
@@ -2334,7 +2334,7 @@ var init_package = __esm(() => {
2334
2334
  workspaces: [
2335
2335
  "packages/*"
2336
2336
  ],
2337
- version: "0.143.0",
2337
+ version: "0.144.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.143.0",
2017
+ version: "0.144.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.143.0",
6
+ "version": "0.144.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -381,3 +381,45 @@ MCP tools (claude-mem, episodic-memory) are **orchestrator-scoped** and not inhe
381
381
  - MCP saves are **non-blocking**: memory failure MUST NOT prevent session from ending
382
382
  - If claude-mem unavailable: skip, log warning
383
383
  - episodic-memory: no action needed (auto-indexed after session)
384
+
385
+ ## Dual-Backend Advisory (AgentMemory + claude-mem)
386
+
387
+ #1169 Phase 1 (COEXIST) 단계에서 두 memory backend 동시 활성 가능:
388
+
389
+ | 상황 | 권장 |
390
+ |------|------|
391
+ | claude-mem 단독 | 기본값 — 현 운영 유지 |
392
+ | AgentMemory 단독 | Phase 2 (SWITCH) 이후 진행 |
393
+ | 둘 다 활성 (COEXIST) | Phase 1 한정 — `memory-aggregator`가 결과 병합 |
394
+
395
+ ### 충돌 감지
396
+
397
+ `.mcp.json`에 두 서버(`claude-mem`, `agentmemory`) 동시 등록 시 첫 호출 시점에 advisory 출력 권장:
398
+
399
+ ```
400
+ [Advisory] Dual memory backend detected (Phase 1 COEXIST)
401
+ - claude-mem: active (Chroma)
402
+ - agentmemory: active (SQLite)
403
+ Phase 2 SWITCH 진입 전까지 두 backend 유지
404
+ 가이드: guides/agentmemory-migration/phase-1-coexist.md
405
+ ```
406
+
407
+ 이 advisory는 경고가 아닙니다. Phase 1 COEXIST에서는 정상 상태입니다.
408
+
409
+ ### Session-End Self-Check (COEXIST 확장)
410
+
411
+ Phase 1 COEXIST 기간 중 세션 종료 시:
412
+
413
+ 1. sys-memory-keeper가 MEMORY.md 갱신? → YES: 계속
414
+ 2. claude-mem 저장 시도? → YES (기존 항목)
415
+ 3. AgentMemory 저장 시도? → YES (COEXIST 추가)
416
+ 세 단계 모두 완료 후 사용자에게 확인. 둘 중 하나 실패해도 비차단.
417
+
418
+ ### Phase 2 진입 전 필수 조건
419
+
420
+ - 1주 measure 결과 (`scripts/measure-claude-mem-usage.sh`) GO 판정
421
+ - 자산 처리표 사용자 검토 완료 (12 plugin skill 처리 방향 결정)
422
+ - 30분 롤백 절차 검증 (Chroma 백업 + 복원 테스트)
423
+
424
+ Refs: #1169 본문 조치 3 (택1 강제), 조치 4 (롤백 절차),
425
+ `guides/agentmemory-migration/phase-1-coexist.md`.
@@ -245,7 +245,8 @@ Claude Code의 Agent Teams 기능이 활성화되어 있으면 (`CLAUDE_CODE_EXP
245
245
 
246
246
  | 서버 | 용도 |
247
247
  |------|------|
248
- | claude-mem | 세션 메모리 영속성 (Chroma 기반) |
248
+ | claude-mem | 세션 메모리 영속성 (Chroma 기반) — Phase β (#1169) COEXIST 진행 중 |
249
+ | **agentmemory** | claude-mem 대체 후보 (SQLite 기반, 4-tier consolidation) — Phase 1 COEXIST (#1169) |
249
250
  | code-review-graph | Token-efficient AST 기반 context retrieval (8.2× 토큰 절감) — wrapper: `crg-integration` 스킬 (#1171) |
250
251
  | semble | Semantic code search via embeddings (98% 토큰 절감, NDCG@10=0.854) — wrapper: `semble-integration` 스킬 (#1173) |
251
252
 
@@ -264,6 +265,12 @@ Claude Code의 Agent Teams 기능이 활성화되어 있으면 (`CLAUDE_CODE_EXP
264
265
  npm install -g claude-mem
265
266
  claude-mem setup
266
267
 
268
+ # AgentMemory MCP 설치 (claude-mem 대체 후보, COEXIST)
269
+ pip install agentmemory
270
+ claude mcp add agentmemory -- agentmemory mcp
271
+ # 또는 .mcp.json 수동 편집 (R001 auto-install 금지)
272
+ # Phase 1 COEXIST 가이드: guides/agentmemory-migration/phase-1-coexist.md
273
+
267
274
  # CRG MCP 설치 (token efficiency)
268
275
  pipx install code-review-graph
269
276
  # .mcp.json 에 code-review-graph 서버 수동 추가 (R001 auto-install 금지)
@@ -0,0 +1,261 @@
1
+ # AgentMemory Migration — Phase 1: COEXIST (Week 1-2)
2
+
3
+ > **상태**: 활성 — 2026-05-18 시작 (#1169)
4
+ > **다음 단계**: Phase 2 SWITCH (measure 결과 후 GO/NO-GO 결정)
5
+ > **이전 단계**: [measure-step-zero.md](./measure-step-zero.md)
6
+
7
+ ---
8
+
9
+ ## 1. 개요
10
+
11
+ Phase 1 (COEXIST)는 claude-mem과 AgentMemory를 **동시에 운영**하는 단계입니다.
12
+ 이 단계에서는 어떤 destructive 변경도 발생하지 않습니다:
13
+
14
+ - claude-mem 기존 Chroma 데이터 유지
15
+ - 12 plugin skill 폐기 없음
16
+ - 어댑터 코드 활성화 없음 (STUB 상태 유지)
17
+ - 자산 처리표 적용 없음
18
+
19
+ 목표는 1주간 실제 사용 데이터를 수집하고, AgentMemory 설치와 공존 운영에 익숙해지는 것입니다.
20
+
21
+ | 항목 | Phase 1 (COEXIST) | Phase 2 (SWITCH) |
22
+ |------|-------------------|------------------|
23
+ | claude-mem | 활성 (기존 운영) | 비활성화 예정 |
24
+ | AgentMemory | 설치 후 병렬 활성 | 단독 운영 |
25
+ | 데이터 마이그레이션 | 없음 | 선택적 (측정 후 결정) |
26
+ | 어댑터 코드 | STUB 유지 | 활성화 |
27
+ | 자산 처리표 | 적용 보류 | 사용자 검토 후 적용 |
28
+
29
+ ---
30
+
31
+ ## 2. AgentMemory 설치
32
+
33
+ > **R001 주의**: auto-install 금지. 아래 명령어를 사용자 로컬에서 수동으로 실행합니다.
34
+
35
+ ### 2-1. 패키지 설치
36
+
37
+ ```bash
38
+ # 옵션 A: pip
39
+ pip install agentmemory
40
+
41
+ # 옵션 B: pipx (격리 환경 권장)
42
+ pipx install agentmemory
43
+
44
+ # 옵션 C: uvx (uv 사용 시)
45
+ uvx agentmemory
46
+ ```
47
+
48
+ ### 2-2. MCP 서버 등록
49
+
50
+ ```bash
51
+ # Claude Code CLI로 등록
52
+ claude mcp add agentmemory -- agentmemory mcp
53
+
54
+ # 또는 .mcp.json 수동 편집 (R001 auto-install 금지)
55
+ # {
56
+ # "mcpServers": {
57
+ # "agentmemory": {
58
+ # "command": "agentmemory",
59
+ # "args": ["mcp"]
60
+ # }
61
+ # }
62
+ # }
63
+ ```
64
+
65
+ ### 2-3. 등록 확인
66
+
67
+ ```bash
68
+ claude mcp list
69
+ # 출력에 agentmemory 서버가 표시되어야 합니다
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 3. COEXIST 정책
75
+
76
+ Phase 1 기간 동안 두 backend는 다음 정책에 따라 공존합니다.
77
+
78
+ ### 3-1. 기본 운영 방식
79
+
80
+ | 작업 | 우선 backend | 비고 |
81
+ |------|-------------|------|
82
+ | 기존 메모리 조회 | claude-mem | 기존 Chroma 데이터 유지 |
83
+ | 신규 메모리 저장 | 둘 다 | COEXIST 기간 중 병렬 저장 권장 |
84
+ | 세션 종료 시 저장 | 둘 다 | R011 Session-End Self-Check 참조 |
85
+
86
+ ### 3-2. 쿼리 병합 (memory-aggregator)
87
+
88
+ 두 backend에서 결과가 반환될 경우 `memory-aggregator` 스킬이 결과를 병합합니다:
89
+
90
+ ```
91
+ claude-mem.search(query) → 결과 A
92
+ AgentMemory.search(query) → 결과 B
93
+ memory-aggregator → A + B 중복 제거 후 반환
94
+ ```
95
+
96
+ `memory-aggregator` 스킬이 없는 경우, 두 결과를 순서대로 제시하고 사용자가 선택합니다.
97
+
98
+ ### 3-3. 충돌 방지 원칙
99
+
100
+ - claude-mem 기존 데이터를 AgentMemory로 자동 복사하지 않음
101
+ - 두 backend에 동일 키로 저장 시 별개 항목으로 취급
102
+ - 강제 동기화 없음 — Phase 2에서 마이그레이션 여부 결정
103
+
104
+ ---
105
+
106
+ ## 4. Dual-Backend 충돌 Advisory
107
+
108
+ `.mcp.json`에 두 서버가 동시 등록된 상태를 감지하면 다음 advisory를 출력합니다.
109
+
110
+ ### 4-1. 감지 조건
111
+
112
+ ```
113
+ .mcp.json 내 서버 목록:
114
+ - "claude-mem" (또는 관련 tool prefix)
115
+ - "agentmemory"
116
+ → 두 개 동시 존재 시 Phase 1 COEXIST 상태로 간주
117
+ ```
118
+
119
+ ### 4-2. Advisory 메시지
120
+
121
+ ```
122
+ [Advisory] Dual memory backend detected (Phase 1 COEXIST)
123
+ - claude-mem: active (Chroma)
124
+ - agentmemory: active (SQLite)
125
+ 현재 Phase 1 COEXIST 정책 적용 중 — 두 backend 병렬 운영
126
+ Phase 2 SWITCH 진입 전까지 두 backend 유지
127
+ 가이드: guides/agentmemory-migration/phase-1-coexist.md
128
+ ```
129
+
130
+ 이 advisory는 경고가 아닙니다. Phase 1에서는 정상 상태입니다.
131
+
132
+ ### 4-3. 강제 선택 (사용자 명시 시)
133
+
134
+ 사용자가 명시적으로 "agentmemory만 사용" 또는 "claude-mem만 사용"을 요청하는 경우,
135
+ 해당 요청을 따르되 자산 처리표 적용 및 어댑터 활성화는 Phase 2 GO 결정 후 진행합니다.
136
+
137
+ ---
138
+
139
+ ## 5. 사용자 행동 계획
140
+
141
+ ### 5-1. 1주 measure 루틴 (자동 트리거: 2026-05-25)
142
+
143
+ `scripts/measure-claude-mem-usage.sh` 스크립트를 1주간 실행합니다:
144
+
145
+ ```bash
146
+ # 수동 실행 (필요 시)
147
+ bash scripts/measure-claude-mem-usage.sh
148
+
149
+ # 결과는 .claude/outputs/sessions/ 에 저장됩니다
150
+ ```
151
+
152
+ 측정 항목:
153
+ - 일별 호출 횟수 (claude-mem vs AgentMemory)
154
+ - 응답 지연 (p50, p95)
155
+ - 저장 성공/실패율
156
+ - 메모리 용량 (Chroma vs SQLite)
157
+
158
+ ### 5-2. GO/NO-GO 결정 기준 (2026-05-25 예정)
159
+
160
+ | 지표 | GO 조건 | NO-GO 조건 |
161
+ |------|---------|------------|
162
+ | 응답 지연 | AgentMemory ≤ claude-mem × 1.2 | AgentMemory > claude-mem × 2.0 |
163
+ | 저장 성공률 | ≥ 99% | < 95% |
164
+ | 운영 안정성 | 1주 무장애 | 크래시 또는 데이터 손실 |
165
+ | 호환성 | 기존 메모리 포맷 읽기 가능 | 포맷 비호환으로 검색 실패 |
166
+
167
+ ### 5-3. 지금 할 수 있는 것
168
+
169
+ - AgentMemory 설치 및 MCP 등록 (위 섹션 2 참조)
170
+ - 신규 세션에서 AgentMemory로도 저장해보기 (실험적)
171
+ - measure 스크립트 결과 관찰
172
+ - 자산 처리표 (`guides/agentmemory-migration/asset-disposition.md`) 검토 준비
173
+
174
+ ---
175
+
176
+ ## 6. Phase 2 진입 조건
177
+
178
+ 다음 조건이 모두 충족된 경우에만 Phase 2 (SWITCH)로 진행합니다.
179
+
180
+ ### 필수 조건
181
+
182
+ - [ ] 1주 measure 결과 GO 판정 (5-2 기준 충족)
183
+ - [ ] 자산 처리표 사용자 검토 완료 (12 plugin skill 처리 방향 결정)
184
+ - [ ] 30분 롤백 절차 검증 완료
185
+
186
+ ### 롤백 절차 검증 (Phase 2 진입 전 필수)
187
+
188
+ ```bash
189
+ # 1. Chroma 백업 생성
190
+ cp -r ~/.local/share/claude-mem/chroma ~/.local/share/claude-mem/chroma.bak.$(date +%Y%m%d)
191
+
192
+ # 2. 백업에서 복원 가능 여부 확인
193
+ # (실제 복원 수행하지 않고 절차만 검증)
194
+ ls -la ~/.local/share/claude-mem/chroma.bak.*
195
+
196
+ # 3. AgentMemory SQLite 백업
197
+ cp ~/.local/share/agentmemory/memories.db ~/.local/share/agentmemory/memories.db.bak.$(date +%Y%m%d)
198
+ ```
199
+
200
+ 롤백 소요 시간이 30분 이내임을 확인한 후 Phase 2 진행.
201
+
202
+ ---
203
+
204
+ ## 7. 현 단계 한계 및 금지 사항
205
+
206
+ ### 7-1. STUB 상태 유지 (변경 금지)
207
+
208
+ ```
209
+ packages/eval-core/src/adapters/agentmemory.ts ← STUB, 활성화 금지
210
+ packages/eval-core/src/db/schema.ts ← 변경 금지
211
+ ```
212
+
213
+ 이 파일들은 Phase 2 GO 결정 후 별도 사이클에서 수정합니다.
214
+
215
+ ### 7-2. 자산 처리표 적용 보류
216
+
217
+ 12 plugin skill의 폐기/유지 결정은 measure 결과를 확인한 후 진행합니다:
218
+
219
+ ```
220
+ .claude/skills/memory-*/ ← 폐기 여부 보류
221
+ .claude/skills/claude-mem-*/ ← 폐기 여부 보류
222
+ ```
223
+
224
+ ### 7-3. 데이터 마이그레이션 금지
225
+
226
+ Phase 1에서는 claude-mem Chroma 데이터를 AgentMemory SQLite로 이전하지 않습니다.
227
+ 이전은 Phase 2에서 사용자가 명시적으로 승인한 경우에만 진행합니다.
228
+
229
+ ---
230
+
231
+ ## 8. R011과의 관계
232
+
233
+ Phase 1 COEXIST 기간 중 R011 (SHOULD-memory-integration) 적용:
234
+
235
+ | R011 항목 | COEXIST 수정 사항 |
236
+ |-----------|-----------------|
237
+ | Primary: Native auto memory | 변경 없음 |
238
+ | Supplementary: claude-mem | 변경 없음 (계속 사용) |
239
+ | Session-End Self-Check | claude-mem + AgentMemory 둘 다 저장 시도 |
240
+ | Failure Policy | 둘 중 하나 실패해도 비차단 |
241
+
242
+ 세션 종료 시 자가 점검 (COEXIST 확장):
243
+
244
+ ```
245
+ 1. sys-memory-keeper가 MEMORY.md 갱신? → YES
246
+ 2. claude-mem 저장 시도? → YES (기존)
247
+ 3. AgentMemory 저장 시도? → YES (COEXIST 추가)
248
+ 모두 완료 후 사용자에게 확인
249
+ ```
250
+
251
+ ---
252
+
253
+ ## 9. 참고
254
+
255
+ - **이슈**: #1169 (AgentMemory 마이그레이션 계획)
256
+ - **이전 단계**: [measure-step-zero.md](./measure-step-zero.md)
257
+ - **R011**: `.claude/rules/SHOULD-memory-integration.md` (Dual-Backend Advisory 섹션)
258
+ - **관련 기억**: [[project-sequencing-alpha-beta-gamma]]
259
+ - **자산 처리표**: `guides/agentmemory-migration/asset-disposition.md` (Phase 2 전 검토 필요)
260
+ - **measure 스크립트**: `scripts/measure-claude-mem-usage.sh`
261
+ - **롤백 가이드**: #1169 본문 조치 4 (30분 롤백 절차)
@@ -0,0 +1,232 @@
1
+ # ECC 흡수 결정 아카이브
2
+
3
+ > **목적**: ECC (Everything Claude Code) 패턴 흡수 검토 이력 보존.
4
+ > 미래 기여자가 "왜 흡수했는가 / 왜 거부했는가"를 재검토 없이 파악할 수 있도록 합니다.
5
+ >
6
+ > 관련 Epic: #1170 (closed), 분리 이슈: #1176
7
+
8
+ ---
9
+
10
+ ## 1. 개요
11
+
12
+ oh-my-customcode는 **compilation metaphor**를 핵심 아키텍처 철학으로 채택합니다.
13
+ ECC (Everything Claude Code) 등 외부 도구의 패턴을 흡수할 때, 이 철학과의 정합성이
14
+ 흡수 여부의 1차 판단 기준입니다.
15
+
16
+ | 판단 기준 | 설명 |
17
+ |----------|------|
18
+ | metaphor 정합성 | `.claude/` 구조를 컴파일러 metaphor로 강화하는가 |
19
+ | single-maintainer 비용 | 외부 의존성 추적 부담이 감당 가능한가 |
20
+ | 사용자 가치 | 기존 사용자 워크플로우를 개선하는가 |
21
+ | 차별점 영향 | ECC와 직접 경쟁(zero-sum)이 되는가 |
22
+
23
+ 본 문서는 v0.142.0 ~ v0.143.0 기간에 검토된 4개 패턴의 결정을 기록합니다.
24
+
25
+ ---
26
+
27
+ ## 2. 흡수된 패턴 (v0.142.0)
28
+
29
+ ### 2-1. sec-agentshield-wrapper (sub-issue #1174)
30
+
31
+ | 항목 | 내용 |
32
+ |------|------|
33
+ | 릴리즈 | v0.142.0 |
34
+ | 흡수 형태 | pre-flight 보안 wrapper skill |
35
+ | 차별점 영향 | **보완** — post-write 자산(CodeQL 등)과 시점 분리 |
36
+
37
+ **결정: ACCEPT**
38
+
39
+ ECC의 `agentshield-wrapper`는 실행 전 입력 검증 레이어를 제공합니다.
40
+ oh-my-customcode의 `sec-codeql-expert`가 post-write 단계에 집중하므로,
41
+ pre-flight 단계를 담당하는 이 패턴은 compilation pipeline을 완성하는
42
+ `compiler → linker → loader` 구조에 자연스럽게 편입됩니다.
43
+ 유지보수 비용: 외부 harness 의존 없음, 내부 skill로 완전 소유.
44
+
45
+ ---
46
+
47
+ ### 2-2. instinct-extractor (sub-issue #1175)
48
+
49
+ | 항목 | 내용 |
50
+ |------|------|
51
+ | 릴리즈 | v0.142.0 |
52
+ | 흡수 형태 | cross-session 패턴 채굴 skill |
53
+ | 차별점 영향 | **보완** — `skill-extractor`와 trigger 분리 |
54
+
55
+ **결정: ACCEPT**
56
+
57
+ `skill-extractor`가 현재 세션의 행동 패턴을 skill로 승격한다면,
58
+ `instinct-extractor`는 누적 세션에서 반복 패턴을 자동 감지합니다.
59
+ 두 도구는 trigger가 다릅니다 (단일 세션 vs 누적 히스토리).
60
+ R016 Continuous Improvement 루프를 강화하며, 내부 구조(agent-memory + claude-mem)로
61
+ 구현 가능하므로 외부 의존성이 없습니다.
62
+
63
+ ---
64
+
65
+ ### 2-3. manifest-install --profile (sub-issue #1177)
66
+
67
+ | 항목 | 내용 |
68
+ |------|------|
69
+ | 릴리즈 | v0.142.0 |
70
+ | 흡수 형태 | manifest profiles 5종 |
71
+ | 차별점 영향 | **보완** — deactivation 비용 축소 |
72
+
73
+ **결정: ACCEPT**
74
+
75
+ 신규 사용자의 진입 비용을 낮추는 profile 기반 설치 패턴입니다.
76
+ `--profile minimal`, `--profile de`, `--profile qa` 등 도메인별 subset을
77
+ 한 번에 활성화합니다. deactivation 비용 문제(한 번 설치된 skill이 불필요해도
78
+ 삭제 경로가 불명확)를 profile 전환으로 해소합니다.
79
+ cross-harness export 거부(#1176)로 발생하는 진입로 공백을 부분 보완합니다.
80
+
81
+ ---
82
+
83
+ ## 3. 거부된 패턴 — Cross-harness Export (#1176)
84
+
85
+ ### 3-1. 개요
86
+
87
+ ECC는 oh-my-customcode의 `.claude/` 구조를 Cursor, Aider, Codex, Opencode 등
88
+ 8개 외부 harness 포맷으로 export하는 기능을 제공합니다.
89
+ 이 패턴을 oh-my-customcode가 흡수할 경우, 내부에 cross-harness export 레이어가
90
+ 추가됩니다.
91
+
92
+ ---
93
+
94
+ ### 3-2. 분석
95
+
96
+ **R006 compilation metaphor 영향**
97
+
98
+ oh-my-customcode의 아키텍처는 다음 매핑을 따릅니다:
99
+
100
+ ```
101
+ Source code → .claude/skills/
102
+ Build artifacts → .claude/agents/
103
+ Compiler → mgr-sauron (R017)
104
+ Spec → .claude/rules/
105
+ ```
106
+
107
+ cross-harness export를 흡수하면 이 compiler가 N개의 target backend(Cursor,
108
+ Aider, Codex 등)를 추가로 지원해야 합니다. 이는 **단일 target 컴파일러에서
109
+ multi-target 크로스 컴파일러로의 전환**을 의미합니다.
110
+
111
+ multi-target 전환의 결과:
112
+ - 각 외부 harness의 구조 변경이 oh-my-customcode build system에 직접 영향
113
+ - metaphor의 순수성 훼손 (compiler가 external spec을 추적해야 함)
114
+ - mgr-sauron (R017) 검증 범위가 외부 harness 포맷으로 확장
115
+
116
+ **single-maintainer 비용**
117
+
118
+ 외부 harness들은 변동성이 높습니다:
119
+
120
+ | Harness | 변동 리스크 |
121
+ |---------|------------|
122
+ | Cursor | 에이전트 폴더 구조 자주 변경 |
123
+ | Aider | `.aider` 설정 포맷 semi-annual 변경 |
124
+ | Codex | OpenAI 정책 변경 직접 반영 |
125
+ | Opencode | 초기 단계, 구조 unstable |
126
+
127
+ 각 harness의 breaking change가 발생할 때마다 R016 (Continuous Improvement)
128
+ 워크플로우가 트리거됩니다. single-maintainer 환경에서 이는 **core feature
129
+ 개발 시간의 경쟁 비용**이 됩니다.
130
+
131
+ **사용자 가치 trade-off**
132
+
133
+ | 가치 | 유형 |
134
+ |------|------|
135
+ | 신규 사용자 진입로 확장 | 신규 사용자 |
136
+ | 기존 harness 자산 재활용 | 멀티 harness 사용자 |
137
+ | ECC와 기능 중복 | zero-sum 경쟁 |
138
+
139
+ 신규 사용자 진입로 문제는 `manifest-install --profile`(#1177)으로 부분 해소됩니다.
140
+ 멀티 harness 사용자는 ECC를 직접 사용하는 것이 더 효과적입니다.
141
+
142
+ ---
143
+
144
+ ### 3-3. 결정: REJECT (DEFER 옵션 존재)
145
+
146
+ **권고: REJECT**
147
+
148
+ 거부 사유 (우선순위 순):
149
+
150
+ 1. **compilation metaphor 순수성 보호**
151
+ cross-harness export는 oh-my-customcode의 핵심 차별점인 compilation metaphor를
152
+ 직접 훼손합니다. 이 metaphor는 관심사 분리(R006)의 철학적 기반입니다.
153
+
154
+ 2. **ECC와의 zero-sum 경쟁 회피**
155
+ ECC는 이미 이 패턴의 원천(export source)입니다. 흡수하면 동일 기능으로
156
+ 경쟁하는 구조가 되며, 두 도구의 차별화가 희석됩니다.
157
+
158
+ 3. **single-maintainer R016 부담**
159
+ 외부 harness 8개의 변동을 추적하는 비용이 core feature R016 루프에 경쟁합니다.
160
+ 현재 기여자 구성(single-maintainer)에서는 감당 불가 수준으로 판단됩니다.
161
+
162
+ 4. **진입로 문제 대체 해소**
163
+ #1177 `manifest-install --profile`이 신규 사용자 진입 비용을 낮추는 대안으로
164
+ 이미 흡수되었습니다.
165
+
166
+ ---
167
+
168
+ ### 3-4. 대안 경로 (DEFER 시나리오)
169
+
170
+ 다음 조건이 충족될 때 재검토를 권장합니다:
171
+
172
+ | 조건 | 임계값 | 현재 (2026-05-18) |
173
+ |------|--------|------------------|
174
+ | 한국어 사용자 비율 | 50%+ | 미집계 |
175
+ | 외부 기여자 수 | 5명 이상 | 미집계 |
176
+
177
+ DEFER 기간 동안의 cross-tool integration 우회 경로:
178
+
179
+ - **RTK proxy skill**: 기존 infra 활용, Cursor 등에서 oh-my-customcode skill 호출
180
+ - **Codex/Gemini exec skill**: 외부 LLM executor를 skill로 래핑, harness 종속성 없음
181
+
182
+ 이 우회 경로는 full export와 동일한 가치를 제공하지 않지만,
183
+ R016 부담 없이 80% 이상의 use case를 커버합니다.
184
+
185
+ ---
186
+
187
+ ## 4. Cross-harness 거부의 의도된 결과
188
+
189
+ 이 결정으로 두 도구의 포지셔닝이 명확해집니다:
190
+
191
+ | 도구 | 포지션 |
192
+ |------|--------|
193
+ | **oh-my-customcode** | compilation metaphor pure-play — `.claude/` 생태계 전문화 |
194
+ | **ECC** | cross-harness pragmatist — 다양한 harness 간 이식성 제공 |
195
+
196
+ 사용자는 목적에 따라 도구를 선택할 수 있습니다:
197
+ - compilation metaphor 기반 체계적 에이전트 구축 → oh-my-customcode
198
+ - 기존 harness 자산의 이식/통합 → ECC
199
+
200
+ 두 도구가 동일한 기능을 제공할 필요가 없으며,
201
+ 이 차별화가 각 도구의 장기 지속성에 기여합니다.
202
+
203
+ ---
204
+
205
+ ## 5. KPI 모니터링
206
+
207
+ DEFER 조건 모니터링을 위한 내부 KPI 메모:
208
+
209
+ > 내부 메모: `.claude/agent-memory/sys-memory-keeper/project_ecc_kpi_internal_metrics.md`
210
+
211
+ | KPI | 6개월 목표 | 1년 목표 |
212
+ |-----|-----------|---------|
213
+ | 외부 기여자 수 | 2명 | 5명 |
214
+ | 한국어 사용자 비율 | 30% | 50% |
215
+ | cross-harness export 요청 수 | 10회 이상 → DEFER 재검토 | 30회 이상 → ACCEPT 재검토 |
216
+
217
+ KPI 미달 시: REJECT 유지, 대안 경로 개선 검토.
218
+ KPI 초과 달성 시: R016 워크플로우로 재검토 트리거.
219
+
220
+ ---
221
+
222
+ ## 6. 참고
223
+
224
+ | 항목 | 링크 |
225
+ |------|------|
226
+ | ECC 흡수 Epic | #1170 (closed) |
227
+ | Cross-harness 이슈 | #1176 (standalone, decision-needed) |
228
+ | sec-agentshield-wrapper | #1174 |
229
+ | instinct-extractor | #1175 |
230
+ | manifest-install --profile | #1177 |
231
+ | 시퀀싱 메모 | `.claude/agent-memory/sys-memory-keeper/` → `[[project-sequencing-alpha-beta-gamma]]` |
232
+ | R006 compilation metaphor | `.claude/rules/MUST-agent-design.md` |
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.143.0",
2
+ "version": "0.144.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)",