oh-my-customcodex 0.5.12 → 0.5.14

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
- 50 agents. 120 skills. 22 rules. One command.
16
+ 50 agents. 121 skills. 22 rules. One command.
17
17
 
18
18
  ```bash
19
19
  npm install -g oh-my-customcodex && cd your-project && omcustomcodex init
@@ -135,7 +135,7 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
135
135
 
136
136
  ---
137
137
 
138
- ### Skills (120)
138
+ ### Skills (121)
139
139
 
140
140
  | Category | Count | Includes |
141
141
  |----------|-------|----------|
@@ -288,7 +288,7 @@ your-project/
288
288
  │ ├── contexts/ # 4 shared context files
289
289
  │ └── ontology/ # Knowledge graph for RAG
290
290
  ├── .agents/
291
- │ └── skills/ # 120 installed skill modules
291
+ │ └── skills/ # 121 installed skill modules
292
292
  └── guides/ # 51 reference documents
293
293
  ```
294
294
 
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.5.12",
3094
+ version: "0.5.14",
3095
3095
  requiresCC: ">=2.1.121",
3096
3096
  claudeCode: {
3097
3097
  minimumVersion: "2.1.121",
package/dist/index.js CHANGED
@@ -2316,7 +2316,7 @@ var package_default = {
2316
2316
  workspaces: [
2317
2317
  "packages/*"
2318
2318
  ],
2319
- version: "0.5.12",
2319
+ version: "0.5.14",
2320
2320
  requiresCC: ">=2.1.121",
2321
2321
  claudeCode: {
2322
2322
  minimumVersion: "2.1.121",
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.5.12",
6
+ "version": "0.5.14",
7
7
  "requiresCC": ">=2.1.121",
8
8
  "claudeCode": {
9
9
  "minimumVersion": "2.1.121",
@@ -110,7 +110,7 @@
110
110
  "command": "bash .codex/hooks/scripts/rtk-intercept.sh"
111
111
  }
112
112
  ],
113
- "description": "RTK auto-intercept — transparently rewrites CLI commands through RTK proxy when available (R015 advisory)"
113
+ "description": "RTK auto-intercept — transparently rewrites CLI commands through RTK proxy when available (R013 advisory)"
114
114
  },
115
115
  {
116
116
  "matcher": "tool == \"Bash\" && tool_input.command matches \"(rm|git rm|mv|unlink|codex/rules)\"",
@@ -75,6 +75,17 @@ disableSkillShellExecution: true # Disable inline shell execution in skills (v2
75
75
  Agent frontmatter `hooks:` fire when the agent runs as a main-thread agent via `--agent` flag in v2.1.116+. Hook JSON output `terminalSequence` field for desktop notifications, window title changes, and terminal bells without controlling terminal added in v2.1.141+. `claude agents --cwd <path>` for directory-scoped session lists added in v2.1.141+. Background agents launched via `/bg` preserve current permission mode in v2.1.141+. `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` and `ANTHROPIC_WORKSPACE_ID` environment variables added in v2.1.141+ for HTTPS plugin clones and workspace-scoped federation.
76
76
  -->
77
77
 
78
+ <!-- DETAIL: Claude Compatibility Notes for Packaged `.claude` Templates
79
+ This Codex port ships `.claude` compatibility templates. When updating those templates, account for recent Claude Code behavior even though the active runtime surface is Codex/OMX:
80
+
81
+ - v2.1.159: no user-facing template action required (internal infrastructure release).
82
+ - v2.1.160: `acceptEdits` prompts for build-tool config writes; grep/egrep/fgrep of a single file can satisfy read-before-edit in Claude Code, but Codex agents should still follow the active Codex read/edit policy.
83
+ - v2.1.161: independent parallel tool calls no longer cancel siblings when one Bash call fails; this supports R009 same-message batching for independent work.
84
+ - v2.1.162: `claude agents --json` includes waiting/blocker metadata and explicit `--tools Grep/Glob` behavior is fixed; compatibility prompts may use those fields when diagnosing stuck Claude sessions.
85
+ - v2.1.163: managed `requiredMinimumVersion`/`requiredMaximumVersion`, `/plugin list`, Stop/SubagentStop `hookSpecificOutput.additionalContext`, and skill command literal `\$` escaping are available. Hook/skill template changes should preserve these affordances.
86
+ - v2.1.165: bug-fix/reliability release; no local template change required beyond compatibility confirmation.
87
+ -->
88
+
78
89
  ## Hook Event Types
79
90
 
80
91
  27 event types documented: SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, Notification, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, PostMessage, SessionEnd. 4 handler types: command, prompt, http, agent. See full reference table via Read tool.
@@ -48,6 +48,20 @@ Quick rule: explicit user preference for plain subagents wins. Otherwise use Tea
48
48
  7. Otherwise, use Agent Teams when collaboration or shared state has material value.
49
49
  -->
50
50
 
51
+ ## Gate Transparency
52
+
53
+ For 3+ agent dispatches, announce the R018 gate result before spawning (Agent Tool fallback reason or Agent Teams choice).
54
+
55
+ <!-- DETAIL: Gate Transparency
56
+ When the R018 gate resolves to standalone Agent Tool for a 3+ agent dispatch (for example mechanical disjoint-file editing with no review loop), announce the gate result in one line before spawning: `R018 gate: 3 disjoint-file domains, no review loop → Agent Tool fallback`. Silently selecting Agent Tool on a 3+ agent batch loses the gate-evaluation audit trail.
57
+
58
+ | Anti-pattern | Required |
59
+ |--------------|----------|
60
+ | 3+ 에이전트 병렬 스폰 announce에 게이트 평가 결과 누락 | 스폰 전 한 줄로 Agent Tool 폴백 사유 또는 Agent Teams 선택 사유 명시 |
61
+
62
+ Origin: #1464.
63
+ -->
64
+
51
65
  ## Spawn Completeness
52
66
 
53
67
  Spawn all members for a parallel team slice in one message; partial/sequential spawning needs correction.
@@ -67,6 +67,29 @@ Parallel batches return results together, so a same-batch permanent dispatch pro
67
67
 
68
68
  Example: do not diagnose `triage-dispatch.yml` from memory, create an issue, and delegate a fix in the same parallel call before reading the workflow. If the read later shows a different root cause, the issue, PR, and commit trail become correction debt even when the eventual code direction is acceptable.
69
69
 
70
+ ## Degraded-Output Re-Verification Gate
71
+
72
+ When tool output shows provider instability, buffering, truncation, duplicated chunks, `529`, timeout recovery, or `(no result)` while a permanent action is being considered, treat the current read as degraded. Do not characterize corruption, missing files, stale state, release failure, or data loss from that single degraded read.
73
+
74
+ Before destructive recovery, issue creation, rule/workflow/template edits, release publication, or fix delegation based on degraded output:
75
+
76
+ 1. Re-read the authoritative source with a deterministic command or API call.
77
+ 2. Use a second narrow check that can falsify the failure hypothesis, such as `grep -c`, `sort -u`, `git status`, `git show`, `gh api`, or a direct file diff.
78
+ 3. Record whether the first read was degraded and whether the re-check confirmed or corrected the hypothesis.
79
+
80
+ If the deterministic re-check cannot run, halt or reduce the action to a non-destructive diagnostic note.
81
+
82
+ ## Workflow Script Sanity Check
83
+
84
+ Before invoking or registering generated workflow code, run a Tier-1 sanity pass:
85
+
86
+ 1. Search for unresolved placeholders, malformed identifiers, and known dead-line patterns.
87
+ 2. Assemble the exact script body before execution; do not concatenate facts or guardrails after the call starts.
88
+ 3. Run the language parser or the narrowest no-side-effect syntax check available.
89
+ 4. If syntax validation is unavailable, read the generated body back and perform a focused self-review before launch.
90
+
91
+ This check is mandatory for workflow scripts that will run automation, mutate GitHub state, or gate a release.
92
+
70
93
  ## Test-Skip Is Not Completion
71
94
 
72
95
  Skipping tests, lowering coverage thresholds, narrowing the test command, or marking suites as TODO may be a temporary containment step, but it never satisfies completion by itself.
@@ -51,6 +51,18 @@ When repeating agent failures or suboptimal routing is detected:
51
51
 
52
52
  This connects R016's continuous improvement loop with the adaptive-harness skill's learning capability.
53
53
 
54
+ ## Skill Promotion Threshold
55
+
56
+ Promote a recurring workflow into a skill only when the evidence is strong enough to justify a durable interface.
57
+
58
+ | Evidence | Action |
59
+ |----------|--------|
60
+ | One clear occurrence | Record memory or issue; do not create a skill by default |
61
+ | Two direct successful repetitions with stable inputs/outputs | Candidate for `skill-extractor` Phase 1 shortlist |
62
+ | Three or more direct repetitions, or two repetitions plus explicit user confirmation | Confirmed promotion candidate |
63
+
64
+ Before creating a new skill, verify the candidate is not already covered by an existing skill, rule, guide, hook, or lightweight memory entry. Ambiguous, sensitive, one-off, or ownership-unclear candidates are explicitly skipped with a reason.
65
+
54
66
  ## External Repository Contribution Pre-Check
55
67
 
56
68
  Before creating or modifying assets for an external repository or upstream contribution target, inspect that repository's local contract before implementing:
@@ -248,6 +248,19 @@ Known limitation: `arch-documenter` has `disallowedTools: [Bash]`. Do not ask it
248
248
 
249
249
  The `agent-capability-precheck.sh` hook blocks obvious mismatches so the orchestrator re-routes before spawning an agent that cannot execute the requested work.
250
250
 
251
+ ### Delegated Path Existence Pre-Check
252
+
253
+ Before putting concrete file paths in a delegated prompt, verify those paths exist or explicitly mark them as new files. A tool-capability match is insufficient when the prompt names a path.
254
+
255
+ Required check:
256
+
257
+ 1. Use `rg --files`, `find`, `ls`, or the repository index to prove each existing path.
258
+ 2. If a path is missing, locate the current equivalent before delegating.
259
+ 3. Include only verified paths in the prompt, or say `create new file: <path>` when creation is intended.
260
+ 4. For multi-copy assets, verify all source/template mirrors before assigning the edit. If the copies are expected to match, check content identity (`cmp`, checksum, or `diff -q`) before delegation; if they intentionally differ, document the canonical source and drift rationale in the prompt.
261
+
262
+ Do not rely on the delegate to repair stale path guesses in shared workflow, rule, guide, or release tasks.
263
+
251
264
  <!-- DETAIL: Autonomous Execution Mode
252
265
 
253
266
  ## Autonomous Execution Mode
@@ -30,15 +30,21 @@ Before writing/editing multiple files:
30
30
  1. Are files independent? → YES: spawn parallel agents
31
31
  2. Using Write/Edit sequentially for 2+ files? → parallelize instead
32
32
  3. Specialized agent available? → Use it (not general-purpose)
33
- 4. Agent Teams available? → **Check R018 criteria before spawning 2+ agents**
33
+ 4. Agent Teams available? → **Check R018 criteria before spawning 2+ agents; announce 3+ agent gate result**
34
34
  5. Running agent stalled (2x+ duration)? → Spawn independent follow-up tasks immediately
35
+ 6. Parallel dispatch announced? → put all announced tool calls in the same message
35
36
 
36
37
  ### Common Violations to Avoid
37
38
 
39
+ <!-- DETAIL: Common Violations Short Examples
38
40
  ```
39
41
  ❌ WRONG: Write(file1.kt) → Write(file2.kt) → ... (sequential)
40
42
  ✓ CORRECT: Agent(agent1→file1.kt) + Agent(agent2→file2.kt) + ... (same message, parallel)
43
+
44
+ ❌ WRONG: Announce "milestone 생성 + 구조 확인 병렬" but dispatch only one tool; run the other next turn (announce-execution mismatch)
45
+ ✓ CORRECT: When announcing N parallel tools, include ALL N tool calls in the SAME message as the announcement
41
46
  ```
47
+ -->
42
48
 
43
49
  <!-- DETAIL: Full violation examples (4 pairs)
44
50
  ❌ WRONG: Writing files one by one
@@ -58,6 +64,10 @@ Before writing/editing multiple files:
58
64
 
59
65
  > **Agent Teams partial spawn** → See R018 (MUST-agent-teams.md) "Spawn Completeness Check".
60
66
 
67
+ <!-- DETAIL: v2.1.161 compatibility
68
+ Claude Code parallel tool calls in a single batch are independent — one failed Bash command no longer cancels sibling calls. This lowers the safety cost of R009 announce-execution consistency for independent work.
69
+ -->
70
+
61
71
  ## Execution Rules
62
72
 
63
73
  | Rule | Detail |
@@ -285,6 +285,30 @@ User Model data feeds into intent-detection (R015) and routing skill confidence
285
285
 
286
286
  -->
287
287
 
288
+ <!-- DETAIL: Attention-Weight Memory Tiering
289
+ > Origin: #1450 (Dual-Brain scout:internalize partial port — attention-weight tiering only)
290
+
291
+ Memory entries are managed across two orthogonal axes: confidence and attention weight. Confidence answers “how verified is this?”; attention weight answers “how frequently/recently should this be loaded?”.
292
+
293
+ | Axis | Tag example | Meaning |
294
+ |------|-------------|---------|
295
+ | Confidence | `[confidence: high/medium/low]` | Verification level |
296
+ | Attention Weight | `[tier: hot/warm/cold/archived]` | Loading priority and recency/frequency |
297
+
298
+ ### 4-tier policy
299
+
300
+ | Tier | Meaning | Handling |
301
+ |------|---------|----------|
302
+ | Hot | Active current-session patterns | Keep near the top of MEMORY.md / active recall |
303
+ | Warm | Recently relevant patterns | Keep in MEMORY.md after Hot entries |
304
+ | Cold | Rarely referenced but still useful | Move to an archive/index when memory budget is tight |
305
+ | Archived | Long-inactive or superseded | Keep only an index/reference unless explicitly recalled |
306
+
307
+ Promotion happens when an entry is referenced or re-verified. Demotion happens during session-end memory maintenance when an entry has not been referenced across recent sessions. `[permanent]` entries are exempt from automatic demotion.
308
+
309
+ Budget rule: when approaching the MEMORY.md 200-line prompt budget, prune/archive Cold entries first, then low-confidence Warm entries. Hot entries should remain available unless contradicted by evidence.
310
+ -->
311
+
288
312
  ## Mid-Session Immediate Save
289
313
 
290
314
  Save memory IMMEDIATELY upon surprising discovery — do not defer to session end.
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: homework
3
+ description: On explicit /homework invocation, analyze the current and linked previous sessions, extract mistakes (찐빠), and report them via omcustomcodex:feedback with a confirmation gate. Auto-activation on session cleanup/session-end signals is OPT-IN (default OFF) — requires an explicit project/user directive. Use when explicitly auditing recent work for harness gaps.
4
+ scope: harness
5
+ user-invocable: true
6
+ argument-hint: "[--dry-run] [--days <n>] [--severity <critical|high|medium|low>]"
7
+ version: 0.1.0
8
+ effort: medium
9
+ ---
10
+
11
+ # Homework — Session Mistake Extractor
12
+
13
+ > Codex port: use this as the project-local `homework` skill. Reporting routes through `omcustomcodex:feedback`; dry-run writes under `.codex/outputs/`.
14
+
15
+ On session cleanup ("세션 정리") or `/homework` invocation, analyze the current and linked previous sessions to extract 찐빠 (mistakes: rule violations, scope-creep, hallucinations, premature hypotheses, missed conventions, etc.), then report findings via `omcustomcodex:feedback` with a mandatory user confirmation gate.
16
+
17
+ This skill is the dedicated entry point for R011's "Session-End Retrospective Feedback (Model-Drafted)" pattern. It formalizes the retrospective workflow that produced issue #1266.
18
+
19
+ ## Usage
20
+
21
+ ```
22
+ /homework # Analyze current session, report findings
23
+ /homework --dry-run # Analyze only, no omcustomcodex:feedback invocation
24
+ /homework --days 3 # Include linked sessions from last N days
25
+ /homework --severity high # Filter to critical/high findings only
26
+ ```
27
+
28
+ ## Trigger Detection
29
+
30
+ **Default: OFF for auto-activation.** This skill does NOT auto-run on session cleanup or session-end signals unless explicitly enabled. The default is `false` — silence is a non-trigger.
31
+
32
+ Activate ONLY when:
33
+ - **Explicit `/homework` invocation** (always runs)
34
+ - **Explicit opt-in**: the user/project has explicitly directed homework to run on session cleanup — e.g., a AGENTS.md directive such as "run homework on every session cleanup", or a settings flag. A one-off explicit request ("회고 돌려줘", "homework 실행") also counts.
35
+
36
+ If no explicit opt-in exists, treat session-cleanup / session-end phrases ("세션 정리", "숙제", "회고", "끝", "종료", "마무리", "done", "wrap up", "session cleanup", "end session") as **NON-triggers** — do NOT auto-run. You MAY briefly remind the user that `/homework` is available, then proceed with normal session-end handling.
37
+
38
+ When auto-activation IS explicitly enabled and fires as a session-end signal, this skill runs BEFORE memory-save's MEMORY.md update (R011 session-end self-check order: homework → memory save).
39
+
40
+ ## Workflow
41
+
42
+ ### Phase 1: Trigger Parsing
43
+
44
+ Parse arguments:
45
+ - `--dry-run`: analyze only, skip Phase 5 (omcustomcodex:feedback invocation)
46
+ - `--days <n>`: extend linked-session search to last N days (default: 0 = current session only)
47
+ - `--severity <level>`: filter output to this severity and above (default: all)
48
+
49
+ ### Phase 2: Session Gathering
50
+
51
+ #### 2a. Current Session Transcript
52
+
53
+ Attempt deterministic transcript extraction. Preferred sources (in order):
54
+
55
+ 1. **Grep for rule-violation markers** in the current conversation context:
56
+ - Safety classifier trip signals: `[Safety]`, `[R001]`, `[Warning]`, classifier denial messages
57
+ - Self-corrections: "sorry", "I made an error", "let me correct", "이전 답변 수정", "죄송합니다"
58
+ - Premature hypothesis signals: "I assume", "probably", "should be" followed by a contradiction in a later turn
59
+ - Interrupt + re-plan events: user corrections, "no", "wrong", "다시", "아니"
60
+
61
+ 2. **Transcript files** (Codex session JSONL):
62
+ ```bash
63
+ find ~/.codex/sessions -name "session-*.jsonl" -newer "$(date -v-1d +%Y-%m-%dT00:00:00)" 2>/dev/null | head -5
64
+ ```
65
+ Parse `type: "error"`, `type: "correction"`, `type: "feedback"` events.
66
+
67
+ 3. **Fallback**: Rely on the model's recall of the current conversation (impressionistic, lower confidence — mark findings as `[recall]` not `[transcript]`).
68
+
69
+ #### 2b. Linked Previous Sessions (when `--days` > 0)
70
+
71
+ Use the `episodic-memory` plugin's `search-conversations` / `episodic-memory:remembering-conversations` to retrieve sessions from the last N days linked to this project. Pass project directory as context.
72
+
73
+ If `episodic-memory` is unavailable, scan JSONL files:
74
+ ```bash
75
+ find ~/.codex/sessions -name "session-*.jsonl" \
76
+ -newer "$(date -v-${DAYS}d +%Y-%m-%dT00:00:00)" 2>/dev/null
77
+ ```
78
+
79
+ **R020 read-before-characterize**: Do NOT characterize a session's mistakes before reading it. Read the session transcript (or a representative sample) first, then characterize.
80
+
81
+ ### Phase 3: Mistake (찐빠) Analysis
82
+
83
+ Categorize each finding with the following structure (mirror #1266 format):
84
+
85
+ ```
86
+ 찐빠 #N — [{severity}] {short title}
87
+ ├── 증상: {what was observed — cite evidence: session line ref or commit SHA}
88
+ ├── 근거: {transcript evidence or recall note — always read first per R020}
89
+ ├── 원인: {root cause — why did this happen?}
90
+ ├── 영향 규칙: {R0xx, R0yy — affected rule IDs}
91
+ └── 제안: {concrete corrective action or harness change}
92
+ ```
93
+
94
+ **Severity scale:**
95
+
96
+ | Level | Criteria | Examples |
97
+ |-------|----------|---------|
98
+ | Critical | Safety classifier trip, credential exposure, scope-creep into privileged domains, working-tree loss | R001 violation, secret dump, unauthorized infra action |
99
+ | High | Rule violation with downstream impact, hallucinated fact acted upon, premature hypothesis causing permanent change | R020 Parallel Read+Change, wrong root cause → wrong fix |
100
+ | Medium | Process gap, missed convention, advisory rule ignored | R007 header missing, bypassPermissions omitted, count sync missed |
101
+ | Low | Minor style drift, non-impactful oversight | honorific regression, ecomode token waste |
102
+
103
+ **Mistake categories to look for:**
104
+
105
+ | Category | Signals |
106
+ |----------|---------|
107
+ | Rule violations (R0xx) | Header missing (R007), tool prefix absent (R008), file write by orchestrator (R010), sequential when parallel required (R009) |
108
+ | Scope-creep | Subagent task expanding beyond its named scope (R010 Subagent Scope-Creep STOP Protocol) |
109
+ | Hallucinated facts | External UI fields stated as fact (R003 Unverifiable External Product UI), in-cluster hostnames, unverified URLs |
110
+ | Premature hypotheses | Diagnosis before reading evidence (R020 Read-Before-Characterize), parallel Read+permanent-change dispatch (R020 Variant) |
111
+ | Missed conventions | Count sync drift (3-way sync), template mirror omitted, bypassPermissions missing |
112
+ | Over-claim completion | [Done] without verification (R020), test-skip masking failures |
113
+
114
+ **Do NOT over-claim.** If evidence for a finding is weak or based on recall only, mark it `[recall, low-confidence]` and note what would be needed to confirm it. R020 read-before-characterize applies to this analysis itself.
115
+
116
+ ### Phase 4: Draft Feedback Issue
117
+
118
+ Assemble a feedback issue in Korean using the #1266 format:
119
+
120
+ ```markdown
121
+ **제목**: 세션 회고: {date} 세션 찐빠 {N}건 — {top finding title}
122
+
123
+ **카테고리**: improvement
124
+
125
+ **본문**:
126
+ ## 세션 회고 — {YYYY-MM-DD}
127
+
128
+ ### 개요
129
+ 총 {N}건의 찐빠가 발견되었습니다 (Critical: {c}, High: {h}, Medium: {m}, Low: {l}).
130
+
131
+ ### 찐빠 목록
132
+
133
+ {찐빠 #1 ~ #N — structured format from Phase 3}
134
+
135
+ ### 하네스 제안 (있는 경우)
136
+ {Concrete skill/rule/hook changes that would prevent recurrence}
137
+
138
+ ---
139
+ *Generated by `/homework` skill (v0.1.0)*
140
+ ```
141
+
142
+ If `--severity` filter is active, include only findings at or above the threshold. Note the filter in the issue body.
143
+
144
+ If no findings are discovered, output:
145
+ ```
146
+ [homework] 이번 세션에서 찐빠를 발견하지 못했습니다. (세션 정상 종료)
147
+ ```
148
+ and skip Phase 5.
149
+
150
+ ### Phase 5: Report via omcustomcodex:feedback (Phase 4A gate)
151
+
152
+ **MUST go through the `omcustomcodex:feedback` skill's Phase 4A preview + confirmation gate.**
153
+ **NEVER auto-submit.** User approval is always required before any GitHub issue is created.
154
+
155
+ Invoke the `omcustomcodex:feedback` skill with the drafted issue content. The user will see a preview and must confirm before any GitHub issue is created.
156
+
157
+ ```
158
+ [homework] 피드백 이슈 초안을 omcustomcodex:feedback으로 전달합니다.
159
+ 아래 미리보기를 확인하고 제출 여부를 결정해 주세요.
160
+ ```
161
+
162
+ If `--dry-run` is active, skip this phase and output the draft directly to the conversation instead.
163
+
164
+ ### Phase 6: Output Summary
165
+
166
+ ```
167
+ [homework] 완료
168
+ ├── 분석: {N}건 찐빠 발견 (Critical: {c}, High: {h}, Medium: {m}, Low: {l})
169
+ ├── 제출: {이슈 URL | dry-run (미제출) | 사용자 취소}
170
+ └── 다음 액션: {harness 제안 있으면 표시, 없으면 "없음"}
171
+ ```
172
+
173
+ ## Options Reference
174
+
175
+ | Option | Default | Description |
176
+ |--------|---------|-------------|
177
+ | `--dry-run` | off | Analyze only, no omcustomcodex:feedback invocation |
178
+ | `--days <n>` | 0 | Include linked sessions from last N days (0 = current session only) |
179
+ | `--severity <level>` | all | Filter findings to this level and above |
180
+
181
+ ## Rules & Cross-References
182
+
183
+ | Rule | Relevance |
184
+ |------|-----------|
185
+ | R011 (SHOULD-memory-integration) | This skill is the dedicated entry point for "Session-End Retrospective Feedback (Model-Drafted)". Runs before memory-save MEMORY.md update. |
186
+ | R020 (MUST-completion-verification) | Analysis MUST read transcript evidence before characterizing a mistake. Do NOT characterize before reading (Read-Before-Characterize). Parallel Read + Permanent-Change Dispatch anti-pattern applies here too. |
187
+ | R016 (MUST-continuous-improvement) | Genuine defects/process gaps → feedback issue. The /homework output feeds R016's continuous improvement loop. |
188
+ | R010 (MUST-orchestrator-coordination) | Any file writes in this workflow must be delegated to subagents. This skill orchestrates, never directly writes except to `.codex/outputs/`. |
189
+ | R001 (MUST-safety) | Analysis must not dump credential values, secrets, or PII. Reference sensitive items by name only. |
190
+
191
+ ## Related Skills
192
+
193
+ | Skill | Relationship |
194
+ |-------|-------------|
195
+ | `omcustomcodex:feedback` | Reporting channel (Phase 5). Model-invocable with Phase 4A confirmation gate. |
196
+ | `instinct-extractor` | Cross-session failure-pattern mining (complements /homework's single-session focus). For multi-session patterns, run instinct-extractor after homework. |
197
+ | `episodic-memory:search-conversations` | Cross-session retrieval for `--days` mode. |
198
+ | `memory-save` | Runs after /homework at session end when the project opts into that order (R011 order: homework → memory save). |
199
+
200
+ ## Artifact Output
201
+
202
+ ```
203
+ .codex/outputs/sessions/{YYYY-MM-DD}/homework-{HHmmss}.md
204
+ ```
205
+
206
+ If Phase 5 is skipped (`--dry-run`), the draft issue body is written to this artifact path for reference.
207
+
208
+ ## Permission Mode Note
209
+
210
+ This skill does not spawn subagents directly. If future versions delegate analysis to subagents, ALL Agent tool calls MUST include `mode: "bypassPermissions"` per R010 Universal bypassPermissions.
211
+
212
+ ## Context Fork Note
213
+
214
+ This skill does NOT use `context: fork`. The fork cap is at 10/12; homework is a single-agent orchestration skill and does not require a forked context.
215
+
216
+ ## Limitations
217
+
218
+ - **Transcript availability**: Codex session JSONL schema may change; Phase 2a source (1) grep is more resilient than JSONL parsing.
219
+ - **Recall accuracy**: When transcript files are unavailable, findings are marked `[recall]` and confidence is lower.
220
+ - **episodic-memory dependency**: `--days` mode degrades gracefully when the plugin is unavailable (falls back to JSONL scan).
221
+ - **Scope**: This skill analyzes session behavior, not code quality. For code-quality retrospectives, use `dev-review` or `adversarial-review`.
@@ -41,6 +41,17 @@ Find repeated operator or agent behavior that should become a rule, skill, guide
41
41
  4. Assign confidence and cite concrete files, commits, or artifacts.
42
42
  5. Emit proposals only; do not create new rules or skills without an explicit follow-up task.
43
43
 
44
+ ## Selection Discipline
45
+
46
+ Before emitting a reusable-asset proposal, apply these filters:
47
+
48
+ - **Duplicate check**: search existing skills, rules, guides, hooks, and memory entries for equivalent behavior. Prefer extending the existing asset.
49
+ - **Skip filter**: explicitly skip ambiguous, sensitive, one-off, or ownership-unclear candidates.
50
+ - **Stable interface check**: require stable trigger, input, output, and verification evidence before recommending a skill.
51
+ - **Frequency check**: one occurrence is memory/issue material; two direct repetitions can enter a shortlist; three or more direct repetitions or explicit user confirmation can justify promotion.
52
+
53
+ When a candidate is skipped, include the skip reason so future extraction runs do not re-open the same weak proposal without new evidence.
54
+
44
55
  ## Output
45
56
 
46
57
  ```text
@@ -24,6 +24,14 @@ source:
24
24
 
25
25
  ## Behavior
26
26
 
27
+ ## Workflow File Locations
28
+
29
+ `workflows/*.yaml` is the Codex pipeline invocation surface used by `/pipeline <name>` in this repository. `templates/workflows/*.yaml` is its packaged template mirror and must remain content-identical.
30
+
31
+ `.codex/skills/pipeline/workflows/*.yaml` is a skill-local reference copy retained for compatibility with older skill bundles and detailed examples. It is not the primary repo-root invocation surface unless a runtime explicitly resolves workflows relative to this skill directory.
32
+
33
+ When changing pipeline behavior, update the active repo-root workflow first, update its template mirror in the same change, and then update skill-local reference copies when they describe the same behavior.
34
+
27
35
  ### List Mode (no arguments or --list flag)
28
36
 
29
37
  Execute these steps to display available pipelines:
@@ -18,6 +18,8 @@ Used by `scope-selection` to include or exclude issues and by `implement` for li
18
18
  | `claude-code-release` | Claude compatibility release trigger | INCLUDE (preferred) |
19
19
  | `documentation` | Documentation-only scope | INCLUDE (preferred for docs-only release) |
20
20
  | `enhancement-yaml-only` | YAML/config-only scope change | INCLUDE (eligible for docs-only compression) |
21
+ | `feedback` | Session feedback or retrospective follow-up | INCLUDE for low-risk rule/skill/doc scope |
22
+ | `improvement` | Process or harness improvement | INCLUDE for low-risk rule/skill/doc scope |
21
23
 
22
24
  ## Selection Rule
23
25
 
@@ -44,6 +46,13 @@ If all scoped issues are compression-eligible and scope size is 3 or fewer, the
44
46
  `compression_mode=docs-only` and replace heavyweight triage, planning, and verification spawns with
45
47
  direct manifest summaries plus a local self-review checklist.
46
48
 
49
+ An issue is eligible for `lite` compression mode if its labels or triage evidence show a low-risk
50
+ documentation, release-monitor, feedback, improvement, enhancement, YAML/config-only, or rule/skill text
51
+ change. `lite` mode requires scope size 5 or fewer and must still run verify-build.
52
+
53
+ Do not add or change labels solely to qualify for a compression tier. If triage label changes affect
54
+ compression eligibility, report that fact in the compression-mode decision.
55
+
47
56
  ## Lifecycle Labels
48
57
 
49
58
  | Transition | Action |
@@ -117,6 +117,8 @@ fi
117
117
 
118
118
  **Action**: `[Pre-flight] WARN: Context usage at {pct}%. 10-team research typically adds 30-40% context. Consider /compact before proceeding, or results may be truncated.`
119
119
 
120
+ > **File-absent branch (#1466)**: `$CONTEXT_FILE`가 존재하지 않으면 입력이 측정 불가하다 — `PASS (context budget unmeasured — file absent)`로 보고하고 WARN을 내지 않는다. 파일을 읽지 않고 WARN 상태를 특성화하지 않는다(R020 Read-Before-Characterize). WARN은 파일이 존재하고 `context_pct > 40`일 때만 emit한다.
121
+
120
122
  ### Display Format
121
123
 
122
124
  ```
@@ -224,6 +226,10 @@ Sensitive-path compatibility note: when delegated work touches `.claude/outputs/
224
226
  | Ecomode | Auto-activate for team result aggregation (R013) |
225
227
  | Intent display | Show research plan before execution (R015) |
226
228
 
229
+ ## External Quantitative-Fact Source Tagging
230
+
231
+ Research teams that collect concrete quantitative claims (benchmark numbers, table values, metrics) via WebFetch must tag them in synthesis/report output as `WebFetch-derived (unverified)` unless independently verified from a primary source such as the PDF/original paper. Multiple teams fetching the same URL can share the same WebFetch cache artifact, so agreement across those fetches is not independent ground-truth. Do not write exact load-bearing numbers into persistent issues/artifacts as fact without primary-source verification or an explicit unverified tag (R020, R023).
232
+
227
233
  ## Retrieval-Reasoning Separation
228
234
 
229
235
  Retrieval and reasoning are distinct cognitive operations that benefit from explicit role separation. Mixing them in a single agent degrades both: retrieval becomes biased by premature conclusions, and reasoning gets polluted by search noise.
@@ -482,3 +488,5 @@ Agent(
482
488
  | dag-orchestration | Phase sequencing follows DAG pattern |
483
489
  | result-aggregation | Team results formatted per aggregation skill |
484
490
  | multi-model-verification | Phase 2 uses multi-model verification pattern |
491
+
492
+ When spawning agents via the Agent tool during this skill execution, always pass `mode: "bypassPermissions"` when the session uses bypass permissions. The Agent tool default (`acceptEdits`) can cause permission prompts during unattended execution.
@@ -2,7 +2,7 @@
2
2
  name: scout
3
3
  description: Analyze external URL to evaluate fit with oh-my-customcodex project and auto-create GitHub issue with verdict
4
4
  scope: core
5
- version: 1.0.0
5
+ version: 1.0.1
6
6
  user-invocable: true
7
7
  argument-hint: "<url>"
8
8
  ---
@@ -33,6 +33,15 @@ Sensitive-path compatibility note: if this skill delegates work that touches `.c
33
33
 
34
34
  ## Pre-flight Guards
35
35
 
36
+ ### Pre-flight Execution Checklist (MANDATORY before Phase 1)
37
+
38
+ **Both guards MUST be executed before entering Phase 1.** Skipping either guard is a workflow violation.
39
+
40
+ - [ ] Guard 1: URL Validity check passed (abort if invalid)
41
+ - [ ] Guard 2: Duplicate Scout check passed (warn and confirm if duplicate found)
42
+
43
+ Proceed to Phase 1 only after both checkboxes are satisfied.
44
+
36
45
  ### Guard 1: URL Validity (GATE)
37
46
 
38
47
  Before any work, validate the URL:
@@ -56,6 +65,8 @@ gh issue list --state all --label "scout:internalize,scout:integrate,scout:skip"
56
65
 
57
66
  If found: `[Pre-flight] WARN: Similar URL already scouted in issue #N. Proceed anyway? [Y/n]`
58
67
 
68
+ > **Why mandatory?** Guard 2 생략으로 인해 동일 도메인 중복 scout 이슈가 생성된 사례 발생. 중복 triage 낭비를 방지하기 위해 Pre-flight 체크리스트로 승격.
69
+
59
70
  ## Display Format
60
71
 
61
72
  Before execution, show the plan:
@@ -71,6 +82,8 @@ Before execution, show the plan:
71
82
  실행하시겠습니까? [Y/n]
72
83
  ```
73
84
 
85
+ > **암묵 승인 시 필수**: "되면 /scout으로 보고", "실행해줘" 등 묵시적 승인인 경우에도 위 plan 요약을 **반드시 1줄 이상 표시한 뒤 진행**한다. plan 표시 없이 바로 Phase 1으로 진입하지 않는다.
86
+
74
87
  ## Workflow
75
88
 
76
89
  ### Phase 1: Fetch & Summarize
@@ -82,6 +95,8 @@ Before execution, show the plan:
82
95
  - Approach and principles
83
96
  3. If fetch fails — report error, abort
84
97
 
98
+ > **External quantitative-fact source tagging** (#1466): WebFetch가 산출한 구체적 정량 주장(benchmark 수치, table 값, metric)은 이슈 본문에 `WebFetch-derived (unverified)`로 태깅한다 — 검증된 사실로 제시하지 않는다. WebFetch 캐시/요약은 독립 ground-truth가 아니므로, load-bearing 수치는 primary PDF/원문으로 1회 검증하거나 명시적으로 unverified로 표기한다. (R020 Read-Before-Characterize, R023 Verifier Ground-Truth)
99
+
85
100
  ### Phase 2: Load Project Philosophy
86
101
 
87
102
  1. `Read(AGENTS.md)` — extract architecture philosophy:
@@ -96,7 +111,7 @@ Before execution, show the plan:
96
111
 
97
112
  Spawn 1 sonnet agent with the following analysis prompt.
98
113
 
99
- > **Permission Mode**: When spawning the analysis agent, pass `mode: "bypassPermissions"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits`.
114
+ > **MUST**: When spawning the analysis agent, pass `mode: "bypassPermissions"` in the Agent tool call if the session uses bypassPermissions. Without explicit mode, CC defaults to `acceptEdits` and may interrupt unattended execution.
100
115
 
101
116
  **Inputs**:
102
117
  - Fetched content summary (Phase 1)
@@ -147,6 +162,8 @@ Return a structured verdict:
147
162
 
148
163
  ### Phase 4: Issue Creation
149
164
 
165
+ > **NOTE**: Phase 4 is normally handled by the orchestrator with `gh issue create`. If issue creation is delegated to an agent, that Agent tool call also MUST include `mode: "bypassPermissions"` when the session uses bypass permissions.
166
+
150
167
  1. Ensure scout labels exist (defensive, idempotent):
151
168
  ```bash
152
169
  gh label create "scout:internalize" --color "0E8A16" --description "Scout: should be internalized" 2>/dev/null || true
@@ -408,8 +408,20 @@ if [[ -f "$env_status_file" ]]; then
408
408
  fi
409
409
  fi
410
410
 
411
+ extra_segment=""
412
+ if [[ -n "${STATUSLINE_EXTRA_PROVIDERS:-}" ]]; then
413
+ IFS=':' read -r -a extra_providers <<< "$STATUSLINE_EXTRA_PROVIDERS"
414
+ for provider in "${extra_providers[@]}"; do
415
+ [[ -n "$provider" && -x "$provider" ]] || continue
416
+ provider_output="$("$provider" </dev/null 2>/dev/null | tr '\n' ' ' | sed 's/[[:space:]]*$//')"
417
+ if [[ -n "$provider_output" ]]; then
418
+ extra_segment="${extra_segment} | ${provider_output}"
419
+ fi
420
+ done
421
+ fi
422
+
411
423
  if [[ -n "$git_branch" ]]; then
412
- printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
424
+ printf "${cost_color}%s${COLOR_RESET} | %s | %s%s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
413
425
  "$cost_display" \
414
426
  "$project_name" \
415
427
  "$branch_display" \
@@ -418,9 +430,10 @@ if [[ -n "$git_branch" ]]; then
418
430
  "$wl_segment" \
419
431
  "$agent_segment" \
420
432
  "$rtk_segment" \
433
+ "$extra_segment" \
421
434
  "$ctx_display"
422
435
  else
423
- printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
436
+ printf "${cost_color}%s${COLOR_RESET} | %s%s%s%s%s%s%s | ${ctx_color}%s${COLOR_RESET}\n" \
424
437
  "$cost_display" \
425
438
  "$project_name" \
426
439
  "$pr_segment" \
@@ -428,5 +441,6 @@ else
428
441
  "$wl_segment" \
429
442
  "$agent_segment" \
430
443
  "$rtk_segment" \
444
+ "$extra_segment" \
431
445
  "$ctx_display"
432
446
  fi
@@ -1,11 +1,11 @@
1
1
  {
2
- "version": "0.5.12",
2
+ "version": "0.5.14",
3
3
  "requiresCC": ">=2.1.121",
4
4
  "claudeCode": {
5
5
  "minimumVersion": "2.1.121",
6
6
  "protectedPathBypassVersion": "2.1.126"
7
7
  },
8
- "lastUpdated": "2026-06-01T00:00:00.000Z",
8
+ "lastUpdated": "2026-06-06T00:00:00.000Z",
9
9
  "components": [
10
10
  {
11
11
  "name": "rules",
@@ -23,7 +23,7 @@
23
23
  "name": "skills",
24
24
  "path": ".agents/skills",
25
25
  "description": "Reusable skill modules (project-scoped repo skills)",
26
- "files": 120
26
+ "files": 121
27
27
  },
28
28
  {
29
29
  "name": "guides",
@@ -60,13 +60,24 @@ steps:
60
60
  - name: compression-mode-eval
61
61
  depends_on: scope-selection
62
62
  prompt: |
63
- Evaluate docs-only compression mode.
63
+ Evaluate compression mode.
64
64
 
65
65
  Use `compression_mode=docs-only` only when:
66
66
  - scope size is 3 or fewer issues
67
67
  - every scoped issue has at least one of documentation, automated, codex-release, oh-my-codex-release, claude-code-release, or enhancement-yaml-only
68
68
 
69
- In docs-only mode, replace heavyweight triage/plan/deep-plan/deep-verify spawns with direct summaries plus local self-review. Otherwise use standard mode.
69
+ Use `compression_mode=lite` only when:
70
+ - scope size is 5 or fewer issues
71
+ - every scoped issue is documentation, automated release-monitor, feedback, improvement, enhancement, YAML/config-only, or low-risk rule/skill text
72
+ - no scoped issue requires TypeScript runtime behavior, package dependency changes, migration, or security-sensitive logic
73
+
74
+ Gate transparency:
75
+ - Do not add or change labels solely to qualify for docs-only or lite mode.
76
+ - If labels were changed during triage and affect compression eligibility, state that fact in the mode decision.
77
+
78
+ In docs-only mode, replace heavyweight triage/plan/deep-plan/deep-verify spawns with direct summaries plus local self-review.
79
+ In lite mode, keep a concise implementation plan and local self-review, but still run verify-build.
80
+ Otherwise use standard mode.
70
81
  Output the selected compression_mode for downstream steps.
71
82
  description: Evaluate docs-only compression eligibility
72
83
 
@@ -100,6 +111,10 @@ steps:
100
111
  prompt: |
101
112
  Project-specific build + test verification.
102
113
 
114
+ Scope-change re-entry guard:
115
+ - If a scoped issue is added or materially changed after verify-build starts, reset this phase and re-run the full verify-build gate for the new aggregate scope.
116
+ - Do not proceed to release from a verify-build result collected before the latest scoped implementation change.
117
+
103
118
  For Node/Bun projects:
104
119
  1. Run `bun install` and halt on lockfile drift.
105
120
  2. Run `bun run lint` when available.
@@ -0,0 +1,60 @@
1
+ # /pipeline eraser — Architecture documentation sync via Eraser MCP
2
+ # Analyzes ARCHITECTURE.md, updates text, generates/replaces diagrams
3
+
4
+ name: eraser
5
+ description: "Architecture documentation sync: analyze → update text → generate/replace diagrams → verify"
6
+ mode: confirm
7
+ error: halt-and-report
8
+
9
+ steps:
10
+ - name: analyze
11
+ prompt: >
12
+ Compare ARCHITECTURE.md counts/versions against actual codebase.
13
+ Run: agent count (ls .claude/agents/*.md | wc -l),
14
+ skill count (find .claude/skills -name SKILL.md | wc -l),
15
+ guide count (find guides -mindepth 1 -maxdepth 1 -type d | wc -l).
16
+ Compare with documented values. List outdated sections.
17
+ description: >
18
+ Compare ARCHITECTURE.md counts/versions against actual codebase.
19
+ Run: agent count (ls .claude/agents/*.md | wc -l),
20
+ skill count (find .claude/skills -name SKILL.md | wc -l),
21
+ guide count (find guides -mindepth 1 -maxdepth 1 -type d | wc -l).
22
+ Compare with documented values. List outdated sections.
23
+
24
+ - name: update-text
25
+ prompt: >
26
+ Update ARCHITECTURE.md and ARCHITECTURE_ko.md text content:
27
+ version numbers, agent/skill/guide counts, feature descriptions,
28
+ new sections for recently added features, version history.
29
+ Delegate to arch-documenter agent.
30
+ description: >
31
+ Update ARCHITECTURE.md and ARCHITECTURE_ko.md text content:
32
+ version numbers, agent/skill/guide counts, feature descriptions,
33
+ new sections for recently added features, version history.
34
+ Delegate to arch-documenter agent.
35
+
36
+ - name: generate-diagrams
37
+ prompt: >
38
+ Use Eraser MCP to generate/replace diagrams in assets/diagrams/.
39
+ Diagram types: renderCloudArchitectureDiagram (system overview),
40
+ renderSequenceDiagram (API flows), renderFlowchart (decision flows).
41
+ Settings: imageQuality 2, format png, background true, theme light,
42
+ typeface clean, colorMode bold.
43
+ Download generated images and save to assets/diagrams/.
44
+ description: >
45
+ Use Eraser MCP to generate/replace diagrams in assets/diagrams/.
46
+ Diagram types: renderCloudArchitectureDiagram (system overview),
47
+ renderSequenceDiagram (API flows), renderFlowchart (decision flows).
48
+ Settings: imageQuality 2, format png, background true, theme light,
49
+ typeface clean, colorMode bold.
50
+ Download generated images and save to assets/diagrams/.
51
+
52
+ - name: verify
53
+ skill: dev-review
54
+ description: >
55
+ Verify all image references are valid, counts match filesystem,
56
+ no broken links, English and Korean docs are synchronized.
57
+
58
+ - name: release
59
+ prompt: "Create PR with documentation updates"
60
+ description: Create PR with documentation updates