oh-my-customcode 0.70.0 → 0.71.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/README.md +7 -7
- package/dist/cli/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/templates/.claude/skills/claude-native/SKILL.md +215 -0
- package/templates/.claude/skills/evaluator-optimizer/SKILL.md +1 -1
- package/templates/.claude/skills/pipeline/SKILL.md +102 -0
- package/templates/CLAUDE.md +4 -3
- package/templates/manifest.json +2 -2
- package/templates/workflows/auto-dev.yaml +5 -5
- package/templates/.claude/skills/workflow/SKILL.md +0 -68
- package/templates/.claude/skills/workflow-resume/SKILL.md +0 -26
- package/templates/.claude/skills/workflow-runner/SKILL.md +0 -75
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
**[한국어 문서 (Korean)](./README_ko.md)**
|
|
15
15
|
|
|
16
|
-
46 agents.
|
|
16
|
+
46 agents. 99 skills. 21 rules. One command.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npm install -g oh-my-customcode && cd your-project && omcustom init
|
|
@@ -146,20 +146,20 @@ Each agent declares its tools, model, memory scope, and limitations in YAML fron
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
-
### Skills (
|
|
149
|
+
### Skills (99)
|
|
150
150
|
|
|
151
151
|
| Category | Count | Includes |
|
|
152
152
|
|----------|-------|----------|
|
|
153
153
|
| Best Practices | 24 | Go, Python, TypeScript, Kotlin, Rust, React, FastAPI, Spring Boot, Django, Flutter, Docker, AWS, Postgres, Redis, Kafka, dbt, Spark, Snowflake, Airflow, pipeline-architecture-patterns, alembic, and more |
|
|
154
154
|
| Routing | 4 | secretary, dev-lead, de-lead, qa-lead |
|
|
155
|
-
| Workflow |
|
|
155
|
+
| Workflow | 13 | structured-dev-cycle, deep-plan, research, evaluator-optimizer, dag-orchestration, worker-reviewer-pipeline, reasoning-sandwich, pipeline, and more |
|
|
156
156
|
| Development | 7 | dev-review, dev-refactor, analysis, create-agent, intent-detection, web-design-guidelines, omcustom-takeover |
|
|
157
157
|
| Operations | 9 | update-docs, audit-agents, sauron-watch, monitoring-setup, fix-refs, release-notes, and more |
|
|
158
158
|
| Memory | 3 | memory-save, memory-recall, memory-management |
|
|
159
159
|
| Package | 3 | npm-publish, npm-version, npm-audit |
|
|
160
160
|
| Optimization | 3 | optimize-analyze, optimize-bundle, optimize-report |
|
|
161
161
|
| Security | 3 | adversarial-review, cve-triage, jinja2-prompts |
|
|
162
|
-
| Other |
|
|
162
|
+
| Other | 9 | codex-exec, claude-native, vercel-deploy, skills-sh-search, result-aggregation, writing-clearly-and-concisely, and more |
|
|
163
163
|
|
|
164
164
|
Skills use a 3-tier scope system: `core` (universal), `harness` (agent/skill maintenance), `package` (project-specific).
|
|
165
165
|
|
|
@@ -181,8 +181,8 @@ All commands are invoked inside the Claude Code conversation.
|
|
|
181
181
|
| `/sdd-dev` | Spec-Driven Development workflow |
|
|
182
182
|
| `/ambiguity-gate` | Pre-routing ambiguity analysis |
|
|
183
183
|
| `/adversarial-review` | Attacker-mindset security code review |
|
|
184
|
-
| `/
|
|
185
|
-
| `/
|
|
184
|
+
| `/pipeline` | Execute YAML-defined pipelines |
|
|
185
|
+
| `/pipeline resume` | Resume a halted pipeline from last failure point |
|
|
186
186
|
|
|
187
187
|
### Agent Management
|
|
188
188
|
|
|
@@ -282,7 +282,7 @@ your-project/
|
|
|
282
282
|
├── CLAUDE.md # Entry point
|
|
283
283
|
├── .claude/
|
|
284
284
|
│ ├── agents/ # 46 agent definitions
|
|
285
|
-
│ ├── skills/ #
|
|
285
|
+
│ ├── skills/ # 99 skill modules
|
|
286
286
|
│ ├── rules/ # 21 governance rules (R000-R021)
|
|
287
287
|
│ ├── hooks/ # 15 lifecycle hook scripts
|
|
288
288
|
│ ├── schemas/ # Tool input validation schemas
|
package/dist/cli/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-native
|
|
3
|
+
description: Monitor Claude Code releases and auto-generate GitHub issues for each new version
|
|
4
|
+
scope: core
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[--backfill] [--dry-run]"
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Claude Native Skill
|
|
11
|
+
|
|
12
|
+
Monitor Claude Code (the CLI tool) release history and auto-generate GitHub issues for each new version that has not yet been tracked. Replaces the deprecated customclaw Airflow-based monitoring (deprecated 2026-03-18).
|
|
13
|
+
|
|
14
|
+
## Options
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
--backfill Process ALL versions >= v2.1.86 (default behavior when flag is present)
|
|
18
|
+
Without flag: only check the latest 5 releases
|
|
19
|
+
--dry-run Show what issues would be created without actually creating them
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
### Phase 1: Fetch CC Releases
|
|
25
|
+
|
|
26
|
+
Fetch all Claude Code releases from the GitHub API:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
gh api repos/anthropics/claude-code/releases \
|
|
30
|
+
--paginate \
|
|
31
|
+
--jq '.[] | {tag_name: .tag_name, published_at: .published_at, html_url: .html_url, body: .body}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- Without `--backfill`: fetch only the latest 5 releases (`--limit 5` or first 5 results)
|
|
35
|
+
- With `--backfill`: fetch all releases (use `--paginate`)
|
|
36
|
+
- Filter: only process versions >= v2.1.86 (monitoring stopped after v2.1.85 / issue #683)
|
|
37
|
+
|
|
38
|
+
### Phase 2: Check Existing Issues
|
|
39
|
+
|
|
40
|
+
Search for existing tracking issues to avoid duplicates:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
gh issue list \
|
|
44
|
+
--state all \
|
|
45
|
+
--search "[Claude Code v" \
|
|
46
|
+
--json number,title \
|
|
47
|
+
--limit 100
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Build a set of already-tracked versions by extracting version strings from issue titles matching the pattern `[Claude Code v{version}]`.
|
|
51
|
+
|
|
52
|
+
### Phase 3: Dedup
|
|
53
|
+
|
|
54
|
+
For each fetched release version:
|
|
55
|
+
- Parse the version string from `tag_name` (e.g., `v2.1.86`)
|
|
56
|
+
- If a matching issue title already exists → skip (already tracked)
|
|
57
|
+
- If no matching issue → add to "needs issue" list
|
|
58
|
+
|
|
59
|
+
### Phase 4: Create Issues (or Dry-Run Report)
|
|
60
|
+
|
|
61
|
+
#### Dry-Run Mode (`--dry-run`)
|
|
62
|
+
|
|
63
|
+
Print a report of what would be created:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
[Dry Run] Would create issues for:
|
|
67
|
+
- v2.1.86 (published: 2026-01-15)
|
|
68
|
+
- v2.1.87 (published: 2026-01-22)
|
|
69
|
+
...
|
|
70
|
+
No issues were created.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Live Mode
|
|
74
|
+
|
|
75
|
+
For each version in the "needs issue" list, create a GitHub issue:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
gh issue create \
|
|
79
|
+
--title "[Claude Code v{version}] New release detected" \
|
|
80
|
+
--label "automated,claude-code-release" \
|
|
81
|
+
--body "{body}"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Issue body format (matching the pattern established by issue #683):
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
# Claude Code v{version}
|
|
88
|
+
|
|
89
|
+
**Release:** v{version}
|
|
90
|
+
**Published:** {published_at}
|
|
91
|
+
**Link:** {html_url}
|
|
92
|
+
|
|
93
|
+
## Release Summary
|
|
94
|
+
|
|
95
|
+
{release_notes_body — truncated to first 2000 chars if too long}
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Action Items
|
|
100
|
+
|
|
101
|
+
- [ ] Review release notes for impact on oh-my-customcode
|
|
102
|
+
- [ ] Update agent definitions if new Claude Code features affect agents
|
|
103
|
+
- [ ] Test compatibility with current oh-my-customcode version
|
|
104
|
+
- [ ] Update CLAUDE.md if new capabilities are relevant
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
_This issue was created by the `/omcustom:claude-native` skill._
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Notes:**
|
|
112
|
+
- If `body` from the release is empty, use `_No release notes provided._`
|
|
113
|
+
- Truncate release body at 2000 characters and append `... (truncated)` if needed
|
|
114
|
+
- The `automated` and `claude-code-release` labels must exist in the repository; create them if missing:
|
|
115
|
+
```bash
|
|
116
|
+
gh label create "automated" --color "#0075ca" --description "Automated issue" 2>/dev/null || true
|
|
117
|
+
gh label create "claude-code-release" --color "#e4e669" --description "Claude Code release tracking" 2>/dev/null || true
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Phase 5: Report Results
|
|
121
|
+
|
|
122
|
+
After processing all versions:
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
[claude-native] Scan complete
|
|
126
|
+
|
|
127
|
+
Versions checked: {N}
|
|
128
|
+
New issues created: {M}
|
|
129
|
+
|
|
130
|
+
Created:
|
|
131
|
+
- #1234 [Claude Code v2.1.86] New release detected
|
|
132
|
+
- #1235 [Claude Code v2.1.87] New release detected
|
|
133
|
+
|
|
134
|
+
Already tracked (skipped):
|
|
135
|
+
- v2.1.85 → #683
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
If no new releases found:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
[claude-native] No new releases found. All versions >= v2.1.86 are already tracked.
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Version Filtering Logic
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
MIN_VERSION = "2.1.86"
|
|
148
|
+
|
|
149
|
+
For each release:
|
|
150
|
+
version = strip_v_prefix(tag_name) # "v2.1.86" → "2.1.86"
|
|
151
|
+
parts = split(version, ".") # ["2", "1", "86"]
|
|
152
|
+
if compare_semver(version, MIN_VERSION) >= 0:
|
|
153
|
+
include
|
|
154
|
+
else:
|
|
155
|
+
skip
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Semver comparison: major → minor → patch (all numeric). Pre-release suffixes (e.g., `-beta`) are included and compared lexicographically after numeric parts.
|
|
159
|
+
|
|
160
|
+
## Error Handling
|
|
161
|
+
|
|
162
|
+
| Error | Action |
|
|
163
|
+
|-------|--------|
|
|
164
|
+
| `gh` not authenticated | Report: "Error: gh CLI not authenticated. Run `gh auth login` first." |
|
|
165
|
+
| Rate limit hit | Report current status, list remaining versions |
|
|
166
|
+
| Label creation fails | Warn and continue (issue created without label) |
|
|
167
|
+
| Release body parse error | Use empty body fallback, continue |
|
|
168
|
+
|
|
169
|
+
## Integration Options
|
|
170
|
+
|
|
171
|
+
### Manual
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
/omcustom:claude-native
|
|
175
|
+
/omcustom:claude-native --backfill
|
|
176
|
+
/omcustom:claude-native --dry-run
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Automatic (SessionStart Hook)
|
|
180
|
+
|
|
181
|
+
Can be integrated into the SessionStart hook to check for new releases at session start:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"SessionStart": [
|
|
186
|
+
{
|
|
187
|
+
"command": "bash .claude/hooks/scripts/claude-native-check.sh"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
A lightweight wrapper script can run a `--dry-run` check and notify if new releases exist.
|
|
194
|
+
|
|
195
|
+
### Scheduled (CronCreate)
|
|
196
|
+
|
|
197
|
+
Can be set up as a scheduled remote agent using `/schedule`:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
/schedule "daily at 9am: /omcustom:claude-native"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Or via CronCreate MCP tool for programmatic scheduling.
|
|
204
|
+
|
|
205
|
+
## Prerequisites
|
|
206
|
+
|
|
207
|
+
- `gh` CLI installed and authenticated (`gh auth status`)
|
|
208
|
+
- Repository: `baekenough/oh-my-customcode` (default, detected from git remote)
|
|
209
|
+
- Labels `automated` and `claude-code-release` (auto-created if missing)
|
|
210
|
+
|
|
211
|
+
## Background
|
|
212
|
+
|
|
213
|
+
- Last manually tracked release: v2.1.85 (issue #683)
|
|
214
|
+
- Monitoring gap: v2.1.86 onwards (customclaw deprecated 2026-03-18)
|
|
215
|
+
- This skill fills the monitoring gap and provides ongoing tracking
|
|
@@ -379,7 +379,7 @@ When ecomode is active (R013), compress output:
|
|
|
379
379
|
- The evaluator prompt MUST include the full rubric to ensure consistent scoring
|
|
380
380
|
- Iteration state (best score, best output) is tracked by the orchestrator
|
|
381
381
|
- The hard cap of 5 iterations prevents runaway refinement loops
|
|
382
|
-
- For multi-sprint runs (5+ iterations), consider context reset: spawn a fresh evaluator agent rather than continuing with degraded context. The
|
|
382
|
+
- For multi-sprint runs (5+ iterations), consider context reset: spawn a fresh evaluator agent rather than continuing with degraded context. The pipeline skill supports this via `context: fork` on individual steps. Anthropic's research confirms "context resets provide clean slates superior to compaction" for long-running evaluation.
|
|
383
383
|
|
|
384
384
|
## Domain Examples
|
|
385
385
|
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pipeline
|
|
3
|
+
description: Invoke and resume YAML-defined pipelines by name — /pipeline auto-dev runs the full release pipeline
|
|
4
|
+
scope: harness
|
|
5
|
+
user-invocable: true
|
|
6
|
+
effort: high
|
|
7
|
+
argument-hint: "<pipeline-name> | resume | (no args to list available)"
|
|
8
|
+
source:
|
|
9
|
+
type: external
|
|
10
|
+
origin: github
|
|
11
|
+
url: https://github.com/baekenough/baekenough-skills
|
|
12
|
+
version: 1.0.0
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# /pipeline — Pipeline Invocation
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/pipeline auto-dev # Run the auto-dev pipeline
|
|
21
|
+
/pipeline # List available pipelines
|
|
22
|
+
/pipeline resume # Resume a halted pipeline
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Behavior
|
|
26
|
+
|
|
27
|
+
### List Mode (no arguments or --list flag)
|
|
28
|
+
|
|
29
|
+
Execute these steps to display available pipelines:
|
|
30
|
+
|
|
31
|
+
1. **Scan built-in pipelines**: Use `Glob("workflows/*.yaml")` (NOT templates/) to find all pipeline definitions
|
|
32
|
+
2. **Extract metadata**: For each YAML file found, use `Bash` to extract name and description:
|
|
33
|
+
```bash
|
|
34
|
+
for f in workflows/*.yaml; do
|
|
35
|
+
name=$(grep -m1 '^name:' "$f" | sed 's/^name: *//' | tr -d '"')
|
|
36
|
+
desc=$(grep -m1 '^description:' "$f" | sed 's/^description: *//' | tr -d '"')
|
|
37
|
+
echo " $name — $desc"
|
|
38
|
+
done
|
|
39
|
+
```
|
|
40
|
+
3. **Scan template pipelines**: Use `Glob("templates/workflows/*.yaml")` for template examples
|
|
41
|
+
4. **Display formatted output**:
|
|
42
|
+
```
|
|
43
|
+
Available pipelines:
|
|
44
|
+
{name} — {description}
|
|
45
|
+
{name} — {description}
|
|
46
|
+
|
|
47
|
+
Template pipelines (in templates/workflows/):
|
|
48
|
+
{name} — {description}
|
|
49
|
+
```
|
|
50
|
+
5. If no pipelines found, display: "No pipelines found in workflows/ directory."
|
|
51
|
+
6. If YAML parsing fails for a file, skip it and show: ` {filename} — (parse error, skipped)`
|
|
52
|
+
|
|
53
|
+
### Run Mode (with pipeline name)
|
|
54
|
+
|
|
55
|
+
1. Validate pipeline exists: `workflows/{name}.yaml`
|
|
56
|
+
2. Load and validate YAML structure:
|
|
57
|
+
- Required fields: `name`, `description`, `steps[]`
|
|
58
|
+
- Each step has either `skill:` or `prompt:` (not both)
|
|
59
|
+
- Referenced skills exist in `.claude/skills/`
|
|
60
|
+
- Skill names must match `^[a-z0-9-]+$` (kebab-case only) — reject path traversal attempts
|
|
61
|
+
3. Announce: `[Pipeline] Starting {name} — {step_count} steps`
|
|
62
|
+
4. Execute steps top-to-bottom:
|
|
63
|
+
- **Skill steps** (`skill: name`): Invoke via Skill tool — `Skill(skill: "{name}")`
|
|
64
|
+
- **Prompt steps** (`prompt: text`): Execute the described action using appropriate agents/tools
|
|
65
|
+
- **Foreach steps** (`foreach: collection`): Iterate over collection from previous step output
|
|
66
|
+
5. Report completion or failure
|
|
67
|
+
|
|
68
|
+
### Resume Mode (/pipeline resume)
|
|
69
|
+
|
|
70
|
+
1. Scan `/tmp/.claude-pipeline-*-{PPID}.json` for state files
|
|
71
|
+
2. If none found: "No halted pipelines found."
|
|
72
|
+
3. If found: display pipeline name, failed step, error message
|
|
73
|
+
4. Options:
|
|
74
|
+
- **Retry** — Re-execute the failed step
|
|
75
|
+
- **Skip** — Mark failed step as skipped, continue to next
|
|
76
|
+
- **Abort** — Delete state file, cancel pipeline
|
|
77
|
+
5. On resume: execute from the failed step
|
|
78
|
+
|
|
79
|
+
## State Tracking
|
|
80
|
+
|
|
81
|
+
Track per-step state:
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"pipeline": "{name}",
|
|
85
|
+
"started": "ISO-8601",
|
|
86
|
+
"status": "running|completed|halted",
|
|
87
|
+
"current_step": 0,
|
|
88
|
+
"steps": [
|
|
89
|
+
{"name": "triage", "status": "completed", "duration_ms": 5000},
|
|
90
|
+
{"name": "plan", "status": "running"}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
State saved to `/tmp/.claude-pipeline-{name}-{PPID}.json` on failure.
|
|
96
|
+
|
|
97
|
+
## Error Handling
|
|
98
|
+
|
|
99
|
+
- Pipeline not found → list available pipelines with suggestion
|
|
100
|
+
- YAML parse error → report with line number
|
|
101
|
+
- Step failure (error: halt-and-report) → stop execution, save state, report failure with context
|
|
102
|
+
- All file writes delegated to subagents per R010
|
package/templates/CLAUDE.md
CHANGED
|
@@ -104,6 +104,7 @@ oh-my-customcode로 구동됩니다.
|
|
|
104
104
|
| `/omcustom:fix-refs` | 깨진 참조 수정 |
|
|
105
105
|
| `/omcustom:harness-eval` | 15 SE task 구조적 벤치마크 평가 |
|
|
106
106
|
| `/omcustom:auto-improve` | 개선 사항 자동 적용 워크플로우 |
|
|
107
|
+
| `/omcustom:claude-native` | Claude Code 릴리즈 모니터링 및 이슈 자동 생성 |
|
|
107
108
|
| `/omcustom:improve-report` | eval-core 기반 개선 현황 리포트 |
|
|
108
109
|
| `/omcustom-takeover` | 기존 에이전트/스킬에서 canonical spec 추출 |
|
|
109
110
|
| `/adversarial-review` | 공격자 관점 보안 코드 리뷰 |
|
|
@@ -130,8 +131,8 @@ oh-my-customcode로 구동됩니다.
|
|
|
130
131
|
| `/deep-verify` | 다중 관점 릴리즈 품질 검증 |
|
|
131
132
|
| `/professor-triage` | 이슈 교차 분석 트리아지 (omc_issue_analyzer 댓글 기반) |
|
|
132
133
|
| `/release-plan` | verify-done 이슈 릴리즈 유닛 계획 생성 |
|
|
133
|
-
| `/
|
|
134
|
-
| `/
|
|
134
|
+
| `/pipeline` | YAML 파이프라인 실행 (예: /pipeline auto-dev) |
|
|
135
|
+
| `/pipeline resume` | 중단된 파이프라인 재개 |
|
|
135
136
|
| `/omcustom:sauron-watch` | 전체 R017 검증 |
|
|
136
137
|
| `/sdd-dev` | Spec-Driven Development 워크플로우 (sdd/ 폴더 기반) |
|
|
137
138
|
| `/structured-dev-cycle` | 6단계 구조적 개발 사이클 (Plan → Verify → Implement → Verify → Compound → Done) |
|
|
@@ -150,7 +151,7 @@ project/
|
|
|
150
151
|
+-- CLAUDE.md # 진입점
|
|
151
152
|
+-- .claude/
|
|
152
153
|
| +-- agents/ # 서브에이전트 정의 (46 파일)
|
|
153
|
-
| +-- skills/ # 스킬 (
|
|
154
|
+
| +-- skills/ # 스킬 (99 디렉토리)
|
|
154
155
|
| +-- rules/ # 전역 규칙 (R000-R021)
|
|
155
156
|
| +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
|
|
156
157
|
| +-- contexts/ # 컨텍스트 파일 (ecomode)
|
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.71.0",
|
|
3
3
|
"lastUpdated": "2026-03-24T00:00:00.000Z",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"name": "skills",
|
|
19
19
|
"path": ".claude/skills",
|
|
20
20
|
"description": "Reusable skill modules (includes slash commands)",
|
|
21
|
-
"files":
|
|
21
|
+
"files": 99
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"name": "guides",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# /omcustom:workflow auto-dev — Full-auto release pipeline
|
|
2
|
-
# Pre-triages
|
|
2
|
+
# Pre-triages open issues → triage verify-done → plan → implement → verify → PR → followup
|
|
3
3
|
|
|
4
4
|
name: auto-dev
|
|
5
5
|
description: "Full-auto release pipeline: pre-triage → triage → plan → implement → verify → PR → followup"
|
|
@@ -9,8 +9,8 @@ error: halt-and-report
|
|
|
9
9
|
steps:
|
|
10
10
|
- name: pre-triage
|
|
11
11
|
skill: professor-triage
|
|
12
|
-
description: Run professor-triage on
|
|
13
|
-
condition: "issues
|
|
12
|
+
description: Run professor-triage on open issues that lack verify-done label
|
|
13
|
+
condition: "open issues without label:verify-done exist"
|
|
14
14
|
|
|
15
15
|
- name: triage
|
|
16
16
|
skill: professor-triage
|
|
@@ -27,7 +27,7 @@ steps:
|
|
|
27
27
|
foreach: release-group
|
|
28
28
|
|
|
29
29
|
- name: implement
|
|
30
|
-
|
|
30
|
+
prompt: "Execute implementation plan with appropriate agents"
|
|
31
31
|
description: Execute implementation plan with appropriate agents
|
|
32
32
|
foreach: planned-issue
|
|
33
33
|
|
|
@@ -36,7 +36,7 @@ steps:
|
|
|
36
36
|
description: Multi-angle release quality verification
|
|
37
37
|
|
|
38
38
|
- name: release
|
|
39
|
-
|
|
39
|
+
prompt: "Create release branch and pull request"
|
|
40
40
|
description: Create release branch and pull request
|
|
41
41
|
|
|
42
42
|
- name: followup
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: omcustom:workflow
|
|
3
|
-
description: Invoke YAML-defined workflows by name — /omcustom:workflow auto-dev runs the full pipeline
|
|
4
|
-
scope: harness
|
|
5
|
-
user-invocable: true
|
|
6
|
-
effort: high
|
|
7
|
-
argument-hint: "<workflow-name> | (no args to list available)"
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# /omcustom:workflow — Workflow Invocation
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/omcustom:workflow auto-dev # Run the auto-dev workflow
|
|
16
|
-
/omcustom:workflow # List available workflows
|
|
17
|
-
/omcustom:workflow:resume # Resume a halted workflow
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Behavior
|
|
21
|
-
|
|
22
|
-
### List Mode (no arguments or --list flag)
|
|
23
|
-
|
|
24
|
-
Execute these steps to display available workflows:
|
|
25
|
-
|
|
26
|
-
1. **Scan built-in workflows**: Use `Glob("workflows/*.yaml")` (NOT templates/) to find all workflow definitions
|
|
27
|
-
2. **Extract metadata**: For each YAML file found, use `Bash` to extract name and description:
|
|
28
|
-
```bash
|
|
29
|
-
for f in workflows/*.yaml; do
|
|
30
|
-
name=$(grep -m1 '^name:' "$f" | sed 's/^name: *//' | tr -d '"')
|
|
31
|
-
desc=$(grep -m1 '^description:' "$f" | sed 's/^description: *//' | tr -d '"')
|
|
32
|
-
echo " $name — $desc"
|
|
33
|
-
done
|
|
34
|
-
```
|
|
35
|
-
3. **Scan template workflows**: Use `Glob("templates/workflows/*.yaml")` for template examples
|
|
36
|
-
4. **Extract template metadata**: Same extraction as step 2 for `templates/workflows/*.yaml`
|
|
37
|
-
5. **Display formatted output**:
|
|
38
|
-
```
|
|
39
|
-
Available workflows:
|
|
40
|
-
{name} — {description}
|
|
41
|
-
{name} — {description}
|
|
42
|
-
|
|
43
|
-
Template workflows (in templates/workflows/):
|
|
44
|
-
{name} — {description}
|
|
45
|
-
```
|
|
46
|
-
6. If no workflows found, display: "No workflows found in workflows/ directory."
|
|
47
|
-
7. If YAML parsing fails for a file, skip it and show: ` {filename} — (parse error, skipped)`
|
|
48
|
-
|
|
49
|
-
### Run Mode (with workflow name)
|
|
50
|
-
|
|
51
|
-
1. Validate workflow exists: `workflows/{name}.yaml`
|
|
52
|
-
2. Load and validate YAML structure
|
|
53
|
-
3. Announce: `[Workflow] Starting {name} — {step_count} steps`
|
|
54
|
-
4. Invoke workflow-runner skill with the loaded definition
|
|
55
|
-
5. Report completion or failure
|
|
56
|
-
|
|
57
|
-
### Resume Mode (/omcustom:workflow:resume)
|
|
58
|
-
|
|
59
|
-
1. Check for state file: `/tmp/.claude-workflow-*-{PPID}.json`
|
|
60
|
-
2. If found: show halted workflow name and failed step
|
|
61
|
-
3. Ask: "Resume from step {N} ({step_name})?"
|
|
62
|
-
4. Re-invoke workflow-runner from the failed step
|
|
63
|
-
|
|
64
|
-
## Error Handling
|
|
65
|
-
|
|
66
|
-
- Workflow not found → list available workflows with suggestion
|
|
67
|
-
- YAML parse error → report with line number
|
|
68
|
-
- Step failure → halt-and-report per workflow error policy
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: omcustom:workflow:resume
|
|
3
|
-
description: Resume a halted workflow from its last failure point
|
|
4
|
-
scope: harness
|
|
5
|
-
user-invocable: true
|
|
6
|
-
effort: medium
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# /omcustom:workflow:resume — Resume Halted Workflow
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
/omcustom:workflow:resume # Find and resume the most recent halted workflow
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Behavior
|
|
18
|
-
|
|
19
|
-
1. Scan `/tmp/.claude-workflow-*-$PPID.json` for state files
|
|
20
|
-
2. If none found: "No halted workflows found."
|
|
21
|
-
3. If found: display workflow name, failed step, error message
|
|
22
|
-
4. Options:
|
|
23
|
-
- **Retry** — Re-execute the failed step
|
|
24
|
-
- **Skip** — Mark failed step as skipped, continue to next
|
|
25
|
-
- **Abort** — Delete state file, cancel workflow
|
|
26
|
-
5. On resume: invoke workflow-runner with state file context
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: workflow-runner
|
|
3
|
-
description: Execute YAML-defined workflow pipelines — parse, validate, and run multi-step skill chains
|
|
4
|
-
scope: harness
|
|
5
|
-
user-invocable: false
|
|
6
|
-
effort: high
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Workflow Runner
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
Core engine for the workflow system. Parses YAML workflow definitions from `workflows/` directory, validates step structure, and executes each step sequentially by invoking the referenced skills or actions.
|
|
14
|
-
|
|
15
|
-
## Execution Protocol
|
|
16
|
-
|
|
17
|
-
### 1. Load Workflow
|
|
18
|
-
|
|
19
|
-
Read the specified YAML file from `workflows/{name}.yaml`. Validate:
|
|
20
|
-
- Required fields: `name`, `description`, `steps[]`
|
|
21
|
-
- Each step has either `skill:` or `action:` (not both)
|
|
22
|
-
- Referenced skills exist in `.claude/skills/`
|
|
23
|
-
- Skill names must match `^[a-z0-9-]+$` (kebab-case only) — reject path traversal attempts
|
|
24
|
-
- Action values must be one of: `implement`, `create-pr` — reject unknown actions with error
|
|
25
|
-
|
|
26
|
-
### 2. Execute Steps
|
|
27
|
-
|
|
28
|
-
Process steps top-to-bottom:
|
|
29
|
-
|
|
30
|
-
**Skill steps** (`skill: name`):
|
|
31
|
-
- Invoke via Skill tool: `Skill(skill: "{name}")`
|
|
32
|
-
- Capture output for next step's `input` reference
|
|
33
|
-
|
|
34
|
-
**Action steps** (`action: name`):
|
|
35
|
-
- `implement` — Delegate to appropriate agents based on issue domain
|
|
36
|
-
- `create-pr` — Delegate to mgr-gitnerd for branch creation, push, PR
|
|
37
|
-
|
|
38
|
-
**Foreach steps** (`foreach: collection`):
|
|
39
|
-
- Iterate over collection from previous step output
|
|
40
|
-
- Execute the step once per item
|
|
41
|
-
|
|
42
|
-
### 3. Error Handling
|
|
43
|
-
|
|
44
|
-
Based on workflow `error` field:
|
|
45
|
-
- `halt-and-report` — Stop execution, save state, report failure with context
|
|
46
|
-
- State saved to `/tmp/.claude-workflow-{name}-{PPID}.json`
|
|
47
|
-
|
|
48
|
-
### 4. State Tracking
|
|
49
|
-
|
|
50
|
-
Track per-step state:
|
|
51
|
-
```json
|
|
52
|
-
{
|
|
53
|
-
"workflow": "{name}",
|
|
54
|
-
"started": "ISO-8601",
|
|
55
|
-
"status": "running|completed|halted",
|
|
56
|
-
"current_step": 0,
|
|
57
|
-
"steps": [
|
|
58
|
-
{"name": "triage", "status": "completed", "duration_ms": 5000},
|
|
59
|
-
{"name": "plan", "status": "running"}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### 5. Completion
|
|
65
|
-
|
|
66
|
-
On all steps completed:
|
|
67
|
-
- Delete state file
|
|
68
|
-
- Report summary with per-step durations
|
|
69
|
-
- Output final results
|
|
70
|
-
|
|
71
|
-
## Notes
|
|
72
|
-
|
|
73
|
-
- This skill is invoked by the workflow bridge skill (workflow/SKILL.md)
|
|
74
|
-
- It does NOT appear in slash commands (user-invocable: false)
|
|
75
|
-
- All file writes delegated to subagents per R010
|