oh-my-customcodex 0.5.0 → 0.5.2

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 (52) hide show
  1. package/README.md +6 -6
  2. package/dist/cli/index.js +168 -13
  3. package/dist/index.js +150 -8
  4. package/package.json +1 -1
  5. package/templates/.claude/agents/qa-engineer.md +7 -0
  6. package/templates/.claude/hooks/hooks.json +28 -0
  7. package/templates/.claude/hooks/scripts/agent-capability-precheck.sh +99 -0
  8. package/templates/.claude/hooks/scripts/agent-mode-guard.sh +14 -3
  9. package/templates/.claude/hooks/scripts/git-delegation-guard.sh +14 -5
  10. package/templates/.claude/hooks/scripts/plugin-cache-check.sh +42 -0
  11. package/templates/.claude/hooks/scripts/session-reflection.sh +106 -0
  12. package/templates/.claude/output-styles/korean-engineer.md +4 -0
  13. package/templates/.claude/rules/MUST-agent-identification.md +50 -22
  14. package/templates/.claude/rules/MUST-agent-teams.md +6 -2
  15. package/templates/.claude/rules/MUST-completion-verification.md +11 -0
  16. package/templates/.claude/rules/MUST-continuous-improvement.md +15 -1
  17. package/templates/.claude/rules/MUST-intent-transparency.md +29 -0
  18. package/templates/.claude/rules/MUST-language-policy.md +7 -0
  19. package/templates/.claude/rules/MUST-orchestrator-coordination.md +62 -0
  20. package/templates/.claude/rules/MUST-tool-identification.md +19 -0
  21. package/templates/.claude/rules/SHOULD-memory-integration.md +27 -12
  22. package/templates/.claude/skills/adversarial-review/SKILL.md +10 -0
  23. package/templates/.claude/skills/dev-review/SKILL.md +15 -5
  24. package/templates/.claude/skills/harness-export/SKILL.md +46 -0
  25. package/templates/.claude/skills/instinct-extractor/SKILL.md +54 -0
  26. package/templates/.claude/skills/manifest-install/SKILL.md +53 -0
  27. package/templates/.claude/skills/memory-management/SKILL.md +71 -12
  28. package/templates/.claude/skills/memory-recall/SKILL.md +6 -4
  29. package/templates/.claude/skills/memory-save/SKILL.md +8 -5
  30. package/templates/.claude/skills/pipeline/labels.md +55 -0
  31. package/templates/.claude/skills/sec-agentshield-wrapper/SKILL.md +49 -0
  32. package/templates/.claude/skills/systematic-debugging/SKILL.md +44 -0
  33. package/templates/.claude/skills/systematic-debugging/phases/amplification-detection.md +25 -0
  34. package/templates/.claude/skills/systematic-debugging/phases/fault-injection.md +31 -0
  35. package/templates/.claude/skills/systematic-debugging/phases/retry-cache-timeout-audit.md +27 -0
  36. package/templates/.claude/skills/systematic-debugging/phases/timeline-correlation.md +26 -0
  37. package/templates/.claude/statusline.sh +40 -9
  38. package/templates/AGENTS.md.en +6 -2
  39. package/templates/AGENTS.md.ko +6 -2
  40. package/templates/CLAUDE.md +6 -2
  41. package/templates/CLAUDE.md.en +6 -2
  42. package/templates/CLAUDE.md.ko +6 -2
  43. package/templates/README.md +110 -0
  44. package/templates/guides/agent-teams/troubleshooting.md +53 -0
  45. package/templates/guides/autonomous-challenge-lessons/README.md +43 -0
  46. package/templates/guides/claude-code/14-token-efficiency.md +6 -1
  47. package/templates/guides/claude-code/15-version-compatibility.md +86 -0
  48. package/templates/guides/claude-code-tracking.md +51 -0
  49. package/templates/guides/index.yaml +12 -0
  50. package/templates/manifest.json +4 -4
  51. package/templates/tests/tsconfig.json +7 -0
  52. package/templates/workflows/auto-dev.yaml +80 -5
@@ -27,6 +27,7 @@ user-invocable: false
27
27
  4. **한 번에 하나의 가설만 검증한다.**
28
28
  5. **수정 시 "while I'm here" 리팩터링을 금지한다.**
29
29
  6. **수정 시도가 3번 실패하면 추가 패치 전에 구조적 문제를 의심한다.**
30
+ 7. **retry/cache/timeout을 변경하기 전에 false-fix 가능성을 점검한다.**
30
31
 
