oh-my-customcodex 0.4.15 → 0.4.17

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.
Files changed (35) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/index.js +65 -20
  3. package/dist/index.js +40 -4
  4. package/package.json +1 -1
  5. package/templates/.claude/hooks/hooks.json +3 -0
  6. package/templates/.claude/hooks/scripts/context-budget-advisor.sh +40 -2
  7. package/templates/.claude/hooks/scripts/cost-cap-advisor.sh +8 -3
  8. package/templates/.claude/hooks/scripts/omcustom-auto-update.sh +5 -5
  9. package/templates/.claude/hooks/scripts/session-env-check.sh +8 -6
  10. package/templates/.claude/hooks/scripts/stuck-detector.sh +2 -2
  11. package/templates/.claude/ontology/skills.yaml +3 -3
  12. package/templates/.claude/rules/MUST-agent-design.md +1 -0
  13. package/templates/.claude/rules/MUST-orchestrator-coordination.md +6 -0
  14. package/templates/.claude/rules/SHOULD-hud-statusline.md +2 -0
  15. package/templates/.claude/skills/goal/SKILL.md +5 -3
  16. package/templates/.claude/skills/harness-synthesizer/SKILL.md +32 -0
  17. package/templates/.claude/skills/help/SKILL.md +2 -2
  18. package/templates/.claude/skills/lists/SKILL.md +2 -2
  19. package/templates/.claude/skills/omcodex-release-notes/SKILL.md +5 -4
  20. package/templates/.claude/skills/post-release-followup/SKILL.md +1 -1
  21. package/templates/.claude/skills/status/SKILL.md +1 -1
  22. package/templates/.claude/statusline.sh +24 -3
  23. package/templates/AGENTS.md.en +3 -1
  24. package/templates/AGENTS.md.ko +3 -1
  25. package/templates/CLAUDE.md +10 -1
  26. package/templates/CLAUDE.md.en +10 -1
  27. package/templates/CLAUDE.md.ko +10 -1
  28. package/templates/guides/claude-code/04-agent-skills.md +16 -0
  29. package/templates/guides/claude-code/06-mcp.md +6 -0
  30. package/templates/guides/claude-code/13-cli-flags.md +13 -1
  31. package/templates/guides/claude-code/15-version-compatibility.md +59 -0
  32. package/templates/guides/claude-code/index.yaml +5 -0
  33. package/templates/guides/hook-data-flow/README.md +16 -16
  34. package/templates/guides/professor-triage/phases.md +324 -0
  35. package/templates/manifest.json +1 -1
@@ -46,8 +46,9 @@ Before creating a release, keep `CHANGELOG.md` as the durable source of release
46
46
  1. Confirm `CHANGELOG.md` has a `## [Unreleased]` section.
47
47
  2. Move non-empty `Unreleased` entries into `## [VERSION] - YYYY-MM-DD`.
48
48
  3. Insert a fresh empty `## [Unreleased]` section above the promoted version.
49
- 4. Verify `.github/workflows/release.yml` can extract the promoted section with its existing `awk "/^## \\[${VERSION}\\]/{flag=1; next} /^## \\[/{flag=0} flag"` logic.
50
- 5. If `Unreleased` is empty, add the release summary there first rather than relying only on GitHub auto-generated notes.
49
+ 4. Keep Keep a Changelog categories (`Added`, `Changed`, `Fixed`, `Removed`, `Deprecated`, `Security`) intact.
50
+ 5. Verify `.github/workflows/release.yml` can extract the promoted section with its existing `awk "/^## \\[${VERSION}\\]/{flag=1; next} /^## \\[/{flag=0} flag"` logic.
51
+ 6. If `Unreleased` is empty, add the release summary there first rather than relying only on GitHub auto-generated notes.
51
52
 
52
53
  ### Phase 2: Classify Changes
53
54
 
@@ -63,7 +64,7 @@ Categorize commits using Conventional Commits:
63
64
  | chore: | Chores | :wrench: |
64
65
  | security | Security | :lock: |
65
66
 
66
- ### Phase 3: Generate Notes
67
+ ### Phase 4: Generate Notes
67
68
 
68
69
  Output format:
69
70
 
@@ -102,7 +103,7 @@ Output format:
102
103
  _Release notes generated with oh-my-customcodex_
