oh-my-customcode 1.1.32 → 1.1.34
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 +2 -2
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/templates/.claude/rules/MAY-optimization.md +2 -0
- package/templates/.claude/rules/MUST-agent-design.md +8 -2
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +3 -1
- package/templates/.claude/rules/MUST-sync-verification.md +17 -0
- package/templates/.claude/skills/pipeline/workflows/auto-dev.yaml +6 -3
- package/templates/guides/claude-code/13-cli-flags.md +1 -1
- package/templates/guides/claude-code/16-fable5-prompting.md +2 -2
- package/templates/guides/multi-model-routing/README.md +5 -4
- package/templates/manifest.json +1 -1
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.
|
|
244
|
+
version: "1.1.34",
|
|
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.
|
|
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.
|
|
2034
|
+
version: "1.1.34",
|
|
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.
|
|
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.
|
|
6
|
+
"version": "1.1.34",
|
|
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.
|
|
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,6 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
> **파이프 뒤 `$?`는 마지막 명령의 exit code (#1492)**: `script.sh | tail -N; echo $?`처럼 검증 스크립트를 파이프에 연결한 뒤 `$?`로 읽으면 파이프라인 **마지막 명령**(`tail`)의 종료코드를 얻는다 — 스크립트 자체가 실패(exit 1)해도 `tail`이 성공(exit 0)하면 `$?=0`으로 "통과"를 오판한다. 검증 스크립트는 파이프 없이 단독 실행하거나 `${PIPESTATUS[0]}`으로 원본 exit code를 읽는다. **주의**: `${PIPESTATUS[0]}` 자체는 R023 Workflow JS 템플릿 리터럴 이스케이프 이슈(#1438, `${...}`를 JS가 평가해 ReferenceError)와 별개 문제 — 본 항목은 셸에서 파이프 뒤 exit code를 읽는 각도다. Origin: #1492 (Session 132 회고 찐빠 #3). Cross-ref: R020 ("command executed" ≠ "succeeded").
|
|
28
28
|
|
|
29
|
+
> **계수/매칭 방법 확인 (#1521)**: 카운트를 대조하기 전에 **비교 대상이 무엇을 어떻게 세는지** 먼저 확인한다 — 같은 지표라도 계수 방법이 다르면 값이 달라진다. 대표 함정 3종: (a) glob(`ls *.md`, 최상위만) vs 재귀 `find`(하위 디렉토리 포함), (b) 부분 문자열 grep(`grep "sdd"`가 `sdd-dev`까지 매칭), (c) 확장자 필터(`--include='*.md'`가 `CLAUDE.md.en`을 미매칭). 검증 스크립트와 대조할 때는 **스크립트의 실제 계수 로직을 읽고** 같은 방법으로 센다. 위 `ls | tail` 시계열 오판(#1417)과 동류로, 도구의 기본 동작을 확인하지 않은 채 결과를 해석해 오탐에 이르는 패턴이다. Origin: #1521 (2026-07-20 세션에서 3회 반복; 두 서브에이전트가 독립적으로 동일 오탐에 도달).
|
|
30
|
+
|
|
29
31
|
<!--
|
|
30
32
|
> **v2.1.206+**: `/doctor`에 checked-in CLAUDE.md에서 코드베이스로부터 파생 가능한 내용을 잘라내도록 제안하는 체크가 추가되었습니다 — R005 "Context Optimization via HTML Comments"의 컨텍스트 절감 원칙과 정합(모델 불필요 메타데이터 축소).
|
|
31
33
|
-->
|
|
@@ -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 |
|
|
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
|
-
|
|
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
|
|
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
|
|
|
@@ -88,6 +88,23 @@ Wiki verification is also enforced by CI (`.github/workflows/wiki-sync.yml`).
|
|
|
88
88
|
|
|
89
89
|
Origin: #1512 (v1.1.28 커밋 staging에 dist/ 2파일 포함, 커밋 전 실측으로 정정; v1.1.12 dist/ untrack 회귀 방지). Cross-ref: R020 (완료 검증 — "실행됨 ≠ 성공").
|
|
90
90
|
|
|
91
|
+
### Count Sync — Exhaustive Grep, Not File Enumeration
|
|
92
|
+
|
|
93
|
+
카운트(스킬/에이전트/룰/가이드 수) 동기화는 **파일 목록 열거가 아니라 저장소 전수 grep + 의미 판별**로 수행한다. 같은 카운트가 15곳 이상에 흩어져 있어 열거식 위임은 목록에서 빠진 곳을 구조적으로 놓친다.
|
|
94
|
+
|
|
95
|
+
절차: (a) 실제 개수 실측(`ls -1d .claude/skills/*/ | wc -l` 등) → (b) 이전 값을 저장소 전역 grep → (c) 각 히트가 **카운트를 의미하는지 판별** → (d) 카운트 의미인 것만 정정.
|
|
96
|
+
|
|
97
|
+
무관한 숫자는 건드리지 않는다 — 버전번호(`v0.118.x`, CC `v2.1.118`), 이슈 번호, 과거 이력 서술("skill-count correction 114→118"), 스크립트 예시 주석은 정정 대상이 아니며 판단 근거와 함께 보고한다. grep 필터 주의: `--include='*.md'`는 `CLAUDE.md.en`/`CLAUDE.md.ko` 같은 **이중 확장자 파일을 매칭하지 못하므로**, 확장자 필터 없이 훑거나 별도 패턴을 병행한다.
|
|
98
|
+
|
|
99
|
+
| Anti-pattern | Required |
|
|
100
|
+
|--------------|----------|
|
|
101
|
+
| 카운트 동기화를 "갱신할 파일 목록" 열거로 위임 | 전수 grep으로 이전 값 히트를 모두 수집한 뒤 카운트 의미만 정정 |
|
|
102
|
+
| `--include='*.md'` 필터로 전수 grep 수행 | 확장자 필터 없이 훑거나 이중 확장자 패턴 병행 |
|
|
103
|
+
|
|
104
|
+
위임 프롬프트에는 항상 **"실측값 기준으로 동기화하라, 추측으로 숫자를 바꾸지 말라"**를 명시해, 오케스트레이터의 잘못된 전제를 서브에이전트가 정정할 여지를 남긴다(#1443).
|
|
105
|
+
|
|
106
|
+
Origin: #1521 (찐빠 #2 — v1.1.32 skills 118→114 동기화에서 파일 열거식 위임이 6곳만 갱신, CI 3곳 지적 + 전수 grep 9곳 추가 발견, 최종 15곳). Cross-ref: #1443 (실측값 기준 명시), #1287 (multi-copy 일관성).
|
|
107
|
+
|
|
91
108
|
## When Required
|
|
92
109
|
|
|
93
110
|
Any change to: agents, agent frontmatter, skills, guides, routing patterns, rules, wiki pages.
|
|
@@ -230,16 +230,19 @@ steps:
|
|
|
230
230
|
|
|
231
231
|
## Local CI-mimic verification (MUST run before marking implement done)
|
|
232
232
|
|
|
233
|
-
After all implementation tasks complete, run these scripts in sequence and halt on failure
|
|
233
|
+
After all implementation tasks complete, run these scripts in sequence and halt on failure.
|
|
234
|
+
Run each standalone (NO pipe) and read its exit code directly — `$?` after a pipe is the last command's code (R005, #1492):
|
|
234
235
|
|
|
235
236
|
1. bash .github/scripts/verify-template-sync.sh
|
|
236
237
|
2. bash .github/scripts/verify-wiki-sync.sh
|
|
238
|
+
3. bun .github/scripts/validate-docs.ts --programmatic-only
|
|
237
239
|
|
|
238
|
-
If
|
|
240
|
+
If any fails:
|
|
239
241
|
- For wiki-sync failures: delegate to wiki-curator to generate missing pages (`/omcustom:wiki ingest <path>`)
|
|
240
242
|
(Regenerating the wiki source-hash manifest targets `wiki/.source-hashes.json` ALWAYS — NEVER `templates/manifest.json`. Command: `bash .github/scripts/lib/source-hash.sh generate wiki/.source-hashes.json`. Ref #1423.)
|
|
241
243
|
- For template-sync failures: delegate to mgr-updater to sync `.claude/` -> `templates/.claude/`
|
|
242
|
-
-
|
|
244
|
+
- For validate-docs failures (count mismatch): delegate to mgr-updater to fix counts via EXHAUSTIVE grep across all docs — file-enumeration misses `.en`/`.ko` variants and secondary docs (#1521 — v1.1.32에서 validate-docs 누락으로 push 왕복 1회 발생)
|
|
245
|
+
- After fixes, re-run the scripts until all pass
|
|
243
246
|
|
|
244
247
|
This mirrors CI and prevents the known 1-2 wasted push cycles per release (ref: issue #927, v0.98.0 PR #925).
|
|
245
248
|
description: "Per-issue implementation with lifecycle, specialist routing, and CI-mimic verification"
|
|
@@ -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-
|
|
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 모델로,
|
|
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
|
-
| `
|
|
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
|
|
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
|
|
package/templates/manifest.json
CHANGED