This skill should be used when orchestrating multiple skills together for complex workflows. Triggers include "chain these skills", "use X then Y skill", "multi-skill workflow", or when a task requires capabilities from several skills. Handles skill sequencing, data flow, and aggregated validation.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
references/composition-examples.mdorchestrate multiple Claude Code skills together for complex workflows. determines optimal skill sequence, handles data flow between skills, and aggregates validation across the chain.
"the whole is greater than the sum of its skills"
| principle | application |
|---|---|
| composition over complexity | chain simple skills, don't create mega-skills |
| explicit handoffs | clear data flow between skills |
| aggregated validation | validate the chain, not just individual skills |
| fail-fast | stop chain on skill failure |
| use | skip |
|---|---|
| task needs multiple skill capabilities | single skill sufficient |
| "do X then Y" requests | skills are independent |
| complex workflows | simple sequential tasks |
| skill chaining opportunities | creating new skill instead |
skill-A → skill-B → skill-C
example: create-skill → skill-improve → consult-deep
(create) (improve) (validate)
consult-light → skill-A → consult-light
(pre-check) (work) (post-check)
example: consult-light → deep-work → consult-light
(approach ok?) (implement) (result ok?)
┌→ skill-A
input →──┼→ skill-B
└→ skill-C
↓
aggregate
example: issue arrives
├→ issue-context (enrich)
├→ consult-light (approach)
└→ tdd-convex (test plan)
↓
combined context for loop
while (!done) {
skill-A → validate → continue?
}
example: skill-improve iteration
improve → consult-deep → depth < 8? → improve again
Task: "improve a skill and notify me when done"
Required capabilities:
├── skill improvement → skill-improve
├── validation → consult-deep, consult-light
└── notification → slack or imessage
dependency analysis:
- skill-improve needs skill to exist ✓
- consult-deep needs improved skill → after skill-improve
- notification needs result → after validation
sequence: skill-improve → consult-deep → slack
| from | to | data passed |
|------|-----|-------------|
| skill-improve | consult-deep | improved SKILL.md content |
| consult-deep | slack | validation result JSON |
# step 1: improve
SKILL_CONTENT=$(cat ~/.claude/skills/target/SKILL.md)
# [run skill-improve workflow]
# step 2: validate
VALIDATION=$(cat <<'EOF' | codex exec --model gpt-5.2-max
[consult-deep prompt with $SKILL_CONTENT]
EOF
)
# step 3: notify
echo "Skill improved. Validation: $VALIDATION" | slack dm send --user luke
{
"chain": "skill-improve → consult-deep → slack",
"steps": [
{"skill": "skill-improve", "status": "pass", "output": "improved"},
{"skill": "consult-deep", "status": "pass", "depth_score": 9},
{"skill": "slack", "status": "pass", "message_sent": true}
],
"overall": "pass",
"duration": "3m 42s"
}
create-skill → skill-improve → consult-deep → artifact → consult-light
loop → [internal flywheel] → pr-audit → slack
deep-ask → [gather answers] → metaprompt-factory → consult-light
issue-context → consult-light → loop → pr-audit → slack
each skill completes before next starts:
skill-A (3min) → skill-B (2min) → skill-C (1min) = 6min total
independent skills run concurrently:
┌→ skill-A (3min) ─┐
input →──┤ ├→ aggregate (1min) = 4min total
└→ skill-B (2min) ─┘
long-running skills don't block:
deep-work (background) → on_complete: slack notify
skill-A → skill-B (fails) → STOP
↓
notify failure
skill-A → skill-B (fails) → retry (1s) → retry (2s) → fail
skill-A → skill-B (fails) → skill-B-fallback → skill-C
| pattern | problem | fix |
|---|---|---|
| mega-skill | one skill tries to do everything | compose simpler skills |
| implicit handoffs | unclear what data flows between | document handoff explicitly |
| no aggregated validation | individual passes, chain fails | validate the whole chain |
| ignore failures | chain continues after error | fail-fast by default |
| sequential when parallel possible | slower than needed | identify independent skills |