103
104
  ```
104
105
 
105
- ### Phase 4: Apply
106
+ ### Phase 5: Apply
106
107
 
107
108
  The generated notes can be:
108
109
  1. **Direct**: Passed to `gh release create --notes "{notes}"`
@@ -96,7 +96,7 @@ Use AskUserQuestion (or equivalent user prompt) to get the choice.
96
96
 
97
97
  **Option C (모두 이슈 등록)**:
98
98
  - All Immediate + Trackable items → `gh issue create` with appropriate labels
99
- - Label: `professor` for auto-triage in next workflow run
99
+ - Label: `triage-needed` for the next workflow run; reserve `professor` for manual analysis requests
100
100
 
101
101
  **Option D (개별 선택)**:
102
102
  - For each item, ask: `[{n}] {description} — 실행(E) / 이슈(I) / 건너뛰기(S)?`
@@ -122,7 +122,7 @@ Guides:
122
122
  ✓ docker, aws
123
123
 
124
124
  Commands:
125
- system: lists, status, help, goal
125
+ system: lists, status, help, omcustomcodex:goal
126
126
  manager: create-agent, update-docs, update-external, audit-agents, fix-refs
127
127
  dev: dev-review, dev-refactor
128
128
 
@@ -246,7 +246,7 @@ if [[ -n "$git_branch" ]] && command -v gh >/dev/null 2>&1; then
246
246
  pr_number="$cached_pr"
247
247
  else
248
248
  # Cache miss — query gh and update cache
249
- pr_number="$(gh pr view --json number -q .number 2>/dev/null || echo "")"
249
+ pr_number="$(timeout 2 gh pr view --json number -q .number 2>/dev/null || echo "")"
250
250
  printf '%s\t%s\n' "$git_branch" "$pr_number" > "$cache_file"
251
251
  fi
252
252
 
@@ -360,21 +360,42 @@ if [[ -n "$wl_display" ]]; then
360
360
  wl_segment=" | ${wl_color}${wl_display}${COLOR_RESET}"
361
361
  fi
362
362
 
363
+ # Build the RTK segment from the session-env bridge if available.
364
+ rtk_segment=""
365
+ env_status_file="/tmp/.codex-env-status-${PPID}"
366
+ if [[ -f "$env_status_file" ]]; then
367
+ rtk_status=""
368
+ while IFS='=' read -r key value; do
369
+ if [[ "$key" == "rtk" ]]; then
370
+ rtk_status="$value"
371
+ break
372
+ fi
373
+ done < "$env_status_file"
374
+
375
+ if [[ "$rtk_status" == "available" ]]; then
376
+ rtk_segment=" | ${COLOR_CTX_OK}RTK:on${COLOR_RESET}"
377
+ elif [[ "$rtk_status" == "unavailable" ]]; then
378
+ rtk_segment=" | ${COLOR_CTX_WARN}RTK:off${COLOR_RESET}"
379
+ fi
380
+ fi
381
+
363
382
  if [[ -n "$git_branch" ]]; then
364
- printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
383
+ printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
365
384
  "$cost_display" \
366
385
  "$project_name" \
367
386
  "$branch_display" \
368
387
  "$pr_segment" \
369
388
  "$rl_segment" \
370
389
  "$wl_segment" \
390
+ "$rtk_segment" \
371
391
  "$ctx_display"
372
392
  else
373
- printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
393
+ printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
374
394
  "$cost_display" \
375
395
  "$project_name" \
376
396
  "$pr_segment" \
377
397
  "$rl_segment" \
378
398
  "$wl_segment" \
399
+ "$rtk_segment" \
379
400
  "$ctx_display"
380
401
  fi
@@ -118,7 +118,7 @@ NO EXCEPTIONS. NO EXCUSES.
118
118
  | `/deep-plan` | Research-validated planning (research → plan → verify) |
119
119
  | `/omcustomcodex:sauron-watch` | Full R017 verification |
120
120
  | `/structured-dev-cycle` | 6-stage structured development cycle (Plan → Verify → Implement → Verify → Compound → Done) |
121
- | `/goal` | Keep a concrete objective through planning, execution, and verification |
121
+ | `/omcustomcodex:goal` | Keep a concrete objective through planning, execution, and verification |
122
122
  | `/omcustomcodex:lists` | Show all available commands |
123
123
  | `/omcustomcodex:status` | Show system status |
124
124
  | `/omcustomcodex:help` | Show help information |
@@ -240,4 +240,6 @@ omx-memory setup
240
240
 
241
241
  Projects that run in the Claude Code plugin ecosystem may separately install plugins such as `superpowers`, `openai-docs`, `elements-of-style`, and `context7`. They are not required Codex init steps.
242
242
 
243
+ On Claude Code v2.1.139+, use `claude agents` to inspect the unified agent list, `claude plugin details <name>` to inspect plugin components and projected token cost, and `/scroll-speed` for local scroll tuning. The native `/goal` command is reserved for Claude Code's completion tracker; use `/omcustomcodex:goal` for the oh-my-customcodex workflow.
244
+
243
245
  <!-- omcodex:git-workflow -->
@@ -118,7 +118,7 @@ oh-my-customcodex로 구동됩니다.
118
118
  | `/deep-plan` | 연구 검증 기반 계획 수립 (research → plan → verify) |
119
119
  | `/omcustomcodex:sauron-watch` | 전체 R017 검증 |
120
120
  | `/structured-dev-cycle` | 6단계 구조적 개발 사이클 (Plan → Verify → Implement → Verify → Compound → Done) |
121
- | `/goal` | 구체 목표를 계획, 실행, 검증까지 유지 |
121
+ | `/omcustomcodex:goal` | 구체 목표를 계획, 실행, 검증까지 유지 |
122
122
  | `/omcustomcodex:lists` | 모든 사용 가능한 커맨드 표시 |
123
123
  | `/omcustomcodex:status` | 시스템 상태 표시 |
124
124
  | `/omcustomcodex:help` | 도움말 표시 |
@@ -240,4 +240,6 @@ omx-memory setup
240
240
 
241
241
  Claude Code 플러그인 생태계를 쓰는 프로젝트에서는 `superpowers`, `openai-docs`, `elements-of-style`, `context7` 같은 플러그인을 별도로 설치할 수 있습니다. Codex 초기화의 필수 단계는 아닙니다.
242
242
 
243
+ Claude Code v2.1.139+에서는 `claude agents`로 통합 에이전트 목록을 확인하고, `claude plugin details <name>`으로 플러그인 구성 요소와 예상 토큰 비용을 점검하며, `/scroll-speed`로 로컬 스크롤 속도를 조정할 수 있습니다. 네이티브 `/goal`은 Claude Code 완료 추적기용으로 남기고, oh-my-customcodex 워크플로우는 `/omcustomcodex:goal`을 사용합니다.
244
+
243
245
  <!-- omcodex:git-workflow -->
@@ -99,7 +99,7 @@ oh-my-customcodex로 구동됩니다.
99
99
  |----------|------------|------|
100
100
  | 프로젝트 관리 | `/omcustomcodex:analysis`, `/omcustomcodex:create-agent`, `/omcustomcodex:audit-agents` | 분석, 에이전트/스킬 생성, 감사 |
101
101
  | 아이디어 | `/idea` | 자연어 아이디어를 구조화된 이슈 스펙으로 변환 |
102
- | 개발 | `/goal`, `/dev-review`, `/dev-refactor`, `/sdd-dev`, `/structured-dev-cycle` | 목표 실행, 코드 리뷰, 리팩토링, SDD |
102
+ | 개발 | `/omcustomcodex:goal`, `/dev-review`, `/dev-refactor`, `/sdd-dev`, `/structured-dev-cycle` | 목표 실행, 코드 리뷰, 리팩토링, SDD |
103
103
  | 검증 | `/omcustomcodex:sauron-watch`, `/deep-verify`, `/adversarial-review` | R017 검증, 릴리즈 품질, 보안 리뷰 |
104
104
  | 릴리즈 | `/pipeline auto-dev`, `/omcustomcodex-release-notes`, `/release-plan` | 자동 개발, 릴리즈 노트 |
105
105
  | 리서치 | `/research`, `/scout`, `/deep-plan`, `/omcustomcodex:agora` | 병렬 분석, URL 평가, 연구 계획 |
@@ -256,6 +256,15 @@ Codex CLI의 Agent Teams 기능이 활성화되어 있으면 (`OMCODEX_AGENT_TEA
256
256
  /plugin install openai-docs
