oh-my-customcode 0.20.0 → 0.21.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
|
@@ -21,7 +21,7 @@ Like oh-my-zsh transformed shell customization, oh-my-customcode makes personali
|
|
|
21
21
|
|
|
22
22
|
| Feature | Description |
|
|
23
23
|
|---------|-------------|
|
|
24
|
-
| **Batteries Included** | 41 agents,
|
|
24
|
+
| **Batteries Included** | 41 agents, 60 skills, 22 guides, 18 rules, 2 hooks, 4 contexts, ontology graph - ready to use out of the box |
|
|
25
25
|
| **Sub-Agent Model** | Supports hierarchical agent orchestration with specialized roles |
|
|
26
26
|
| **Dead Simple Customization** | Create a folder + markdown file = new agent or skill |
|
|
27
27
|
| **Mix and Match** | Use built-in components, create your own, or combine both |
|
|
@@ -124,20 +124,20 @@ Claude Code selects the appropriate model and parallelizes independent tasks (up
|
|
|
124
124
|
| **QA** | 3 | qa-planner, qa-writer, qa-engineer |
|
|
125
125
|
| **Total** | **41** | |
|
|
126
126
|
|
|
127
|
-
### Skills (
|
|
127
|
+
### Skills (60)
|
|
128
128
|
|
|
129
129
|
| Category | Count | Skills |
|
|
130
130
|
|----------|-------|--------|
|
|
131
131
|
| **Routing** | 4 | secretary-routing, dev-lead-routing, de-lead-routing, qa-lead-routing |
|
|
132
132
|
| **Best Practices** | 18 | go-best-practices, python-best-practices, typescript-best-practices, kotlin-best-practices, rust-best-practices, react-best-practices, fastapi-best-practices, springboot-best-practices, go-backend-best-practices, docker-best-practices, aws-best-practices, postgres-best-practices, supabase-postgres-best-practices, redis-best-practices, airflow-best-practices, dbt-best-practices, kafka-best-practices, snowflake-best-practices |
|
|
133
|
-
| **Development** |
|
|
133
|
+
| **Development** | 6 | dev-review, dev-refactor, create-agent, intent-detection, web-design-guidelines, analysis |
|
|
134
134
|
| **Data Engineering** | 2 | spark-best-practices, pipeline-architecture-patterns |
|
|
135
135
|
| **Optimization** | 3 | optimize-analyze, optimize-bundle, optimize-report |
|
|
136
136
|
| **Memory** | 3 | memory-save, memory-recall, memory-management |
|
|
137
137
|
| **Package Management** | 3 | npm-publish, npm-version, npm-audit |
|
|
138
138
|
| **Operations** | 7 | update-docs, update-external, audit-agents, fix-refs, sauron-watch, monitoring-setup, claude-code-bible |
|
|
139
139
|
| **Utilities** | 5 | lists, help, status, result-aggregation, writing-clearly-and-concisely |
|
|
140
|
-
| **Quality & Workflow** |
|
|
140
|
+
| **Quality & Workflow** | 6 | multi-model-verification, structured-dev-cycle, model-escalation, stuck-recovery, dag-orchestration, task-decomposition |
|
|
141
141
|
| **Deploy** | 2 | vercel-deploy, codex-exec |
|
|
142
142
|
| **External** | 1 | skills-sh-search |
|
|
143
143
|
|
|
@@ -225,7 +225,7 @@ your-project/
|
|
|
225
225
|
│ ├── be-fastapi-expert.md
|
|
226
226
|
│ ├── mgr-creator.md
|
|
227
227
|
│ └── ...
|
|
228
|
-
├── skills/ # Skill modules (
|
|
228
|
+
├── skills/ # Skill modules (60 directories, each with SKILL.md)
|
|
229
229
|
│ ├── go-best-practices/
|
|
230
230
|
│ ├── react-best-practices/
|
|
231
231
|
│ ├── secretary-routing/
|
package/package.json
CHANGED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dag-orchestration
|
|
3
|
+
description: YAML-based DAG workflow engine with topological execution and failure strategies
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DAG Orchestration Skill
|
|
7
|
+
|
|
8
|
+
Defines and executes directed acyclic graph (DAG) workflows. The orchestrator uses this skill to plan multi-step tasks with dependencies, execute them in topologically-sorted order, and handle failures.
|
|
9
|
+
|
|
10
|
+
**Orchestrator-only** — only the main conversation uses this skill (R010). Subagents execute individual nodes.
|
|
11
|
+
|
|
12
|
+
## Workflow Spec Format
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
# .claude/workflows/<name>.yaml or inline in conversation
|
|
16
|
+
workflow:
|
|
17
|
+
name: feature-implementation
|
|
18
|
+
description: Implement a new feature with tests and docs
|
|
19
|
+
|
|
20
|
+
nodes:
|
|
21
|
+
- id: analyze
|
|
22
|
+
agent: Explore
|
|
23
|
+
model: haiku
|
|
24
|
+
prompt: "Analyze codebase for integration points"
|
|
25
|
+
|
|
26
|
+
- id: implement
|
|
27
|
+
agent: lang-typescript-expert
|
|
28
|
+
model: sonnet
|
|
29
|
+
prompt: "Implement the feature"
|
|
30
|
+
depends_on: [analyze]
|
|
31
|
+
|
|
32
|
+
- id: test
|
|
33
|
+
agent: qa-engineer
|
|
34
|
+
model: sonnet
|
|
35
|
+
prompt: "Write and run tests"
|
|
36
|
+
depends_on: [implement]
|
|
37
|
+
|
|
38
|
+
- id: review
|
|
39
|
+
agent: lang-typescript-expert
|
|
40
|
+
model: opus
|
|
41
|
+
prompt: "Code review"
|
|
42
|
+
depends_on: [implement]
|
|
43
|
+
|
|
44
|
+
- id: docs
|
|
45
|
+
agent: arch-documenter
|
|
46
|
+
model: sonnet
|
|
47
|
+
prompt: "Update documentation"
|
|
48
|
+
depends_on: [implement]
|
|
49
|
+
|
|
50
|
+
- id: commit
|
|
51
|
+
agent: mgr-gitnerd
|
|
52
|
+
model: sonnet
|
|
53
|
+
prompt: "Commit changes"
|
|
54
|
+
depends_on: [test, review, docs]
|
|
55
|
+
|
|
56
|
+
config:
|
|
57
|
+
max_parallel: 4 # R009 limit
|
|
58
|
+
failure_strategy: stop # stop | skip | retry
|
|
59
|
+
retry_count: 2 # Max retries per node (if strategy=retry)
|
|
60
|
+
timeout_per_node: 300 # Seconds per node (0 = no limit)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Execution Algorithm — Kahn's Topological Sort
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
1. Parse workflow YAML
|
|
67
|
+
2. Build adjacency list and in-degree map
|
|
68
|
+
3. Validate: detect cycles (error if found)
|
|
69
|
+
4. Initialize queue with nodes where in-degree = 0
|
|
70
|
+
5. While queue is not empty:
|
|
71
|
+
a. Dequeue up to max_parallel nodes
|
|
72
|
+
b. Execute nodes in parallel via Task tool (R009)
|
|
73
|
+
c. On completion:
|
|
74
|
+
- Success → decrement in-degree of dependents
|
|
75
|
+
- Failure → apply failure_strategy
|
|
76
|
+
d. Enqueue newly-ready nodes (in-degree = 0)
|
|
77
|
+
6. Verify all nodes executed (detect unreachable nodes)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Execution Rules
|
|
81
|
+
|
|
82
|
+
| Rule | Detail |
|
|
83
|
+
|------|--------|
|
|
84
|
+
| Max parallel | 4 concurrent nodes (R009) |
|
|
85
|
+
| Agent Teams gate | 3+ parallel nodes → check R018 eligibility |
|
|
86
|
+
| Orchestrator only | DAG scheduling runs in main conversation (R010) |
|
|
87
|
+
| Node execution | Each node = one Task tool call to specified agent |
|
|
88
|
+
| State tracking | `/tmp/.claude-dag-$PPID.json` |
|
|
89
|
+
|
|
90
|
+
## Failure Strategies
|
|
91
|
+
|
|
92
|
+
| Strategy | Behavior |
|
|
93
|
+
|----------|----------|
|
|
94
|
+
| `stop` | Halt entire DAG on first failure (default) |
|
|
95
|
+
| `skip` | Mark failed node as skipped, continue dependents with warning |
|
|
96
|
+
| `retry` | Retry failed node up to `retry_count` times, then stop |
|
|
97
|
+
|
|
98
|
+
## State File Format
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"workflow": "feature-implementation",
|
|
103
|
+
"started_at": "2026-03-07T10:00:00Z",
|
|
104
|
+
"status": "running",
|
|
105
|
+
"nodes": {
|
|
106
|
+
"analyze": {"status": "completed", "started": "...", "completed": "..."},
|
|
107
|
+
"implement": {"status": "running", "started": "..."},
|
|
108
|
+
"test": {"status": "pending"},
|
|
109
|
+
"review": {"status": "pending"},
|
|
110
|
+
"docs": {"status": "pending"},
|
|
111
|
+
"commit": {"status": "blocked", "blocked_by": ["test", "review", "docs"]}
|
|
112
|
+
},
|
|
113
|
+
"execution_order": [["analyze"], ["implement"], ["test", "review", "docs"], ["commit"]]
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Display Format
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
[DAG] feature-implementation — 6 nodes
|
|
121
|
+
[Layer 0] analyze ← running
|
|
122
|
+
[Layer 1] implement ← pending (depends: analyze)
|
|
123
|
+
[Layer 2] test, review, docs ← pending (parallel, depends: implement)
|
|
124
|
+
[Layer 3] commit ← blocked (depends: test, review, docs)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Progress:
|
|
128
|
+
```
|
|
129
|
+
[DAG Progress] 3/6 nodes completed
|
|
130
|
+
✓ analyze (12s)
|
|
131
|
+
✓ implement (45s)
|
|
132
|
+
→ test (running)
|
|
133
|
+
→ review (running)
|
|
134
|
+
→ docs (running)
|
|
135
|
+
○ commit (blocked)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Common Workflow Templates
|
|
139
|
+
|
|
140
|
+
### Feature Implementation
|
|
141
|
+
```yaml
|
|
142
|
+
nodes: [analyze → implement → [test, review, docs] → commit]
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Code Review + Fix
|
|
146
|
+
```yaml
|
|
147
|
+
nodes: [review → fix → re-review → commit]
|
|
148
|
+
failure_strategy: retry
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Multi-Language Project
|
|
152
|
+
```yaml
|
|
153
|
+
nodes: [
|
|
154
|
+
analyze → [impl-frontend, impl-backend, impl-db] → integration-test → commit
|
|
155
|
+
]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Refactoring
|
|
159
|
+
```yaml
|
|
160
|
+
nodes: [
|
|
161
|
+
analyze → plan → [refactor-1, refactor-2, refactor-3] → test → review → commit
|
|
162
|
+
]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Integration
|
|
166
|
+
|
|
167
|
+
| Rule | Integration |
|
|
168
|
+
|------|-------------|
|
|
169
|
+
| R009 | Max 4 parallel nodes; independent nodes MUST parallelize |
|
|
170
|
+
| R010 | DAG scheduler runs only in orchestrator |
|
|
171
|
+
| R015 | Display DAG plan before execution |
|
|
172
|
+
| R018 | 3+ parallel nodes → check Agent Teams eligibility |
|
|
173
|
+
| model-escalation | Node failures feed into task-outcome-recorder |
|
|
174
|
+
| stuck-recovery | Repeated node failures trigger stuck detection |
|
|
175
|
+
|
|
176
|
+
## Inline DAG
|
|
177
|
+
|
|
178
|
+
For ad-hoc workflows without a YAML file:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
[DAG Plan]
|
|
182
|
+
1. analyze (Explore:haiku)
|
|
183
|
+
2. implement (lang-typescript-expert:sonnet) ← depends: 1
|
|
184
|
+
3. test (qa-engineer:sonnet) ← depends: 2
|
|
185
|
+
4. review (lang-typescript-expert:opus) ← depends: 2
|
|
186
|
+
5. commit (mgr-gitnerd:sonnet) ← depends: 3, 4
|
|
187
|
+
|
|
188
|
+
Execute? [Y/n]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The orchestrator builds the DAG from this inline format and executes using the same algorithm.
|
|
192
|
+
|
|
193
|
+
## Limitations
|
|
194
|
+
|
|
195
|
+
- No cycles allowed (DAG = acyclic)
|
|
196
|
+
- Max 20 nodes per workflow (complexity guard)
|
|
197
|
+
- Nested DAGs not supported (flatten instead)
|
|
198
|
+
- Cross-workflow dependencies not supported
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-decomposition
|
|
3
|
+
description: Auto-decompose large tasks into DAG-compatible parallel subtasks
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Decomposition Skill
|
|
7
|
+
|
|
8
|
+
Analyzes task complexity and decomposes large tasks into smaller, parallelizable subtasks compatible with the DAG orchestration skill. The orchestrator uses this as a planning frontend before execution.
|
|
9
|
+
|
|
10
|
+
## Trigger Conditions
|
|
11
|
+
|
|
12
|
+
Decomposition is **recommended** when any of these thresholds are met:
|
|
13
|
+
|
|
14
|
+
| Trigger | Threshold | Rationale |
|
|
15
|
+
|---------|-----------|-----------|
|
|
16
|
+
| Estimated duration | > 30 minutes | Too long for single agent |
|
|
17
|
+
| Files affected | > 3 files | Parallelizable across files |
|
|
18
|
+
| Domains involved | > 2 domains | Requires multiple specialists |
|
|
19
|
+
| Agent types needed | > 2 types | Cross-specialty coordination |
|
|
20
|
+
|
|
21
|
+
## Decomposition Process
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
1. Analyze task scope
|
|
25
|
+
├── Estimate duration, file count, domains
|
|
26
|
+
├── Identify required agent types
|
|
27
|
+
└── Check trigger thresholds
|
|
28
|
+
|
|
29
|
+
2. If thresholds met → decompose:
|
|
30
|
+
├── Break into atomic subtasks (single agent, single concern)
|
|
31
|
+
├── Identify dependencies between subtasks
|
|
32
|
+
├── Map subtasks to agents (use routing skills)
|
|
33
|
+
└── Generate DAG workflow spec
|
|
34
|
+
|
|
35
|
+
3. Present plan to user (R015 transparency)
|
|
36
|
+
├── Show decomposed subtasks with agents
|
|
37
|
+
├── Show dependency graph
|
|
38
|
+
├── Show estimated parallel execution time
|
|
39
|
+
└── Request confirmation before execution
|
|
40
|
+
|
|
41
|
+
4. Execute via dag-orchestration skill
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Decomposition Heuristics
|
|
45
|
+
|
|
46
|
+
### By File Independence
|
|
47
|
+
```
|
|
48
|
+
Task: "Update auth module across 5 files"
|
|
49
|
+
├── auth.ts → lang-typescript-expert
|
|
50
|
+
├── middleware.ts → lang-typescript-expert
|
|
51
|
+
├── config.ts → lang-typescript-expert (independent)
|
|
52
|
+
├── auth.test.ts → qa-engineer (depends: auth.ts)
|
|
53
|
+
└── README.md → arch-documenter (depends: all above)
|
|
54
|
+
|
|
55
|
+
DAG: [auth.ts, middleware.ts, config.ts] → auth.test.ts → README.md
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### By Domain Separation
|
|
59
|
+
```
|
|
60
|
+
Task: "Add user profile feature with API and UI"
|
|
61
|
+
├── API endpoint → be-express-expert
|
|
62
|
+
├── Database schema → db-postgres-expert
|
|
63
|
+
├── Frontend component → fe-vercel-agent
|
|
64
|
+
└── Integration test → qa-engineer
|
|
65
|
+
|
|
66
|
+
DAG: [API, DB] → Frontend → Integration test
|
|
67
|
+
(API and DB are independent, Frontend needs both)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### By Layer
|
|
71
|
+
```
|
|
72
|
+
Task: "Implement order processing in Spring Boot"
|
|
73
|
+
├── Domain model → lang-kotlin-expert
|
|
74
|
+
├── Repository → be-springboot-expert (depends: domain)
|
|
75
|
+
├── Service → be-springboot-expert (depends: domain, repository)
|
|
76
|
+
├── Controller → be-springboot-expert (depends: service)
|
|
77
|
+
└── Tests → qa-engineer (depends: all)
|
|
78
|
+
|
|
79
|
+
DAG: domain → [repository] → service → controller → tests
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Output Format
|
|
83
|
+
|
|
84
|
+
### Decomposition Plan
|
|
85
|
+
```
|
|
86
|
+
[Task Decomposition]
|
|
87
|
+
├── Original: "Add user authentication with JWT"
|
|
88
|
+
├── Complexity: High (4 files, 3 domains, ~45 min)
|
|
89
|
+
├── Decomposed into 5 subtasks:
|
|
90
|
+
│
|
|
91
|
+
│ [1] analyze (Explore:haiku)
|
|
92
|
+
│ Scan codebase for existing auth patterns
|
|
93
|
+
│
|
|
94
|
+
│ [2] implement-auth (lang-typescript-expert:sonnet)
|
|
95
|
+
│ Implement JWT signing and validation
|
|
96
|
+
│ Depends: [1]
|
|
97
|
+
│
|
|
98
|
+
│ [3] implement-middleware (lang-typescript-expert:sonnet)
|
|
99
|
+
│ Create auth middleware
|
|
100
|
+
│ Depends: [1]
|
|
101
|
+
│
|
|
102
|
+
│ [4] write-tests (qa-engineer:sonnet)
|
|
103
|
+
│ Write auth tests
|
|
104
|
+
│ Depends: [2, 3]
|
|
105
|
+
│
|
|
106
|
+
│ [5] commit (mgr-gitnerd:sonnet)
|
|
107
|
+
│ Commit all changes
|
|
108
|
+
│ Depends: [4]
|
|
109
|
+
│
|
|
110
|
+
├── Parallel layers: 3 (max 2 concurrent in layer 2)
|
|
111
|
+
├── Estimated time: ~20 min (vs ~45 min sequential)
|
|
112
|
+
└── Proceed? [Y/n]
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Generated DAG Spec
|
|
116
|
+
```yaml
|
|
117
|
+
workflow:
|
|
118
|
+
name: auto-decomposed-auth
|
|
119
|
+
description: "Auto-decomposed: Add user authentication with JWT"
|
|
120
|
+
|
|
121
|
+
nodes:
|
|
122
|
+
- id: analyze
|
|
123
|
+
agent: Explore
|
|
124
|
+
model: haiku
|
|
125
|
+
prompt: "Scan codebase for existing auth patterns"
|
|
126
|
+
- id: implement-auth
|
|
127
|
+
agent: lang-typescript-expert
|
|
128
|
+
model: sonnet
|
|
129
|
+
prompt: "Implement JWT signing and validation"
|
|
130
|
+
depends_on: [analyze]
|
|
131
|
+
- id: implement-middleware
|
|
132
|
+
agent: lang-typescript-expert
|
|
133
|
+
model: sonnet
|
|
134
|
+
prompt: "Create auth middleware"
|
|
135
|
+
depends_on: [analyze]
|
|
136
|
+
- id: write-tests
|
|
137
|
+
agent: qa-engineer
|
|
138
|
+
model: sonnet
|
|
139
|
+
prompt: "Write auth tests"
|
|
140
|
+
depends_on: [implement-auth, implement-middleware]
|
|
141
|
+
- id: commit
|
|
142
|
+
agent: mgr-gitnerd
|
|
143
|
+
model: sonnet
|
|
144
|
+
prompt: "Commit all changes"
|
|
145
|
+
depends_on: [write-tests]
|
|
146
|
+
|
|
147
|
+
config:
|
|
148
|
+
max_parallel: 4
|
|
149
|
+
failure_strategy: stop
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Atomic Task Criteria
|
|
153
|
+
|
|
154
|
+
A subtask is **atomic** when it meets ALL of:
|
|
155
|
+
- Single agent can handle it
|
|
156
|
+
- Single concern (one logical change)
|
|
157
|
+
- Independently testable outcome
|
|
158
|
+
- < 15 minutes estimated duration
|
|
159
|
+
- < 3 files affected
|
|
160
|
+
|
|
161
|
+
If a subtask is not atomic → decompose further (max 2 levels deep).
|
|
162
|
+
|
|
163
|
+
## Skip Decomposition When
|
|
164
|
+
|
|
165
|
+
| Condition | Reason |
|
|
166
|
+
|-----------|--------|
|
|
167
|
+
| Single file edit | Already atomic |
|
|
168
|
+
| < 10 minutes estimated | Overhead not worth it |
|
|
169
|
+
| User explicitly requests "just do it" | User override |
|
|
170
|
+
| Single domain, single agent | No parallelization benefit |
|
|
171
|
+
|
|
172
|
+
## Integration
|
|
173
|
+
|
|
174
|
+
| Component | Integration |
|
|
175
|
+
|-----------|-------------|
|
|
176
|
+
| dag-orchestration | Generates DAG specs consumed by dag-orchestration |
|
|
177
|
+
| Routing skills | Uses dev-lead/de-lead/qa-lead routing for agent mapping |
|
|
178
|
+
| R009 | Maximizes parallelization within max-4 limit |
|
|
179
|
+
| R010 | Decomposition happens in orchestrator only |
|
|
180
|
+
| R015 | Plan displayed before execution for user approval |
|
|
181
|
+
| R018 | 3+ agents in plan → check Agent Teams eligibility |
|