oh-my-customcode 1.1.2 → 1.1.3

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.2",
244
+ version: "1.1.3",
245
245
  description: "Batteries-included agent harness for Claude Code",
246
246
  type: "module",
247
247
  bin: {
package/dist/index.js CHANGED
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "1.1.2",
2034
+ version: "1.1.3",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.2",
6
+ "version": "1.1.3",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -53,6 +53,8 @@ This is a settings-level resilience mechanism, distinct from the per-agent `mode
53
53
 
54
54
  > **v2.1.196+**: 조직 기본 모델(org default models)이 추가되어 관리자가 org 콘솔에서 조직 전체 기본 모델을 설정하며, 사용자가 직접 선택하지 않으면 `/model`에 "Org default"(또는 "Role default")로 표시됩니다. v2.1.175 `enforceAvailableModels`/v2.1.187 org model restriction의 연장선 — 조직 관리 설정이 기본 모델 해석까지 관여합니다. 또한 백그라운드 세션 turn 이후 중복 recap 라인 문제를 수정 — schema-rejected된 StructuredOutput 시도가 재시도와 나란히 렌더되지 않습니다(schema-constrained subagent spawn / Workflow `agent({schema})`에 관련).
55
55
 
56
+ > **v2.1.198+**: 내장 Explore 에이전트가 이제 main session의 모델을 상속합니다(opus로 cap; 이전에는 haiku 고정) — Explore 기반 검색 subagent의 추론 품질이 향상됩니다. 또한 subagent와 context compaction이 session의 extended thinking 설정을 상속하여, 위임된 작업의 출력 품질이 세션 설정과 정합됩니다. R009/R018 병렬 subagent 위임 품질에 관련.
57
+
56
58
  ### Safe Mode & Bundled Skill Control (CC v2.1.169+)
57
59
 
58
60
  > **v2.1.169+**: `--safe-mode` (and `CLAUDE_CODE_SAFE_MODE`) starts Claude Code with ALL customizations disabled (CLAUDE.md, plugins, skills, hooks, MCP servers) — use it to isolate whether a project customization (agent/skill/hook) causes a regression. The `disableBundledSkills` setting (and `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` env) hides bundled skills, workflows, and built-in slash commands from the model — useful when bundled skills conflict with or duplicate project skills (R006 skill-surface management). Note: `disableBundledSkills` hides skills from the model but is a CC platform setting, distinct from the advisory `skills:` frontmatter field (which is documentation metadata, not a runtime allowlist).
@@ -202,6 +204,8 @@ Agent frontmatter `hooks:` now fire when the agent runs as a main-thread agent v
202
204
 
203
205
  > **v2.1.195+**: 하이픈이 포함된 hook matcher 식별자(예: `code-reviewer`, `mcp__brave-search`)가 이제 substring이 아니라 exact-match됩니다(이전에는 부분 문자열로 우연히 매칭). 하이픈 포함 MCP 서버의 모든 tool을 매칭하려면 `mcp__brave-search__.*` 형식을 사용하세요. 참고: oh-my-customcode의 `hooks.json`은 `*` / `mcp_tool_name matches "..."` / `tool == "..."` 형식을 사용하므로 이 변경의 영향을 받지 않습니다 — 다만 하이픈 포함 tool-name matcher를 새로 추가할 때 exact-match 시맨틱을 고려해야 합니다.
204
206
 
207
+ > **v2.1.199+**: SessionStart/Setup/SubagentStart hook이 exit code 2로 종료할 때 stderr를 조용히 숨기던 문제가 수정되어 이제 오류가 표시됩니다. `.claude/hooks.json`의 hard-block/advisory hook 디버깅 가시성이 향상됩니다(R021 Enforcement Tiers 관측성과 정합).
208
+
205
209
  ## Permission Mode Guidance
206
210
 
207
211
  CC defaults `mode` to `acceptEdits` if not specified — always pass `mode: "bypassPermissions"` explicitly in Agent tool calls (see R010). See guidance details via Read tool.
@@ -400,6 +404,8 @@ Key optional fields: `scope`, `context`, `version`, `effort`, `model`, `agent`,
400
404
 
401
405
  > **v2.1.178+**: When names collide across nested `.claude/` directories, the agent, workflow, and output-style CLOSEST to the working directory now wins; project-scope workflow saves target the closest existing `.claude/workflows/`. Relevant to multi-`.claude/` layouts — project-root `.claude/` definitions are overridden by a nested `.claude/` when working inside that subtree.
402
406
 
407
+ > **v2.1.199+**: 스택된 slash-skill 호출(`/skill-a /skill-b do XYZ`)이 이제 leading skill을 최대 5개까지 모두 로드합니다(이전에는 첫 번째만 로드). oh-my-customcode의 라우팅 스킬 체이닝(예: `/omcustom:fsd`가 여러 스킬을 연쇄 호출하는 패턴)에서 다중 스킬 스택 호출 시 컨텍스트 손실이 줄어듭니다. 또한 subagent 조회 중 `/model`·`/fast`를 입력하면 lead의 model picker가 열리며 notice가 표시됩니다.
408
+
403
409
  <!-- DETAIL: Skill Optional Fields (full yaml block)
404
410
  ```yaml
405
411
  scope: core # core | harness | package (default: core)
@@ -374,6 +374,10 @@ Cross-reference: R020 ("actual outcome ≠ attempt" — verifying that a command
374
374
 
375
375
  > **CC v2.1.169+**: `claude agents --json` now includes blocked and just-dispatched background sessions (previously omitted), adds `--all` to include completed sessions, and adds `id` and `state` fields. This strengthens the deterministic ground-truth for member completion verification — `state` distinguishes blocked/running/completed directly, and `--all` confirms a member actually completed (rather than just disappearing from the active list). Use `--all` + `state` as the ground-truth signal instead of inferring completion from a member's absence.
376
376
 
377
+ > **v2.1.198+**: Agent Teams에서 teammate가 API 오류로 죽으면 이제 lead에 "failed"를 보고하고, stuck teammate에게 메시지를 보내면 즉시 wake시켜 retry하게 합니다. 이는 v2.1.169 `state` 필드 기반 deterministic ground-truth를 보강하지만, SendMessage report 자체는 여전히 low-reliability 신호로 취급한다(위 표의 원칙 불변).
378
+
379
+ > **v2.1.199+**: subagent가 rate limit/server error로 잘리면 partial work를 parent에 반환하며, subagent가 API 오류(usage limit reached 등)를 성공 결과로 오보하던 문제가 수정되어 이제 오류를 parent agent에 정확히 보고합니다. 플랫폼이 false-success 자가보고를 줄였으나, deterministic ground-truth(`git status`/`grep`/validation scripts) 검증 원칙은 여전히 유효하다.
380
+
377
381
  **Stall handling**: When a member shows no task progress within ~2 minutes despite spawn + owner assignment + SendMessage coordination, reassign the work to a standalone Agent (R009) rather than continuing to nudge the stalled member. Stalled Teams members waste tokens on idle polling and delay the overall workflow.
378
382
 
379
383
  Observed instance: v0.159.0 release (session 105) — members assigned to disjoint-file cleanup tasks went idle without executing; deterministic git-diff check exposed the gap; work was reassigned to standalone parallel Agents. References: #1261, #1262.
@@ -71,6 +71,8 @@ Subagents often report failures as "pre-existing", "baseline", or "unchanged". T
71
71
  Never accept "pre-existing" without direct base-branch evidence. A false "pre-existing" claim can mask a regression introduced by the current change.
72
72
  -->
73
73
 
74
+ > **v2.1.199+**: subagent가 API 오류(usage limit reached 등)를 성공 결과로 오보하던 문제가 수정되어 이제 오류가 parent agent에 정확히 보고됩니다. 플랫폼 수정으로 false-success 자가보고 빈도는 줄지만, "actual outcome ≠ attempt" ground-truth 검증 원칙(R020 Core Rule)은 여전히 유지된다 — subagent 보고를 그대로 신뢰하지 말고 `git status`/`grep`/validation script로 재확인한다.
75
+
74
76
  ## Common False Completion Patterns — 8 anti-patterns including "Command executed" without exit code check, "Waiting for manual publish" when CI auto-publishes, "UI changes done" without browser render. See full table via Read tool.
75
77
 
76
78
  ### Test-Skip Is Not Completion (#1217 item #5)
@@ -19,6 +19,8 @@ oh-my-customcode uses an **advisory-first enforcement model**. Most rules are en
19
19
 
20
20
  > **v2.1.163+**: Stop and SubagentStop hooks can return `hookSpecificOutput.additionalContext` (JSON) to feed structured feedback back into Claude's context without triggering a hook error label. This enables advisory-style enforcement via Stop/SubagentStop hooks (e.g., `session-reflection.sh`, omcustom-loop SubagentStop) to pass richer context — replacing plain stderr text — without disrupting the turn continuation behavior that advisory-first enforcement relies on.
21
21
 
22
+ > **v2.1.199+**: SessionStart/Setup/SubagentStart hook이 exit code 2로 종료할 때 stderr를 조용히 숨기던 문제가 수정되어 이제 오류가 표시됩니다. Hard Block/Advisory 계층(위 Enforcement Tiers 표)의 훅 실패 관측성을 강화합니다 — cf. v2.1.163 `additionalContext` 구조화 피드백.
23
+
22
24
  ## Why Advisory-First
23
25
 
24
26
  1. **Agent flexibility**: Hard blocks can trap agents in unrecoverable states
@@ -337,6 +337,10 @@ Before spawning any agent:
337
337
 
338
338
  > **v2.1.196+**: 백그라운드 작업을 wake할 때 transcript probe가 실제 transcript를 오독하여 대화를 영구 삭제하고 원 프롬프트를 재실행하던 문제를 수정 — 이제 파일을 삭제하지 않고 따로 보관합니다(transcript 의존 스킬 `homework`/`episodic-memory`에 관련). `claude agents --dangerously-skip-permissions`가 조용히 auto mode로 폴백하던 문제를 수정하여 bypass 고지를 표시하고 spawned agent에도 bypass 모드를 적용합니다(R010 Universal bypassPermissions와 정합). 또한 `claude agents` 사이드 패널 문제들(에이전트 열 때 키보드 포커스 고착, 열 때마다 백그라운드 작업의 subagent type 유실, 활성 실행 중 잘못된 상태 표시)을 수정. `mode: "bypassPermissions"`는 여전히 필수입니다.
339
339
 
340
+ > **v2.1.198+**: `claude agents`에서 launch된 background agent가 worktree에서 code 작업을 완료하면 이제 멈춰서 묻지 않고 commit·push·draft PR open을 자동 수행합니다. 또한 응답 중 일시적 network 오류(ECONNRESET 등)로 turn이 abort되던 문제가 backoff retry로 수정되었고, web/desktop/VS Code task panel에서 background task가 완료 후에도 "Running"으로 멈춰있던 문제가 수정되었습니다. background agent의 자동 commit/PR 자동화가 강화되었으므로, `mode: "bypassPermissions"`는 여전히 필수입니다.
341
+
342
+ > **v2.1.199+**: subagent가 rate limit이나 server error로 잘리면 이제 조용히 실패하는 대신 partial work를 parent에 반환합니다. background-agent daemon(Linux)이 unclean shutdown 후 corrupted worker record로 ~50초마다 자신과 모든 agent를 죽이던 문제, macOS SSH cold-start "Could not switch to audit session" 문제, `claude stop`이 background-agent respawn과 race하면 조용히 무효화되던 문제(이제 respawn이 stop을 존중), background job progress indicator가 긴 명령 중 멈춰있던 문제가 수정되었습니다. background-agent lifecycle 견고성이 추가로 강화되었으며, `mode: "bypassPermissions"`는 여전히 필수입니다.
343
+
340
344
  ## Agent Capability Pre-Check
341
345
 
342
346
  Before delegating a task to a subagent, MUST verify the target agent's tool capabilities against the task requirements. Failure to pre-check causes round-trip waste (delegation → failure → re-delegation).
@@ -31,6 +31,8 @@ Format: `─── [Spawn] {subagent_type}:{model} | {description} ───`
31
31
 
32
32
  > **v2.1.196+**: 여러 병렬 요청이 사용량 한도에 도달하는 순간 rate-limit 경고가 깜빡이며 꺼지고 rate-limit telemetry가 과다 집계되던 문제를 수정. R012 관측성의 rate-limit 계측 정확도 개선입니다.
33
33
 
34
+ > **v2.1.198+**: `claude agents`에 background agent notifications가 추가되어, 입력이 필요하거나 완료된 세션이 `Notification` hook을 발화합니다(`agent_needs_input` / `agent_completed`). R012 관측성을 백그라운드 subagent 상태 알림까지 확장 — HUD 이벤트 채널과 결합해 백그라운드 위임 작업의 대기/완료 상태를 놓치지 않게 합니다.
35
+
34
36
  <!-- DETAIL: HUD Events full spec
35
37
  ### When to Display: Multi-step tasks, parallel execution, long-running operations. Skip for single brief operations.
36
38
  ### Parallel Display:
@@ -88,6 +88,16 @@ staleness/audit 검증은 model ID·placeholder·TBD뿐 아니라 **폐기된
88
88
  |--------------|----------|
89
89
  | staleness 스캔을 model ID/placeholder/TBD로만 한정 | 폐기된 플랫폼 기능/절차 참조(deprecated CC feature/procedure)도 grep 스캔 |
90
90
 
91
+ ## Detection Guard Delegation Standard (Origin: #1438 #3)
92
+
93
+ Tier-1 shift-left 검출 가드(예: deprecated-pattern grep 가드)의 설계·수정을 서브에이전트에 위임할 때, 위임 프롬프트는 **positive-match(genuine defect mandate — `MUST`/`MANDATORY` 인접 문맥)와 negative-context(deprecation note — "no longer"/"deprecated"/"불필요"/"폐기됨" 설명 문구)를 구분**하도록 명시해야 한다. 이를 누락하면 올바르게 수정된 파일의 폐기-설명 문구까지 과잉매칭하여 자기모순 BLOCK을 유발한다.
94
+
95
+ | Anti-pattern | Required |
96
+ |--------------|----------|
97
+ | bare 패턴(`/tmp/*.sh` 등)만 grep하도록 위임 → 올바르게 수정된 파일의 "폐기됨/불필요" 설명 문구까지 오탐 | 위임 프롬프트에 positive-match(MUST/MANDATORY 인접) vs negative-context(deprecated/no longer/불필요 설명) 구분 기준을 명시 |
98
+
99
+ Origin: #1438 (Session 125 회고 찐빠 #3) — deep-verify 가드 반전 위임 시 bare `/tmp/*.sh` 패턴이 올바르게 수정된 9개 파일의 "폐기됨/불필요" 설명 문구까지 오탐; mgr-sauron이 sha256 재계산으로 적발, 3-패턴(mandate/false-claim) 협소화로 정정.
100
+
91
101
  ## Integration
92
102
 
93
103
  | 규칙 | 상호작용 |
@@ -118,12 +128,16 @@ Before invoking a Workflow script, deterministically verify:
118
128
  | No unresolved placeholders (`{phase1_summary}`, `TODO`, `<...>`, `{{ }}`) remain in any agent prompt string | An unfilled placeholder reaches the agent verbatim → garbled task |
119
129
  | Template-literal / string concatenation produces the intended prompt (assemble-before-call, see above) | Post-call concatenation (`agent(prompt) + FACTS`) silently drops content |
120
130
  | Script parses — balanced braces/quotes, valid JS | A syntax error aborts the entire run after partial work |
131
+ | 프롬프트 문자열 내 셸 변수 `${...}`(`$?`, `${PIPESTATUS[0]}`, `$(...)` 등)가 `\${...}`로 이스케이프되어 있는지 사전 grep 확인 | JS 템플릿 리터럴 안의 이스케이프 안 된 셸 `${...}`를 JS가 JS 표현식으로 평가 → 런타임 `ReferenceError`(예: `PIPESTATUS is not defined`). `node --check`는 문법만 검사하여 이 런타임 오류를 못 잡으므로 별도 결정론 grep 검사가 필요함 |
121
132
 
122
133
  #### Common Violation (#1271)
123
134
  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.
124
135
 
125
136
  Origin: #1271 (Workflow authoring error recurrence, session 106).
126
137
 
138
+ #### Common Violation (#1438)
139
+ Origin: #1438 (Session 125 회고 찐빠 #2) — fix Workflow의 verify 프롬프트에 `${PIPESTATUS[0]}`를 이스케이프 없이 사용 → `PIPESTATUS is not defined` ReferenceError로 verify 단계 실패. `node --check`는 통과했으나 런타임에서 실패.
140
+
127
141
  ### Verifier Ground-Truth for Cross-Cutting Facts
128
142
 
129
143
  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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.2",
2
+ "version": "1.1.3",
3
3
  "lastUpdated": "2026-07-01T00:00:00.000Z",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",