257
257
  /plugin install elements-of-style
258
258
 
259
+ # 플러그인 인벤토리와 세션 토큰 비용 예측 확인 (Claude Code v2.1.139+)
260
+ claude plugin details superpowers
261
+
262
+ # 세션 전체 에이전트 목록 확인 (Claude Code v2.1.139+)
263
+ claude agents
264
+
265
+ # 인터랙티브 세션에서 마우스 휠 스크롤 속도 조정
266
+ /scroll-speed
267
+
259
268
  # MCP 설정 (omx-memory)
260
269
  omx memory doctor
261
270
  ```
@@ -121,7 +121,7 @@ NO EXCEPTIONS. NO EXCUSES.
121
121
  | `/pre-generation-arch-check` | Check architecture risks before implementation |
122
122
  | `/omcustomcodex:sauron-watch` | Full R017 verification |
123
123
  | `/structured-dev-cycle` | 6-stage structured development cycle (Plan → Verify → Implement → Verify → Compound → Done) |
124
- | `/goal` | Keep a concrete objective through planning, execution, and verification |
124
+ | `/omcustomcodex:goal` | Keep a concrete objective through planning, execution, and verification |
125
125
  | `/omcustomcodex:lists` | Show all available commands |
126
126
  | `/omcustomcodex:status` | Show system status |
127
127
  | `/omcustomcodex:help` | Show help information |
@@ -252,6 +252,15 @@ Install in Claude Code via `/plugin install <name>`:
252
252
  /plugin install openai-docs
253
253
  /plugin install elements-of-style
254
254
 
255
+ # Inspect plugin inventory and projected session token cost (Claude Code v2.1.139+)
256
+ claude plugin details superpowers
257
+
258
+ # Inspect installed agents across sessions (Claude Code v2.1.139+)
259
+ claude agents
260
+
261
+ # Tune local mouse-wheel scrolling inside the interactive session
262
+ /scroll-speed
263
+
255
264
  # MCP setup (omx-memory)
256
265
  omx memory doctor
257
266
  ```
