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 +2 -2
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/templates/.claude/rules/MUST-continuous-improvement.md +2 -0
- package/templates/.claude/skills/agora/SKILL.md +1 -9
- package/templates/.claude/skills/claude-native/SKILL.md +9 -7
- package/templates/.claude/skills/codex-exec/SKILL.md +1 -9
- package/templates/.claude/skills/hada-scout/SKILL.md +100 -48
- package/templates/.claude/skills/memory-management/SKILL.md +44 -0
- package/templates/.claude/skills/omcustom-auto-improve/SKILL.md +2 -2
- package/templates/.claude/skills/pipeline/SKILL.md +44 -0
- package/templates/.claude/skills/post-release-followup/SKILL.md +59 -31
- package/templates/.claude/skills/profile/SKILL.md +2 -11
- package/templates/.claude/skills/reasoning-sandwich/SKILL.md +21 -0
- package/templates/.claude/skills/scout/SKILL.md +34 -33
- package/templates/.claude/skills/skills-sh-search/SKILL.md +10 -9
- package/templates/.claude/skills/update-external/SKILL.md +7 -0
- package/templates/.github/workflows/cc-release-monitor.yml +182 -0
- package/templates/guides/claude-code/15-version-compatibility.md +239 -2
- package/templates/manifest.json +1 -1
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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 "
|
|
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 `
|
|
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
|
|
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 "
|
|
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
|
|
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
|
|
132
|
-
- #1235
|
|
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
|
-
|
|
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
|
|
4
|
-
scope:
|
|
5
|
-
version:
|
|
6
|
-
user-invocable:
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
22
|
+
## Architecture: 3-Phase In-Session Pipeline
|
|
18
23
|
|
|
19
|
-
###
|
|
24
|
+
### Phase 1 — Fetch & Parse
|
|
20
25
|
|
|
21
|
-
1.
|
|
22
|
-
2.
|
|
23
|
-
3.
|
|
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
|
-
###
|
|
30
|
+
### Phase 2 — Pre-Scout (haiku batch)
|
|
27
31
|
|
|
28
|
-
1.
|
|
29
|
-
2.
|
|
30
|
-
3.
|
|
31
|
-
4.
|
|
32
|
-
5.
|
|
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
|
-
|
|
38
|
+
### Phase 3 — Scout Dispatch
|
|
35
39
|
|
|
36
|
-
hada-scout
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
| `
|
|
77
|
-
| `
|
|
78
|
-
| `
|
|
79
|
-
| `
|
|
80
|
-
| `
|
|
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 |
|
|
87
|
-
| R010 |
|
|
88
|
-
|
|
|
89
|
-
|
|
90
|
-
|
|
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 |
|
|
70
|
-
| routing |
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
124
|
+
- (Trackable items were already auto-registered in step above)
|
|
99
125
|
- "Informational" items → skip
|
|
100
126
|
|
|
101
|
-
**Option B (
|
|
102
|
-
-
|
|
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
|
|
114
|
-
- Skip
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
-
>
|
|
26
|
-
>
|
|
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:
|
|
62
|
-
├── Phase 2:
|
|
63
|
-
├── Phase 3:
|
|
64
|
-
└── Phase 4:
|
|
61
|
+
├── Phase 1: 콘텐츠 수집 및 요약
|
|
62
|
+
├── Phase 2: 프로젝트 철학 로드
|
|
63
|
+
├── Phase 3: 적합성 분석 (sonnet)
|
|
64
|
+
└── Phase 4: 이슈 생성
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
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
|
|
167
|
+
## Scout 리포트: {title}
|
|
167
168
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
**출처**: {url}
|
|
170
|
+
**판정**: {INTERNALIZE / INTEGRATE / SKIP}
|
|
171
|
+
**우선순위**: {P1 / P2 / P3}
|
|
171
172
|
|
|
172
|
-
##
|
|
173
|
-
{2-3
|
|
173
|
+
## 요약
|
|
174
|
+
{외부 콘텐츠에 대한 2-3문장 요약}
|
|
174
175
|
|
|
175
|
-
##
|
|
176
|
-
|
|
|
177
|
-
|
|
178
|
-
| Compilation metaphor | {check/cross} | {
|
|
179
|
-
| Separation of concerns (R006) | {check/cross} | {
|
|
180
|
-
| Dynamic agent creation | {check/cross} | {
|
|
181
|
-
|
|
|
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
|
-
##
|
|
184
|
-
{
|
|
184
|
+
## 권장 사항
|
|
185
|
+
{구체적 통합 계획 — 어떤 skill/agent/guide를 생성할지, 또는 건너뛰는 이유}
|
|
185
186
|
|
|
186
|
-
##
|
|
187
|
-
- [ ] {
|
|
188
|
-
- [ ] {
|
|
187
|
+
## 다음 단계
|
|
188
|
+
- [ ] {후속 조치 1}
|
|
189
|
+
- [ ] {후속 조치 2}
|
|
189
190
|
|
|
190
191
|
---
|
|
191
|
-
|
|
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]
|
|
200
|
-
└──
|
|
200
|
+
[Advisory] 심층 분석 권장.
|
|
201
|
+
└── 실행 검토: /research {url}
|
|
201
202
|
```
|
|
202
203
|
|
|
203
204
|
## Result Display
|
|
204
205
|
|
|
205
206
|
```
|
|
206
|
-
[Scout
|
|
207
|
-
├──
|
|
208
|
-
├──
|
|
209
|
-
├──
|
|
210
|
-
└──
|
|
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
|
-
├──
|
|
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-
|
|
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
|
package/templates/manifest.json
CHANGED