Meta-router for dynamic skill routing. Use when: cowork, skill management, router generation, Skills.toml, plugin configuration
Meta-router that guides dynamic generation of project-specific skill routers
This is a meta-skill that:
cowork config routerThis skill does NOT hardcode specific plugins - it describes the system for dynamically discovering and routing to installed plugins.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Skills.toml (User Config) β
β [skills.install] β
β rust-skills = "user/rust-skills" β
β dora-skills = { path = "/local/dora-skills", plugin = true } β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β cowork config install β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Skills.lock (Generated) β
β - Tracks installed plugins, versions, paths β
β - Records extracted trigger keywords β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββ
β cowork config router β
βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β .claude/skills/cowork-router/SKILL.md (Dynamic) β
β - Auto-generated from installed plugins β
β - Merged trigger keywords from all plugins β
β - Domain detection table based on actual installations β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Each plugin contains skills with SKILL.md files. The frontmatter description field contains trigger keywords:
---
name: rust-router
description: "Triggers on: E0xxx, ownership, borrow, lifetime, async, trait"
---
cowork config router scans all installed plugins and extracts:
rust-router, dora-router)Generates a project-specific cowork-router that:
# Initialize project configuration
cowork config init
# Add plugin dependencies
cowork config add rust-skills ZhangHanDong/rust-skills --plugin
cowork config add dora-dev /path/to/dora-skills --dev --plugin
# Install all dependencies
cowork config install
# Generate dynamic router from installed plugins
cowork config router
# Generate router with auto-trigger hooks
cowork config router --hooks
The dynamically generated router will contain:
---
name: cowork-router
description: "Triggers on: [merged keywords from all plugins]"
---
## Domain Detection
| Domain | Keywords | Route To |
|--------|----------|----------|
| [plugin-1] | [extracted keywords] | [plugin-1-router] |
| [plugin-2] | [extracted keywords] | [plugin-2-router] |
| ... | ... | ... |
All plugin routers should follow this pattern:
βββββββββββββββββββββββββββββββββββββββ
β cowork-router (Meta) β
β Unified entry - Domain detection β
βββββββββββββββββ¬ββββββββββββββββββββββ
β
ββββββββββββββββββββββββββΌβββββββββββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββββ βββββββββββββββββ βββββββββββββββββ
β plugin-router β β plugin-router β β plugin-router β
β (Domain A) β β (Domain B) β β (Domain C) β
βββββββββ¬ββββββββ βββββββββ¬ββββββββ βββββββββ¬ββββββββ
β β β
βΌ βΌ βΌ
plugin-skills plugin-skills plugin-skills
When a question spans multiple domains:
Example: "Dora node δΈ E0382 ιθ――"
dora-router (dataflow context)rust-skills:m01-ownership (ownership mechanics)| File | Location | Purpose |
|---|---|---|
Skills.toml |
.cowork/Skills.toml |
User configuration |
Skills.lock |
.cowork/Skills.lock |
Installed state (auto-generated) |
cowork-router |
.claude/skills/cowork-router/ |
Dynamic router (auto-generated) |
hooks.json |
.claude/skills/cowork-router/ |
Auto-trigger hooks (optional) |
Run cowork config router after:
In Skills.toml:
[triggers]
priority = ["dora-router", "rust-router", "makepad-router"]
[triggers.overrides]
"async" = "rust-router"
"widget" = "makepad-router"
Higher priority routers win when keywords conflict.