@@ -121,7 +121,7 @@ oh-my-customcodex로 구동됩니다.
121
121
  | `/pre-generation-arch-check` | 구현 전 아키텍처 위험 점검 |
122
122
  | `/omcustomcodex:sauron-watch` | 전체 R017 검증 |
123
123
  | `/structured-dev-cycle` | 6단계 구조적 개발 사이클 (Plan → Verify → Implement → Verify → Compound → Done) |
124
- | `/goal` | 구체 목표를 계획, 실행, 검증까지 유지 |
124
+ | `/omcustomcodex:goal` | 구체 목표를 계획, 실행, 검증까지 유지 |
125
125
  | `/omcustomcodex:lists` | 모든 사용 가능한 커맨드 표시 |
126
126
  | `/omcustomcodex:status` | 시스템 상태 표시 |
127
127
  | `/omcustomcodex:help` | 도움말 표시 |
@@ -252,6 +252,15 @@ Claude Code 환경에서 `/plugin install <이름>`으로 설치:
252
252
  /plugin install openai-docs
253
253
  /plugin install elements-of-style
254
254
 
255
+ # 플러그인 인벤토리와 세션 토큰 비용 예측 확인 (Claude Code v2.1.139+)
256
+ claude plugin details superpowers
257
+
258
+ # 세션 전체 에이전트 목록 확인 (Claude Code v2.1.139+)
259
+ claude agents
260
+
261
+ # 인터랙티브 세션에서 마우스 휠 스크롤 속도 조정
262
+ /scroll-speed
263
+
255
264
  # MCP 설정 (omx-memory)
256
265
  omx memory doctor
