oh-my-customcodex 0.3.9 → 0.4.0

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 CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 48 agents. 112 skills. 22 rules. One command.
16
+ 49 agents. 112 skills. 22 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcodex && cd your-project && omcustomcodex init
@@ -112,7 +112,7 @@ Agent(arch-documenter):haiku ┘
112
112
 
113
113
  ---
114
114
 
115
- ### Agents (48)
115
+ ### Agents (49)
116
116
 
117
117
  | Category | Count | Agents |
118
118
  |----------|-------|--------|
@@ -121,13 +121,14 @@ Agent(arch-documenter):haiku ┘
121
121
  | Frontend | 5 | fe-vercel, fe-vuejs, fe-svelte, fe-flutter, fe-design |
122
122
  | Data Engineering | 6 | de-airflow, de-dbt, de-spark, de-kafka, de-snowflake, de-pipeline |
123
123
  | Database | 4 | db-supabase, db-postgres, db-redis, db-alembic |
124
- | Tooling | 4 | tool-npm, tool-optimizer, tool-bun, slack-cli |
124
+ | Tooling | 3 | tool-npm, tool-optimizer, tool-bun |
125
125
  | Architecture | 2 | arch-documenter, arch-speckit |
126
126
  | Infrastructure | 2 | infra-docker, infra-aws |
127
127
  | QA | 3 | qa-planner, qa-writer, qa-engineer |
128
128
  | Security | 1 | sec-codeql |
129
129
  | Managers | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
130
- | System | 2 | sys-memory-keeper, sys-naggy |
130
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
131
+ | Auxiliary | 2 | slack-cli, wiki-curator |
131
132
 
132
133
  Each agent declares its tools, model, memory scope, and limitations in YAML frontmatter. Tool budgets are enforced per agent type for accuracy.
133
134
 
@@ -277,7 +278,7 @@ omcustomcodex serve-stop # Stop Web UI
277
278
  your-project/
278
279
  ├── AGENTS.md # Entry point
279
280
  ├── .codex/
280
- │ ├── agents/ # 48 agent definitions
281
+ │ ├── agents/ # 49 agent definitions
281
282
  │ ├── rules/ # 22 governance rules (R000-R021)
282
283
  │ ├── hooks/ # 15 lifecycle hook scripts
283
284
  │ ├── schemas/ # Tool input validation schemas
