oh-my-customcode 1.1.33 → 1.1.35

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
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  workspaces: [
242
242
  "packages/*"
243
243
  ],
244
- version: "1.1.33",
244
+ version: "1.1.35",
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.112.3",
292
+ "@anthropic-ai/sdk": "^0.115.0",
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.33",
2034
+ version: "1.1.35",
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.112.3",
2082
+ "@anthropic-ai/sdk": "^0.115.0",
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.33",
6
+ "version": "1.1.35",
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.112.3",
54
+ "@anthropic-ai/sdk": "^0.115.0",
55
55
  "@biomejs/biome": "^2.3.12",
56
56
  "@types/bun": "^1.3.6",
57
57
  "@types/js-yaml": "^4.0.9",
@@ -26,11 +26,14 @@ tools: [Read, Write, ...] # Allowed tools
26
26
  | `sonnet5` | claude-sonnet-5 | CC default (v2.1.197+); native 1M context |
27
27
  | `opus` | claude-opus-4-6 | Complex reasoning, architecture |
28
28
  | `opusplan` | claude-opus-4-6 + plan mode | Architecture planning with approval gates |
29
- | `opus48` | claude-opus-4-8 | Latest Opus model (GA); highest capability below Fable 5; supports xhigh effort |
29
+ | `opus48` | claude-opus-4-8 | Previous-generation Opus; supports xhigh effort |
30
+ | `opus5` | claude-opus-5 | Latest Opus (GA); now CC's default Opus model; native 1M context, fast mode at $10/$50 per Mtok |
30
31
  | `fable` | claude-fable-5 | Mythos-class; tier above Opus, highest GA capability (access added in CC v2.1.170) |
31
32
 
32
33
  Extended context suffix: `[1m]` (e.g., `claude-opus-4-6[1m]`) — enables 1M token context window.
33
34
 
