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.
- package/README.md +6 -6
- package/dist/cli/index.js +168 -13
- package/dist/index.js +150 -8
- package/package.json +1 -1
- package/templates/.claude/agents/qa-engineer.md +7 -0
- package/templates/.claude/hooks/hooks.json +28 -0
- package/templates/.claude/hooks/scripts/agent-capability-precheck.sh +99 -0
- package/templates/.claude/hooks/scripts/agent-mode-guard.sh +14 -3
- package/templates/.claude/hooks/scripts/git-delegation-guard.sh +14 -5
- package/templates/.claude/hooks/scripts/plugin-cache-check.sh +42 -0
- package/templates/.claude/hooks/scripts/session-reflection.sh +106 -0
- package/templates/.claude/output-styles/korean-engineer.md +4 -0
- package/templates/.claude/rules/MUST-agent-identification.md +50 -22
- package/templates/.claude/rules/MUST-agent-teams.md +6 -2
- package/templates/.claude/rules/MUST-completion-verification.md +11 -0
- package/templates/.claude/rules/MUST-continuous-improvement.md +15 -1
- package/templates/.claude/rules/MUST-intent-transparency.md +29 -0
- package/templates/.claude/rules/MUST-language-policy.md +7 -0
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +62 -0
- package/templates/.claude/rules/MUST-tool-identification.md +19 -0
- package/templates/.claude/rules/SHOULD-memory-integration.md +27 -12
- package/templates/.claude/skills/adversarial-review/SKILL.md +10 -0
- package/templates/.claude/skills/dev-review/SKILL.md +15 -5
- package/templates/.claude/skills/harness-export/SKILL.md +46 -0
- package/templates/.claude/skills/instinct-extractor/SKILL.md +54 -0
- package/templates/.claude/skills/manifest-install/SKILL.md +53 -0
- package/templates/.claude/skills/memory-management/SKILL.md +71 -12
- package/templates/.claude/skills/memory-recall/SKILL.md +6 -4
- package/templates/.claude/skills/memory-save/SKILL.md +8 -5
- package/templates/.claude/skills/pipeline/labels.md +55 -0
- package/templates/.claude/skills/sec-agentshield-wrapper/SKILL.md +49 -0
- package/templates/.claude/skills/systematic-debugging/SKILL.md +44 -0
- package/templates/.claude/skills/systematic-debugging/phases/amplification-detection.md +25 -0
- package/templates/.claude/skills/systematic-debugging/phases/fault-injection.md +31 -0
- package/templates/.claude/skills/systematic-debugging/phases/retry-cache-timeout-audit.md +27 -0
- package/templates/.claude/skills/systematic-debugging/phases/timeline-correlation.md +26 -0
- package/templates/.claude/statusline.sh +40 -9
- package/templates/AGENTS.md.en +6 -2
- package/templates/AGENTS.md.ko +6 -2
- package/templates/CLAUDE.md +6 -2
- package/templates/CLAUDE.md.en +6 -2
- package/templates/CLAUDE.md.ko +6 -2
- package/templates/README.md +110 -0
- package/templates/guides/agent-teams/troubleshooting.md +53 -0
- package/templates/guides/autonomous-challenge-lessons/README.md +43 -0
- package/templates/guides/claude-code/14-token-efficiency.md +6 -1
- package/templates/guides/claude-code/15-version-compatibility.md +86 -0
- package/templates/guides/claude-code-tracking.md +51 -0
- package/templates/guides/index.yaml +12 -0
- package/templates/manifest.json +4 -4
- package/templates/tests/tsconfig.json +7 -0
- 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/.
|
|
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,
|
|
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/.
|
|
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 "$
|
|
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
|
package/templates/AGENTS.md.en
CHANGED
|
@@ -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 (
|
|
138
|
-
+-- guides/ # Reference docs (
|
|
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
|
package/templates/AGENTS.md.ko
CHANGED
|
@@ -134,8 +134,8 @@ project/
|
|
|
134
134
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
135
135
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
|
136
136
|
+-- .agents/
|
|
137
|
-
| +-- skills/ # 설치된 스킬 (
|
|
138
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
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 호환 참고
|
package/templates/CLAUDE.md
CHANGED
|
@@ -119,8 +119,8 @@ project/
|
|
|
119
119
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
120
120
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
|
121
121
|
+-- .agents/
|
|
122
|
-
| +-- skills/ # 스킬 (
|
|
123
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
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 -->
|
package/templates/CLAUDE.md.en
CHANGED
|
@@ -133,11 +133,11 @@ project/
|
|
|
133
133
|
+-- AGENTS.md # Entry point
|
|
134
134
|
+-- .codex/
|
|
135
135
|
| +-- agents/ # Subagent definitions (49 files)
|
|
136
|
-
| +-- skills/ # Skills (
|
|
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 (
|
|
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 -->
|
package/templates/CLAUDE.md.ko
CHANGED
|
@@ -133,11 +133,11 @@ project/
|
|
|
133
133
|
+-- AGENTS.md # 진입점
|
|
134
134
|
+-- .codex/
|
|
135
135
|
| +-- agents/ # 서브에이전트 정의 (49 파일)
|
|
136
|
-
| +-- skills/ # 스킬 (
|
|
136
|
+
| +-- skills/ # 스킬 (123 디렉토리)
|
|
137
137
|
| +-- rules/ # 전역 규칙 (22 파일)
|
|
138
138
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
139
139
|
| +-- contexts/ # 컨텍스트 파일 (4 파일)
|
|
140
|
-
+-- guides/ # 레퍼런스 문서 (
|
|
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.
|