oh-my-customcode 1.1.28 → 1.1.30

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
@@ -220,7 +220,7 @@ Key rules: R010 (orchestrator never writes files), R009 (parallel execution mand
220
220
 
221
221
  ---
222
222
 
223
- ### Guides (57)
223
+ ### Guides (56)
224
224
 
225
225
  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.
226
226
 
@@ -277,7 +277,7 @@ your-project/
277
277
  │ ├── specs/ # Extracted canonical specs
278
278
  │ ├── contexts/ # 4 shared context files
279
279
  │ └── ontology/ # Knowledge graph for RAG
280
- └── guides/ # 57 reference documents
280
+ └── guides/ # 56 reference documents
281
281
  ```
282
282
 
283
283
  ---
package/dist/cli/index.js CHANGED
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  workspaces: [
242
242
  "packages/*"
243
243
  ],
244
- version: "1.1.28",
244
+ version: "1.1.30",
245
245
  description: "Batteries-included agent harness for Claude Code",
246
246
  type: "module",
247
247
  bin: {
@@ -289,7 +289,7 @@ var init_package = __esm(() => {
289
289
  yaml: "^2.8.2"
290
290
  },
291
291
  devDependencies: {
292
- "@anthropic-ai/sdk": "^0.111.0",
292
+ "@anthropic-ai/sdk": "^0.112.3",
293
293
  "@biomejs/biome": "^2.3.12",
294
294
  "@types/bun": "^1.3.6",
295
295
  "@types/js-yaml": "^4.0.9",
package/dist/index.js CHANGED
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "1.1.28",
2034
+ version: "1.1.30",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
@@ -2079,7 +2079,7 @@ var package_default = {
2079
2079
  yaml: "^2.8.2"
2080
2080
  },
2081
2081
  devDependencies: {
2082
- "@anthropic-ai/sdk": "^0.111.0",
2082
+ "@anthropic-ai/sdk": "^0.112.3",
2083
2083
  "@biomejs/biome": "^2.3.12",
2084
2084
  "@types/bun": "^1.3.6",
2085
2085
  "@types/js-yaml": "^4.0.9",
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.28",
6
+ "version": "1.1.30",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -51,7 +51,7 @@
51
51
  "yaml": "^2.8.2"
52
52
  },
53
53
  "devDependencies": {
54
- "@anthropic-ai/sdk": "^0.111.0",
54
+ "@anthropic-ai/sdk": "^0.112.3",
55
55
  "@biomejs/biome": "^2.3.12",
56
56
  "@types/bun": "^1.3.6",
57
57
  "@types/js-yaml": "^4.0.9",
@@ -32,8 +32,8 @@ Before writing/editing multiple files:
32
32
  3. Specialized agent available? → Use it (not general-purpose)
33
33
  4. Agent Teams available? → **Check R018 criteria before spawning 2+ agents; for a 3+ agent batch, announce the gate result (Agent Tool fallback reason or Agent Teams choice) — see R018 Self-Check "Gate Transparency"**
34
34
  5. Running agent stalled (2x+ duration)? → Spawn independent follow-up tasks immediately
35
- 6. Announced a parallel dispatch in prose? → ALL announced tool calls MUST be in the SAME message as the announcement (announce-execution consistency)
36
- - **Verify-Bash + action-delegate asymmetry**: when the batch is a verification Bash PLUS an action delegate (Agent/Workflow), the action delegate is the call most often dropped — the Bash fires and the delegate silently slips to the next turn. Dispatch BOTH in the SAME message. Recurred v1.1.22 (resume turn) and v1.1.23 (verify-build turn) — ≥2 occurrences, R016 rule-update mandate.
35
+ 6. Announced a parallel dispatch in prose? → **발화 직전 카운트 대조**: announce 산문이 명시한 도구 개수 N == 이 메시지에 실제 포함된 tool_use 블록 개수. 불일치면 보완한 뒤 발화 (announce-execution consistency)
36
+ - 누락 방향은 무작위다 — verify Bash가 빠지기도(v1.1.22/23), action delegate가 빠지기도(v1.1.27 세션) 했다. 방향별 서술 강화는 3회 재발로 실패가 실증됐으므로, 유일한 실효 방어선은 N↔N 카운트 대조다. Origin: #1512, #1503.
37
37
 
38
38
  ### Common Violations to Avoid
39
39
 
@@ -45,11 +45,8 @@ Before writing/editing multiple files:
45
45
  → Latency timeout, user cancellation, context waste, no review loop
46
46
  ✓ CORRECT: Pre-decompose by domain, spawn parallel agents per area (R009) or use Agent Teams (R018)
47
47
 
48
- ❌ WRONG: Announce "milestone 생성 + 구조 확인 병렬" but only dispatch one tool; the other runs next turn (announce-execution mismatch)
49
- ✓ CORRECT: When announcing N parallel tools, include ALL N tool calls in the SAME message as the announcement
50
-
51
- ❌ WRONG: Announce "verify build (Bash) + delegate fix (Agent) 병렬" but dispatch only the Bash; the Agent delegate slips to next turn (verify-bash + action-delegate asymmetry — the expensive action call is the one dropped)
52
- ✓ CORRECT: Dispatch BOTH the verification Bash AND the action delegate (Agent/Workflow) in the SAME message as the announcement
48
+ ❌ WRONG: Announce N개 병렬 도구(예: verify Bash + action delegate)를 예고했으나 메시지에 tool_use가 N-1개만 포함 — 누락 방향은 무작위(Bash가 빠지기도, delegate가 빠지기도)
49
+ ✓ CORRECT: 발화 직전 announce의 N과 tool_use 블록 개수를 대조해 일치시킨 뒤 같은 메시지로 발화
53
50
  ```
54
51
 
55
52
  > **Token threshold heuristic**: When a delegated agent prompt exceeds ~5000 tokens or spans 3+ unrelated domains, decompose by domain and spawn parallel agents. See R018 for Agent Teams criteria when review cycles are needed. Reference: #1085.
@@ -77,6 +77,17 @@ Wiki verification is also enforced by CI (`.github/workflows/wiki-sync.yml`).
77
77
  ```
78
78
  -->
79
79
 
80
+ ### Release Commit Staging Hygiene (빌드 산출물 오염 방지)
81
+
82
+ 릴리즈 커밋(및 `bun run build`를 수행한 모든 커밋) 직전, `git diff --cached --name-only`로 **스테이징 목록을 실측**하여 `dist/` 등 빌드 산출물이 포함되지 않았는지 확인한다. gitignored 경로라도 `git add -f` 또는 광범위 `git add` 조합으로 스테이징될 수 있으므로, .gitignore 존재가 방어를 보장하지 않는다. 발견 시 `git reset dist/`로 제외한 뒤 커밋한다. 이는 v1.1.12의 `dist/` untrack 조치에 대한 **회귀 방지 게이트**다.
83
+
84
+ | Anti-pattern | Required |
85
+ |--------------|----------|
86
+ | 빌드 후 광범위 `git add`로 커밋 → gitignored `dist/` force-add 위험 | 커밋 직전 `git diff --cached --name-only` 실측으로 빌드 산출물 부재 확인 |
87
+ | .gitignore에 있으니 안전하다고 가정 | force-add 경로는 .gitignore를 우회하므로 실측 필요 |
88
+
89
+ Origin: #1512 (v1.1.28 커밋 staging에 dist/ 2파일 포함, 커밋 전 실측으로 정정; v1.1.12 dist/ untrack 회귀 방지). Cross-ref: R020 (완료 검증 — "실행됨 ≠ 성공").
90
+
80
91
  ## When Required
81
92
 
82
93
  Any change to: agents, agent frontmatter, skills, guides, routing patterns, rules, wiki pages.
@@ -144,6 +144,7 @@ Before invoking a Workflow script, deterministically verify:
144
144
  | Template-literal / string concatenation produces the intended prompt (assemble-before-call, see above) | Post-call concatenation (`agent(prompt) + FACTS`) silently drops content |
145
145
  | Script parses — balanced braces/quotes, valid JS | A syntax error aborts the entire run after partial work |
146
146
  | 프롬프트 문자열 내 셸 변수 `${...}`(`$?`, `${PIPESTATUS[0]}`, `$(...)` 등)가 `\${...}`로 이스케이프되어 있는지 사전 grep 확인 | JS 템플릿 리터럴 안의 이스케이프 안 된 셸 `${...}`를 JS가 JS 표현식으로 평가 → 런타임 `ReferenceError`(예: `PIPESTATUS is not defined`). `node --check`는 문법만 검사하여 이 런타임 오류를 못 잡으므로 별도 결정론 grep 검사가 필요함 |
147
+ | Workflow `args`를 사용하는 스크립트가 `typeof args === 'string' ? JSON.parse(args) : args` 방어를 거친 뒤 필드에 접근하는지 확인 | 하니스가 객체 args를 문자열로 인코딩해 전달하면 `args.<field>`가 undefined가 되어 스크립트가 즉시 런타임 실패(0 agents 실행). `node --check`는 문법만 검사하므로 위 셸 `${...}` 이스케이프 항목과 동일한 런타임 계열을 잡지 못함 |
147
148
 
148
149
  #### Common Violation (#1271)
149
150
  Session 106 follow-up to #1266 ③: a Workflow authoring error recurred — the guardrail fact-sheet was concatenated onto the agent's RETURN VALUE instead of the prompt string, and a placeholder/assembly slip went uncaught because no pre-run sanity check existed. This check is the deterministic Tier-1 guard that catches such slips before the expensive run.
@@ -153,6 +154,9 @@ Origin: #1271 (Workflow authoring error recurrence, session 106).
153
154
  #### Common Violation (#1438)
154
155
  Origin: #1438 (Session 125 회고 찐빠 #2) — fix Workflow의 verify 프롬프트에 `${PIPESTATUS[0]}`를 이스케이프 없이 사용 → `PIPESTATUS is not defined` ReferenceError로 verify 단계 실패. `node --check`는 통과했으나 런타임에서 실패.
155
156
 
157
+ #### Common Violation (#1512)
158
+ Origin: #1512 (v1.1.27 세션 회고 찐빠 #2) — Workflow `args`를 JSON 객체로 전달했으나 하니스가 문자열로 인코딩해 `args.paths`가 undefined → 0 agents 실행으로 즉시 런타임 실패. `typeof args === 'string' ? JSON.parse(args) : args` 방어 추가 후 재실행 성공.
159
+
156
160
  ### Verifier Ground-Truth for Cross-Cutting Facts
157
161
 
158
162
  Cross-cutting facts not verifiable from the primary source (external URLs, in-cluster DNS/hostnames, infra topology) MUST be supplied to the verifier as explicit ground-truth. Otherwise an adversarial verifier cannot distinguish a hallucinated value from a correct one — a verification blind spot.
@@ -28,6 +28,24 @@ When agents, skills, rules, or guides are created or modified, corresponding wik
28
28
  | `/omcustom:wiki lint` | After major structural changes |
29
29
  | Automatic (CI) | `.github/workflows/wiki-sync.yml` checks on PR |
30
30
 
31
+ ### Resync Completeness — 페이지 갱신 + 매니페스트 재시딩
32
+
33
+ wiki 재동기화는 **두 단계 모두 완료해야 끝난다**: (a) 페이지 본문/`updated` 필드 갱신, (b) 매니페스트 재시딩. drift 판정은 페이지의 `updated` 필드가 아니라 **매니페스트의 SHA-256 대조**로 이루어지므로, 페이지만 갱신하면 drift가 잔존한다. 반대로 매니페스트만 재생성하면 drift 0으로 보이나 페이지 내용은 stale한 **false-green**이 된다 — 양방향 모두 불완전하다.
34
+
35
+ ```bash
36
+ bash .github/scripts/lib/source-hash.sh generate wiki/.source-hashes.json
37
+ ```
38
+
39
+ 재시딩 대상은 **항상 `wiki/.source-hashes.json`**이며 `templates/manifest.json`이 아니다(#1423 혼동 사례와 동일 경계).
40
+
41
+ | Anti-pattern | Required |
42
+ |--------------|----------|
43
+ | 페이지만 갱신하고 매니페스트 재시딩 누락 → drift 잔존 | 페이지 갱신 + 매니페스트 재시딩 두 단계 모두 수행 |
44
+ | 매니페스트만 재생성 → false-green (drift 0이나 페이지 stale) | 페이지를 실제로 갱신한 뒤 재시딩 |
45
+
46
+ Origin: #1512 (v1.1.27 세션 — 71페이지 갱신 후 drift 71→68 잔존, 매니페스트 재시딩으로 drift 0 달성).
47
+ Cross-reference: R017 (동기화 검증 — Phase 3 wiki sync), R020 (완료 검증 — actual outcome ≠ attempt).
48
+
31
49
  ## Delegation — All wiki writes via wiki-curator agent (R010). See workflow via Read tool.
32
50
 
33
51
  <!-- DETAIL: Delegation
@@ -96,60 +96,3 @@ IMPORTANT: Restart this Claude Code session for plugin changes to take effect.
96
96
  - Profiles define a subset: plugins not listed in `enabled` or `disabled` keep their current state
97
97
  - Profile JSON `enabled`/`disabled` lists use full plugin keys: `<name>@<marketplace>` format
98
98
  - All `.claude/` writes use direct Write/Edit/Bash (CC v2.1.121+, no `/tmp` wrapping — see Implementation rules above)
99
-
100
- ## Manifest Profile Integration
101
-
102
- `templates/manifest.json` 의 `profiles` 키는 **자산 필터링** (에이전트·스킬·가이드 범위)을 정의합니다. 기존 `.claude/profiles/*.json` 의 **플러그인 전환** 역할과 분리된 개념입니다.
103
-
104
- ### 두 프로필 시스템 비교
105
-
106
- | 시스템 | 경로 | 역할 | 적용 시점 |
107
- |--------|------|------|-----------|
108
- | Plugin profiles | `.claude/profiles/*.json` | `~/.claude/settings.json` plugin on/off | 세션 재시작 후 |
109
- | Manifest profiles | `templates/manifest.json#profiles` | 설치 시 에이전트·스킬·가이드 범위 지정 | `omcustom install --profile <name>` |
110
-
111
- ### Manifest Profile 사용 시나리오
112
-
113
- ```bash
114
- # 최소 자산으로 설치 (학습·실험 환경)
115
- omcustom install --profile minimal
116
-
117
- # Web 앱 개발 전용 자산 설치
118
- omcustom install --profile web-app
119
-
120
- # 데이터 엔지니어링 전용 자산 설치
121
- omcustom install --profile data-eng
122
-
123
- # 전체 자산 설치 (기본값)
124
- omcustom install --profile full
125
- # 또는 (profile 생략 시 full과 동일)
126
- omcustom install
127
- ```
128
-
129
- ### include 패턴 해석 규칙
130
-
131
- | 패턴 | 의미 | 예시 |
132
- |------|------|------|
133
- | `"*"` | 해당 카테고리 전체 포함 | `"include": "*"` |
134
- | `"mgr-*"` | glob 패턴, 접두사 매칭 | mgr-creator, mgr-gitnerd 등 |
135
- | `{"scope": "core"}` | SKILL.md의 scope 필드 기준 | scope: core인 스킬 전체 |
136
- | `"react-best-practices"` | 특정 스킬/가이드 이름 | 해당 항목만 포함 |
137
-
138
- ### Plugin + Manifest 프로필 연동 가이드
139
-
140
- 동일 이름(예: `web-app`)으로 두 시스템을 함께 사용할 수 있습니다:
141
-
142
- ```bash
143
- # 1. Manifest profile로 자산 설치
144
- omcustom install --profile web-app
145
-
146
- # 2. Plugin profile로 플러그인 전환
147
- /profile load web-app
148
- ```
149
-
150
- 두 시스템은 독립적이므로 어느 하나만 사용해도 무방합니다.
151
-
152
- ### 관련 문서
153
-
154
- - `guides/profiles/manifest-install.md` — 전체 사용 가이드 및 프로필별 자산 표
155
- - `templates/manifest.json#profiles` — 프로필 정의 소스
@@ -38,7 +38,7 @@ Agents:
38
38
  Skills:
39
39
  Total: 118 skills
40
40
 
41
- Guides: 57 loaded
41
+ Guides: 56 loaded
42
42
  Commands: 60+ available
43
43
 
44
44
  Health: ✓ OK
@@ -122,7 +122,7 @@ project/
122
122
  | +-- rules/ # 전역 규칙 (R000-R023)
123
123
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
124
124
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
125
- +-- guides/ # 레퍼런스 문서 (57 토픽)
125
+ +-- guides/ # 레퍼런스 문서 (56 토픽)
126
126
  ```
127
127
 
128
128
  ## 오케스트레이션
@@ -134,7 +134,7 @@ project/
134
134
  | +-- rules/ # Global rules (R000-R023)
135
135
  | +-- hooks/ # Hook scripts (security, validation, HUD)
136
136
  | +-- contexts/ # Context files (ecomode)
137
- +-- guides/ # Reference docs (57 topics)
137
+ +-- guides/ # Reference docs (56 topics)
138
138
  ```
139
139
 
140
140
  ## Orchestration
@@ -134,7 +134,7 @@ project/
134
134
  | +-- rules/ # 전역 규칙 (R000-R023)
135
135
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
136
136
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
137
- +-- guides/ # 레퍼런스 문서 (57 토픽)
137
+ +-- guides/ # 레퍼런스 문서 (56 토픽)
138
138
  ```
139
139
 
140
140
  ## 오케스트레이션
@@ -55,7 +55,7 @@ templates/
55
55
  │ │ └── scripts/ # 훅 셸 스크립트 (34개)
56
56
  │ ├── contexts/ # 컨텍스트 설정 파일 (ecomode 등)
57
57
  │ └── ontology/ # Ontology-RAG 지식 그래프
58
- └── guides/ # 레퍼런스 문서 디렉토리 (57개)
58
+ └── guides/ # 레퍼런스 문서 디렉토리 (56개)
59
59
  ```
60
60
 
61
61
  ---
@@ -109,7 +109,7 @@ CI의 `verify-template-sync.sh`가 소스와 templates/ 간 일치를 검증합
109
109
  | `SHOULD` | 강력 권장 | R003 상호작용, R013 Ecomode |
110
110
  | `MAY` | 선택 | R005 최적화 |
111
111
 
112
- ### Guides (57)
112
+ ### Guides (56)
113
113
 
114
114
  `guides/*/` — 레퍼런스 문서 디렉토리.
115
115
 
@@ -372,12 +372,6 @@ guides:
372
372
  source:
373
373
  type: internal
374
374
 
375
- - name: profiles
376
- description: Manifest install profile guide — minimal/full profile selection patterns
377
- path: ./profiles/
378
- source:
379
- type: internal
380
-
381
375
  # Security
382
376
  - name: security
383
377
  description: Security pre-flight analysis pattern (AgentShield) for pre-write risk identification
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.28",
2
+ "version": "1.1.30",
3
3
  "lastUpdated": "2026-07-14T00:00:00.000Z",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
@@ -26,7 +26,7 @@
26
26
  "name": "guides",
27
27
  "path": "guides",
28
28
  "description": "Reference documentation",
29
- "files": 57
29
+ "files": 56
30
30
  },
31
31
  {
32
32
  "name": "hooks",
@@ -47,124 +47,5 @@
47
47
  "files": 8
48
48
  }
49
49
  ],
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": [
56
- "mgr-*",
57
- "lang-*-expert",
58
- "sys-memory-keeper"
59
- ],
60
- "skills": [
61
- {
62
- "scope": "core"
63
- },
64
- {
65
- "scope": "harness"
66
- }
67
- ],
68
- "guides": [
69
- "agent-design",
70
- "git-safety",
71
- "claude-code"
72
- ]
73
- }
74
- },
75
- "full": {
76
- "description": "All assets (default). Equivalent to installing without --profile flag.",
77
- "include": "*"
78
- },
79
- "web-app": {
80
- "description": "Full-stack web application development profile.",
81
- "include": {
82
- "agents": [
83
- "lang-typescript-expert",
84
- "lang-python-expert",
85
- "fe-vercel-agent",
86
- "fe-design-expert",
87
- "be-fastapi-expert",
88
- "be-express-expert",
89
- "be-nestjs-expert",
90
- "db-postgres-expert",
91
- "db-supabase-expert",
92
- "db-redis-expert",
93
- "infra-docker-expert",
94
- "mgr-*"
95
- ],
96
- "skills": [
97
- {
98
- "scope": "core"
99
- },
100
- "react-best-practices",
101
- "typescript-best-practices",
102
- "fastapi-best-practices"
103
- ],
104
- "guides": [
105
- "agent-design",
106
- "git-safety",
107
- "claude-code",
108
- "drizzle-orm",
109
- "docker",
110
- "fastapi"
111
- ]
112
- }
113
- },
114
- "data-eng": {
115
- "description": "Data engineering sessions — Airflow, Spark, Kafka, Snowflake, dbt.",
116
- "include": {
117
- "agents": [
118
- "de-airflow-expert",
119
- "de-dbt-expert",
120
- "de-spark-expert",
121
- "de-kafka-expert",
122
- "de-snowflake-expert",
123
- "de-pipeline-expert",
124
- "db-postgres-expert",
125
- "db-redis-expert",
126
- "db-alembic-expert",
127
- "lang-python-expert",
128
- "mgr-*"
129
- ],
130
- "skills": [
131
- {
132
- "scope": "core"
133
- },
134
- "airflow-best-practices",
135
- "dbt-best-practices"
136
- ],
137
- "guides": [
138
- "agent-design",
139
- "git-safety",
140
- "airflow",
141
- "dbt",
142
- "snowflake"
143
- ]
144
- }
145
- },
146
- "harness-dev": {
147
- "description": "oh-my-customcode harness development — agent, skill, rule authoring.",
148
- "include": {
149
- "agents": [
150
- "mgr-*",
151
- "arch-*",
152
- "sys-*",
153
- "wiki-curator",
154
- "tracker-checkpoint"
155
- ],
156
- "skills": [
157
- {
158
- "scope": "harness"
159
- }
160
- ],
161
- "guides": [
162
- "agent-design",
163
- "git-safety",
164
- "claude-code",
165
- "agent-workflow"
166
- ]
167
- }
168
- }
169
- }
50
+ "source": "https://github.com/baekenough/oh-my-customcode"
170
51
  }
@@ -1,177 +0,0 @@
1
- # Manifest Profiles — Install Guide
2
-
3
- > **Source**: `templates/manifest.json#profiles`
4
- > **Related skill**: `.claude/skills/profile/SKILL.md`
5
- > **Issue**: #1177 (ECC manifest-install `--profile minimal/full` pattern)
6
-
7
- `--profile` 플래그를 사용하면 설치 시 포함할 에이전트·스킬·가이드 범위를 지정할 수 있습니다. 사용자 진입 비용(deactivation cost)을 줄이고, 목적에 맞는 최소 자산 세트로 빠르게 시작할 수 있습니다.
8
-
9
- ## 사용 방법
10
-
11
- ```bash
12
- # 기본 설치 (full — 전체 자산)
13
- omcustom install
14
-
15
- # 프로필 지정 설치
16
- omcustom install --profile minimal
17
- omcustom install --profile web-app
18
- omcustom install --profile data-eng
19
- omcustom install --profile harness-dev
20
- omcustom install --profile full
21
- ```
22
-
23
- ## 프로필 목록
24
-
25
- | 프로필 | 설명 | 추천 대상 |
26
- |--------|------|-----------|
27
- | `minimal` | 필수 최소 자산 (코어 SW Engineer + Manager) | 학습·실험·경량 환경 |
28
- | `full` | 전체 자산 (기본값) | 프로덕션, 다양한 도메인 |
29
- | `web-app` | 풀스택 웹 앱 개발 자산 | TypeScript/Python 풀스택 팀 |
30
- | `data-eng` | 데이터 엔지니어링 자산 | Airflow/Spark/dbt/Kafka/Snowflake |
31
- | `harness-dev` | oh-my-customcode 하네스 개발 자산 | 에이전트·스킬·룰 작성자 |
32
-
33
- ---
34
-
35
- ## 프로필별 포함 자산
36
-
37
- ### minimal
38
-
39
- 사용 시나리오: 첫 설치, 학습 환경, 토큰 비용 최소화.
40
-
41
- | 카테고리 | 포함 자산 |
42
- |----------|-----------|
43
- | 에이전트 | `mgr-*` (6개), `lang-*-expert` (6개), `sys-memory-keeper` |
44
- | 스킬 | scope: `core` + scope: `harness` 전체 |
45
- | 가이드 | `agent-design`, `git-safety`, `claude-code` |
46
-
47
- **배제**: 프레임워크 전문가(BE/FE/DE), QA 팀, 인프라, 보안, DB 전문가.
48
-
49
- ### full
50
-
51
- 사용 시나리오: 프로덕션 팀, 다양한 기술 스택, 기본 설치.
52
-
53
- | 카테고리 | 포함 자산 |
54
- |----------|-----------|
55
- | 에이전트 | 전체 49개 |
56
- | 스킬 | 전체 119개 |
57
- | 가이드 | 전체 54개 |
58
-
59
- `omcustom install` (profile 플래그 생략 시) 와 동일합니다.
60
-
61
- ### web-app
62
-
63
- 사용 시나리오: TypeScript/Python 풀스택 웹 앱 개발팀.
64
-
65
- | 카테고리 | 포함 자산 |
66
- |----------|-----------|
67
- | 에이전트 | `lang-typescript-expert`, `lang-python-expert`, `fe-vercel-agent`, `fe-design-expert`, `be-fastapi-expert`, `be-express-expert`, `be-nestjs-expert`, `db-postgres-expert`, `db-supabase-expert`, `db-redis-expert`, `infra-docker-expert`, `mgr-*` |
68
- | 스킬 | scope: `core` + `react-best-practices`, `typescript-best-practices`, `fastapi-best-practices`, `nextjs-best-practices` |
69
- | 가이드 | `agent-design`, `git-safety`, `claude-code`, `drizzle-orm`, `docker`, `fastapi`, `nextjs`, `react` |
70
-
71
- **배제**: 데이터 엔지니어링(DE), Java/Kotlin/Go/Rust 전문가, QA 팀, 보안.
72
-
73
- ### data-eng
74
-
75
- 사용 시나리오: 데이터 파이프라인 엔지니어링 팀.
76
-
77
- | 카테고리 | 포함 자산 |
78
- |----------|-----------|
79
- | 에이전트 | `de-*` (6개), `db-postgres-expert`, `db-redis-expert`, `db-alembic-expert`, `lang-python-expert`, `mgr-*` |
80
- | 스킬 | scope: `core` + `airflow-best-practices`, `dbt-best-practices` |
81
- | 가이드 | `agent-design`, `git-safety`, `airflow`, `dbt`, `snowflake` |
82
-
83
- **배제**: 프론트엔드, 백엔드 프레임워크, 인프라, QA.
84
-
85
- ### harness-dev
86
-
87
- 사용 시나리오: oh-my-customcode 시스템 자체 개발·유지보수.
88
-
89
- | 카테고리 | 포함 자산 |
90
- |----------|-----------|
91
- | 에이전트 | `mgr-*` (6개), `arch-*` (2개), `sys-*` (4개 중 sys-naggy 포함), `wiki-curator`, `tracker-checkpoint` |
92
- | 스킬 | scope: `harness` 전체 |
93
- | 가이드 | `agent-design`, `git-safety`, `claude-code`, `skill-authoring`, `agent-workflow` |
94
-
95
- **배제**: 언어/프레임워크/DE/QA/인프라 전문가.
96
-
97
- ---
98
-
99
- ## include 패턴 레퍼런스
100
-
101
- `manifest.json#profiles[].include` 필드에 사용 가능한 패턴:
102
-
103
- ```json
104
- {
105
- "include": "*"
106
- }
107
- ```
108
- 전체 포함 (full 프로필과 동일).
109
-
110
- ```json
111
- {
112
- "include": {
113
- "agents": ["mgr-*", "lang-typescript-expert"],
114
- "skills": [{"scope": "core"}, "react-best-practices"],
115
- "guides": ["agent-design", "git-safety"]
116
- }
117
- }
118
- ```
119
- 카테고리별 부분 포함.
120
-
121
- | 표현식 | 의미 |
122
- |--------|------|
123
- | `"*"` | 카테고리 전체 포함 |
124
- | `"mgr-*"` | 접두사 glob 매칭 |
125
- | `"lang-*-expert"` | 와일드카드 glob 매칭 |
126
- | `{"scope": "core"}` | SKILL.md `scope` 필드 기준 필터 |
127
- | `"react-best-practices"` | 정확한 이름 매칭 |
128
-
129
- ---
130
-
131
- ## Plugin Profile vs Manifest Profile
132
-
133
- 두 프로필 시스템은 **서로 독립**입니다.
134
-
135
- | 구분 | 경로 | 역할 | 적용 시점 |
136
- |------|------|------|-----------|
137
- | **Plugin profiles** | `.claude/profiles/*.json` | `~/.claude/settings.json` plugin on/off | 세션 재시작 후 |
138
- | **Manifest profiles** | `templates/manifest.json#profiles` | 설치 시 에이전트·스킬·가이드 범위 | `omcustom install --profile` |
139
-
140
- 동일한 이름(예: `web-app`)이 두 시스템에 모두 존재하면 각각 독립적으로 적용됩니다:
141
-
142
- ```bash
143
- # Manifest profile: 설치 자산 범위
144
- omcustom install --profile web-app
145
-
146
- # Plugin profile: 플러그인 on/off
147
- /profile load web-app
148
- ```
149
-
150
- ---
151
-
152
- ## 커스텀 프로필 추가
153
-
154
- `templates/manifest.json` 의 `profiles` 객체에 새 키를 추가합니다:
155
-
156
- ```json
157
- "my-profile": {
158
- "description": "My custom profile description",
159
- "include": {
160
- "agents": ["lang-golang-expert", "be-go-backend-expert", "mgr-*"],
161
- "skills": [{"scope": "core"}],
162
- "guides": ["agent-design", "git-safety"]
163
- }
164
- }
165
- ```
166
-
167
- 커스텀 프로필은 `omcustom install --profile my-profile` 로 즉시 사용 가능합니다.
168
-
169
- ---
170
-
171
- ## 관련 자료
172
-
173
- - `.claude/skills/profile/SKILL.md` — Plugin profile 전환 스킬
174
- - `templates/manifest.json` — 전체 manifest 및 profiles 정의
175
- - `guides/agent-design/` — 에이전트 설계 가이드
176
- - Issue #1177 — ECC manifest-install 패턴 흡수
177
- - Issue #1170 — ECC 4 패턴 흡수 epic