Skill Orchestrator
Routes work to the right HeyEddi skill — without loading every SKILL.md at once.
When to use
- Session start on a HeyEddi project (
.heyeddi/present or greenfield app request) - User asks "what skills do we have?" or "which skill should handle this?"
- Before a multi-step pipeline (intake → scaffold → design → handoff → QA)
- After
@heyeddi-intake— confirmskill-routing.jsonbefore downstream work
Limits (Cursor)
Cursor cannot inject all skill bodies automatically. This skill:
write_skills_index— scan once →.heyeddi/skills-index.json+skills-index.mdload_catalog— read the cached index (rescan with--refreshafter skill installs)suggest_skills— ranked matches from index entries (+skill-routing.jsonwhen present)- You — read one chosen skill's
SKILL.md, then invoke it
Pipeline
write_skills_index → .heyeddi/skills-index.{json,md} (session start / after installs)
read skills-index.md → quick catalog without opening every SKILL.md
suggest_skills → ranked @skills for this task
read one SKILL.md → follow that skill's pipeline
If .heyeddi/docs/intake/skill-routing.json exists (from @heyeddi-intake), follow route order — suggestions surface it at score 100.
Instructions
- Session start:
write_skills_index --project-root <root>(orload_catalog --refresh— same effect) - Quick lookup: read
.heyeddi/skills-index.md— no need to open every SKILL.md suggest_skills --project-root <root> --user-prompt "<request>"
Or--prompt-file USER_PROMPT.md- Read one chosen skill's
SKILL.md(path in index JSON), then invoke@skill-name - Re-run
write_skills_indexafternpx skills addor hub skill updates - Greenfield with no
.heyeddi/product.md→ top suggestion often@heyeddi-intake
Tools
| Script | Purpose |
|---|---|
write_skills_index.py |
Scan → .heyeddi/skills-index.* |
load_catalog.py |
Read index (or scan+write if missing) |
suggest_skills.py |
Rank skills from cached index |
Related
@heyeddi-intake— writesskill-routing.jsonreference/skill-triggers.md— how per-skillreference/triggers.mdworks (fully agnostic scoring)