257
266
  ```
@@ -53,6 +53,22 @@ description: Brief description of what this Skill does and when to use it
53
53
  - 비어 있지 않아야 함
54
54
  - 최대 1024자
55
55
 
56
+ ### 네이티브 커맨드 충돌 피하기
57
+
58
+ Claude Code v2.1.139+는 `/goal`을 세션 완료 조건 추적용 네이티브 커맨드로 예약합니다. oh-my-customcodex의 목표 실행 워크플로우는 `/omcustomcodex:goal`로 호출해야 하며, Skill 프론트매터도 `name: omcustomcodex:goal`을 사용합니다.
59
+
60
+ 디렉터리 이름은 호환성을 위해 `goal/`로 유지할 수 있지만, 사용자에게 노출되는 엔트리포인트는 프론트매터의 `name` 값입니다. 새 스킬이 Claude Code 네이티브 커맨드와 이름이 겹칠 가능성이 있으면 `omcustomcodex:` 네임스페이스를 우선 사용하세요.
61
+
62
+ ### 플러그인 인벤토리 검증
63
+
64
+ Claude Code v2.1.139+에서는 다음 명령으로 설치된 플러그인의 구성 요소와 세션별 토큰 비용 예측을 확인할 수 있습니다:
65
+
66
+ ```bash
67
+ claude plugin details <plugin-name>
68
+ ```
69
+
70
+ oh-my-customcodex 호환 템플릿을 검증할 때는 플러그인 설치 후 이 명령으로 skill/agent 구성 요소 수와 예상 토큰 비용을 확인하고, Codex 쪽 패키지 인벤토리는 `omcustomcodex list`로 확인하세요.
71
+
56
72
  ## 사용 가능한 Skills
57
73
 
58
74
  ### 사전 구축된 Agent Skills
@@ -55,6 +55,12 @@ response = client.beta.messages.create(
55
55
  | `name` | string | 예 | 이 MCP 서버의 고유 식별자 |
56
56
  | `authorization_token` | string | 아니오 | OAuth 인증 토큰 |
57
57
 
58
+ ## Claude Code 로컬 MCP 재연결
59
+
60
+ Claude Code v2.1.139+에서는 `/mcp` reconnect가 `.mcp.json` 편집을 전체 재시작 없이 다시 읽습니다. Claude Code 호환 템플릿을 검증할 때 로컬 MCP 서버를 추가하거나 수정했다면 `/mcp`에서 reconnect를 실행해 즉시 반영 여부를 확인하세요.
61
+
62
+ oh-my-customcodex의 Codex 런타임 MCP 설정은 여전히 `.codex/config.toml` 및 `omcustomcodex` 관리 경로를 기준으로 합니다. Claude Code 호환 테스트를 위해 `.mcp.json`을 쓰더라도 Codex 설치 경로의 MCP 설정과 혼동하지 마세요.
63
+
58
64
  ## MCP 도구 집합 구성
59
65
 
60
66
  ```json
@@ -8,7 +8,7 @@
8
8
  | `--remote` | Connect to remote Claude Code instance | `claude --remote` |
9
9
  | `--bare` | Minimal UI, no statusline | `claude --bare` |
10
10
  | `--agent <name>` | Use specific agent as main thread | `claude --agent lang-golang-expert` |
11
- | `--agents` | List available agents | `claude --agents` |
11
+ | `--agents` | List available agents (legacy flag; use `claude agents` for the unified view on v2.1.139+) | `claude --agents` |
12
12
  | `--from-pr <url>` | Start from a pull request | `claude --from-pr https://github.com/org/repo/pull/123` |
13
13
  | `--chrome` | Enable Chrome browser automation | `claude --chrome` |
14
14
  | `--json-schema` | Output JSON schema for structured output | `claude --json-schema schema.json` |
@@ -17,6 +17,18 @@
17
17
  | `--fork-session` | Fork an existing session | `claude --fork-session` |
18
18
  | `--teleport` | Transfer session context to another terminal | `claude --teleport` |
19
19
 
20
+ ## Interactive Commands
21
+
22
+ Claude Code v2.1.139+ adds a few user-facing commands that are useful when running oh-my-customcodex compatibility templates inside Claude Code:
23
+
24
+ | Command | Use |
25
+ |---------|-----|
26
+ | `claude agents` | Open the Research Preview agent view with a unified list across sessions. Use it to confirm installed `.claude/agents/` entries after template updates. |
27
+ | `/scroll-speed` | Tune mouse-wheel scroll speed with live preview. This is a local UI preference and does not change harness behavior. |
28
+ | `claude plugin details <name>` | Inspect a plugin's component inventory and projected per-session token cost. Use it after plugin installs to validate skill/agent counts. |
29
+
30
+ `/goal` is also native in v2.1.139+. The oh-my-customcodex workflow entrypoint is `/omcustomcodex:goal` so the workflow does not shadow the native completion tracker.
31
+
20
32
  ## Headless Mode (`claude -p`)
21
33
 
22
34
  Headless mode runs Claude Code non-interactively, useful for CI/CD pipelines and automated workflows.