31
32
  이 과정을 어기는 것은 디버깅 실패로 본다.
32
33
 
@@ -64,6 +65,38 @@ user-invocable: false
64
65
 
65
66
  반드시 아래 순서로 진행한다.
66
67
 
68
+ ### Phase 0. Blocker Triage (Pre-Debug Gate)
69
+
70
+ **Trigger**: When any external dependency, tool, or resource appears unavailable.
71
+
72
+ Before declaring a task blocked or unsolvable, exhaust this checklist:
73
+
74
+ | # | Workaround Path | Check |
75
+ |---|----------------|-------|
76
+ | 1 | Environment bypass | Can the dependency be bypassed in the current environment? |
77
+ | 2 | Alternative tool | Is there an alternative tool, library, or approach? |
78
+ | 3 | Partial solution | Can the task be partially completed without the dependency? |
79
+ | 4 | Install/configure | Can the dependency be installed or configured now? |
80
+ | 5 | Existing credentials | Are related tokens, auth files, or configs already present? |
81
+
82
+ **Rules**:
83
+ - Minimum 3 workaround paths MUST be explored before declaring "blocked"
84
+ - Each explored path must be documented with outcome
85
+ - "Session unsolvable" declarations MUST include the list of attempted workaround paths
86
+ - If a workaround is found, proceed with debugging using that workaround
87
+
88
+ **Output format**:
89
+ ```
90
+ [Blocker Triage]
91
+ ├── Dependency: {what is unavailable}
92
+ ├── Path 1: {attempted} → {outcome}
93
+ ├── Path 2: {attempted} → {outcome}
94
+ ├── Path 3: {attempted} → {outcome}
95
+ └── Verdict: {proceed with workaround N | genuinely blocked — reason}
96
+ ```
97
+
98
+ If verdict is "genuinely blocked", escalate to user with full triage report. Do NOT silently abandon the task.
99
+
67
100
  ### Phase 1. Define The Problem
68
101
 
69
102
  먼저 문제를 축약한다.
@@ -286,3 +319,14 @@ This skill includes reference documents for specific debugging techniques:
286
319
  - `condition-based-waiting.md` — Replacing arbitrary delays with condition-based polling
287
320
  - `find-polluter.sh` — Bisection script for finding test pollution sources
288
321
  - `condition-based-waiting-example.ts` — Complete implementation of condition-based waiting utilities