package/dist/cli/index.js CHANGED
@@ -3091,7 +3091,7 @@ var init_package = __esm(() => {
3091
3091
  workspaces: [
3092
3092
  "packages/*"
3093
3093
  ],
3094
- version: "0.3.9",
3094
+ version: "0.4.0",
3095
3095
  description: "Batteries-included agent harness on top of GPT Codex + OMX",
3096
3096
  type: "module",
3097
3097
  bin: {
package/dist/index.js CHANGED
@@ -2180,7 +2180,7 @@ var package_default = {
2180
2180
  workspaces: [
2181
2181
  "packages/*"
2182
2182
  ],
2183
- version: "0.3.9",
2183
+ version: "0.4.0",
2184
2184
  description: "Batteries-included agent harness on top of GPT Codex + OMX",
2185
2185
  type: "module",
2186
2186
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.3.9",
6
+ "version": "0.4.0",
7
7
  "description": "Batteries-included agent harness on top of GPT Codex + OMX",
8
8
  "type": "module",
9
9
  "bin": {
@@ -30,7 +30,7 @@ You are an automated verification specialist that executes the mandatory R017 ve
30
30
  6. Verify philosophy compliance (R006-R011)
31
31
  7. Verify Claude-native compatibility
32
32
  8. Spec density analysis: detects agents with excessive inline implementation detail (R006 compliance)
33
- 9. Structural linting: routing coverage (unreachable agents), orphan skill detection, circular dependency check, context:fork cap verification
33
+ 9. Structural linting: routing coverage (unreachable agents), orphan skill detection, circular dependency check, context:fork cap verification, R006 fork-list/frontmatter cross-validation
34
34
  10. Auto-fix simple issues (count mismatches, missing fields)
35
35
  11. Generate verification report
36
36
 
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: tracker-checkpoint
3
+ description: Pipeline execution state tracker with checkpoint persistence. Reads and writes /tmp/.codex-pipeline-*-{PPID}.json state files and validates state transitions for pipeline and DAG resume flows.
4
+ model: sonnet
5
+ effort: medium
6
+ tools: [Read, Write, Edit, Bash, Glob, Grep]
7
+ memory: project
8
+ skills: [dag-orchestration, pipeline-guards]
9
+ domain: universal
10
+ permissionMode: bypassPermissions
11
+ ---
12
+
13
+ # Tracker Checkpoint Agent
14
+
15
+ ## Purpose
16
+
17
+ Manage pipeline execution state through persistent checkpoint files. This agent works with `/pipeline resume`, `dag-orchestration`, and `pipeline-guards` so failed or preempted runs can resume from a known state.
18
+
19
+ ## Capabilities
20
+
21
+ - Read and write `/tmp/.codex-pipeline-{name}-{PPID}.json` state files
22
+ - Read and write `/tmp/.codex-dag-{PPID}.json` DAG state files when a DAG workflow owns the run
23
+ - Validate state transitions: `pending -> running -> completed | failed`
24
+ - Preserve failure context for halted pipeline steps
25
+ - Support `/pipeline resume` by loading the last known state
26
+
27
+ ## Workflow
28
+
29
+ ### 1. Pipeline Start
30
+
31
+ - Create `/tmp/.codex-pipeline-{name}-{PPID}.json` with initial state
32
+ - Record pipeline name, start timestamp, total steps, and `current_step: 0`
33
+
34
+ ### 2. Step Checkpoint
35
+
36
+ - Update state after each step
37
+ - Record step name, status, duration, and artifact paths
38
+ - Use atomic write semantics: write temporary JSON, then move it into place
39
+
40
+ ### 3. Failure Freeze
41
+
42
+ - Mark the pipeline status as `halted`
43
+ - Preserve failed step, error message, and partial artifact paths
44
+ - Leave the checkpoint file available for resume inspection
45
+
46
+ ### 4. Resume Coordination
47
+
48
+ - Scan `/tmp/.codex-pipeline-*-{PPID}.json`
49
+ - Return pipeline name, failed step, error, and retry/skip/abort options to the orchestrator
50
+ - On retry, reset the failed step to `pending` and resume execution from that step
51
+
52
+ ## State File Schema
53
+
54
+ ```json
55
+ {
56
+ "pipeline": "{name}",
57
+ "started": "ISO-8601",
58
+ "status": "running|completed|halted",
59
+ "current_step": 0,
60
+ "steps": [
61
+ {"name": "triage", "status": "completed", "duration_ms": 5000, "artifacts": []},
62
+ {"name": "plan", "status": "running"}
63
+ ]
64
+ }
65
+ ```
66
+
67
+ ## Integration Points
68
+
69
+ - `pipeline` skill: `/pipeline resume` state loader
70
+ - `dag-orchestration` skill: step dependency resolution and checkpoint restoration
71
+ - `pipeline-guards` skill: guard gate state snapshots
72
+
73
+ ## Rules Compliance
74
+
75
+ - R006: this is an agent artifact; checkpoint workflow logic remains in skills
76
+ - R010: orchestrator owns scheduling, this agent owns checkpoint file operations
77
+ - R017: structural changes to checkpoint contracts require sauron verification
@@ -83,14 +83,14 @@
83
83
  "description": "Schema-based tool input validation — Phase 1 advisory only"
84
84
  },
85
85
  {
86
- "matcher": "tool == \"Bash\" && tool_input.command matches \"\\\\.claude/\"",
86
+ "matcher": "(tool == \"Bash\" && tool_input.command matches \"\\\\.claude/\") || ((tool == \"Write\" || tool == \"Edit\") && tool_input.file_path matches \"\\\\.claude/\")",
87
87
  "hooks": [
88
88
  {
89
89
  "type": "command",
90
90
  "command": "bash .codex/hooks/scripts/claude-sensitive-path-guard.sh"
91
91
  }
92
92
  ],
93
- "description": "Block Bash writes into .claude/ sensitive paths before Claude Code permission prompts fire"
93
+ "description": "Block Bash/Write/Edit writes into .claude/ sensitive paths before Claude Code permission prompts fire"
94
94
  },
95
95
  {
96
96
  "matcher": "tool == \"Bash\"",
@@ -1,5 +1,5 @@
1
1
  #!/bin/bash
2
- # Block Bash write operations targeting .claude/ sensitive paths.
2
+ # Block tool write operations targeting .claude/ sensitive paths.
3
3
  # Claude Code can surface a sensitive-file permission prompt before allow rules
4
4
  # or bypassPermissions are evaluated, so fail fast before the command runs.
5
5
 
@@ -8,11 +8,15 @@ set -euo pipefail
8
8
  command -v jq >/dev/null 2>&1 || exit 0
9
9
 
10
10
  input=$(cat)
11
+ tool=$(echo "$input" | jq -r '.tool // .tool_name // ""')
11
12
  cmd=$(echo "$input" | jq -r '.tool_input.command // ""')
13
+ file_path=$(echo "$input" | jq -r '.tool_input.file_path // ""')
12
14
 
13
- if [ -z "$cmd" ]; then
14
- echo "$input"
15
- exit 0
15
+ if [[ "$tool" =~ ^(Write|Edit)$ ]] && [[ "$file_path" =~ \.claude/ ]]; then
16
+ echo "[Hook] BLOCKED: $tool targeting .claude/ sensitive path" >&2
17
+ echo "[Hook] File: $file_path" >&2
18
+ echo "[Hook] Sensitive-path prompts can override allow rules. Use the repo's managed sync/update path or perform this change interactively." >&2
19
+ exit 2
16
20
  fi
17
21
 
18
22
  targets_claude=0
@@ -32,7 +36,7 @@ fi
32
36
  if [ "$targets_claude" -eq 1 ] && [ "$writes_claude" -eq 1 ]; then
33
37
  echo "[Hook] BLOCKED: Bash write targeting .claude/ sensitive path" >&2
34
38
  echo "[Hook] Command: $cmd" >&2
35
- echo "[Hook] Use Write/Edit or the repo's managed sync/update path instead of Bash for .claude/ changes." >&2
39
+ echo "[Hook] Sensitive-path prompts can override allow rules. Use the repo's managed sync/update path or perform this change interactively." >&2
36
40
  exit 2
37
41
  fi
38
42
 
@@ -235,6 +235,26 @@ Skills persist output to `.codex/outputs/sessions/{YYYY-MM-DD}/{skill-name}-{HHm
235
235
  **Rules**: Opt-in per skill, final subagent writes with a file-write API that creates missing parent directories (R010 compliance), do not pre-create session output directories with Bash, .codex/outputs/ is git-untracked, no indexing required.
236
236
  -->
237
237
 
238
+ ## Sensitive Path Handling
239
+
240
+ Claude Code treats `.claude/` and `templates/.claude/` as sensitive directories across Bash, Write, and Edit operations. The sensitive-path check runs above `bypassPermissions` and explicit allow rules, so allow rules do not override the sensitive-path check.
241
+
242
+ This Codex port uses `.codex/` as the active runtime surface, but packaged compatibility templates still live under `templates/.claude/`. Any automation that writes those templates must account for Claude Code permission prompts.
243
+
244
+ | Path pattern | Sensitive in Claude Code? | Affected operations |
245
+ |--------------|---------------------------|---------------------|
246
+ | `.claude/**` | Yes | Bash writes, Write, Edit |
247
+ | `templates/.claude/**` | Yes | Bash writes, Write, Edit |
248
+ | `.codex/**` | No | Normal Codex runtime writes; still follow R010/R017 |
249
+ | `.codex/outputs/**` and `.claude/outputs/**` | Treat as constrained artifact paths | Use file-write APIs that create parents; do not pre-create with Bash |
250
+
251
+ Recommended practice:
252
+
253
+ 1. Prefer Write/Edit in an interactive session, or managed sync/update paths, over Bash copy/mkdir/tee writes for `.claude/` and `templates/.claude/`.
254
+ 2. Keep allow rules only as defensive documentation; do not rely on them to suppress sensitive-path prompts.
255
+ 3. Do not run unattended Claude Code release automation that writes `templates/.claude/**` unless the workflow can handle interactive approval.
256
+ 4. In this Codex port, update `.codex/...` source files and their `templates/.claude/...` mirrors deliberately instead of bulk-copying with shell commands.
257
+
238
258
  ## Separation of Concerns
239
259
 
240
260
  | Location | Purpose | Contains |
@@ -324,7 +344,7 @@ Default: `core` (when field is omitted)
324
344
 
325
345
  ### Context Fork Criteria
326
346
 
327
- Use `context: fork` for multi-agent orchestration skills only. Cap: **12 total**. Current: 12/12 (secretary/dev-lead/de-lead/qa-lead-routing, dag-orchestration, task-decomposition, worker-reviewer-pipeline, pipeline-guards, deep-plan, professor-triage, evaluator-optimizer, sauron-watch).
347
+ Use `context: fork` for multi-agent orchestration skills only. Cap: **12 total**. Current: 10/12 (secretary-routing, dev-lead-routing, de-lead-routing, qa-lead-routing, dag-orchestration, task-decomposition, worker-reviewer-pipeline, pipeline-guards, deep-plan, professor-triage).
328
348
 
329
349
  <!-- DETAIL: Context Fork decision table
330
350
  | Use context:fork | Do NOT use context:fork |
@@ -193,6 +193,26 @@ Execute? [Y/n]
193
193
 
194
194
  The orchestrator builds the DAG from this inline format and executes using the same algorithm.
195
195
 
196
+ ## State Management via tracker-checkpoint
197
+
198
+ Pipeline and DAG state is delegated to the `tracker-checkpoint` agent.
199
+
200
+ ### Flow
201
+
202
+ 1. Pipeline start: orchestrator delegates to `tracker-checkpoint` to create an initial state file (`/tmp/.codex-pipeline-{name}-{PPID}.json`)
203
+ 2. After each step: `tracker-checkpoint` updates step state with atomic writes
204
+ 3. Step failure: `tracker-checkpoint` freezes the state as `halted`
205
+ 4. `/pipeline resume`: `tracker-checkpoint` loads state and returns restore options to the orchestrator
206
+
207
+ ### Integration
208
+
209
+ - PPID-scoped pipeline state path: `/tmp/.codex-pipeline-{name}-{PPID}.json`
210
+ - PPID-scoped DAG state path: `/tmp/.codex-dag-{PPID}.json`
211
+ - Delegate before and after step execution when resume support is required
212
+ - On resume, rebuild the DAG from checkpoint state and continue from incomplete steps
213
+
214
+ See `.codex/agents/tracker-checkpoint.md` for the agent contract.
215
+
196
216
  ## Limitations
197
217
 
198
218
  - No cycles allowed (DAG = acyclic)
@@ -158,6 +158,25 @@ Guard warnings appear inline:
158
158
  | stuck-recovery | Guard triggers feed into stuck detection |
159
159
  | model-escalation | Repeated failures trigger escalation advisory |
160
160
 
161
+ ## Checkpoint Gate Integration
162
+
163
+ Guard pass/fail state is recorded through the `tracker-checkpoint` agent when a pipeline needs resumable execution.
164
+
165
+ ### Flow
166
+
167
+ 1. Guard entry: record gate state as `running`
168
+ 2. Guard pass: record gate state as `passed` with relevant metrics
169
+ 3. Guard failure: record gate state as `failed` and freeze failure reason
170
+ 4. Next step: read checkpoint state to decide whether to resume or halt
171
+
172
+ ### Benefits
173
+
174
+ - Long pipelines gain restore points at guard boundaries
175
+ - Partial failures can retry from the prior guard boundary
176
+ - Guard metrics accumulate for release-quality trend analysis
177
+
178
+ See `.codex/agents/tracker-checkpoint.md` for the checkpoint contract.
179
+
161
180
  ## Override Policy
162
181
 
163
182
  - Defaults can be overridden in pipeline spec (within hard caps)
@@ -99,10 +99,22 @@ Build dependency graph:
99
99
  Count skills with context: fork in frontmatter:
100
100
  grep "context: fork" .codex/skills/*/SKILL.md
101
101
 
102
- If count > 10:
103
- ERROR: "Context fork cap exceeded: {count}/10"
104
- If count >= 8:
105
- WARN: "Context fork usage high: {count}/10 — only {10-count} slots remaining"
102
+ If count > 12:
103
+ ERROR: "Context fork cap exceeded: {count}/12"
104
+ If count >= 10:
105
+ WARN: "Context fork usage high: {count}/12 — only {12-count} slots remaining"
106
+ ```
107
+
108
+ **Lint 5: R006 Fork List Cross-Validation**
109
+ ```
110
+ Run: bash .github/scripts/verify-fork-list.sh
111
+
112
+ Compare:
113
+ - R006 Context Fork Criteria current count/list
114
+ - Actual .codex/skills/*/SKILL.md frontmatter with context: fork
115
+
116
+ If count or list differs:
117
+ ERROR: "R006 fork list drift detected"
106
118
  ```
107
119
 
108
120
  All structural lints are **advisory** (WARN level) except circular dependencies and fork cap exceeded (ERROR level — should block commit).
@@ -2,7 +2,7 @@
2
2
  name: sdd-dev
3
3
  description: Spec-Driven Development workflow — enforces sdd/ folder hierarchy with planning-first gates, current-state artifacts, and completion verification
4
4
  scope: core
5
- version: 1.0.0
5
+ version: 1.1.0
6
6
  user-invocable: true
7
7
  argument-hint: "[task description or leave empty for guided workflow]"
8
8
  ---
@@ -27,7 +27,8 @@ sdd/
27
27
  ├── 03_build/ # Current build state, implementation notes
28
28
  ├── 04_verify/ # Verification evidence, test results, residual risks
29
29
  ├── 05_operate/ # Deployment notes, runbooks (conditional)
30
- └── 99_toolchain/ # Tool configs, scripts, environment setup
30
+ ├── 99_toolchain/ # Tool configs, scripts, environment setup
31
+ └── decisions/ # Decision records for major design choices
31
32
  ```
32
33
 
33
34
  **Key Principle**: These folders are **current-state artifacts**, not history archives. Each file reflects the current state of the work — update in place rather than appending new versions.
@@ -44,7 +45,7 @@ ls sdd/ 2>/dev/null || echo "sdd/ folder not found"
44
45
 
45
46
  If `sdd/` does not exist:
46
47
  1. Inform the user that SDD workflow requires a `sdd/` folder
47
- 2. Offer to create the folder structure: `mkdir -p sdd/{01_planning,02_plan,03_build,04_verify,05_operate,99_toolchain}`
48
+ 2. Offer to create the folder structure: `mkdir -p sdd/{01_planning,02_plan,03_build,04_verify,05_operate,99_toolchain,decisions}`
48
49
  3. Ask user to confirm before proceeding
49
50
 
50
51
  If `sdd/` exists, continue to Step 1.
@@ -121,6 +122,7 @@ Artifact to produce or update: `sdd/03_build/current.md`
121
122
 
122
123
  ## Decisions Made
123
124
  - {decision}: {rationale}
125
+ - Write decision records for major choices: `sdd/decisions/{YYYY-MM-DD}-{topic}.md` using `templates/decision-record.md`
124
126
 
125
127
  ## Known Issues
126
128
  - {issue}: {planned resolution}
@@ -129,6 +131,7 @@ Artifact to produce or update: `sdd/03_build/current.md`
129
131
  During implementation:
130
132
  - Follow the plan from Step 2
131
133
  - Update `sdd/03_build/current.md` as work progresses
134
+ - Create or update a decision record when a choice materially changes architecture, workflow behavior, dependency strategy, or release risk
132
135
  - Keep the artifact current (not a log — overwrite stale entries)
133
136
 
134
137
  **Display**:
@@ -0,0 +1,45 @@
1
+ ---
2
+ title: {Decision title}
3
+ date: YYYY-MM-DD
4
+ status: proposed | accepted | superseded | deprecated
5
+ context: guides/harness-engineering/README.md
6
+ decision_makers: [{agent or role}]
7
+ ---
8
+
9
+ # {Decision title}
10
+
11
+ ## Context
12
+
13
+ {What is the problem and why is a decision needed? Include relevant constraints, goals, and the situation that makes this decision necessary.}
14
+
15
+ ## Options Considered
16
+
17
+ 1. **Option A**: {Description}
18
+ - Pros: {benefits}
19
+ - Cons: {drawbacks, trade-offs}
20
+
21
+ 2. **Option B**: {Description}
22
+ - Pros: {benefits}
23
+ - Cons: {drawbacks, trade-offs}
24
+
25
+ 3. **Option C** *(if applicable)*: {Description}
26
+ - Pros: {benefits}
27
+ - Cons: {drawbacks, trade-offs}
28
+
29
+ ## Decision
30
+
31
+ **Chosen**: Option {A|B|C}
32
+
33
+ {Explain the rationale for the choice. Why does this option best satisfy the constraints and goals from the Context section?}
34
+
35
+ ## Consequences
36
+
37
+ - **Positive**: {What improves as a result of this decision}
38
+ - **Negative**: {Trade-offs and costs accepted}
39
+ - **Risks**: {Future considerations, potential issues to monitor}
40
+
41
+ ## References
42
+
43
+ - guides/harness-engineering/README.md
44
+ - {related skill or agent, e.g. .codex/skills/action-validator/SKILL.md}
45
+ - {link to issue or PR if applicable}
@@ -24,6 +24,7 @@ Routes agent management tasks to the appropriate manager agent. This skill conta
24
24
  | mgr-claude-code-bible | Claude Code spec compliance | "spec check", "verify compliance" |
25
25
  | sys-memory-keeper | Memory operations | "save memory", "recall", "memory search" |
26
26
  | sys-naggy | TODO management | "todo", "track tasks", "task list" |
27
+ | tracker-checkpoint | Pipeline checkpoint state | "pipeline resume", "checkpoint", "state restore" |
27
28
 
28
29
  ## Routing Decision (Priority Order)
29
30
 
@@ -51,6 +52,7 @@ verify → mgr-sauron
51
52
  spec → mgr-claude-code-bible
52
53
  memory → sys-memory-keeper
53
54
  todo → sys-naggy
55
+ checkpoint → tracker-checkpoint
54
56
  improve-report → omcodex:improve-report (skill invocation)
55
57
  auto-improve → omcodex:auto-improve (skill invocation)
56
58
  batch → multiple (parallel)
@@ -106,6 +108,7 @@ When command requires multiple independent operations:
106
108
  | mgr-claude-code-bible | sonnet | Spec compliance checks |
107
109
  | sys-memory-keeper | sonnet | Memory operations, search |
108
110
  | sys-naggy | haiku | Simple TODO tracking |
111
+ | tracker-checkpoint | sonnet | Pipeline state recovery |
109
112
 
110
113
  ## No Match Fallback
111
114
 
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env bash
2
+ # Verify R006 Context Fork Criteria matches actual SKILL.md frontmatter.
3
+ # Usage: bash .github/scripts/verify-fork-list.sh
4
+ set -euo pipefail
5
+
6
+ ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
7
+ RULE_FILE="${ROOT}/.codex/rules/MUST-agent-design.md"
8
+ SKILLS_DIR="${ROOT}/.codex/skills"
9
+
10
+ if [[ ! -f "${RULE_FILE}" ]]; then
11
+ echo "error: ${RULE_FILE} not found" >&2
12
+ exit 1
13
+ fi
14
+
15
+ if [[ ! -d "${SKILLS_DIR}" ]]; then
16
+ echo "error: ${SKILLS_DIR} not found" >&2
17
+ exit 1
18
+ fi
19
+
20
+ DOC_LINE="$(grep -E 'Current: [0-9]+/12 \(' "${RULE_FILE}" | head -1 || true)"
21
+
22
+ if [[ -z "${DOC_LINE}" ]]; then
23
+ echo "error: R006 Context Fork Criteria line not found" >&2
24
+ exit 1
25
+ fi
26
+
27
+ DOC_COUNT="$(printf '%s\n' "${DOC_LINE}" | sed -E 's#.*Current: ([0-9]+)/12.*#\1#')"
28
+ DOC_LIST="$(printf '%s\n' "${DOC_LINE}" | sed -E 's#.*Current: [0-9]+/12 \(([^)]*)\).*#\1#' | tr ',' '\n' | sed 's/^ *//; s/ *$//' | sort)"
29
+
30
+ ACTUAL_LIST="$(
31
+ for skill_file in "${SKILLS_DIR}"/*/SKILL.md; do
32
+ [[ -f "${skill_file}" ]] || continue
33
+ if awk '
34
+ BEGIN { in_frontmatter = 0; found = 0 }
35
+ NR == 1 && $0 == "---" { in_frontmatter = 1; next }
36
+ in_frontmatter && $0 == "---" { exit }
37
+ in_frontmatter && $0 ~ /^context:[[:space:]]*fork[[:space:]]*$/ { found = 1 }
38
+ END { exit found ? 0 : 1 }
39
+ ' "${skill_file}"; then
40
+ skill_name="$(awk '
41
+ NR == 1 && $0 == "---" { in_frontmatter = 1; next }
42
+ in_frontmatter && $0 == "---" { exit }
43
+ in_frontmatter && $0 ~ /^name:[[:space:]]*/ {
44
+ sub(/^name:[[:space:]]*/, "")
45
+ gsub(/^"|"$/, "")
46
+ print
47
+ exit
48
+ }
49
+ ' "${skill_file}")"
50
+ if [[ -z "${skill_name}" ]]; then
51
+ echo "error: context: fork skill has no frontmatter name: ${skill_file}" >&2
52
+ exit 1
53
+ fi
54
+ printf '%s\n' "${skill_name}"
55
+ fi
56
+ done | sort
57
+ )"
58
+
59
+ ACTUAL_COUNT="$(printf '%s\n' "${ACTUAL_LIST}" | sed '/^$/d' | wc -l | tr -d ' ')"
60
+ DOC_LIST_COUNT="$(printf '%s\n' "${DOC_LIST}" | sed '/^$/d' | wc -l | tr -d ' ')"
61
+
62
+ DOC_TMP="$(mktemp)"
63
+ ACTUAL_TMP="$(mktemp)"
64
+ trap 'rm -f "${DOC_TMP}" "${ACTUAL_TMP}"' EXIT
65
+
66
+ printf '%s\n' "${DOC_LIST}" | sed '/^$/d' > "${DOC_TMP}"
67
+ printf '%s\n' "${ACTUAL_LIST}" | sed '/^$/d' > "${ACTUAL_TMP}"
68
+
69
+ MISSING="$(comm -23 "${ACTUAL_TMP}" "${DOC_TMP}" || true)"
70
+ EXTRA="$(comm -13 "${ACTUAL_TMP}" "${DOC_TMP}" || true)"
71
+
72
+ echo "R006 documented count: ${DOC_COUNT}"
73
+ echo "R006 listed skills: ${DOC_LIST_COUNT}"
74
+ echo "Actual fork skill count: ${ACTUAL_COUNT}"
75
+ echo ""
76
+ echo "Actual fork skills:"
77
+ sed 's/^/ - /' "${ACTUAL_TMP}"
78
+
79
+ if [[ "${DOC_COUNT}" != "${ACTUAL_COUNT}" || "${DOC_LIST_COUNT}" != "${ACTUAL_COUNT}" || -n "${MISSING}" || -n "${EXTRA}" ]]; then
80
+ echo ""
81
+ echo "ERROR: R006 fork list drift detected"
82
+ [[ "${DOC_COUNT}" != "${ACTUAL_COUNT}" ]] && echo " - documented count ${DOC_COUNT} != actual count ${ACTUAL_COUNT}"
83
+ [[ "${DOC_LIST_COUNT}" != "${ACTUAL_COUNT}" ]] && echo " - listed skill count ${DOC_LIST_COUNT} != actual count ${ACTUAL_COUNT}"
84
+ if [[ -n "${MISSING}" ]]; then
85
+ echo " - missing from R006:"
86
+ printf '%s\n' "${MISSING}" | sed 's/^/ - /'
87
+ fi
88
+ if [[ -n "${EXTRA}" ]]; then
89
+ echo " - extra in R006:"
90
+ printf '%s\n' "${EXTRA}" | sed 's/^/ - /'
91
+ fi
92
+ echo " Fix: update Context Fork Criteria in ${RULE_FILE}"
93
+ exit 1
94
+ fi
95
+
96
+ echo ""
97
+ echo "OK: R006 fork list matches actual SKILL.md frontmatter (${ACTUAL_COUNT}/12)"
@@ -128,7 +128,7 @@ NO EXCEPTIONS. NO EXCUSES.
128
128
  project/
129
129
  +-- AGENTS.md # Entry point
130
130
  +-- .codex/
131
- | +-- agents/ # Subagent definitions (44 files)
131
+ | +-- agents/ # Subagent definitions (49 files)
132
132
  | +-- rules/ # Global rules (R000-R020)
133
133
  | +-- hooks/ # Hook scripts (security, validation, HUD)
134
134
  | +-- contexts/ # Context files (ecomode)
@@ -164,17 +164,18 @@ This is the core oh-my-customcodex philosophy: **"No expert? CREATE one, connect
164
164
  |------|-------|--------|
165
165
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
166
166
  | SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
167
- | SW Engineer/Frontend | 4 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent |
167
+ | SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
168
168
  | SW Engineer/Tooling | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
169
169
  | DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
170
- | SW Engineer/Database | 3 | db-supabase-expert, db-postgres-expert, db-redis-expert |
170
+ | SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
171
171
  | Security | 1 | sec-codeql-expert |
172
172
  | SW Architect | 2 | arch-documenter, arch-speckit-agent |
173
173
  | Infra Engineer | 2 | infra-docker-expert, infra-aws-expert |
174
174
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
175
175
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
176
- | System | 2 | sys-memory-keeper, sys-naggy |
177
- | **Total** | **44** | |
176
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
177
+ | Auxiliary | 2 | slack-cli-expert, wiki-curator |
178
+ | **Total** | **49** | |
178
179
 
179
180
  ## Agent Teams (MUST when enabled)
180
181
 
@@ -128,7 +128,7 @@ oh-my-customcodex로 구동됩니다.
128
128
  project/
129
129
  +-- AGENTS.md # 진입점
130
130
  +-- .codex/
131
- | +-- agents/ # 서브에이전트 정의 (44 파일)
131
+ | +-- agents/ # 서브에이전트 정의 (49 파일)
132
132
  | +-- rules/ # 전역 규칙 (R000-R020)
133
133
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
134
134
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
@@ -164,17 +164,18 @@ project/
164
164
  |------|------|----------|
165
165
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
166
166
  | SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
167
- | SW Engineer/Frontend | 4 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent |
167
+ | SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
168
168
  | SW Engineer/Tooling | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
169
169
  | DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
170
- | SW Engineer/Database | 3 | db-supabase-expert, db-postgres-expert, db-redis-expert |
170
+ | SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
171
171
  | Security | 1 | sec-codeql-expert |
172
172
  | SW Architect | 2 | arch-documenter, arch-speckit-agent |
173
173
  | Infra Engineer | 2 | infra-docker-expert, infra-aws-expert |
174
174
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
175
175
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
176
- | System | 2 | sys-memory-keeper, sys-naggy |
177
- | **총계** | **44** | |
176
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
177
+ | Auxiliary | 2 | slack-cli-expert, wiki-curator |
178
+ | **총계** | **49** | |
178
179
 
179
180
  ## Agent Teams (MUST when enabled)
180
181
 
@@ -114,7 +114,7 @@ oh-my-customcodex로 구동됩니다.
114
114
  project/
115
115
  +-- AGENTS.md # 진입점
116
116
  +-- .codex/
117
- | +-- agents/ # 서브에이전트 정의 (48 파일)
117
+ | +-- agents/ # 서브에이전트 정의 (49 파일)
118
118
  | +-- rules/ # 전역 규칙 (R000-R022)
119
119
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
120
120
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
@@ -166,7 +166,7 @@ oh-my-customcodex는 소프트웨어 컴파일과 동일한 구조를 따릅니
166
166
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
167
167
  | SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
168
168
  | SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
169
- | SW Engineer/Tooling | 4 | tool-npm-expert, tool-optimizer, tool-bun-expert, slack-cli-expert |
169
+ | SW Engineer/Tooling | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
170
170
  | DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
171
171
  | SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
172
172
  | Security | 1 | sec-codeql-expert |
@@ -174,8 +174,9 @@ oh-my-customcodex는 소프트웨어 컴파일과 동일한 구조를 따릅니
174
174
  | Infra Engineer | 2 | infra-docker-expert, infra-aws-expert |
175
175
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
176
176
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
177
- | System | 3 | sys-memory-keeper, sys-naggy, wiki-curator |
178
- | **총계** | **48** | |
177
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
178
+ | Auxiliary | 2 | slack-cli-expert, wiki-curator |
179
+ | **총계** | **49** | |
179
180
 
180
181
  ## Agent Teams (MUST when enabled)
181
182
 
@@ -131,7 +131,7 @@ NO EXCEPTIONS. NO EXCUSES.
131
131
  project/
132
132
  +-- AGENTS.md # Entry point
133
133
  +-- .codex/
134
- | +-- agents/ # Subagent definitions (48 files)
134
+ | +-- agents/ # Subagent definitions (49 files)
135
135
  | +-- skills/ # Skills (109 directories)
136
136
  | +-- rules/ # Global rules (22 files)
137
137
  | +-- hooks/ # Hook scripts (security, validation, HUD)
@@ -167,7 +167,7 @@ This is the core oh-my-customcodex philosophy: **"No expert? CREATE one, connect
167
167
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
168
168
  | SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
169
169
  | SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
170
- | SW Engineer/Tooling | 4 | tool-npm-expert, tool-optimizer, tool-bun-expert, slack-cli-expert |
170
+ | SW Engineer/Tooling | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
171
171
  | DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
172
172
  | SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
173
173
  | Security | 1 | sec-codeql-expert |
@@ -175,8 +175,9 @@ This is the core oh-my-customcodex philosophy: **"No expert? CREATE one, connect
175
175
  | Infra Engineer | 2 | infra-docker-expert, infra-aws-expert |
176
176
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
177
177
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
178
- | System | 3 | sys-memory-keeper, sys-naggy, wiki-curator |
179
- | **Total** | **48** | |
178
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
179
+ | Auxiliary | 2 | slack-cli-expert, wiki-curator |
180
+ | **Total** | **49** | |
180
181
 
181
182
  ## Agent Teams (MUST when enabled)
182
183
 
@@ -131,7 +131,7 @@ oh-my-customcodex로 구동됩니다.
131
131
  project/
132
132
  +-- AGENTS.md # 진입점
133
133
  +-- .codex/
134
- | +-- agents/ # 서브에이전트 정의 (48 파일)
134
+ | +-- agents/ # 서브에이전트 정의 (49 파일)
135
135
  | +-- skills/ # 스킬 (109 디렉토리)
136
136
  | +-- rules/ # 전역 규칙 (22 파일)
137
137
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
@@ -167,7 +167,7 @@ project/
167
167
  | SW Engineer/Language | 6 | lang-golang-expert, lang-python-expert, lang-rust-expert, lang-kotlin-expert, lang-typescript-expert, lang-java21-expert |
168
168
  | SW Engineer/Backend | 6 | be-fastapi-expert, be-springboot-expert, be-go-backend-expert, be-express-expert, be-nestjs-expert, be-django-expert |
169
169
  | SW Engineer/Frontend | 5 | fe-vercel-agent, fe-vuejs-agent, fe-svelte-agent, fe-flutter-agent, fe-design-expert |
170
- | SW Engineer/Tooling | 4 | tool-npm-expert, tool-optimizer, tool-bun-expert, slack-cli-expert |
170
+ | SW Engineer/Tooling | 3 | tool-npm-expert, tool-optimizer, tool-bun-expert |
171
171
  | DE Engineer | 6 | de-airflow-expert, de-dbt-expert, de-spark-expert, de-kafka-expert, de-snowflake-expert, de-pipeline-expert |
172
172
  | SW Engineer/Database | 4 | db-supabase-expert, db-postgres-expert, db-redis-expert, db-alembic-expert |
173
173
  | Security | 1 | sec-codeql-expert |
@@ -175,8 +175,9 @@ project/
175
175
  | Infra Engineer | 2 | infra-docker-expert, infra-aws-expert |
176
176
  | QA Team | 3 | qa-planner, qa-writer, qa-engineer |
177
177
  | Manager | 6 | mgr-creator, mgr-updater, mgr-supplier, mgr-gitnerd, mgr-sauron, mgr-claude-code-bible |
178
- | System | 3 | sys-memory-keeper, sys-naggy, wiki-curator |
179
- | **총계** | **48** | |
178
+ | System | 3 | sys-memory-keeper, sys-naggy, tracker-checkpoint |
179
+ | Auxiliary | 2 | slack-cli-expert, wiki-curator |
180
+ | **총계** | **49** | |
180
181
 
181
182
  ## Agent Teams (MUST when enabled)
182
183
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.3.9",
3
- "lastUpdated": "2026-04-24T08:45:48.000Z",
2
+ "version": "0.4.0",
3
+ "lastUpdated": "2026-04-24T14:35:00.000Z",
4
4
  "components": [
5
5
  {
6
6
  "name": "rules",
@@ -12,7 +12,7 @@
12
12
  "name": "agents",
13
13
  "path": ".codex/agents",
14
14
  "description": "AI agent definitions (flat .md files with prefixes)",
15
- "files": 48
15
+ "files": 49
16
16
  },
17
17
  {
18
18
  "name": "skills",
@@ -29,7 +29,13 @@ steps:
29
29
  foreach: release-group
30
30
 
31
31
  - name: implement
32
- prompt: "Execute implementation plan with appropriate agents"
32
+ prompt: |
33
+ Execute implementation plan with appropriate agents.
34
+
35
+ Codex-native sensitive-path policy:
36
+ - Codex-managed `.codex/` edits use the normal edit/patch flow.
37
+ - Do not adopt upstream Claude-only `/tmp` bypass guidance as the default path.
38
+ - If a port requires `.claude` template parity changes, make the change explicit and verify sensitive-path guard tests.
33
39
  description: Execute implementation plan with appropriate agents
34
40
  foreach: planned-issue
35
41