@@ -0,0 +1,59 @@
1
+ # Claude Code Version Compatibility
2
+
3
+ This guide records Claude Code release-note impact that affects the Claude compatibility template. The Codex-native runtime still uses `.codex/**` and OMX as the primary surface.
4
+
5
+ ## v2.1.141
6
+
7
+ Published: 2026-05-13.
8
+
9
+ Source: upstream oh-my-customcode #1137, Codex port #1310.
10
+
11
+ | Change | Impact on oh-my-customcodex | Action |
12
+ |--------|------------------------------|--------|
13
+ | Hook JSON output can include `terminalSequence` for desktop notifications, window titles, and terminal bells | Optional complement to stderr HUD events and the command statusline; no Codex hook change is required for this release. | Record the option in R012 and defer any hook implementation until there is a concrete UX need. |
14
+ | `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` clones GitHub plugin sources over HTTPS instead of SSH | Helps Claude-template users install plugins in CI or locked-down networks without GitHub SSH keys. | No command change; document as opt-in environment behavior. |
15
+ | `ANTHROPIC_WORKSPACE_ID` scopes workload identity federation tokens to one workspace | Useful only for multi-workspace enterprise Claude environments. | No Codex-side change required. |
16
+ | `claude agents --cwd <path>` scopes the session list to a directory | Reduces noise when monitoring Claude compatibility sessions from a monorepo or multi-project workspace. | Track as a P3 CLI-flags guide follow-up; keep canonical project examples on `oh-my-customcodex`. |
17
+ | `/feedback` can include recent sessions from the last 24 hours or 7 days | Improves upstream bug reports for multi-session agent behavior. | No harness change required. |
18
+ | Rewind menu can summarize earlier context while preserving recent turns | Complements manual context management and memory handoff guidance. | No hook change required. |
19
+ | Auto-mode permission dialogs explain which `permissions.ask` rule caused a prompt | Makes Claude-template permission debugging easier. | Keep permission guidance explicit; no template mutation needed. |
20
+ | IDE file-edit prompts restored the "view diff in your IDE" option | UX restoration only. | No action. |
21
+ | Background agents launched via `/bg` or `←←` preserve the current permission mode | Removes a historical source of unattended permission prompts in Claude compatibility sessions. | Add an R010 note; keep delegated tool policy explicit for workflows that rely on unattended writes. |
22
+ | `claude agents` marks completed agents correctly even if a background shell remains | Improves R009/R018 monitoring for long-running compatibility sessions. | No Codex-side change required. |
23
+ | Spinner, plugin menu, provider fallback, daemon, and Windows fixes are additive stability improvements | No direct package behavior change. | No action beyond this compatibility record. |
24
+
25
+ ## v2.1.140
26
+
27
+ Published: 2026-05-12.
28
+
29
+ | Change | Impact on oh-my-customcodex | Action |
30
+ |--------|------------------------------|--------|
31
+ | Agent `subagent_type` matching accepts case and separator variants | No runtime change. This repo still documents strict kebab-case agent names so Codex and Claude template references stay deterministic. | Keep examples such as `code-reviewer` and `lang-typescript-expert` in canonical form. |
32
+ | Native `/goal` no longer silently hangs under managed-hook restrictions | Compatible with the v0.4.16 namespace split. | Keep the native `/goal` reserved and call the packaged workflow as `/omcustomcodex:goal`. |
33
+ | Settings hot reload handles symlinked settings files more reliably | Reduces false `ConfigChange` noise for Claude template users. | No template change required. |
34
+ | `claude --bg` and background service startup were hardened | Improves long-running Claude compatibility sessions. | No Codex-side change required. |
35
+ | Remote managed settings retry once after a 401 | Reduces transient managed-settings failures. | No template change required. |
36
+ | Managed `extraKnownMarketplaces` persistence was fixed | Relevant only when Claude plugin marketplaces are managed externally. | Audit managed settings if plugin marketplace state appears stale. |
37
+ | `/loop` avoids redundant polling wakeups | Aligns with the repo's loop guidance to avoid unnecessary background wakeups. | No template change required. |
38
+ | Windows missing-executable checks avoid repeated synchronous `where.exe` spawns | Helps Windows users when tools such as `gh` are missing. | Keep hook scripts graceful when optional tools are absent. |
39
+ | `Read` offset validation accepts whitespace-padded or plus-prefixed strings | No template change. The repo examples already use numeric offsets plainly. | Keep generated examples simple. |
40
+ | Plugin component-folder conflicts now warn in `/doctor`, `claude plugin list`, and `/plugin` | Useful for template compatibility checks. | Run `claude plugin details <name>` and `/doctor` after plugin manifest changes. |
41
+
42
+ ## v2.1.139
43
+
44
+ Published: 2026-05-11.
45
+
46
+ | Change | Port decision |
47
+ |--------|---------------|
48
+ | Hook `args: string[]` exec form | Reviewed. The current hook registry intentionally keeps shell `command` form because most hooks use `jq`, environment expansion, pipes, or inline shell snippets. Use `args` only for new hooks that are a single binary plus static arguments. |
49
+ | PostToolUse `continueOnBlock` | Ported for high-signal advisory hooks. `context-budget-advisor.sh`, `stuck-detector.sh`, and `cost-cap-advisor.sh` set `continueOnBlock: true`; scripts use `exit 2` only when model-visible recovery guidance is needed. |
50
+ | Native `/goal` | The packaged workflow uses `/omcustomcodex:goal`; native `/goal` stays available for Claude Code completion tracking. |
51
+ | `claude agents`, `/scroll-speed`, `claude plugin details <name>`, `/mcp` reconnect | Documented in the CLI, MCP, AGENTS, and CLAUDE template guidance. |
52
+
53
+ ## Compatibility Rules
54
+
55
+ 1. Keep `.codex/**` as the source of truth for the Codex package.
56
+ 2. Mirror Claude compatibility guidance under `templates/.claude/**` and `templates/guides/**` when behavior affects installed templates.
57
+ 3. Prefer canonical kebab-case agent names even if Claude Code accepts looser variants.
58
+ 4. Do not migrate shell hook entries to `args` unless the hook has no shell expansion, no pipes, and no inline script body.
59
+ 5. Use `continueOnBlock` only for PostToolUse signals that the model can act on immediately.
@@ -64,3 +64,8 @@ documents:
64
64
  title: 토큰 효율 레이어