35
+ > **v2.1.219+**: Claude Opus 5 (`claude-opus-5`) added and is now CC's default Opus model — native 1M context, fast mode at $10/$50 per Mtok. Use via `model: opus5`. Base `opus` alias remains pinned to `claude-opus-4-6` for stability (existing `model: opus` agents unaffected), matching the prior opus47→opus48 pinning pattern. Relative standing vs Fable 5 is not yet confirmed officially — do not assert an ordering.
36
+
34
37
  > **Claude Fable 5 (access via CC v2.1.170+)**: Mythos-class model, GA on the Claude API and positioned as a tier above Opus — its capabilities exceed any previously GA model. CC v2.1.170 is the client version that adds access (the model's GA is an API/platform property, not a CC-release milestone). Available via `model: fable` / `claude-fable-5`. Reserve for the most complex reasoning where its capability premium is warranted; `sonnet` remains the default for general tasks and `opus` for architecture (cost/latency awareness, R005). CC v2.1.170 also fixes session transcripts not saving (and not appearing in `--resume`) when launched from a VS Code integrated terminal or any shell inheriting Claude Code env vars — relevant to transcript-dependent skills (`homework`, `episodic-memory`). Closes #1352.
35
38
 
36
39
  <!-- ARCHIVED CC version notes (historical):
@@ -142,7 +145,9 @@ Hook JSON output `terminalSequence` field for desktop notifications, window titl
142
145
 
143
146
  ## Hook Event Types
144
147
 
145
- 20 event types supported: PreToolUse, PostToolUse, PreCompact, PostCompact, Stop, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit, Notification, CwdChanged, FileChanged, Elicitation, ElicitationResult, PostMessage, PermissionDenied, TeammateIdle, TaskCreated, TaskCompleted. 4 handler types: command, prompt, http, agent. See full reference table via Read tool.
148
+ 21 event types supported: PreToolUse, PostToolUse, PreCompact, PostCompact, Stop, SessionStart, SessionEnd, SubagentStart, SubagentStop, UserPromptSubmit, Notification, CwdChanged, FileChanged, Elicitation, ElicitationResult, PostMessage, PermissionDenied, TeammateIdle, TaskCreated, TaskCompleted, DirectoryAdded. 4 handler types: command, prompt, http, agent. See full reference table via Read tool.
149
+
150
+ > **v2.1.219+**: `DirectoryAdded` hook event added — fires after `/add-dir` or an SDK `register_repo_root` control request registers a new working directory mid-session.
146
151
 
147
152
  <!-- DETAIL: Hook Event Types Full Reference
148
153
 
@@ -168,6 +173,7 @@ Hook JSON output `terminalSequence` field for desktop notifications, window titl
168
173
  | `TeammateIdle` | Agent Teams member idle | teammate_id | command | v2.1.83+ |
169
174
  | `TaskCreated` | Task created | task_id, description | command | v2.1.83+ |
170
175
  | `TaskCompleted` | Task completed | task_id, result | command | v2.1.83+ |
176
+ | `DirectoryAdded` | New working directory registered mid-session (`/add-dir` or SDK `register_repo_root`) | old dirs, new_dir | command | v2.1.219+ |
171
177
 
172
178
  ### Hook Handler Types
173
179
 
@@ -4,7 +4,9 @@
4
4
 
5
5
  ## Core Rule
6
6
 
7
- The main conversation is the **sole orchestrator**. It uses routing skills to delegate tasks to subagents via the Agent tool (formerly Task tool). Subagents CANNOT spawn other subagents.
7
+ The main conversation is the **sole orchestrator**. It uses routing skills to delegate tasks to subagents via the Agent tool (formerly Task tool). Subagents MUST NOT spawn other subagents — this is a project policy, not a platform limitation.
8
+
9
+ > **Platform vs policy (CC v2.1.219+)**: CC는 기본적으로 subagent 중첩 스폰을 depth 3까지 허용합니다 (`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`; v2.1.217에서 depth 1 기본값 도입 → v2.1.219에서 depth 3로 상향). 그러나 oh-my-customcode는 오케스트레이터 단일성을 위해 **정책으로** flat delegation을 요구합니다 — 서브에이전트는 다른 서브에이전트를 스폰하지 않습니다. 이는 플랫폼 제약이 아니라 프로젝트 규칙이며, 위반은 R010 위반입니다.
8
10
 
9
11
  **Agent Teams Exception**: Agent Teams members are peers, not hierarchical subagents. Teams members CAN spawn sub-agents via the Agent tool to execute complex workflows (e.g., research teams, verification teams). This enables Teams-compatible skills like `/research` and `/deep-plan` to run inside Team members. The Teams member acts as a local orchestrator for its own sub-tasks.
10
12
 
@@ -77,16 +77,21 @@ Wiki verification is also enforced by CI (`.github/workflows/wiki-sync.yml`).
77
77
  ```
78
78
  -->
79
79
 
80
- ### Release Commit Staging Hygiene (빌드 산출물 오염 방지)
80
+ ### Release Commit Staging Hygiene (빌드 산출물 오염/누락 방지)
81
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 조치에 대한 **회귀 방지 게이트**다.
82
+ 릴리즈 커밋(및 `bun run build`를 수행한 모든 커밋) 직전, 스테이징 검증은 **양방향**이다 — (a) gitignored 빌드 산출물(`dist/` 등)이 **혼입**되지 않았는가, (b) 빌드가 갱신한 **tracked** 산출물(`.omcustom.lock.json` 등)이 **누락**되지 않았는가. 두 방향은 서로 다른 경로(gitignored vs tracked)를 대상으로 하므로, 한쪽만 확인하면 반대 방향 결함이 통과한다 — .gitignore 존재/부재 확인만으로는 부족하다.
83
+
84
+ **(a) 혼입 방지**: `git diff --cached --name-only`로 **스테이징 목록을 실측**하여 `dist/` 등 빌드 산출물이 포함되지 않았는지 확인한다. gitignored 경로라도 `git add -f` 또는 광범위 `git add` 조합으로 스테이징될 수 있다. 발견 시 `git reset dist/`로 제외한 뒤 커밋한다. 이는 v1.1.12의 `dist/` untrack 조치에 대한 **회귀 방지 게이트**다.
85
+
86
+ **(b) 누락 방지**: `bun run build` 실행 후 `git status --short`에 **tracked 변경(`^ M`)이 남아 있으면 스테이징 누락**이다. 커밋 직전 tracked 변경이 0인지 확인한다.
83
87
 
84
88
  | Anti-pattern | Required |
85
89
  |--------------|----------|
86
90
  | 빌드 후 광범위 `git add`로 커밋 → gitignored `dist/` force-add 위험 | 커밋 직전 `git diff --cached --name-only` 실측으로 빌드 산출물 부재 확인 |
87
91
  | .gitignore에 있으니 안전하다고 가정 | force-add 경로는 .gitignore를 우회하므로 실측 필요 |
92
+ | `dist/` 미포함만 확인하고 커밋 → 빌드가 갱신한 tracked 산출물 누락 | `git status --short`로 tracked 변경 잔존 0 확인 |
88
93
 
89
- Origin: #1512 (v1.1.28 커밋 staging에 dist/ 2파일 포함, 커밋 전 실측으로 정정; v1.1.12 dist/ untrack 회귀 방지). Cross-ref: R020 (완료 검증 — "실행됨 ≠ 성공").
94
+ Origin: #1512 (v1.1.28 커밋 staging에 dist/ 2파일 포함, 커밋 전 실측으로 정정; v1.1.12 dist/ untrack 회귀 방지); #1531 (`.omcustom.lock.json`이 v1.1.29 이후 4개 릴리즈 연속 누락 — 혼입 방지 단방향 조항의 반대편 공백). Cross-ref: R020 (완료 검증 — "실행됨 ≠ 성공").
90
95
 
91
96
  ### Count Sync — Exhaustive Grep, Not File Enumeration
92
97
 
@@ -307,9 +307,13 @@ steps:
307
307
  # Edit ONLY the .version field — do NOT overwrite templates/manifest.json wholesale (e.g. a source-hash path→hash map).
308
308
  # Recover a corrupted manifest: git show HEAD:templates/manifest.json | jq '.version="<NEW>"' > templates/manifest.json (#1423/#1154).
309
309
  b. templates/manifest.json: jq '.version = "<NEW>"' templates/manifest.json > templates/manifest.json.tmp && mv templates/manifest.json.tmp templates/manifest.json
310
- c. mgr-gitnerd commit: "chore(release): bump to v<NEW>"
311
- d. mgr-gitnerd push develop
312
- e. mandatory verification (with existence guard for partial-update safety):
310
+ c. bun run build — run standalone (NO pipe), read exit code directly ($? after a pipe is the last command's, R005/#1492).
311
+ This regenerates .omcustom.lock.json (generatorVersion/templateVersion) to <NEW> via scripts/sync-source-lockfile.ts.
312
+ d. git status --short — enumerate ALL tracked drift (`^ M`) the build produced; stage EVERY one (esp. .omcustom.lock.json) before commit.
313
+ (#1531 — .omcustom.lock.json missed staging across 4 consecutive releases after v1.1.29; root cause was no build step between version bump and commit.)
314
+ e. mgr-gitnerd commit: "chore(release): bump to v<NEW>" — MUST include the drift from step d
315
+ f. mgr-gitnerd push develop
316
+ g. mandatory verification (with existence guard for partial-update safety):
313
317
  [ -f scripts/verify-version-sync.sh ] && bash scripts/verify-version-sync.sh || echo "::warning::verify-version-sync.sh not found, version sync verification skipped"
314
318
  (verify-version-sync.sh 가 exit 1 시 release 단계 halt)
315
319
 
@@ -325,12 +329,15 @@ steps:
325
329
  3. Adapt release mechanism to project (determines how steps 3-5 execute):
326
330
  - npm project with auto-tag.yml (this repo — release/v* PR pattern):
327
331
  a. mgr-gitnerd creates release/v{NEW} branch from develop with the version-bump commit
328
- b. mgr-gitnerd creates PR: gh pr create --base develop --head release/v{NEW} --title "chore(release): bump to v{NEW}"
332
+ b. mgr-gitnerd creates PR: gh pr create --base develop --head release/v{NEW} --title "chore(release): bump to v{NEW}" --body "<MUST include 'Closes #N' for EVERY issue this release resolves>"
333
+ ⚠ auto-tag.yml closes issues by grep'ing Closes/Fixes/Resolves keywords in the PR BODY — NOT by milestone membership. If the keywords are missing, no issues close and the workflow still reports success (#1531).
334
+ Before creating the PR (whether via inline --body or --body-file), confirm the body text actually contains a Closes line per issue.
329
335
  c. mgr-gitnerd merges PR (admin merge required due to branch protection)
330
336
  d. DO NOT manually git tag or gh release create.
331
- auto-tag.yml fires on release/v* PR merge → creates tag → closes linked issues → closes milestone → deletes release branch.
337
+ auto-tag.yml fires on release/v* PR merge → creates tag → closes issues linked via PR-body Closes/Fixes/Resolves keywords → closes milestone → deletes release branch.
332
338
  release.yml fires on the tag → npm publish + GitHub Release creation.
333
339
  Milestone close and issue close are handled downstream by auto-tag.yml — do NOT close them manually.
340
+ After merge, verify each targeted issue is actually CLOSED (gh issue view); close manually if still open. Workflow conclusion=success is not evidence of close (#1531 — v1.1.34 Closes-keyword omission left 5 issues open, manual close required).
334
341
  - Non-npm / no auto-tag.yml:
335
342
  mgr-gitnerd: git tag v{NEW} && git push origin v{NEW}
336
343
  mgr-gitnerd: gh release create v{NEW} (with release notes)
@@ -123,7 +123,7 @@ claude auto-mode critique # Review auto mode decisions
123
123
 
124
124
  | Variable | Description | Example |
125
125
  |----------|-------------|---------|
126
- | `ANTHROPIC_MODEL` | Override default model | `claude-opus-4-6` |
126
+ | `ANTHROPIC_MODEL` | Override default model | `claude-opus-5` (default Opus, v2.1.219+) |
127
127
  | `CLAUDE_CODE_SUBAGENT_MODEL` | Override subagent model | `claude-haiku-4-5` |
128
128
  | `CLAUDE_CODE_EFFORT_LEVEL` | Set effort level | `high` |
129
129
  | `CLAUDE_CODE_DISABLE_FAST_MODE` | Disable fast mode | `1` |
@@ -5,7 +5,7 @@
5
5
 
6
6
  ## 개요
7
7
 
8
- Claude Fable 5(`claude-fable-5`)는 Mythos-class 모델로, GA 시점 기준 Opus 4.8보다 상위 티어의 최고 GA 역량을 가집니다(R006 Model Aliases 참조). Fable 5는 기존 모델 대비 다른 행동 프로파일을 가지므로, 기존 Opus/Sonnet용으로 튜닝된 하네스(rules, skills, system prompt)를 그대로 재사용하면 오히려 품질이 저하될 수 있습니다. 이 문서는 Fable 5 전용 프롬프팅·스캐폴딩 조정 패턴을 정리합니다.
8
+ Claude Fable 5(`claude-fable-5`)는 Mythos-class 모델로, **Opus 4.8 대비** 상위 티어의 GA 역량을 가집니다(GA 시점 기준, R006 Model Aliases 참조). **Opus 5**(`claude-opus-5`, CC v2.1.219+에서 도입되어 현재 CC의 기본 Opus 모델)와의 상대 위계는 공식 자료로 확인되지 않았으므로, 이 문서는 어느 쪽이 상위 티어인지 단정하지 않습니다. Fable 5는 기존 모델 대비 다른 행동 프로파일을 가지므로, 기존 Opus/Sonnet용으로 튜닝된 하네스(rules, skills, system prompt)를 그대로 재사용하면 오히려 품질이 저하될 수 있습니다. 이 문서는 Fable 5 전용 프롬프팅·스캐폴딩 조정 패턴을 정리합니다.
9
9
 
10
10
  ## Opus 4.8 대비 행동 차이
11
11
 
@@ -59,7 +59,7 @@ Mythos 5는 Project Glasswing 한정 공급 모델로, **GA가 아닙니다**. F
59
59
 
60
60
  ## 상호 참조
61
61
 
62
- - **R006** (MUST-agent-design.md) — Model Aliases 표에 `fable` alias 정의, effort/model 기본값 정책
62
+ - **R006** (MUST-agent-design.md) — Model Aliases 표에 `fable` alias 정의, effort/model 기본값 정책; Opus 5(v2.1.219+) 도입 및 Fable 5 대비 상대 위계 미확인 각주도 포함
63
63
  - **R023** (SHOULD-verification-ladder.md) — 검증 비용 ladder shift-left 원칙. 이 문서의 "과잉 처방 경고"는 검증 비용이 아닌 지시 간결성 축이므로 R023과 직교하되 상호 참조 가치가 있음
64
64
  - **R009** (MUST-parallel-execution.md) — long-lived subagent 재사용 및 병렬 서브에이전트 dispatch 신뢰성 향상과 연관
65
65
  - **R020** (MUST-completion-verification.md) — 진행 주장 ground-truth 강제 패턴(d)의 기존 선점 규칙
@@ -11,14 +11,15 @@ Role-based model selection strategy for AI agent workflows. Consolidates model r
11
11
  | `haiku` | claude-haiku-4-5 | $ | Fast | Search, simple edits, file discovery |
12
12
  | `sonnet` | claude-sonnet-4-6 | $$ | Moderate | Code generation, general tasks (project base alias — pinned to 4-6 for stability) |
13
13
  | `sonnet5` | claude-sonnet-5 | $$ | Moderate | CC platform default (v2.1.197+); native 1M context |
14
- | `opus` | claude-opus-4-6 | $$$ | Slower | Complex reasoning, architecture, planning |
15
- | `opus48` | claude-opus-4-8 | $$$ | Slower | Latest Opus (GA); highest capability below Fable 5 |
14
+ | `opus` | claude-opus-4-6 | $$$ | Slower | Complex reasoning, architecture, planning (project base alias — pinned to 4-6 for stability) |
15
+ | `opus5` | claude-opus-5 | $$$ | Fast mode available | CC platform default Opus (v2.1.219+); native 1M context, fast mode at $10/$50 per Mtok |
16
+ | `opus48` | claude-opus-4-8 | $$$ | Slower | Previous-generation Opus (GA); supports xhigh effort |
16
17
  | `fable` | claude-fable-5 | $$$$ | Slower | Mythos-class; tier above Opus, highest GA capability |
17
18
  | `opusplan` | claude-opus-4-6 + plan mode | $$$ | Slower | Architecture with approval gates |
18
19
 
19
- Extended context: `[1m]` suffix enables 1M token context (e.g., `claude-opus-4-6[1m]`). Fable 5 and Sonnet 5 include 1M context by default — no `[1m]` suffix needed.
20
+ Extended context: `[1m]` suffix enables 1M token context (e.g., `claude-opus-4-6[1m]`). Fable 5, Sonnet 5, and Opus 5 include 1M context by default — no `[1m]` suffix needed.
20
21
 
21
- > **Base alias pin (design intent)**: The base `sonnet` alias stays pinned to `claude-sonnet-4-6` for stability — existing agents specifying `model: sonnet` remain unchanged. Claude Sonnet 5 (`claude-sonnet-5`) is the CC platform default as of v2.1.197 and is opt-in via the explicit `sonnet5` alias.
22
+ > **Base alias pin (design intent)**: The base `sonnet` alias stays pinned to `claude-sonnet-4-6` for stability — existing agents specifying `model: sonnet` remain unchanged. Claude Sonnet 5 (`claude-sonnet-5`) is the CC platform default as of v2.1.197 and is opt-in via the explicit `sonnet5` alias. The same pattern applies to Opus: the base `opus` alias stays pinned to `claude-opus-4-6`; Claude Opus 5 (`claude-opus-5`) is CC's default Opus model as of v2.1.219 and is opt-in via the explicit `opus5` alias. Relative standing vs Fable 5 is not yet confirmed officially — do not assert an ordering.
22
23
 
23
24
  ## Role-Based Routing Table
24
25
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.33",
2
+ "version": "1.1.35",
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)",