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 CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  **[한국어 문서 (Korean)](./README_ko.md)**
15
15
 
16
- 46 agents. 100 skills. 21 rules. One command.
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 (100)
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 | 15 | structured-dev-cycle, deep-plan, research, evaluator-optimizer, dag-orchestration, worker-reviewer-pipeline, reasoning-sandwich, workflow, workflow-runner, workflow-resume, and more |
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 | 8 | codex-exec, vercel-deploy, skills-sh-search, result-aggregation, writing-clearly-and-concisely, and more |
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
- | `/workflow` | Execute YAML-defined workflow pipelines |
185
- | `/workflow:resume` | Resume a halted workflow from last failure point |
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/ # 100 skill modules
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
@@ -9325,7 +9325,7 @@ var init_package = __esm(() => {
9325
9325
  workspaces: [
9326
9326
  "packages/*"
9327
9327
  ],
9328
- version: "0.70.0",
9328
+ version: "0.71.0",
9329
9329
  description: "Batteries-included agent harness for Claude Code",
9330
9330
  type: "module",
9331
9331
  bin: {
package/dist/index.js CHANGED
@@ -1820,7 +1820,7 @@ var package_default = {
1820
1820
  workspaces: [
1821
1821
  "packages/*"
1822
1822
  ],
1823
- version: "0.70.0",
1823
+ version: "0.71.0",
1824
1824
  description: "Batteries-included agent harness for Claude Code",
1825
1825
  type: "module",
1826
1826
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "0.70.0",
6
+ "version": "0.71.0",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -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 workflow-runner supports this via `context: fork` on individual steps. Anthropic's research confirms "context resets provide clean slates superior to compaction" for long-running evaluation.
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
@@ -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
- | `/omcustom:workflow` | YAML 워크플로우 실행 (예: /omcustom:workflow auto-dev) |
134
- | `/omcustom:workflow:resume` | 중단된 워크플로우 재개 |
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/ # 스킬 (100 디렉토리)
154
+ | +-- skills/ # 스킬 (99 디렉토리)
154
155
  | +-- rules/ # 전역 규칙 (R000-R021)
155
156
  | +-- hooks/ # 훅 스크립트 (보안, 검증, HUD)
156
157
  | +-- contexts/ # 컨텍스트 파일 (ecomode)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.70.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": 100
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 professor-labeled issues → triage verify-done → plan → implement → verify → PR → followup
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 professor-labeled issues that lack verify-done label
13
- condition: "issues with label:professor but NOT label:verify-done exist"
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
- action: implement
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
- action: create-pr
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