65
65
  description: 플러그인, 런타임, 설정 레이어를 분리한 토큰 효율 최적화 가이드
66
66
  path: ./14-token-efficiency.md
67
+
68
+ - name: version-compatibility
69
+ title: 버전 호환성
70
+ description: Claude Code 릴리스별 oh-my-customcodex 호환성 판단 기록
71
+ path: ./15-version-compatibility.md
@@ -26,22 +26,22 @@ The pipeline spans two hook events and three scripts:
26
26
  SubagentStart event
27
27
  └─ agent-start-recorder.sh
28
28
  reads: stdin JSON (agent_type, model, description)
29
- writes: /tmp/.claude-agent-starts-$PPID (appends 1 JSON line)
29
+ writes: /tmp/.codex-agent-starts-$PPID (appends 1 JSON line)
30
30
 
31
31
  SubagentStop event [hooks execute in array order — ordering is critical]
32
32
 
33
33
  ├─ [1] task-outcome-recorder.sh
34
34
  │ reads: stdin JSON (agent_type, model, outcome)
35
- │ reads: /tmp/.claude-agent-starts-$PPID (duration calc — entry still present)
36
- │ writes: /tmp/.claude-task-outcomes-$PPID (appends 1 JSON line with duration_seconds)
35
+ │ reads: /tmp/.codex-agent-starts-$PPID (duration calc — entry still present)
36
+ │ writes: /tmp/.codex-task-outcomes-$PPID (appends 1 JSON line with duration_seconds)
37
37
  │ writes: stderr (on failure only)
38
38
 
39
39
  └─ [2] stall-detection-advisor.sh
40
40
  reads: stdin JSON (agent_type, model, description)