322
+
323
+ ## Extended Phases
324
+
325
+ These phase guides are mandatory when the debugging shape matches the trigger:
326
+
327
+ | Phase guide | Trigger | Gate |
328
+ |-------------|---------|------|
329
+ | `phases/timeline-correlation.md` | Incident timing, deployment timing, or config drift may explain the failure | Correlate event time against code, deploy, config, data, and dependency timelines before patching. |
330
+ | `phases/retry-cache-timeout-audit.md` | Proposed fix changes retry, cache, timeout, pooling, or backoff behavior | Prove the change fixes the root cause rather than suppressing symptoms. |
331
+ | `phases/amplification-detection.md` | Traffic spikes, retry storms, queue growth, or cascading failures are possible | Identify amplification loops before increasing capacity or broadening retries. |
332
+ | `phases/fault-injection.md` | The fix claims resilience against external failure modes | Inject the fault in a bounded environment and verify predicted behavior. |
@@ -0,0 +1,25 @@
1
+ # Amplification Detection Phase
2
+
3
+ Use this phase when the failure may cascade: retries, queues, background jobs, fan-out calls, polling loops, webhook delivery, cron overlap, or connection pools.
4
+
5
+ ## Required Checks
6
+
7
+ 1. Identify the trigger that starts the loop or fan-out.
8
+ 2. Count how many downstream operations one failing input can create.
9
+ 3. Check retry/backoff behavior and whether retries duplicate side effects.
10
+ 4. Check queue depth, worker concurrency, pool limits, and timeout alignment.
11
+ 5. Verify cancellation, dedupe, idempotency, and dead-letter behavior.
12
+
13
+ ## Output
14
+
15
+ ```text
16
+ Amplification:
17
+ - Trigger:
18
+ - Fan-out factor:
19
+ - Retry behavior:
20
+ - Shared limit affected:
21
+ - Dedupe/idempotency:
22
+ - Verdict: {amplification present | no amplification evidence}
23
+ ```
24
+
25
+ If amplification is present, stop widening retries or capacity until the loop has an owner and a guard.
@@ -0,0 +1,31 @@
1
+ # Fault Injection Phase
2
+
3
+ Use this phase when a fix claims resilience against dependency failure, network failure, timeout, cancellation, corrupt input, clock skew, partial writes, or process restart.
4
+
5
+ ## Preconditions
6
+
7
+ - The injected fault is bounded to local, test, or staging scope.
8
+ - The expected behavior is written before running the injection.
9
+ - Rollback is known and immediate.
10
+
11
+ ## Procedure
12
+
13
+ 1. State the fault and predicted behavior.
14
+ 2. Inject the smallest fault that exercises the claim.
15
+ 3. Record logs, exit code, response, retries, and cleanup behavior.
16
+ 4. Remove the fault and verify recovery.
17
+ 5. Convert the injection into a repeatable test when practical.
18
+
19
+ ## Output
20
+
21
+ ```text
22
+ Fault Injection:
23
+ - Fault:
24
+ - Prediction:
25
+ - Injection method:
26
+ - Observed behavior:
27
+ - Recovery:
28
+ - Verdict: {claim proven | claim rejected | more instrumentation needed}
29
+ ```
30
+
31
+ Do not run destructive or production fault injection without explicit authority.
@@ -0,0 +1,27 @@
1
+ # Retry, Cache, Timeout Audit
2
+
3
+ Use this phase before changing retries, caches, timeouts, pools, backoff, debounce, or rate limits.
4
+
5
+ ## Hard Gate
6
+
7
+ A retry/cache/timeout change is invalid unless it explains why the original failure happened and proves the new behavior removes the root cause rather than hiding the symptom.
8
+
9
+ ## Audit Questions
10
+
11
+ 1. Is the proposed change reducing visible error rate without proving the failing operation now succeeds?
12
+ 2. Could it increase load, fan-out, duplicate side effects, or queue latency?
13
+ 3. Does it make the failure slower and harder to observe?
14
+ 4. Is the old timeout/cache/retry value actually wrong for the measured dependency behavior?
15
+ 5. Is there a smaller root-cause fix in input validation, ownership, ordering, or lifecycle?
16
+
17
+ ## Acceptable Evidence
18
+
19
+ - Before/after traces showing the same request now reaches the intended success path.
20
+ - Load or retry-count evidence proving amplification does not increase.
21
+ - A failing guard that fails before the root-cause fix and passes after it.
22
+
23
+ ## Rejection Pattern
24
+
25
+ ```text
26
+ Rejected: increased timeout/cache/retry | only suppresses the symptom; root cause remains unproven
27
+ ```
@@ -0,0 +1,26 @@
1
+ # Timeline Correlation Phase
2
+
3
+ Use this phase when a failure has a meaningful time dimension: deployment time, config change time, traffic shift, data import, queue spike, cron run, dependency incident, or first customer report.
4
+
5
+ ## Required Steps
6
+
7
+ 1. Record the incident window in UTC and local time if available.
8
+ 2. List code, deploy, config, data, dependency, and traffic events around that window.
9
+ 3. Mark each event as before, during, or after first failure.
10
+ 4. Prefer events that happened before the first failure and changed the failing path.
11
+ 5. Write one falsifiable hypothesis that connects timing evidence to the symptom.
12
+
13
+ ## Output
14
+
15
+ ```text
16
+ Timeline:
17
+ - First failure:
18
+ - Code/deploy events:
19
+ - Config/data/dependency events:
20
+ - Traffic or cron events:
21
+
22
+ Hypothesis:
23
+ <single root-cause hypothesis tied to the timeline>
24
+ ```
25
+
26
+ Do not patch from chronology alone. Use the timeline to choose the next evidence-gathering step.
@@ -15,7 +15,13 @@
15
15
  # "rate_limits": { (v2.1.80+, optional)
16
16
  # "five_hour": { "used_percentage": 10, "resets_at": 1773979200 },
17
17
  # "seven_day": { "used_percentage": 90, "resets_at": 1773979200 }
18
- # }
18
+ # },
19
+ # "gh": { (v2.1.145+, optional)
20
+ # "repo": "owner/repo",
21
+ # "pr_number": 160,
22
+ # "pr_state": "OPEN"
23
+ # },
24
+ # "agents": [ ... ] (v2.1.144+, optional)
19
25
  # }
20
26
 
21
27
  # ---------------------------------------------------------------------------
@@ -61,14 +67,15 @@ fi
61
67
 
62
68
  # Debug logging for CTX investigation
63
69
  if [[ -n "${STATUSLINE_DEBUG}" ]]; then
