oh-my-customcode 0.154.1 → 0.156.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/dist/cli/index.js CHANGED
@@ -2334,7 +2334,7 @@ var init_package = __esm(() => {
2334
2334
  workspaces: [
2335
2335
  "packages/*"
2336
2336
  ],
2337
- version: "0.154.1",
2337
+ version: "0.156.0",
2338
2338
  description: "Batteries-included agent harness for Claude Code",
2339
2339
  type: "module",
2340
2340
  bin: {
@@ -2382,7 +2382,7 @@ var init_package = __esm(() => {
2382
2382
  yaml: "^2.8.2"
2383
2383
  },
2384
2384
  devDependencies: {
2385
- "@anthropic-ai/sdk": "^0.97.1",
2385
+ "@anthropic-ai/sdk": "^0.98.0",
2386
2386
  "@biomejs/biome": "^2.3.12",
2387
2387
  "@types/bun": "^1.3.6",
2388
2388
  "@types/js-yaml": "^4.0.9",
package/dist/index.js CHANGED
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "0.154.1",
2034
+ version: "0.156.0",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
@@ -2079,7 +2079,7 @@ var package_default = {
2079
2079
  yaml: "^2.8.2"
2080
2080
  },
2081
2081
  devDependencies: {
2082
- "@anthropic-ai/sdk": "^0.97.1",
2082
+ "@anthropic-ai/sdk": "^0.98.0",
2083
2083
  "@biomejs/biome": "^2.3.12",
2084
2084
  "@types/bun": "^1.3.6",
2085
2085
  "@types/js-yaml": "^4.0.9",
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.154.1",
6
+ "version": "0.156.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -51,7 +51,7 @@
51
51
  "yaml": "^2.8.2"
52
52
  },
53
53
  "devDependencies": {
54
- "@anthropic-ai/sdk": "^0.97.1",
54
+ "@anthropic-ai/sdk": "^0.98.0",
55
55
  "@biomejs/biome": "^2.3.12",
56
56
  "@types/bun": "^1.3.6",
57
57
  "@types/js-yaml": "^4.0.9",
@@ -42,6 +42,8 @@ When CI failure, process gap, or repeatable system defect is found:
42
42
  2. Register GitHub issue (trackable improvement item)
43
43
  3. Both required — memory alone is NOT sufficient for system-level defects
44
44
 
45
+ > **Auto-register directive (session 102)**: Genuine defects and process gaps surfaced during release workflows (e.g., `post-release-followup` skill) MUST be registered as GitHub issues automatically — no user confirmation required. Only code-changing "immediate action" items require user confirmation. See `post-release-followup` skill: "Auto-Register Genuine Defects (no-ask)" section.
46
+
45
47
  ### Adaptive Harness Integration
46
48
 
47
49
  When repeating agent failures or suboptimal routing is detected:
@@ -114,15 +114,7 @@ When ALL reviewers agree BUILD or BUILD WITH CHANGES:
114
114
 
115
115
  ### Tool: Writing artifacts under .claude/outputs/
116
116
 
117
- CC sensitive-path check inspects tool target paths and triggers permission prompts on `.claude/` regardless of `bypassPermissions` and allow rules (refs: #960, #961, #978, #981, #1016).
118
-
119
- To write agora results under `.claude/outputs/sessions/`:
120
-
121
- 1. Write the artifact body to `/tmp/agora-$(date +%H%M%S).md` first (Write tool target = `/tmp`, no sensitive-path trigger)
122
- 2. Use a `/tmp/*.sh` Bash script to move/copy the file under `.claude/outputs/sessions/$(date +%Y-%m-%d)/` (Bash target = `/tmp`, script-internal `cp` to `.claude/` is not audited)
123
- 3. Read-only Bash on `.claude/outputs/` (e.g., `cat`, `head`, `wc`) is allowed for verification
124
-
125
- Reference: `feedback_sensitive_path_tmp_bypass.md`, R006 sensitive-path handling, #1016, #1045.
117
+ Direct Write to `.claude/outputs/sessions/{date}/agora-{topic}-{time}.md` is permitted under `mode: "bypassPermissions"` (CC v2.1.121+, #1101). Write tool auto-creates parent directory. For CC < v2.1.121, see git history for the legacy /tmp bypass pattern.
126
118
 
127
119
  3. Shut down team: `SendMessage(to: "*", message: {type: "shutdown_request"})`
128
120
 
@@ -42,18 +42,18 @@ Search for existing tracking issues to avoid duplicates:
42
42
  ```bash
43
43
  gh issue list \
44
44
  --state all \
45
- --search "[Claude Code v" \
45
+ --search "Claude Code v" \
46
46
  --json number,title \
47
47
  --limit 100
48
48
  ```
49
49
 
50
- Build a set of already-tracked versions by extracting version strings from issue titles matching the pattern `[Claude Code v{version}]`.
50
+ Build a set of already-tracked versions by extracting version strings from issue titles matching the pattern `Claude Code v(\d+\.\d+\.\d+)` (no brackets).
51
51
 
52
52
  ### Phase 3: Dedup
53
53
 
54
54
  For each fetched release version:
55
55
  - Parse the version string from `tag_name` (e.g., `v2.1.86`)
56
- - If a matching issue title already exists → skip (already tracked)
56
+ - If an issue title matching `Claude Code v{version}` already exists → skip (already tracked)
57
57
  - If no matching issue → add to "needs issue" list
58
58
 
59
59
  ### Phase 4: Create Issues (or Dry-Run Report)
@@ -76,7 +76,7 @@ For each version in the "needs issue" list, create a GitHub issue:
76
76
 
77
77
  ```bash
78
78
  gh issue create \
79
- --title "[Claude Code v{version}] New release detected" \
79
+ --title "Claude Code v{version}" \
80
80
  --label "automated,claude-code-release" \
81
81
  --body "{body}"
82
82
  ```
@@ -105,7 +105,7 @@ Issue body format (matching the pattern established by issue #683):
105
105
 
106
106
  ---
107
107
 
108
- _This issue was created by the `/omcustom:claude-native` skill._
108
+ _This issue was auto-created by the cc-release-monitor workflow (claude-native skill)._
109
109
  ```
110
110
 
111
111
  **Notes:**
@@ -128,8 +128,8 @@ Versions checked: {N}
128
128
  New issues created: {M}
129
129
 
130
130
  Created:
131
- - #1234 [Claude Code v2.1.86] New release detected
132
- - #1235 [Claude Code v2.1.87] New release detected
131
+ - #1234 Claude Code v2.1.86
132
+ - #1235 Claude Code v2.1.87
133
133
 
134
134
  Already tracked (skipped):
135
135
  - v2.1.85 → #683
@@ -157,6 +157,8 @@ For each release:
157
157
 
158
158
  Semver comparison: major → minor → patch (all numeric). Pre-release suffixes (e.g., `-beta`) are included and compared lexicographically after numeric parts.
159
159
 
160
+ **Note on non-contiguous patch numbers**: Claude Code skips some patch numbers (e.g., v2.1.151 and v2.1.155 were never released publicly). The skill MUST act only on versions that actually appear in the GitHub releases API response — never assume contiguous numbering or attempt to fill gaps.
161
+
160
162
  ## Error Handling
161
163
 
162
164
  | Error | Action |
@@ -252,15 +252,7 @@ codex-exec "build/fix frontend"
252
252
 
253
253
  ### Tool: Writing artifacts under .claude/outputs/
254
254
 
255
- CC sensitive-path check inspects tool target paths and triggers permission prompts on `.claude/` regardless of `bypassPermissions` and allow rules (refs: #960, #961, #978, #981, #1016).
256
-
257
- To write codex execution results under `.claude/outputs/codex/`:
258
-
259
- 1. Write the artifact body to `/tmp/codex-{HHmmss}.{ext}` first (Write tool target = /tmp, no sensitive-path trigger)
260
- 2. Use a `/tmp/*.sh` Bash script to move/copy the file under `.claude/outputs/codex/sessions/...` (Bash target = /tmp, script-internal `cp` to `.claude/` is not audited)
261
- 3. Read-only Bash on `.claude/outputs/` (e.g., `cat`, `head`, `wc`) is allowed for verification
262
-
263
- Reference: `feedback_sensitive_path_tmp_bypass.md`, R006 sensitive-path handling.
255
+ Direct Write to `.claude/outputs/codex/sessions/{date}/codex-{HHmmss}.{ext}` is permitted under `mode: "bypassPermissions"` (CC v2.1.121+, #1101). Write tool auto-creates parent directory. For CC < v2.1.121, see git history for the legacy /tmp bypass pattern.
264
256
 
265
257
  ### Attribution
266
258
 
@@ -1,92 +1,144 @@
1
1
  ---
2
2
  name: hada-scout
3
- description: hada.io RSS feed monitoring for AI agent/harness articles with automated /scout analysis
4
- scope: package
5
- version: 1.0.0
6
- user-invocable: false
3
+ description: hada.io RSS feed monitoring with LLM pre-scout filtering for oh-my-customcode relevance
4
+ scope: core
5
+ version: 2.0.0
6
+ user-invocable: true
7
+ argument-hint: "[--limit N] [--threshold N]"
7
8
  ---
8
9
 
9
10
  # hada-scout
10
11
 
11
- Automated pipeline that monitors hada.io (via feedburner RSS) for AI agent, harness, benchmark, and eval-related articles, then runs `/scout` analysis on each match.
12
+ 3-phase in-session pipeline that monitors hada.io (via feedburner RSS) for relevant articles,
13
+ uses a haiku LLM batch to pre-score relevance, and dispatches full `/scout` analysis only on
14
+ high-scoring candidates.
12
15
 
13
16
  ## Purpose
14
17
 
15
- Complement geeknews-scout with harness/eval-focused coverage from hada.io. While geeknews-scout casts a broad net over AI agent news, hada-scout narrows to benchmark/evaluation framework content — the domain most relevant to oh-my-customcode's harness and agent-eval subsystems.
18
+ Replace the v1.0 keyword-regex approach with context-aware LLM pre-scoring. Haiku evaluates
19
+ all feed titles in a single batch call, reducing false positives from ~30-40% to ~5-10% and
20
+ eliminating the external CronJob dependency for user-invoked runs.
16
21
 
17
- ## Architecture: 2-Layer Hybrid
22
+ ## Architecture: 3-Phase In-Session Pipeline
18
23
 
19
- ### Layer 1 — check-feed.sh (feed → issues)
24
+ ### Phase 1 — Fetch & Parse
20
25
 
21
- 1. Fetch hada.io feedburner RSS
22
- 2. Filter entries by keyword regex (case-insensitive)
23
- 3. Dedup against existing `hada-scout` issues
24
- 4. Create GitHub issue per match with labels `hada-scout` + `pending-scout`
26
+ 1. WebFetch the hada.io RSS feed (`https://feeds.feedburner.com/geeknews-feed`)
27
+ 2. Parse all items: title, URL, publication date
28
+ 3. Default: latest 50 items (configurable via `--limit` or `HADA_SCOUT_LIMIT`)
25
29
 
26
- ### Layer 2 — scout-runner.sh (issues → /scout)
30
+ ### Phase 2 — Pre-Scout (haiku batch)
27
31
 
28
- 1. Find open issues with `pending-scout` label
29
- 2. Extract source URL from issue body
30
- 3. Run `claude -p "/scout {url}"` (max 5 executions per run)
31
- 4. Parse verdict from /scout output
32
- 5. Apply verdict label, remove `pending-scout`
32
+ 1. Spawn 1 haiku agent with ALL item titles as a single batch input
33
+ 2. Agent evaluates each title against oh-my-customcode's domain (see prompt template below)
34
+ 3. Returns relevance score (0–100) and a 1-line reason for each item
35
+ 4. Threshold: 60 passes to Phase 3 (configurable via `--threshold` or `HADA_SCOUT_THRESHOLD`)
36
+ 5. Cost: ~$0.01–0.05 for 50 items
33
37
 
34
- ## Keyword Strategy
38
+ ### Phase 3 — Scout Dispatch
35
39
 
36
- hada-scout uses harness/benchmark/eval focused keywords, distinct from geeknews-scout's broader AI agent coverage:
40
+ 1. Dedup: check existing `hada-scout` labeled issues via `gh issue list --label hada-scout`
41
+ 2. For each passing item (max 5 per run, configurable via `MAX_SCOUT_PER_RUN`):
42
+ - Run full `/scout` analysis via Skill tool invocation
43
+ - Scout creates GitHub issue with verdict label on `baekenough/oh-my-customcode`
44
+ - Add `hada-scout` label to the created issue
45
+ 3. Dispatch up to 4 scouts in parallel per R009
46
+
47
+ ## Pre-Scout Prompt Template
48
+
49
+ The haiku agent receives the following system prompt:
37
50
 
38
51
  ```
39
- harness|benchmark|eval|evaluation framework|agent framework|코드 리뷰 자동화|하네스|벤치마크|평가
52
+ You are a relevance filter for the oh-my-customcode project — an AI agent harness/orchestration
53
+ system built on Claude Code CLI with 44 agents, 74 skills.
54
+
55
+ Project domains (HIGH relevance):
56
+ - AI agent orchestration, multi-agent systems, agent design patterns
57
+ - Harness, benchmark, evaluation frameworks for AI agents
58
+ - Claude Code, Anthropic ecosystem, MCP protocol
59
+ - Code review automation, development workflow automation
60
+ - Agent sandbox, isolation, security patterns
61
+ - LLM-assisted development tools and methodologies
62
+
63
+ Project domains (MEDIUM relevance):
64
+ - General AI/ML tooling that could be adapted for agent workflows
65
+ - DevOps automation patterns applicable to agent infrastructure
66
+ - New programming paradigms for AI-assisted development
67
+
68
+ NOT relevant:
69
+ - Pure frontend/UI frameworks without agent connection
70
+ - Business/management topics
71
+ - Hardware, networking, non-AI infrastructure
72
+ - Social media, marketing tools
73
+
74
+ For each item below, return: score (0-100) | reason (1 line)
75
+
76
+ Items:
77
+ {numbered_item_list}
40
78
  ```
41
79
 
42
- Geeknews-scout handles: `Claude|Anthropic|MCP|AI agent|에이전트|agentic|multi-agent|...`
80
+ ## Display Format
81
+
82
+ ```
83
+ [hada-scout] Scanning hada.io feed...
84
+ ├── Phase 1: Fetched {n} items
85
+ ├── Phase 2: Pre-scout → {passed}/{total} items passed (threshold: {t}%)
86
+ │ ├── ✓ {title1} (score: {s1}%)
87
+ │ ├── ✓ {title2} (score: {s2}%)
88
+ │ └── ✗ {title3} (score: {s3}%) — skipped
89
+ ├── Phase 3: Scout dispatch ({n} items, max 5)
90
+ │ ├── [1] /scout {url1} → {verdict}
91
+ │ └── [2] /scout {url2} → {verdict}
92
+ └── [Done] {created}/{dispatched} issues created
93
+ ```
43
94
 
44
95
  ## Label Scheme
45
96
 
46
97
  | Label | Purpose |
47
98
  |-------|---------|
48
99
  | `hada-scout` | Source identification — all hada-scout created issues |
49
- | `pending-scout` | Awaiting /scout analysis (set by Layer 1, cleared by Layer 2) |
50
100
  | `scout:internalize` | /scout verdict: adopt into project |
51
101
  | `scout:integrate` | /scout verdict: use as external dependency |
52
102
  | `scout:skip` | /scout verdict: not relevant |
53
103
 
54
104
  ## Cost Controls
55
105
 
56
- - Layer 2 runs at most **5 /scout executions per cron invocation**
57
- - Each /scout call costs ~$0.5–1.5 (sonnet)
58
- - Remaining `pending-scout` issues are processed in the next scheduled run
59
-
60
- ## Deployment
61
-
62
- - Pattern: same K8s CronJob structure as `infra/geeknews-scout/`
63
- - Host: `ubuntu-ext` cluster
64
- - Infrastructure files: `infra/hada-scout/`
65
- - `check-feed.sh` — Layer 1 feed poller
66
- - `scout-runner.sh` — Layer 2 /scout executor
67
- - `Dockerfile`
68
- - `cronjob.template.yaml`
69
- - `deploy.sh`
70
- - `.env.example`
106
+ | Stage | Model | Estimated Cost |
107
+ |-------|-------|----------------|
108
+ | Pre-scout (Phase 2) | haiku | ~$0.01–0.05 per run (50 items) |
109
+ | Full scout (Phase 3) | sonnet | ~$0.5–1.5 per item, max 5 per run |
110
+ | Total max per invocation | — | ~$8 |
71
111
 
72
112
  ## Environment Variables
73
113
 
74
114
  | Variable | Default | Description |
75
115
  |----------|---------|-------------|
76
- | `GH_TOKEN` | (required) | GitHub PAT for issue creation |
77
- | `REPO` | `baekenough/oh-my-customcode` | Target repo |
78
- | `FEED_URL` | `http://feeds.feedburner.com/geeknews-feed` | hada.io RSS feed |
79
- | `KEYWORDS` | (see above) | Pipe-separated keyword regex |
80
- | `MAX_SCOUT_PER_RUN` | `5` | Max /scout executions per Layer 2 run |
116
+ | `FEED_URL` | `https://feeds.feedburner.com/geeknews-feed` | RSS feed URL |
117
+ | `HADA_SCOUT_THRESHOLD` | `60` | Pre-scout score threshold (0–100) |
118
+ | `HADA_SCOUT_LIMIT` | `50` | Max feed items to fetch and score |
119
+ | `MAX_SCOUT_PER_RUN` | `5` | Max /scout executions per invocation |
120
+ | `GH_TOKEN` | (required) | GitHub PAT for issue creation and dedup |
81
121
 
82
122
  ## Integration
83
123
 
84
124
  | Rule | How |
85
125
  |------|-----|
86
- | R009 | Layer 1 and Layer 2 run as independent CronJobs |
87
- | R010 | Skill defines the architecture; implementation delegated to infra-docker-expert for K8s manifests |
88
- | scout skill | Layer 2 invokes `/scout` via `claude -p` subprocess |
89
-
90
- ## Tracking Issue
126
+ | R009 | Phase 3 scout dispatches run in parallel (up to 4 concurrent) |
127
+ | R010 | Orchestrator manages phases; analysis delegated to haiku/sonnet agents |
128
+ | R015 | Pre-scout scores and reasons displayed before dispatching full scouts |
129
+ | scout skill | Phase 3 invokes `/scout` via Skill tool for each candidate URL |
130
+
131
+ ## Differences from v1.0
132
+
133
+ | Aspect | v1.0 (keyword) | v2.0 (LLM pre-scout) |
134
+ |--------|----------------|----------------------|
135
+ | Filtering | Regex keyword match | LLM relevance scoring (haiku) |
136
+ | Invocation | External CronJob only | User-invocable `/hada-scout` + CronJob |
137
+ | Precision | Low (keyword false positives) | High (context-aware scoring) |
138
+ | Cost per scan | $0 (regex) + $2.5–7.5 (/scout) | $0.05 (pre-scout) + $2.5–7.5 (/scout) |
139
+ | False positive rate | ~30–40% | ~5–10% |
140
+ | Scope | `package` | `core` |
141
+
142
+ ## Tracking
91
143
 
92
144
  GitHub Issue #841
@@ -194,3 +194,47 @@ recall_errors:
194
194
  - Connection failure: Return empty with warning
195
195
  - Invalid query: Help user reformulate
196
196
  ```
197
+
198
+ ## MemKraft Bridge (Optional)
199
+
200
+ > External integration: [MemKraft](https://github.com/seojoonkim/memkraft) — zero-dependency compound memory for AI agents.
201
+ > Install: `pipx install memkraft`
202
+
203
+ ### When to Use
204
+
205
+ | Capability | claude-mem | MemKraft |
206
+ |-----------|-----------|----------|
207
+ | Session persistence | ✅ (Chroma) | ✅ (Markdown) |
208
+ | Entity tracking | ❌ | ✅ (person/org/concept) |
209
+ | Source attribution | ❌ | ✅ (`[Source: who, when, how]`) |
210
+ | Auto-maintenance | ❌ | ✅ (Dream Cycle) |
211
+ | CJK entity extraction | ❌ | ✅ (Korean/Chinese/Japanese) |
212
+ | Offline search | ❌ | ✅ (stdlib difflib) |
213
+
214
+ Use MemKraft when entity tracking or source attribution is needed. Use claude-mem for simple session persistence.
215
+
216
+ ### Commands
217
+
218
+ ```bash
219
+ # Extract entities from a document
220
+ memkraft extract <file>
221
+
222
+ # Get a brief on a topic
223
+ memkraft brief <topic>
224
+
225
+ # Run maintenance cycle (dedup, prune orphans)
226
+ memkraft dream
227
+ ```
228
+
229
+ ### Integration with sys-memory-keeper
230
+
231
+ At session end, sys-memory-keeper can optionally run MemKraft operations:
232
+
233
+ 1. `memkraft extract` on session summary → builds entity graph
234
+ 2. `memkraft dream` → prunes stale entries (run weekly, not every session)
235
+
236
+ ### Prerequisites
237
+
238
+ - Python 3.9+
239
+ - `pipx install memkraft`
240
+ - No API keys required (offline-only)
@@ -66,8 +66,8 @@ Map each approved item to the appropriate subagent by `targetType`:
66
66
  | targetType | Agent | Action |
67
67
  |------------|-------|--------|
68
68
  | agent | mgr-creator | Modify agent frontmatter/body |
69
- | skill | Matching domain expert | Revise skill SKILL.md |
70
- | routing | general-purpose | Update routing patterns |
69
+ | skill | mgr-creator | Revise skill SKILL.md (R010 Protected Paths) |
70
+ | routing | mgr-creator | Update routing patterns (R010 Protected Paths) |
71
71
  | model-escalation | general-purpose | Update model field in agent frontmatter |
72
72
 
73
73
  Spawn agents in parallel (max 4 per R009). Each agent receives:
@@ -63,6 +63,8 @@ Execute these steps to display available pipelines:
63
63
  - **Skill steps** (`skill: name`): Invoke via Skill tool — `Skill(skill: "{name}")`
64
64
  - **Prompt steps** (`prompt: text`): Execute the described action using appropriate agents/tools
65
65
  - **Foreach steps** (`foreach: collection`): Iterate over collection from previous step output
66
+ - **Parallel steps** (`parallel: [step1, step2]`): Execute contained steps concurrently using Agent tool. Each parallel step runs as an independent Agent. Max 4 concurrent per R009. Steps within a parallel block MUST be independent (no shared state, no sequential dependencies). Dependencies between parallel and non-parallel steps use `depends_on:` field.
67
+ - **Agent mode**: When spawning agents via Agent tool, always pass `mode: "bypassPermissions"` to match agent frontmatter. The Agent tool default (`acceptEdits`) overrides frontmatter `permissionMode`, causing permission prompts during unattended execution.
66
68
  5. Report completion or failure
67
69
 
68
70
  ### Resume Mode (/pipeline resume)
@@ -94,6 +96,48 @@ Track per-step state:
94
96
 
95
97
  State saved to `/tmp/.claude-pipeline-{name}-{PPID}.json` on failure.
96
98
 
99
+ ## Parallel Execution
100
+
101
+ Pipeline steps can be grouped for parallel execution:
102
+
103
+ ```yaml
104
+ steps:
105
+ - name: phase-1
106
+ parallel:
107
+ - name: task-a
108
+ skill: skill-a
109
+ description: First independent task
110
+ - name: task-b
111
+ skill: skill-b
112
+ description: Second independent task
113
+ - name: phase-2
114
+ skill: next-step
115
+ depends_on: phase-1
116
+ ```
117
+
118
+ ### Parallel Rules
119
+
120
+ - Max 4 concurrent steps per parallel block (R009 hard cap)
121
+ - Steps within a parallel block MUST be independent
122
+ - `depends_on` enforces ordering between blocks
123
+ - Each parallel step is spawned as a separate Agent tool call in the SAME message
124
+ - If any parallel step fails with `error: halt-and-report`, all remaining steps in the block are cancelled
125
+ - State tracking records each parallel step individually
126
+
127
+ ### Parallel State Format
128
+
129
+ ```json
130
+ {
131
+ "name": "phase-1",
132
+ "type": "parallel",
133
+ "status": "running",
134
+ "children": [
135
+ {"name": "task-a", "status": "completed", "duration_ms": 5000},
136
+ {"name": "task-b", "status": "running"}
137
+ ]
138
+ }
139
+ ```
140
+
97
141
  ## Error Handling
98
142
 
99
143
  - Pipeline not found → list available pipelines with suggestion
@@ -10,7 +10,7 @@ effort: medium
10
10
 
11
11
  ## Purpose
12
12
 
13
- After PR creation in the auto-dev release workflow, collect unaddressed findings and present actionable follow-up recommendations. The user chooses: execute now, register as issues, or skip.
13
+ After PR creation in the auto-dev release workflow, collect unaddressed findings and present actionable follow-up recommendations. Genuine defects and process gaps are registered as GitHub issues automatically (no user confirmation needed). Only code-changing "immediate action" items require user confirmation.
14
14
 
15
15
  ## Workflow
16
16
 
@@ -63,55 +63,73 @@ Remove duplicates (same issue referenced from multiple sources). Categorize:
63
63
  | **이슈 등록** | P3 이슈, LOW 검증 발견사항, 새 TODO, Medium PR 리뷰 발견사항 | 이슈로 등록 |
64
64
  | **참고** | 이미 추적 중인 이슈, 외관 관련 메모 | 건너뛰기 |
65
65
 
66
+ ### Auto-Register Genuine Defects (no-ask)
67
+
68
+ **Before presenting the summary to the user**, auto-register all "이슈 등록" category items that are genuine defects or process gaps. No user confirmation is required for these.
69
+
70
+ **Definition — auto-register if ANY of:**
71
+ - Genuine defect: a bug, regression, broken behavior, or incorrect output observed during verification
72
+ - Process gap: a workflow hole, missing guard, or coverage gap surfaced by deep-verify / triage
73
+ - Coverage gap: a missing test, missing documentation, or missing automation for a known scenario
74
+
75
+ **Definition — do NOT auto-register (keep for user choice):**
76
+ - Pure cosmetic / style preference notes
77
+ - Items that are purely subjective or opinion-based
78
+
79
+ **When ambiguous, lean toward registering.** Registering a borderline item costs nothing; missing a genuine defect costs a future session.
80
+
81
+ **How to auto-register:**
82
+ ```bash
83
+ gh issue create \
84
+ --title "{간결한 설명}" \
85
+ --body "## 출처\n\nv{version} 릴리즈 워크플로우에서 자동 등록.\n\n## 컨텍스트\n\n{상세 컨텍스트}\n\n## 권장 조치\n\n{권장 사항}" \
86
+ --label "professor"
87
+ ```
88
+ Add priority label (`P3` default for defects surfaced here; escalate to `P2` if MEDIUM+ severity).
89
+
90
+ **Authority**: user directive (session 102) — genuine defects found during release workflows should be registered without prompting. See also R016 Defect Response Matrix: CI/infra defect and Process gap both require Issue registration.
91
+
92
+ After auto-registering, include the created issue numbers in the summary display.
93
+
66
94
  ### 3. Present to User
67
95
 
68
- Display follow-up summary:
96
+ Auto-register all genuine defects first (see above). Then display follow-up summary showing what was already registered and what remains for user decision:
69
97
 
70
98
  ```
71
99
  [Follow-up] {n}개 후속 작업 발견
72
100
 
101
+ ━━━ 자동 등록 완료 ({count}개) ━━━
102
+ ✓ #{issue_number} — {description} (이미 등록됨)
103
+ ✓ #{issue_number} — {description} (이미 등록됨)
104
+
73
105
  ━━━ 즉시 실행 추천 ({count}개) ━━━
74
106
  1. {description} — 출처: {source}
75
107
  2. {description} — 출처: {source}
76
108
 
77
- ━━━ 이슈 등록 추천 ({count}개) ━━━
78
- 3. {description} — 출처: {source}
79
- 4. {description} — 출처: {source}
80
-
81
109
  ━━━ 참고 사항 ({count}개) ━━━
82
- 5. {description} — 이미 #{issue_number}로 추적 중
83
-
84
- 선택:
85
- [A] 추천대로 실행 (즉시 실행 + 이슈 등록)
86
- [B] 모두 즉시 실행
87
- [C] 모두 이슈 등록
88
- [D] 개별 선택 (항목별로 질문)
89
- [E] 건너뛰기
110
+ 3. {description} — 이미 #{issue_number}로 추적 중
111
+
112
+ 즉시 실행 항목 선택:
113
+ [A] 추천대로 실행 (즉시 실행 항목 모두 실행)
114
+ [B] 개별 선택 (항목별로 질문)
115
+ [C] 건너뛰기
90
116
  ```
91
117
 
92
- Use AskUserQuestion (or equivalent user prompt) to get the choice.
118
+ Use AskUserQuestion (or equivalent user prompt) to get the choice **only if there are "즉시 실행" items**. If there are none, skip the prompt and complete automatically.
93
119
 
94
120
  ### 4. Process User Choice
95
121
 
96
122
  **Option A (추천대로)**:
97
123
  - "Immediate" items → delegate to appropriate specialist agents for execution
98
- - "Trackable" items create GitHub issues via `gh issue create`
124
+ - (Trackable items were already auto-registered in step above)
99
125
  - "Informational" items → skip
100
126
 
101
- **Option B (모두 즉시 실행)**:
102
- - All Immediate + Trackable items delegate to specialist agents
103
- - Follow implementation patterns from the release workflow
104
-
105
- **Option C (모두 이슈 등록)**:
106
- - All Immediate + Trackable items → `gh issue create` with appropriate labels
107
- - Label: `professor` for auto-triage in next workflow run
108
-
109
- **Option D (개별 선택)**:
110
- - For each item, ask: `[{n}] {description} — 실행(E) / 이슈(I) / 건너뛰기(S)?`
127
+ **Option B (개별 선택)**:
128
+ - For each "즉시 실행" item, ask: `[{n}] {description} 실행(E) / 건너뛰기(S)?`
111
129
  - Process each per user choice
112
130
 
113
- **Option E (건너뛰기)**:
114
- - Skip all follow-up actions
131
+ **Option C (건너뛰기)**:
132
+ - Skip remaining immediate actions
115
133
  - Complete workflow
116
134
 
117
135
  ### 5. Report
@@ -126,7 +144,16 @@ Use AskUserQuestion (or equivalent user prompt) to get the choice.
126
144
 
127
145
  ## Issue Creation Template
128
146
 
129
- When creating follow-up issues:
147
+ For auto-registered genuine defects / process gaps:
148
+
149
+ ```bash
150
+ gh issue create \
151
+ --title "{간결한 설명}" \
152
+ --body "## 출처\n\nv{version} 릴리즈 워크플로우에서 자동 등록.\n\n## 컨텍스트\n\n{triage/verify에서의 상세 컨텍스트}\n\n## 권장 조치\n\n{권장 사항}" \
153
+ --label "professor"
154
+ ```
155
+
156
+ For user-requested issue creation (Option C fallback, if ever used):
130
157
 
131
158
  ```bash
132
159
  gh issue create \
@@ -135,12 +162,13 @@ gh issue create \
135
162
  --label "professor"
136
163
  ```
137
164
 
138
- Add priority label (`P1`, `P2`, `P3`) based on categorization.
165
+ Add priority label (`P1`, `P2`, `P3`) based on categorization. Default for auto-registered items: `P3` (escalate to `P2` for MEDIUM+ severity).
139
166
 
140
167
  ## Notes
141
168
 
142
169
  - This skill runs in the main conversation context (via workflow skill step)
143
- - User interaction is expected this is NOT a fully automated step
170
+ - Genuine defect/process gap items are auto-registered as issues WITHOUT user confirmation (session 102 directive)
171
+ - Only "즉시 실행" (code-changing immediate action) items require user confirmation
144
172
  - All file modifications delegated to specialist subagents per R010
145
173
  - Issue creation uses `gh` CLI directly (read-only operation pattern)
146
174
  - If no follow-up candidates found, report "No follow-up actions needed" and complete
@@ -22,17 +22,8 @@ Switch the active plugin set to match a workflow profile, reducing per-spawn ski
22
22
 
23
23
  ## Implementation rules
24
24
 
25
- > **MANDATORY — .claude/ path bypass (R010)**
26
- > ALL writes to `.claude/` paths MUST go through a `/tmp/*.sh` script via Bash.
27
- > Direct `Write(".claude/...")` or `Edit(".claude/...")` triggers user approval prompts
28
- > that block automation regardless of `bypassPermissions` mode.
29
- >
30
- > Pattern:
31
- > 1. Write tool → `/tmp/profile-{op}-$$.sh` with heredoc targeting `.claude/`
32
- > 2. Bash tool → `bash /tmp/profile-{op}-$$.sh`
33
- >
34
- > This applies to `.claude/profiles/.active` and `~/.claude/settings.json` writes.
35
- > Reference: R010 (MUST-orchestrator-coordination.md), #1046, #1052, #1062.
25
+ > **.claude/ path handling (CC v2.1.121+)**
26
+ > Direct Write/Edit on `.claude/profiles/.active` and `~/.claude/settings.json` is permitted under `mode: "bypassPermissions"` (CC v2.1.121+, #1101). The legacy `/tmp/*.sh` bypass is deprecated. For CC < v2.1.121, see git history for the legacy pattern.
36
27
 
37
28
  ## Profiles directory
38
29
 
@@ -35,6 +35,7 @@ A model allocation pattern that wraps implementation actions with stronger-model
35
35
  | Phase | Recommended Model | Rationale |
36
36
  |-------|------------------|-----------|
37
37
  | Pre-reasoning (analyze/plan) | opus | Complex architectural reasoning, edge case detection |
38
+ | Pre-reasoning (Opus 4.7) | opus47 | Opus 4.7 makes fewer tool calls and reasons more deeply; pre-reasoning phase should include explicit tool batch planning |
38
39
  | Action (implement/generate) | sonnet | Optimized for code generation, balanced cost |
39
40
  | Post-verification (review/test) | sonnet or haiku | Structural verification, checklist validation |
40
41
 
@@ -62,3 +63,23 @@ This pattern is used by:
62
63
  | Opus for everything | Wasteful, slow | Reserve opus for reasoning-heavy phases |
63
64
  | Haiku for planning | Insufficient depth | Use opus for complex analysis |
64
65
  | Skipping verification | False completion risk | Always include post-verification phase |
66
+ | Forcing frequent tool calls on Opus 4.7 | Fights model's natural reasoning-first tendency | Let Opus 4.7 reason; batch tool calls in pre-reasoning |
67
+
68
+ ## Opus 4.7 Considerations
69
+
70
+ Opus 4.7 exhibits a distinct behavioral pattern: fewer tool calls with deeper reasoning per call. This affects how the sandwich pattern is applied:
71
+
72
+ | Aspect | Opus 4.6 | Opus 4.7 |
73
+ |--------|----------|----------|
74
+ | Tool call frequency | Moderate | Lower |
75
+ | Reasoning depth per call | Standard | Deeper |
76
+ | Pre-reasoning benefit | Plan what to check | Plan explicit tool batch — model will under-call if not guided |
77
+
78
+ ### Pre-reasoning Adjustment for Opus 4.7
79
+
80
+ When using Opus 4.7 in the pre-reasoning phase:
81
+ 1. **Explicitly enumerate tools needed** — Opus 4.7 may skip tool calls it deems unnecessary
82
+ 2. **Batch tool-call plans upfront** — structure the action phase with a concrete tool sequence
83
+ 3. **Prefer fewer, richer tool calls** — align with the model's natural tendency
84
+
85
+ Reference: [Best practices for using Claude Opus 4.7 with Claude Code](https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code)
@@ -58,13 +58,13 @@ Before execution, show the plan:
58
58
 
59
59
  ```
60
60
  [Scout] {url}
61
- ├── Phase 1: Fetch & Summarize
62
- ├── Phase 2: Load Project Philosophy
63
- ├── Phase 3: Fit Analysis (sonnet)
64
- └── Phase 4: Issue Creation
61
+ ├── Phase 1: 콘텐츠 수집 및 요약
62
+ ├── Phase 2: 프로젝트 철학 로드
63
+ ├── Phase 3: 적합성 분석 (sonnet)
64
+ └── Phase 4: 이슈 생성
65
65
 
66
- Estimated: ~1 min | Cost: ~$0.5-1.5
67
- Execute? [Y/n]
66
+ 예상: ~1 | 비용: ~$0.5-1.5
67
+ 실행하시겠습니까? [Y/n]
68
68
  ```
69
69
 
70
70
  ## Workflow
@@ -90,7 +90,7 @@ Execute? [Y/n]
90
90
 
91
91
  ### Phase 3: Fit Analysis
92
92
 
93
- Spawn 1 sonnet agent with the following analysis prompt.
93
+ Spawn 1 sonnet agent with `mode: "bypassPermissions"` and the following analysis prompt.
94
94
 
95
95
  **Inputs**:
96
96
  - Fetched content summary (Phase 1)
@@ -133,6 +133,7 @@ Return a structured verdict:
133
133
  - philosophy_table: criterion/fit/rationale for each dimension
134
134
  - recommendation: specific integration plan or skip reason
135
135
  - next_steps: 2-3 actionable items
136
+ - IMPORTANT: Write all analysis output in Korean. Technical terms, code references, label names, and skill/agent names stay in English.
136
137
  - escalation: true/false (INTERNALIZE + M/L effort = true)
137
138
  ```
138
139
 
@@ -163,32 +164,32 @@ gh issue close {number} -c "Auto-closed: scout verdict is SKIP"
163
164
  ### Issue Body Template
164
165
 
165
166
  ```markdown
166
- ## Scout Report: {title}
167
+ ## Scout 리포트: {title}
167
168
 
168
- **Source**: {url}
169
- **Verdict**: {INTERNALIZE / INTEGRATE / SKIP}
170
- **Priority**: {P1 / P2 / P3}
169
+ **출처**: {url}
170
+ **판정**: {INTERNALIZE / INTEGRATE / SKIP}
171
+ **우선순위**: {P1 / P2 / P3}
171
172
 
172
- ## Summary
173
- {2-3 sentence summary of the external content}
173
+ ## 요약
174
+ {외부 콘텐츠에 대한 2-3문장 요약}
174
175
 
175
- ## Philosophy Alignment
176
- | Criterion | Fit | Rationale |
177
- |-----------|-----|-----------|
178
- | Compilation metaphor | {check/cross} | {explanation} |
179
- | Separation of concerns (R006) | {check/cross} | {explanation} |
180
- | Dynamic agent creation | {check/cross} | {explanation} |
181
- | Existing skill overlap | {check/cross} | {overlapping skills list} |
176
+ ## 프로젝트 철학 정합성
177
+ | 기준 | 적합 | 근거 |
178
+ |------|------|------|
179
+ | Compilation metaphor | {check/cross} | {설명} |
180
+ | Separation of concerns (R006) | {check/cross} | {설명} |
181
+ | Dynamic agent creation | {check/cross} | {설명} |
182
+ | 기존 스킬 중복 | {check/cross} | {중복 스킬 목록} |
182
183
 
183
- ## Recommendation
184
- {Specific integration planwhich skill/agent/guide to create, or why to skip}
184
+ ## 권장 사항
185
+ {구체적 통합 계획어떤 skill/agent/guide 생성할지, 또는 건너뛰는 이유}
185
186
 
186
- ## Next Steps
187
- - [ ] {follow-up action 1}
188
- - [ ] {follow-up action 2}
187
+ ## 다음 단계
188
+ - [ ] {후속 조치 1}
189
+ - [ ] {후속 조치 2}
189
190
 
190
191
  ---
191
- Generated by `/scout`
192
+ `/scout`에 의해 생성됨
192
193
  ```
193
194
 
194
195
  ## Escalation
@@ -196,18 +197,18 @@ Generated by `/scout`
196
197
  When verdict is `INTERNALIZE` and integration effort is M or L:
197
198
 
198
199
  ```
199
- [Advisory] Deep analysis recommended.
200
- └── Consider running: /research {url}
200
+ [Advisory] 심층 분석 권장.
201
+ └── 실행 검토: /research {url}
201
202
  ```
202
203
 
203
204
  ## Result Display
204
205
 
205
206
  ```
206
- [Scout Complete] {title}
207
- ├── Verdict: {INTERNALIZE / INTEGRATE / SKIP}
208
- ├── Priority: {P1 / P2 / P3}
209
- ├── Issue: #{number}
210
- └── Escalation: {/research recommended | none}
207
+ [Scout 완료] {title}
208
+ ├── 판정: {INTERNALIZE / INTEGRATE / SKIP}
209
+ ├── 우선순위: {P1 / P2 / P3}
210
+ ├── 이슈: #{number}
211
+ └── 에스컬레이션: {/research 권장 | 없음}
211
212
  ```
212
213
 
213
214
  ## Model Selection
@@ -43,15 +43,16 @@ Search the [skills.sh](https://skills.sh/) marketplace for reusable AI agent ski
43
43
  ├── Verify installation in .claude/skills/
44
44
  └── Check installed SKILL.md frontmatter
45
45
 
46
- 4. Post-install adaptation
47
- ├── Review installed SKILL.md frontmatter
48
- ├── Add oh-my-customcode fields if missing:
49
- │ ├── user-invocable: true|false
50
- │ ├── model-invocable (if not present)
51
- │ └── argument-hint (if applicable)
52
- └── Add source metadata:
53
- ├── source-type: skills-sh
54
- └── source-origin: <owner/repo>
46
+ 4. Post-install adaptation (delegate to mgr-creator per R010 Protected Paths)
47
+ ├── Delegate SKILL.md frontmatter adaptation to mgr-creator:
48
+ ├── Add oh-my-customcode fields if missing:
49
+ ├── user-invocable: true|false
50
+ ├── model-invocable (if not present)
51
+ └── argument-hint (if applicable)
52
+ └── Add source metadata:
53
+ ├── source-type: skills-sh
54
+ └── source-origin: <owner/repo>
55
+ └── mgr-creator validates R006 frontmatter compliance
55
56
 
56
57
  5. Ontology sync
57
58
  ├── Notify: run "omcustom ontology build" to register new skill
@@ -62,6 +62,13 @@ python:
62
62
  ## Workflow
63
63
 
64
64
  ```
65
+ 0. Self-update oh-my-customcode package
66
+ ├── Check npm registry for latest version
67
+ ├── Compare with current installed version
68
+ ├── Run "npm install -g oh-my-customcode@<latest>" if outdated
69
+ ├── Skip automatically for npx invocations (npx always fetches latest)
70
+ └── Failure is non-blocking — continue to Step 1 regardless
71
+
65
72
  1. Identify external resources
66
73
  ├── Scan index.yaml files
67
74
  ├── Find source.type = "external"
@@ -0,0 +1,182 @@
1
+ name: cc-release-monitor
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "17 7 * * *"
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ issues: write
10
+ contents: read
11
+
12
+ env:
13
+ MIN_PATCH: "151"
14
+
15
+ jobs:
16
+ monitor:
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - name: Fetch Claude Code releases and create issues
21
+ env:
22
+ GH_TOKEN: ${{ github.token }}
23
+ GITHUB_REPOSITORY: ${{ github.repository }}
24
+ MIN_PATCH: ${{ env.MIN_PATCH }}
25
+ run: |
26
+ python3 << 'PYEOF'
27
+ import json
28
+ import os
29
+ import re
30
+ import subprocess
31
+ import sys
32
+ import textwrap
33
+
34
+ GH_TOKEN = os.environ["GH_TOKEN"]
35
+ REPO = os.environ["GITHUB_REPOSITORY"]
36
+ MIN_PATCH = int(os.environ.get("MIN_PATCH", "151"))
37
+
38
+ print(f"=== cc-release-monitor: fetching Claude Code releases ===")
39
+ print(f"MIN_PATCH={MIN_PATCH}")
40
+
41
+ # ── Step 1: fetch all releases from anthropics/claude-code ──────────
42
+ result = subprocess.run(
43
+ ["gh", "api", "repos/anthropics/claude-code/releases", "--paginate"],
44
+ capture_output=True,
45
+ text=True,
46
+ env=os.environ,
47
+ )
48
+ if result.returncode != 0:
49
+ print(f"ERROR: gh api failed: {result.stderr.strip()}", file=sys.stderr)
50
+ sys.exit(1)
51
+
52
+ try:
53
+ releases = json.loads(result.stdout)
54
+ except json.JSONDecodeError as e:
55
+ print(f"ERROR: Failed to parse releases JSON: {e}", file=sys.stderr)
56
+ sys.exit(1)
57
+
58
+ # ── Step 2: filter — v2.1.NNN, no nightly, patch >= MIN_PATCH ───────
59
+ pattern = re.compile(r"^v2\.1\.(\d+)$")
60
+ candidates = []
61
+ for r in releases:
62
+ tag = r.get("tag_name", "")
63
+ if "nightly" in tag.lower():
64
+ continue
65
+ m = pattern.match(tag)
66
+ if not m:
67
+ continue
68
+ if int(m.group(1)) < MIN_PATCH:
69
+ continue
70
+ candidates.append({
71
+ "tag": tag,
72
+ "published_at": r.get("published_at", ""),
73
+ "html_url": r.get("html_url", ""),
74
+ "body": (r.get("body") or "").strip(),
75
+ })
76
+
77
+ print(f"Found {len(candidates)} candidate release(s) matching filter.")
78
+
79
+ if not candidates:
80
+ print("Nothing to do.")
81
+ sys.exit(0)
82
+
83
+ # ── Step 3: dedup and create ─────────────────────────────────────────
84
+ created = 0
85
+ skipped = 0
86
+
87
+ for release in candidates:
88
+ version = release["tag"] # e.g. "v2.1.151"
89
+ published_at = release["published_at"]
90
+ html_url = release["html_url"]
91
+ body_raw = release["body"]
92
+
93
+ issue_title = f"Claude Code {version}"
94
+
95
+ # Dedup: exact title match among all issues (open + closed)
96
+ check = subprocess.run(
97
+ [
98
+ "gh", "issue", "list",
99
+ "--repo", REPO,
100
+ "--state", "all",
101
+ "--search", issue_title,
102
+ "--json", "title",
103
+ ],
104
+ capture_output=True,
105
+ text=True,
106
+ env=os.environ,
107
+ )
108
+ if check.returncode != 0:
109
+ print(
110
+ f"WARNING: issue list failed for {version}: {check.stderr.strip()}",
111
+ file=sys.stderr,
112
+ )
113
+ skipped += 1
114
+ continue
115
+
116
+ existing = json.loads(check.stdout or "[]")
117
+ if any(i["title"] == issue_title for i in existing):
118
+ print(f"SKIP {version} — issue already exists")
119
+ skipped += 1
120
+ continue
121
+
122
+ # Truncate release body
123
+ MAX_BODY = 2000
124
+ if not body_raw:
125
+ release_summary = "_No release notes provided._"
126
+ elif len(body_raw) > MAX_BODY:
127
+ release_summary = body_raw[:MAX_BODY] + "... (truncated)"
128
+ else:
129
+ release_summary = body_raw
130
+
131
+ issue_body = textwrap.dedent(f"""\
132
+ # Claude Code {version}
133
+
134
+ **Release:** {version}
135
+ **Published:** {published_at}
136
+ **Link:** {html_url}
137
+
138
+ ## Release Summary
139
+
140
+ {release_summary}
141
+
142
+ ---
143
+
144
+ ## Action Items
145
+
146
+ - [ ] Review release notes for impact on oh-my-customcode
147
+ - [ ] Update agent definitions if new Claude Code features affect agents
148
+ - [ ] Test compatibility with current oh-my-customcode version
149
+ - [ ] Update CLAUDE.md if new capabilities are relevant
150
+
151
+ ---
152
+
153
+ _This issue was auto-created by the cc-release-monitor GitHub Actions workflow._\
154
+ """)
155
+
156
+ create = subprocess.run(
157
+ [
158
+ "gh", "issue", "create",
159
+ "--repo", REPO,
160
+ "--title", issue_title,
161
+ "--body", issue_body,
162
+ "--label", "automated,claude-code-release",
163
+ ],
164
+ capture_output=True,
165
+ text=True,
166
+ env=os.environ,
167
+ )
168
+ if create.returncode != 0:
169
+ print(
170
+ f"ERROR {version} — create failed: {create.stderr.strip()}",
171
+ file=sys.stderr,
172
+ )
173
+ skipped += 1
174
+ continue
175
+
176
+ issue_url = create.stdout.strip()
177
+ print(f"CREATE {version} — {issue_url}")
178
+ created += 1
179
+
180
+ print()
181
+ print(f"=== Summary: {created} created, {skipped} skipped ===")
182
+ PYEOF
@@ -1,7 +1,7 @@
1
1
  # Claude Code Version Compatibility
2
2
 
3
- > Updated: 2026-05-15
4
- > Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill, #1137, #1158)
3
+ > Updated: 2026-05-29
4
+ > Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill, #1137, #1158, #1242, #1243, #1244, #1245)
5
5
 
6
6
  ## Compatibility Baseline
7
7
 
@@ -491,6 +491,11 @@ docs/superpowers/plans/**
491
491
  | v2.1.148 | Bash 도구 exit 127 regression(v2.1.147 도입) 수정 — v2.1.147 사용 시 즉시 업그레이드 권장. | None |
492
492
  | v2.1.149 | `/usage` per-category(skills/subagents/plugins/MCP) breakdown, GFM 체크박스 렌더링, worktree sandbox allowlist fix, `find` macOS vnode crash fix. | P3 follow-up |
493
493
  | v2.1.150 | 내부 인프라 개선만, 사용자 대면 변경 없음. 조치 불필요. | None |
494
+ | v2.1.152 | `disallowed-tools` in skill frontmatter (R002/R006), `/reload-skills`, `SessionStart reloadSkills` — no harness change needed. | None |
495
+ | v2.1.153 | statusline `COLUMNS`/`LINES` env (R012), `skipLfs` marketplace option, `claude agents` autocomplete improvement. | P3 follow-up |
496
+ | v2.1.154 | Opus 4.8 + `opus48` alias (R006), dynamic workflows (R009/R018), lean system prompt default, `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` deprecated 06/01. | P3 follow-up |
497
+ | v2.1.156 | Opus 4.8 thinking-block API-error fix — no harness change needed. | None |
498
+ | #1241 | Agent tool malformed-parsing on long/special-char prompts — mitigations documented in Known Platform Issues. | See below |
494
499
 
495
500
  ## v2.1.144 (2026-05-19) — 호환성 점검
496
501
 
@@ -889,6 +894,233 @@ Bash 도구의 `find` 명령이 macOS system file/vnode table을 소진하여
889
894
 
890
895
  ---
891
896
 
897
+ ## v2.1.152 (2026-05-27) — 호환성 점검
898
+
899
+ > Issue: #1242 — CC v2.1.152 tracking
900
+
901
+ ### Skill/slash-command `disallowed-tools` frontmatter (R002/R006)
902
+
903
+ Skills and slash commands can now declare `disallowed-tools` in their frontmatter to remove specific tools from the model while the skill is active.
904
+
905
+ **oh-my-customcode 연관**: R002 tool permission tiers 및 R006 skill frontmatter optional fields와 직접 연관됩니다. 특정 스킬 실행 구간에 Bash나 Write 등 위험 도구를 제거하는 세밀한 tool scope 제어가 가능해집니다. 예: 조사 전용 스킬에서 `disallowed-tools: [Bash, Write]` 선언으로 read-only 강제. 신규 스킬 작성 시 활용 권장.
906
+
907
+ ### `/reload-skills` 명령 + `SessionStart reloadSkills: true`
908
+
909
+ `/reload-skills` 커맨드로 세션 재시작 없이 스킬 디렉토리를 재스캔할 수 있습니다. `SessionStart` 훅이 `reloadSkills: true`를 반환하면 훅이 설치한 스킬이 동일 세션 내에서 즉시 사용 가능합니다.
910
+
911
+ **oh-my-customcode 연관**: R006 스킬 인프라 및 SessionStart 훅(`hooks.json`)과 연관됩니다. 현재 SessionStart 훅은 HUD 초기화 및 메모리 로드에 사용되는데, 훅에서 스킬을 동적 설치하는 패턴이 필요한 경우 `reloadSkills: true`로 즉시 적용 가능합니다. 현재 하네스에서 즉시 활용 계획 없음 — 직접 변경 불필요.
912
+
913
+ ### `SessionStart` 훅 세션 제목 설정
914
+
915
+ `SessionStart` 훅이 `hookSpecificOutput.sessionTitle`을 통해 세션 제목을 설정할 수 있습니다.
916
+
917
+ **oh-my-customcode 연관**: R012 HUD와 결합하여 프로젝트/에이전트 컨텍스트를 창 제목에 반영하는 것이 가능합니다. 선택적 활용.
918
+
919
+ ### `MessageDisplay` 훅 이벤트
920
+
921
+ 어시스턴트 메시지 텍스트를 표시 시점에 변환하거나 숨길 수 있는 새 훅 이벤트입니다.
922
+
923
+ **oh-my-customcode 연관**: 고급 HUD 커스터마이제이션 후보. `.claude/hooks/` 변경은 R001에 따라 사용자 명시 승인 필요.
924
+
925
+ ### 기타 변경
926
+
927
+ - `--fallback-model` 설정 시 주 모델 불가 상태에서 세션 내 자동 fallback (오류 없이 계속)
928
+ - Auto mode opt-in consent 제거 (자동화 환경 진입 간소화)
929
+ - 터미널 렌더링 안정성 개선 다수 (툴 결과 링크 클릭, 마크다운 테이블, 포커스 모드 등)
930
+
931
+ **oh-my-customcode 연관**: `--fallback-model` 패턴은 R006 `model:` 프론트매터의 보완 수단으로 CI 환경에서 활용 가능합니다. 직접 harness 변경 불필요.
932
+
933
+ ### oh-my-customcode 연관 평가
934
+
935
+ | 변경 | oh-my-customcode 영향 | 조치 |
936
+ |------|----------------------|------|
937
+ | Skill `disallowed-tools` frontmatter | R002/R006 tool scope 세밀 제어 | 신규 스킬에서 선택적 활용 (opt-in) |
938
+ | `/reload-skills` + `SessionStart reloadSkills` | R006 스킬 동적 로딩 | None (현재 즉각 활용 계획 없음) |
939
+ | `SessionStart` 세션 제목 설정 | R012 HUD 강화 후보 | P3 follow-up |
940
+ | `MessageDisplay` 훅 | HUD 고급 커스터마이제이션 | P3 follow-up |
941
+ | `--fallback-model` | CI 환경 모델 안정성 | None (opt-in) |
942
+ | 터미널 렌더링 수정 | UX 개선 | None |
943
+
944
+ **Action items**:
945
+ - 본 릴리스에서 코드 변경 없음 (docs-only)
946
+ - 후속 follow-up 후보:
947
+ 1. `disallowed-tools` frontmatter를 read-only 스킬(연구·분석)에 적용 검토
948
+ 2. `SessionStart sessionTitle` hook을 R012 HUD 창 제목 통합에 활용 검토
949
+
950
+ ---
951
+
952
+ ## v2.1.153 (2026-05-28) — 호환성 점검
953
+
954
+ > Issue: #1243 — CC v2.1.153 tracking
955
+
956
+ ### Statusline scripts `COLUMNS`/`LINES` 환경 변수 수신 (R012)
957
+
958
+ `.claude/statusline.sh`를 포함한 statusline 스크립트가 `COLUMNS`와 `LINES` 환경 변수를 받게 되어 출력을 터미널 너비에 맞게 조정할 수 있습니다.
959
+
960
+ **oh-my-customcode 연관**: R012 HUD Statusline과 직접 연관됩니다. 현재 `.claude/statusline.sh`는 고정 형식으로 출력되는데, 좁은 터미널에서 상태줄이 잘리는 문제를 `COLUMNS`를 활용하여 반응형으로 개선할 수 있습니다. 별도 follow-up 권장 (P3).
961
+
962
+ ### `skipLfs` 플러그인 마켓플레이스 옵션
963
+
964
+ `github`/`git` 플러그인 마켓플레이스 소스에 `skipLfs: true` 옵션이 추가되어 Git LFS 다운로드를 건너뛸 수 있습니다.
965
+
966
+ **oh-my-customcode 연관**: 대형 LFS 에셋을 포함한 플러그인을 사용하는 환경에서 설치 속도 개선에 활용 가능합니다. 현재 oh-my-customcode 마켓플레이스 설정에는 직접 영향 없음.
967
+
968
+ ### `claude agents` 자동완성 개선
969
+
970
+ dispatch 입력의 자동완성이 프로젝트 스킬뿐 아니라 네이티브 슬래시 커맨드와 번들 스킬도 제안합니다.
971
+
972
+ **oh-my-customcode 연관**: R019 라우팅 및 에이전트 디스패치 UX 개선. 네이티브 `/code-review`와 내부 `dev-review` 스킬 구분이 자동완성에서도 명확해집니다. 직접 harness 변경 불필요.
973
+
974
+ ### `/model` 기본값 저장 (`s` 키로 현재 세션만 변경)
975
+
976
+ `/model` 선택이 새 세션 기본값으로 저장됩니다. 현재 세션만 변경하려면 `s` 키를 사용합니다. 기존 `d` 키는 `s` 키(`thisSessionOnly`)로 변경되었습니다.
977
+
978
+ **oh-my-customcode 연관**: R006 agent frontmatter `model:` 설정이 세션 기본값과 독립적으로 동작하는 기존 동작과 정합. keybindings.json에서 `modelPicker:setAsDefault`를 커스터마이즈한 경우 `modelPicker:thisSessionOnly`로 rename 필요.
979
+
980
+ ### 기타 수정 (안정성)
981
+
982
+ - MCP 서버 frontmatter policy 적용 수정 (`--strict-mcp-config`, managed settings 정책)
983
+ - 과도한 메모리 사용 수정 (세션 파일 경로로 세션 재개 시 여러 GB)
984
+ - `Agent` 도구 `subagent_type: 'claude'` 사용 시 gitignored 경로 출력 무음 폐기 수정
985
+ - stateful MCP 서버 reconnect-loop regression 수정 (v2.1.147 도입)
986
+ - 백그라운드 세션 다수 UX/안정성 수정
987
+
988
+ **oh-my-customcode 연관**: MCP 정책 수정은 R011 claude-mem / R019 ontology-rag 서버 동작에 영향 가능합니다. `subagent_type: 'claude'` gitignored 경로 수정은 R010 subagent 델리게이션 시 `.claude/outputs/` 아티팩트 채널 사용 신뢰성을 높입니다.
989
+
990
+ ### oh-my-customcode 연관 평가
991
+
992
+ | 변경 | oh-my-customcode 영향 | 조치 |
993
+ |------|----------------------|------|
994
+ | Statusline `COLUMNS`/`LINES` | R012 반응형 statusline 가능 | P3 follow-up |
995
+ | `skipLfs` 마켓플레이스 옵션 | LFS 포함 플러그인 설치 개선 | None |
996
+ | `claude agents` 자동완성 | 네이티브/내부 스킬 구분 UX | None |
997
+ | `/model` 기본값 저장 (`s` 키) | R006 model 설정 정합 | keybindings.json 커스터마이즈 시 rename |
998
+ | MCP 서버 frontmatter policy 수정 | R011/R019 MCP 서버 정책 안정성 | 호환, 개선 |
999
+ | MCP 과다 메모리 사용 수정 | 장시간 세션 안정성 | 호환, 개선 |
1000
+ | `subagent_type: 'claude'` gitignored 수정 | R010 아티팩트 채널 신뢰성 | 호환, 개선 |
1001
+
1002
+ **Action items**:
1003
+ - 본 릴리스에서 코드 변경 없음 (docs-only)
1004
+ - 후속 follow-up 후보:
1005
+ 1. `.claude/statusline.sh`에 `COLUMNS` 기반 반응형 출력 적용 (R012)
1006
+
1007
+ ---
1008
+
1009
+ ## v2.1.154 (2026-05-28) — 호환성 점검
1010
+
1011
+ > Issue: #1244 — CC v2.1.154 tracking
1012
+
1013
+ > **Note**: v2.1.151 및 v2.1.155는 공개 릴리즈가 없었습니다 (Claude Code는 일부 패치 번호를 건너뜁니다).
1014
+
1015
+ ### Opus 4.8 도입 (R006 model aliases)
1016
+
1017
+ Opus 4.8이 출시되었습니다. 기본 effort는 `high`이며, `/effort xhigh`로 최고 추론 강도를 활성화할 수 있습니다. Fast Mode on Opus 4.8이 표준 요금의 2배 가격에 2.5배 속도로 제공됩니다.
1018
+
1019
+ **oh-my-customcode 연관**: R006 model aliases 표에 `opus48` alias 추가가 필요합니다. 현재 `opus` alias는 `claude-opus-4-6`을 가리키며, Opus 4.8 사용 에이전트는 full model ID(`claude-opus-4-8`) 또는 신규 alias를 명시해야 합니다. `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` 환경 변수는 **2026-06-01 폐기 예정** — 해당 변수를 사용하는 환경에서는 `/model claude-opus-4-6[1m]` + `/fast on`으로 전환 필요합니다.
1020
+
1021
+ **추천 업데이트**: R006 MUST-agent-design.md의 model aliases 표에 `opus48` → `claude-opus-4-8` 항목 추가. 별도 이슈로 추적 권장.
1022
+
1023
+ ### Dynamic Workflows — `Workflow` 도구 (R009/R018)
1024
+
1025
+ `Workflow` 도구가 일반 공개되었습니다. `/workflows`로 실행 중인 워크플로우를 확인할 수 있습니다. 백그라운드에서 수십~수백 개의 에이전트를 오케스트레이션합니다.
1026
+
1027
+ **oh-my-customcode 연관**: R009 병렬 실행 및 R018 Agent Teams와 개념적으로 중첩됩니다. oh-my-customcode `/pipeline` 스킬(workflows/*.yaml)과의 통합 가능성이 높아졌습니다. 현재는 네이티브 `Workflow` 도구를 실험적으로 평가하는 단계이며, R009/R018 기존 패턴이 기본으로 유지됩니다. 중장기 통합 후보 (P2).
1028
+
1029
+ ### Lean system prompt 기본값 변경
1030
+
1031
+ Lean system prompt가 Haiku, Sonnet, Opus 4.7 이하를 제외한 모든 모델의 기본값이 되었습니다.
1032
+
1033
+ **oh-my-customcode 연관**: Opus 4.8 기반 에이전트(arch-documenter, arch-speckit-agent 등)는 lean system prompt로 실행됩니다. system prompt 토큰이 감소하여 R013 ecomode context budget에 긍정적입니다. 직접 harness 변경 불필요.
1034
+
1035
+ ### `AskUserQuestion` 자제 개선
1036
+
1037
+ Claude가 스스로 판단할 수 있는 상황에서는 multiple-choice prompt를 보내지 않도록 개선되었습니다.
1038
+
1039
+ **oh-my-customcode 연관**: R015 intent transparency의 ambiguity-gate 패턴과 정합. 불필요한 확인 요청 감소로 자동화 흐름이 개선됩니다.
1040
+
1041
+ ### `/simplify` 역할 변경
1042
+
1043
+ `/simplify`가 이제 cleanup-only review(재사용, 단순화, 효율성)를 실행하고 수정사항을 적용합니다. `/code-review --fix`의 전체 버그 탐색 리뷰와는 별도입니다.
1044
+
1045
+ **oh-my-customcode 연관**: v2.1.146/v2.1.147에서 언급된 `/simplify`→`/code-review` 개명의 후속 조치입니다. 내부 `dev-review` 스킬과는 여전히 충돌 없음.
1046
+
1047
+ ### `claude agents`: shell 명령 백그라운드 세션으로 실행
1048
+
1049
+ `claude agents`에서 `! <command>`를 입력하면 셸 명령이 독립 백그라운드 세션으로 실행됩니다. `claude --bg --exec '<command>'`와 동일합니다.
1050
+
1051
+ **oh-my-customcode 연관**: 긴 CI/빌드 명령을 백그라운드로 분리할 때 유용합니다. R010 Universal bypassPermissions와 무관 (별도 채널).
1052
+
1053
+ ### 기타 변경
1054
+
1055
+ - Plugins `defaultEnabled: false` — 필요 시 명시 활성화 가능 (oh-my-customcode 필수 플러그인 영향 없음)
1056
+ - Streaming tool execution 항상 활성화 (Bedrock/Vertex/Foundry 포함)
1057
+ - `Stdio MCP` 서브프로세스에 `CLAUDE_CODE_SESSION_ID`, `CLAUDECODE=1` 환경 변수 전달
1058
+ - `rm -rf $HOME` trailing slash 경우 위험 경로 차단 수정 (R001 보안 강화)
1059
+ - 배경 에이전트 worktree 격리 guard 수정 (공유 체크아웃 write 방지)
1060
+
1061
+ **oh-my-customcode 연관**: `CLAUDE_CODE_SESSION_ID` 전달은 R011 메모리 MCP 서버(`claude-mem`, `agentmemory`)의 세션 스코핑에 활용 가능합니다. `rm -rf $HOME` trailing slash 수정은 R001 안전 규칙 강화입니다.
1062
+
1063
+ ### oh-my-customcode 연관 평가
1064
+
1065
+ | 변경 | oh-my-customcode 영향 | 조치 |
1066
+ |------|----------------------|------|
1067
+ | Opus 4.8 도입 | R006 model aliases 업데이트 필요 | 별도 이슈 등록 권장 (P2) |
1068
+ | `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` 폐기 (06/01) | 해당 변수 사용 환경 전환 필요 | 06/01 이전 조치 필요 |
1069
+ | Dynamic Workflows | R009/R018 + `/pipeline` 스킬 통합 후보 | P2 follow-up |
1070
+ | Lean system prompt 기본값 | Opus 4.8 에이전트 토큰 감소 | None (자동 적용) |
1071
+ | `AskUserQuestion` 자제 | R015 ambiguity-gate 개선 | None |
1072
+ | `/simplify` cleanup-only | 내부 `dev-review`와 충돌 없음 | None |
1073
+ | `! <command>` bg shell | 빌드 명령 백그라운드 분리 | None (opt-in) |
1074
+ | `CLAUDE_CODE_SESSION_ID` MCP 전달 | R011 MCP 세션 스코핑 | None (옵션 활용) |
1075
+ | `rm -rf $HOME` trailing slash fix | R001 보안 강화 | None |
1076
+ | 배경 에이전트 worktree guard fix | R009 격리 안전성 | None |
1077
+
1078
+ **Action items**:
1079
+ - **[P2]** R006 MUST-agent-design.md model aliases 표에 `opus48` → `claude-opus-4-8` 추가 (별도 이슈 등록 권장)
1080
+ - **[긴급]** `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` 사용 환경이 있다면 2026-06-01 전에 `/model claude-opus-4-6[1m]` + `/fast on` 패턴으로 전환
1081
+ - **[P2]** Dynamic Workflows와 `/pipeline` 스킬 통합 가능성 연구
1082
+
1083
+ ---
1084
+
1085
+ ## v2.1.156 (2026-05-29) — 호환성 점검
1086
+
1087
+ > Issue: #1245 — CC v2.1.156 tracking
1088
+
1089
+ > **Note**: v2.1.155는 공개 릴리즈가 없었습니다 (Claude Code는 일부 패치 번호를 건너뜁니다).
1090
+
1091
+ ### Opus 4.8 thinking-block API 오류 수정
1092
+
1093
+ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그가 수정되었습니다.
1094
+
1095
+ **oh-my-customcode 연관**: Opus 4.8 기반 에이전트(v2.1.154에서 도입)의 안정성이 개선됩니다. v2.1.154로 Opus 4.8을 도입한 경우 v2.1.156으로 업그레이드가 강력히 권장됩니다. 직접 harness 변경 불필요.
1096
+
1097
+ ### oh-my-customcode 연관 평가
1098
+
1099
+ | 변경 | oh-my-customcode 영향 | 조치 |
1100
+ |------|----------------------|------|
1101
+ | Opus 4.8 thinking-block API 오류 수정 | Opus 4.8 에이전트 안정성 복구 | v2.1.154 사용 시 즉시 업그레이드 |
1102
+
1103
+ **Action items**:
1104
+ - v2.1.154를 사용 중이라면 v2.1.156으로 즉시 업그레이드 (Opus 4.8 thinking-block 안정성)
1105
+ - 본 릴리스에서 코드 변경 없음 (docs-only)
1106
+
1107
+ ---
1108
+
1109
+ ## Known Platform Issues & Workarounds
1110
+
1111
+ ### Agent tool malformed parsing on long / special-character prompts (#1241)
1112
+
1113
+ **Symptom**: The Agent (subagent dispatch) tool intermittently fails to parse delegation prompts when they are very long or contain heavy special characters (backticks, consecutive colons, shell-variable syntax), reporting the tool call as `malformed`. This is a Claude Code platform-level serialization issue, not an oh-my-customcode defect.
1114
+
1115
+ **Workarounds** (already aligned with existing rules):
1116
+ - Pre-decompose oversized delegations: when a delegated prompt exceeds ~5000 tokens or spans 3+ unrelated domains, split into parallel domain-scoped agents (R009 giant-prompt anti-pattern).
1117
+ - In delegation prompts, prefer plain prose over heavy literal blocks; avoid long fenced code with backticks and consecutive `::` sequences where a plain description suffices.
1118
+ - For unavoidable large payloads, hand off via an artifact file path (R006 Artifact Channel Protocol) instead of inlining the content in the prompt.
1119
+
1120
+ > Issue: #1241 — Agent tool malformed-parsing workaround (platform bug; mitigations documented)
1121
+
1122
+ ---
1123
+
892
1124
  ## References
893
1125
 
894
1126
  - #967 — Claude Code v2.1.117 release note
@@ -906,6 +1138,11 @@ Bash 도구의 `find` 명령이 macOS system file/vnode table을 소진하여
906
1138
  - #1218 — Claude Code v2.1.148 compatibility documentation
907
1139
  - #1219 — Claude Code v2.1.149 compatibility documentation
908
1140
  - #1220 — Claude Code v2.1.150 compatibility documentation
1141
+ - #1241 — Agent tool malformed-parsing workaround
1142
+ - #1242 — Claude Code v2.1.152 compatibility documentation
1143
+ - #1243 — Claude Code v2.1.153 compatibility documentation
1144
+ - #1244 — Claude Code v2.1.154 compatibility documentation
1145
+ - #1245 — Claude Code v2.1.156 compatibility documentation
909
1146
  - `.claude/skills/claude-native/` — auto-generation source
910
1147
  - `.claude/rules/SHOULD-hud-statusline.md` — R012 statusline integration
911
1148
  - `.claude/rules/MUST-agent-design.md` — R006 agent frontmatter spec
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.154.1",
2
+ "version": "0.156.0",
3
3
  "lastUpdated": "2026-05-20T00:00:00.000Z",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",