41
- reads: /tmp/.claude-agent-starts-$PPID (finds matching start entry for duration)
42
- reads: /tmp/.claude-agent-durations-$PPID (peer durations for average calculation)
43
- writes: /tmp/.claude-agent-durations-$PPID (appends completed agent's duration)
44
- writes: /tmp/.claude-agent-starts-$PPID (removes consumed start entry)
41
+ reads: /tmp/.codex-agent-starts-$PPID (finds matching start entry for duration)
42
+ reads: /tmp/.codex-agent-durations-$PPID (peer durations for average calculation)
43
+ writes: /tmp/.codex-agent-durations-$PPID (appends completed agent's duration)
44
+ writes: /tmp/.codex-agent-starts-$PPID (removes consumed start entry)
45
45
  writes: stderr (advisory block if stall detected — R021 advisory-only)
46
46
  ```
47
47
 
@@ -49,9 +49,9 @@ SubagentStop event [hooks execute in array order — ordering is critical]
49
49
 
50
50
  At SubagentStop, after at least one peer has already completed:
51
51
 
52
- 1. Calculate `avg_duration` from all entries in `.claude-agent-durations-$PPID`
52
+ 1. Calculate `avg_duration` from all entries in `.codex-agent-durations-$PPID`
53
53
  2. Set `stall_threshold = avg_duration * 2`
54
- 3. Scan `.claude-agent-starts-$PPID` for agents not yet in the duration file (still running)
54
+ 3. Scan `.codex-agent-starts-$PPID` for agents not yet in the duration file (still running)
55
55
  4. For each still-running agent where `elapsed > stall_threshold`, emit advisory to stderr
56
56
 
57
57
  The current agent's duration is recorded *after* stall detection so it does not inflate the average for its own check.
@@ -73,9 +73,9 @@ The current agent's duration is recorded *after* stall detection so it does not
73
73
 
74
74
  | File | Writer | Readers | Lifecycle |
75
75
  |------|--------|---------|-----------|
76
- | `/tmp/.claude-agent-starts-$PPID` | `agent-start-recorder.sh` (append) | `task-outcome-recorder.sh` (read), `stall-detection-advisor.sh` (read + remove entry) | Session-scoped via PPID; ring buffer 50 entries; entry removed after `stall-detection-advisor` consumes it |
77
- | `/tmp/.claude-task-outcomes-$PPID` | `task-outcome-recorder.sh` (append) | `feedback-collector.sh`, `eval-core-batch-save.sh` (at Stop) | Session-scoped via PPID; ring buffer 50 entries |
78
- | `/tmp/.claude-agent-durations-$PPID` | `stall-detection-advisor.sh` (append) | `stall-detection-advisor.sh` (read for average calculation) | Session-scoped via PPID; ring buffer 50 entries |
76
+ | `/tmp/.codex-agent-starts-$PPID` | `agent-start-recorder.sh` (append) | `task-outcome-recorder.sh` (read), `stall-detection-advisor.sh` (read + remove entry) | Session-scoped via PPID; ring buffer 50 entries; entry removed after `stall-detection-advisor` consumes it |
77
+ | `/tmp/.codex-task-outcomes-$PPID` | `task-outcome-recorder.sh` (append) | `feedback-collector.sh`, `eval-core-batch-save.sh` (at Stop) | Session-scoped via PPID; ring buffer 50 entries |
78
+ | `/tmp/.codex-agent-durations-$PPID` | `stall-detection-advisor.sh` (append) | `stall-detection-advisor.sh` (read for average calculation) | Session-scoped via PPID; ring buffer 50 entries |
79
79
 
80
80
  ---
81
81
 
@@ -93,7 +93,7 @@ The SubagentStop hook array in `hooks.json` defines a strict ordering:
93
93
 
94
94
  **task-outcome-recorder MUST run before stall-detection-advisor.**
95
95
 
96
- Reason: `stall-detection-advisor.sh` removes the matching start entry from `.claude-agent-starts-$PPID` after reading it (to prevent re-matching on the next SubagentStop). If the order were reversed, `task-outcome-recorder.sh` would find no start entry for the agent and would always record `duration_seconds=0`.
96
+ Reason: `stall-detection-advisor.sh` removes the matching start entry from `.codex-agent-starts-$PPID` after reading it (to prevent re-matching on the next SubagentStop). If the order were reversed, `task-outcome-recorder.sh` would find no start entry for the agent and would always record `duration_seconds=0`.
97
97
 
98
98
  If the order is swapped:
99
99
  - `task-outcome-recorder` records `duration_seconds=0` for all agents
@@ -107,10 +107,10 @@ If the order is swapped:
107
107
  ```
108
108
  Session start (PPID assigned)
109
109
 
110
- ├─ First SubagentStart → .claude-agent-starts-$PPID created
110
+ ├─ First SubagentStart → .codex-agent-starts-$PPID created
111
111
 
112
- ├─ First SubagentStop → .claude-task-outcomes-$PPID created
113
- │ .claude-agent-durations-$PPID created
112
+ ├─ First SubagentStop → .codex-task-outcomes-$PPID created
113
+ │ .codex-agent-durations-$PPID created
114
114
 
115
115
  ├─ Each SubagentStop → start entry consumed (removed by stall-detection-advisor)
116
116
  │ duration entry appended