oh-my-customcodex 0.5.13 → 0.5.15

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.13",
3094
+ version: "0.5.15",
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.13",
2319
+ version: "0.5.15",
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.13",
6
+ "version": "0.5.15",
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.
@@ -257,7 +257,7 @@ Required check:
257
257
  1. Use `rg --files`, `find`, `ls`, or the repository index to prove each existing path.
258
258
  2. If a path is missing, locate the current equivalent before delegating.
259
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.
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
261
 
262
262
  Do not rely on the delegate to repair stale path guesses in shared workflow, rule, guide, or release tasks.
263
263
 
@@ -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`.
@@ -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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.5.13",
2
+ "version": "0.5.15",
3
3
  "requiresCC": ">=2.1.121",
4
4
  "claudeCode": {
5
5
  "minimumVersion": "2.1.121",
@@ -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",
@@ -74,9 +74,20 @@ steps:
74
74
  Gate transparency:
75
75
  - Do not add or change labels solely to qualify for docs-only or lite mode.
76
76
  - If labels were changed during triage and affect compression eligibility, state that fact in the mode decision.
77
+ - Whenever a skill stage is replaced by integrated analysis, log a concrete justification:
78
+ `[compression-mode] lite — skill stage replaced by integrated analysis; scope={n}; low-risk evidence={issue_refs}`.
79
+ - If the justification cannot be stated concretely, do not compress that stage; run the full skill.
80
+
81
+ Cross-tier pre-existing converged artifact substitution:
82
+ - A triage, plan, deep-plan, or deep-verify step may be satisfied by an existing converged research/plan/verification artifact instead of a fresh skill spawn, even in standard mode.
83
+ - The artifact must explicitly cover the scoped issue domain, be current for the release scope, and provide output equivalent to the skipped step.
84
+ - This substitution never applies to implement, verify-build, release, publish, or CI/publish verification.
85
+ - Log the artifact path or URL and why it is equivalent before substituting.
77
86
 
78
87
  In docs-only mode, replace heavyweight triage/plan/deep-plan/deep-verify spawns with direct summaries plus local self-review.
79
88
  In lite mode, keep a concise implementation plan and local self-review, but still run verify-build.
89
+ In lite mode deep-verify, if the change set has no structural surface (for example workflow-YAML/docs-only with no agent/skill/guide/rule frontmatter changes), the R017/deep-verify spawn may be skipped and replaced by deterministic self-checks: template parity, multi-copy checksum, YAML parse, and the normal verify-build gate. Log:
90
+ `[compression-mode] lite deep-verify — R017 spawn skipped (no structural surface); deterministic self-check only`.
80
91
  Otherwise use standard mode.
81
92
  Output the selected compression_mode for downstream steps.
82
93
  description: Evaluate docs-only compression eligibility
@@ -130,7 +141,7 @@ steps:
130
141
  - name: verify
131
142
  depends_on: verify-build
132
143
  skill: deep-verify
133
- description: Multi-angle release quality verification; self-review checklist only if compression_mode=docs-only
144
+ description: Multi-angle release quality verification; self-review checklist if compression_mode=docs-only, or deterministic self-check in lite mode when no structural surface changed
134
145
 
135
146
  - name: release
136
147
  depends_on: verify