oh-my-customcode 0.154.1 → 0.155.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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/MUST-continuous-improvement.md +2 -0
- package/templates/.claude/skills/agora/SKILL.md +1 -9
- 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/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -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
|
|
|
@@ -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"
|
package/templates/manifest.json
CHANGED