64
- printf '%s\n' "$json" >> "/tmp/.claude-statusline-debug-${PPID}.jsonl"
70
+ printf '%s\n' "$json" >> "/tmp/.codex-statusline-debug-${PPID}.jsonl"
65
71
  fi
66
72
 
67
73
  # ---------------------------------------------------------------------------
68
74
  # 4. Single jq call — extract all fields as TSV
69
- # Fields: model_name, project_dir, ctx_pct, ctx_size, cost_usd, rl_5h_pct, rl_7d_pct, rl_5h_resets, rl_7d_resets
75
+ # Fields: model_name, project_dir, ctx_pct, ctx_size, cost_usd, rl_5h_pct, rl_7d_pct,
76
+ # rl_5h_resets, rl_7d_resets, gh_repo, gh_pr_number, gh_pr_state, agent_count
70
77
  # ---------------------------------------------------------------------------
71
- IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_7d_pct rl_5h_resets rl_7d_resets <<< "$(
78
+ IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_7d_pct rl_5h_resets rl_7d_resets gh_repo gh_pr_number gh_pr_state agent_count <<< "$(
72
79
  printf '%s' "$json" | jq -r '[
73
80
  (.model.display_name // "unknown"),
74
81
  (.workspace.current_dir // ""),
@@ -78,14 +85,25 @@ IFS=$'\t' read -r model_name project_dir ctx_pct ctx_size cost_usd rl_5h_pct rl_
78
85
  (.rate_limits.five_hour.used_percentage // -1),
79
86
  (.rate_limits.seven_day.used_percentage // -1),
80
87
  (.rate_limits.five_hour.resets_at // -1),
81
- (.rate_limits.seven_day.resets_at // -1)
88
+ (.rate_limits.seven_day.resets_at // -1),
89
+ (if (.gh.repo // "") == "" then "_" else .gh.repo end),
90
+ (if (.gh.pr_number // "") == "" then "_" else (.gh.pr_number | tostring) end),
91
+ (if (.gh.pr_state // "") == "" then "_" else .gh.pr_state end),
92
+ (if (.agents | type) == "array" then (.agents | length) else 0 end)
82
93
  ] | @tsv'
83
94
  )"
84
95
 
96
+ [[ "$gh_repo" == "_" ]] && gh_repo=""
97
+ [[ "$gh_pr_number" == "_" ]] && gh_pr_number=""
98
+ [[ "$gh_pr_state" == "_" ]] && gh_pr_state=""
99
+ if ! [[ "$agent_count" =~ ^[0-9]+$ ]]; then
100
+ agent_count=0
101
+ fi
102
+
85
103
  # ---------------------------------------------------------------------------
86
104
  # 4b. Cost & context data bridge — write to temp file for hooks
87
105
  # ---------------------------------------------------------------------------
88
- COST_BRIDGE_FILE="/tmp/.claude-cost-${PPID}"
106
+ COST_BRIDGE_FILE="/tmp/.codex-cost-${PPID}"
89
107
  _tmp="${COST_BRIDGE_FILE}.tmp.$$"
90
108
  printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' "$cost_usd" "$ctx_pct" "$(date +%s)" "$rl_5h_pct" "$rl_7d_pct" "$rl_5h_resets" "$rl_7d_resets" > "$_tmp" 2>/dev/null && mv -f "$_tmp" "$COST_BRIDGE_FILE" 2>/dev/null || true
91
109
 
@@ -232,7 +250,12 @@ fi
232
250
  # 8. PR number — cached by branch to avoid gh call on every refresh
233
251
  # ---------------------------------------------------------------------------
234
252
  pr_display=""
235
- if [[ -n "$git_branch" ]] && command -v gh >/dev/null 2>&1; then
253
+ if [[ -n "$gh_pr_number" ]]; then
254
+ pr_display="PR #${gh_pr_number}"
255
+ if [[ -n "$gh_pr_state" && "$gh_pr_state" != "OPEN" ]]; then
256
+ pr_display="${pr_display} ${gh_pr_state}"
257
+ fi
258
+ elif [[ -n "$git_branch" ]] && command -v gh >/dev/null 2>&1; then
236
259
  cache_file="/tmp/statusline-pr-${project_name}"
237
260
  cached_branch=""
238
261
  cached_pr=""
@@ -360,6 +383,12 @@ if [[ -n "$wl_display" ]]; then
360
383
  wl_segment=" | ${wl_color}${wl_display}${COLOR_RESET}"
361
384
  fi
362
385
 
386
+ # Build the active agent count segment from statusline JSON when available.
387
+ agent_segment=""
388
+ if [[ "$agent_count" -gt 0 ]]; then
389
+ agent_segment=" | A:${agent_count}"
390
+ fi
391
+
363
392
  # Build the RTK segment from the session-env bridge if available.
364
393
  rtk_segment=""
365
394
  env_status_file="/tmp/.codex-env-status-${PPID}"
@@ -380,22 +409,24 @@ if [[ -f "$env_status_file" ]]; then
380
409
  fi
381
410
 
382
411
  if [[ -n "$git_branch" ]]; then
383
- printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
412
+ printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
384
413
  "$cost_display" \
385
414
  "$project_name" \
386
415
  "$branch_display" \
387
416
  "$pr_segment" \
388
417
  "$rl_segment" \
389
418
  "$wl_segment" \
419
+ "$agent_segment" \
390
420
  "$rtk_segment" \
391
421
  "$ctx_display"
392
422
  else
393
- printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
423
+ printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
394
424
  "$cost_display" \
395
425
  "$project_name" \
396
426
  "$pr_segment" \
397
427
  "$rl_segment" \
398
428
  "$wl_segment" \
429
+ "$agent_segment" \
399
430
  "$rtk_segment" \
400
431
  "$ctx_display"
401
432
  fi
@@ -134,8 +134,8 @@ project/
134
134
  | +-- hooks/ # Hook scripts (security, validation, HUD)
135
135
  | +-- contexts/ # Context files (ecomode)
136
136
  +-- .agents/
137
- | +-- skills/ # Installed skills (119 directories)
138
- +-- guides/ # Reference docs (27 topics)
137
+ | +-- skills/ # Installed skills (123 directories)
138
+ +-- guides/ # Reference docs (50 topics)
139
139
  ```
140
140
 
141
141
  ## Orchestration
@@ -226,6 +226,7 @@ Task tool + routing skills remain the fallback for simple/cost-sensitive tasks.
226
226
  | Server | Purpose |
227
227
  |--------|---------|
228
228
  | omx-memory | Session memory persistence (Chroma-based) |
229
+ | semble | Semantic code search MCP for high-recall repository exploration |
229
230
  | context7 | Library documentation lookup MCP server when a project needs it |
230
231
 
231
232
  ### Setup Commands
@@ -234,6 +235,9 @@ Task tool + routing skills remain the fallback for simple/cost-sensitive tasks.
234
235
  # MCP setup (omx-memory)
235
236
  npm install -g omx-memory
236
237
  omx-memory setup
238
+
239
+ # Optional semantic code search
240
+ uv tool install semble
237
241
  ```
238
242
 
239
243
  ### Claude Code Compatibility Note
@@ -134,8 +134,8 @@ project/
134
134
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
135
135
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
136
136
  +-- .agents/
137
- | +-- skills/ # 설치된 스킬 (119 디렉토리)
138
- +-- guides/ # 레퍼런스 문서 (27 토픽)
137
+ | +-- skills/ # 설치된 스킬 (123 디렉토리)
138
+ +-- guides/ # 레퍼런스 문서 (50 토픽)
139
139
  ```
140
140
 
141
141
  ## 오케스트레이션
@@ -226,6 +226,7 @@ Codex CLI의 Agent Teams 기능이 활성화되어 있으면 (`OMCODEX_AGENT_TEA
226
226
  | 서버 | 용도 |
227
227
  |------|------|
228
228
  | omx-memory | 세션 메모리 영속성 (Chroma 기반) |
229
+ | semble | 대규모 저장소 탐색용 semantic code search MCP |
229
230
  | context7 | 라이브러리 문서 조회용 MCP 서버 (프로젝트 필요 시 설정) |
230
231
 
231
232
  ### 설치 명령어
@@ -234,6 +235,9 @@ Codex CLI의 Agent Teams 기능이 활성화되어 있으면 (`OMCODEX_AGENT_TEA
234
235
  # MCP 설정 (omx-memory)
235
236
  npm install -g omx-memory
236
237
  omx-memory setup
238
+
239
+ # 선택: semantic code search
240
+ uv tool install semble
237
241
  ```
238
242
 
239
243
  ### Claude Code 호환 참고
@@ -119,8 +119,8 @@ project/
119
119
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
120
120
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
121
121
  +-- .agents/
122
- | +-- skills/ # 스킬 (119 디렉토리)
123
- +-- guides/ # 레퍼런스 문서 (40 토픽)
122
+ | +-- skills/ # 스킬 (123 디렉토리)
123
+ +-- guides/ # 레퍼런스 문서 (50 토픽)
124
124
  ```
125
125
 
126
126
  ## 오케스트레이션
@@ -244,6 +244,7 @@ Codex CLI의 Agent Teams 기능이 활성화되어 있으면 (`OMCODEX_AGENT_TEA
244
244
  | 서버 | 용도 |
245
245
  |------|------|
246
246
  | omx-memory | 세션 메모리 영속성 |
247
+ | semble | 대규모 저장소 탐색용 semantic code search MCP |
247
248
 
248
249
  ### 설치 명령어
249
250
 
@@ -267,6 +268,9 @@ claude agents
267
268
 
268
269
  # MCP 설정 (omx-memory)
269
270
  omx memory doctor
271
+
272
+ # 선택: semantic code search
273
+ uv tool install semble
270
274
  ```
271
275
 
272
276
  <!-- omcodex:git-workflow -->
@@ -133,11 +133,11 @@ project/
133
133
  +-- AGENTS.md # Entry point
134
134
  +-- .codex/
135
135
  | +-- agents/ # Subagent definitions (49 files)
136
- | +-- skills/ # Skills (119 directories)
136
+ | +-- skills/ # Skills (123 directories)
137
137
  | +-- rules/ # Global rules (22 files)
138
138
  | +-- hooks/ # Hook scripts (security, validation, HUD)
139
139
  | +-- contexts/ # Context files (4 files)
140
- +-- guides/ # Reference docs (40 topics)
140
+ +-- guides/ # Reference docs (50 topics)
141
141
  ```
142
142
 
143
143
  ## Orchestration
@@ -240,6 +240,7 @@ Install in Claude Code via `/plugin install <name>`:
240
240
  | Server | Purpose |
241
241
  |--------|---------|
242
242
  | omx-memory | Session memory persistence |
243
+ | semble | Semantic code search MCP for high-recall repository exploration |
243
244
 
244
245
  ### Claude Code Setup Commands
245
246
 
@@ -263,6 +264,9 @@ claude agents
263
264
 
264
265
  # MCP setup (omx-memory)
265
266
  omx memory doctor
267
+
268
+ # Optional semantic code search
269
+ uv tool install semble
266
270
  ```
267
271
 
268
272
  <!-- omcodex:git-workflow -->
@@ -133,11 +133,11 @@ project/
133
133
  +-- AGENTS.md # 진입점
134
134
  +-- .codex/
135
135
  | +-- agents/ # 서브에이전트 정의 (49 파일)
136
- | +-- skills/ # 스킬 (119 디렉토리)
136
+ | +-- skills/ # 스킬 (123 디렉토리)
137
137
  | +-- rules/ # 전역 규칙 (22 파일)
138
138
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
139
139
  | +-- contexts/ # 컨텍스트 파일 (4 파일)
140
- +-- guides/ # 레퍼런스 문서 (40 토픽)
140
+ +-- guides/ # 레퍼런스 문서 (50 토픽)
141
141
  ```
142
142
 
143
143
  ## 오케스트레이션
@@ -240,6 +240,7 @@ Claude Code 환경에서 `/plugin install <이름>`으로 설치:
240
240
  | 서버 | 용도 |
241
241
  |------|------|
242
242
  | omx-memory | 세션 메모리 영속성 |
243
+ | semble | 대규모 저장소 탐색용 semantic code search MCP |
243
244
 
244
245
  ### Claude Code 설치 명령어
245
246
 
@@ -263,6 +264,9 @@ claude agents
263
264
 
264
265
  # MCP 설정 (omx-memory)
265
266
  omx memory doctor
267
+
268
+ # 선택: semantic code search
269
+ uv tool install semble
266
270
  ```
267
271
 
268
272
  <!-- omcodex:git-workflow -->
@@ -0,0 +1,110 @@
1
+ # templates/
2
+
3
+ > **oh-my-customcodex distribution directory**
4
+ >
5
+ > Source files copied or transformed when `omcustomcodex init` installs the harness into a project.
6
+
7
+ ## Purpose
8
+
9
+ `templates/` is the packaged distribution snapshot for oh-my-customcodex.
10
+
11
+ The installer maps the Claude-compatible template tree into the Codex-native runtime layout:
12
+
13
+ ```text
14
+ oh-my-customcodex source repo
15
+ templates/
16
+ .claude/ # compatibility template source
17
+ guides/ # reference documentation
18
+ AGENTS.md.en # Codex entry template
19
+ AGENTS.md.ko
20
+
21
+ installed project
22
+ .codex/ # Codex-native agents, rules, hooks, contexts, ontology
23
+ .agents/skills/ # installed runtime skills
24
+ guides/ # reference documentation
25
+ AGENTS.md # project entrypoint
26
+ ```
27
+
28
+ The repository keeps `.codex/**` as the authoring surface. `templates/.claude/**` remains a compatibility source that the installer maps into the target Codex layout.
29
+
30
+ ## Main README Relationship
31
+
32
+ | Document | Audience | Purpose |
33
+ |----------|----------|---------|
34
+ | [`/README.md`](../README.md) | Users of the npm package | Project overview, install command, philosophy |
35
+ | `templates/README.md` | Maintainers | Distribution layout, component counts, sync checks |
36
+
37
+ ## Directory Structure
38
+
39
+ ```text
40
+ templates/
41
+ +-- README.md # this file
42
+ +-- AGENTS.md.en # Codex entry template, English
43
+ +-- AGENTS.md.ko # Codex entry template, Korean
44
+ +-- CLAUDE.md* # Claude compatibility entry templates
45
+ +-- manifest.json # packaged component metadata
46
+ +-- workflows/ # project-level pipeline definitions
47
+ +-- .claude/
48
+ | +-- agents/ # agent definitions (49 files)
49
+ | +-- skills/ # skill modules (123 SKILL.md files)
50
+ | +-- rules/ # global rules (22 files)
51
+ | +-- hooks/ # hook registry and scripts (40 scripts)
52
+ | +-- contexts/ # context files
53
+ | +-- ontology/ # ontology and routing metadata
54
+ | +-- schemas/ # tool input schemas
55
+ +-- guides/ # reference docs (50 topics)
56
+ ```
57
+
58
+ ## Components
59
+
60
+ The counts below should stay aligned with `templates/manifest.json`, README component headings, and CI template validation.
61
+
62
+ ### Agents (49)
63
+
64
+ `templates/.claude/agents/*.md`
65
+
66
+ Flat agent definition files. During Codex installation these land under `.codex/agents/`.
67
+
68
+ ### Skills (123)
69
+
70
+ `templates/.claude/skills/*/SKILL.md`
71
+
72
+ Reusable workflow and reference skill modules. During Codex installation these land under `.agents/skills/`.
73
+
74
+ ### Rules (22)
75
+
76
+ `templates/.claude/rules/*.md`
77
+
78
+ Global agent behavior rules. During Codex installation these land under `.codex/rules/`.
79
+
80
+ ### Guides (50)
81
+
82
+ `templates/guides/*/`
83
+
84
+ Reference documentation directories copied to installed projects as `guides/`.
85
+
86
+ ### Hooks (40)
87
+
88
+ `templates/.claude/hooks/scripts/*.sh`
89
+
90
+ Lifecycle hook scripts copied into `.codex/hooks/scripts/`.
91
+
92
+ ## Local Verification
93
+
94
+ Run the checks below before publishing a template-affecting change:
95
+
96
+ ```bash
97
+ bash .github/scripts/verify-version-sync.sh
98
+ bun test tests/unit/core/template-validation.test.ts
99
+ ```
100
+
101
+ The CI template-sync job also verifies source/template counts for agents, skills, rules, guides, hook scripts, hook matchers, schemas, and skill scripts.
102
+
103
+ ## Maintainer Notes
104
+
105
+ When adding or removing an agent, skill, rule, guide, hook, or workflow:
106
+
107
+ 1. Update the source surface under `.codex/**`, `.agents/skills/**`, `guides/**`, or `workflows/**`.
108
+ 2. Mirror packaged content under `templates/**` according to the provider mapping.
109
+ 3. Update `templates/manifest.json` and visible documentation counts.
110
+ 4. Add or update a regression test when the drift could recur.
@@ -0,0 +1,53 @@
1
+ # Agent Teams Shutdown and tmux Fallback Troubleshooting
2
+
3
+ This guide ports the old Claude Code shutdown flow into Codex/OMX terms. Use it when an Agent Teams session stops making forward progress during shutdown, cleanup, or handoff.
4
+
5
+ ## Typical Failure Signs
6
+
7
+ | Symptom | Likely cause | Action |
8
+ | --- | --- | --- |
9
+ | `TeamDelete` refuses to complete | One or more members are still active | Send a final shutdown request, then retry once |
10
+ | Idle notifications repeat without exit | A member saw the request but did not stop | Wait briefly, then fall back to stale-session cleanup |
11
+ | The team looks done but the pane is still attached | The worker is still owned by tmux | Reclaim the owned tmux pane or session before declaring cleanup complete |
12
+ | Progress stops after a member blocks | The member is waiting on a dependency | Reassign or wait silently instead of polling forever |
13
+
14
+ ## Recovery Order
15
+
16
+ 1. Send one explicit shutdown message to the team member or team lead.
17
+ 2. Wait for a short, fixed interval.
18
+ 3. Try `TeamDelete` again.
19
+ 4. If `TeamDelete` still fails and the session is clearly stale, clean up the owned tmux pane or session.
20
+ 5. Re-check `.omx/state/` and confirm the active mode is gone.
21
+
22
+ ## Fallback Rules
23
+
24
+ - Prefer graceful shutdown first: `SendMessage` with a shutdown request, then `TeamDelete`.
25
+ - Use tmux fallback only for stale local cleanup, not as the default path.
26
+ - Do not kill a pane or session that still contains live user work.
27
+ - After fallback cleanup, clear any stale `omx` runtime state that still claims the team is active.
28
+
29
+ ## Codex/OMX Surface Map
30
+
31
+ | Need | Default surface | Compatibility note |
32
+ | --- | --- | --- |
33
+ | Ask the team to stop | `SendMessage` | Legacy Claude Code shutdown flows may use analogous `/bg` or background-session signals |
34
+ | Remove a finished team | `TeamDelete` | Treat refusal as a state problem, not as permission to spin forever |
35
+ | Kill a stale worker pane | OMX-managed `tmux` session or pane | Claude-specific socket names are compatibility-only references |
36
+ | Clear lingering session state | `.omx/state/` and related runtime files | Do not rely on the pane alone as the source of truth |
37
+
38
+ ## Example Recovery Sequence
39
+
40
+ ```text
41
+ 1. SendMessage(team-member, "shutdown request")
42
+ 2. Wait for the member to stop producing work
43
+ 3. TeamDelete(team)
44
+ 4. If TeamDelete still reports active members and the session is stale, kill the owned tmux pane
45
+ 5. Re-run the state check and confirm no active OMX mode remains
46
+ ```
47
+
48
+ ## Escalate When
49
+
50
+ - The pane or session is not owned by the current task.
51
+ - Cleanup would interrupt active user work.
52
+ - The same stale team keeps reappearing after cleanup.
53
+ - A shared infra tmux socket or background process is involved.
@@ -0,0 +1,43 @@
1
+ # Autonomous Challenge Lessons
2
+
3
+ This guide captures repeatable lessons from long autonomous runs where the agent must inspect an existing challenge environment, produce a fix, and verify the result without frequent human steering.
4
+
5
+ ## Start With Ground Truth
6
+
7
+ Before implementing a guessed mechanism, check whether the environment already contains an answer artifact, compiled fix, reference binary, fixture, or expected-output file.
8
+
9
+ Required first-pass questions:
10
+
11
+ 1. Is there a supplied fix artifact, golden output, or reference implementation?
12
+ 2. Which runtime version and mapping namespace are actually present?
13
+ 3. Which identifiers are proven by code inspection rather than inferred from memory?
14
+ 4. Which launcher or environment flags are being used, and what do they mean?
15
+
16
+ ## Repeated Failure Discipline
17
+
18
+ If the same critical error appears twice, stop repeating the launch or tool call. Re-check the option, permission, process state, or single-instance constraint that may make the command invalid.
19
+
20
+ Examples:
21
+
22
+ - Tool permission denial: do not repeat the exact same tool call; switch evidence path.
23
+ - Launcher flag failure: read the flag meaning before another launch.
24
+ - Single-instance process collision: check and clean the process state before relaunch.
25
+ - Background command output loss: locate the output file or rerun through a managed log path.
26
+
27
+ ## Parallel Work Heuristic
28
+
29
+ When a single command is about to process dozens of independent files, downloads, or checks, split it into bounded parallel lanes instead of making one long opaque shell run.
30
+
31
+ Use this when:
32
+
33
+ - There are about 30 or more independent units.
34
+ - Failures can be isolated by chunk.
35
+ - Results can be merged deterministically.
36
+
37
+ ## QA Evidence
38
+
39
+ QA reports must quote identifiers from the target code before using them. Selectors, `data-testid` values, mapping names, CLI flags, and config keys are not valid unless read or grepped from the project.
40
+
41
+ ## GUI Verification
42
+
43
+ For visual or interactive tasks, collect direct browser, screenshot, or runtime evidence when possible. If only indirect evidence is available, label it as indirect and explain what could not be captured.