Imported from personamanagmentlayer/pcl (
stdlib/tools/skill-router/SKILL.md). Install upstream withnpx skills add personamanagmentlayer/pcl --skill skill-router. Copyright stays with the author.
Skill Router
The library holds 191 skills across 15 categories. This skill answers which ones apply to a task, and how to combine them.
Core Concepts
Route on the Task, Not the Technology
"Fix this slow query" is not a PostgreSQL question until you know the query is in PostgreSQL. Start from what the user is trying to do, then narrow by the technology actually in the repository.
Two Shapes of Skill
| Shape | Naming | Answers | Examples |
|---|---|---|---|
| Domain expertise | <domain>-expert |
"How does X work, and what is good practice?" | postgresql-expert, react-expert |
| Procedure | <activity>-workflow |
"What do I do, in what order?" | tdd-workflow, debugging-workflow |
A task usually needs one of each: the workflow drives the sequence, the expert supplies the judgement inside it.
Compose, Don't Concatenate
Loading five skills fills the context and dilutes attention. Load the workflow plus the one or two experts whose material the task actually touches, and consult a third only if the work reaches it.
Finding a Skill
The catalogue is machine-readable and is the fastest route:
# By keyword across names, descriptions and tags
jq -r '.skills[] | select(
(.name + " " + .description + " " + (.tags | join(" ")))
| ascii_downcase | contains("kafka")
) | "\(.category)/\(.name)"' stdlib/catalog/skill-catalog.json
# Everything in a category
jq -r '.skills[] | select(.category == "security") | .name' stdlib/catalog/skill-index.json
# What a skill covers, before loading it
jq -r '.skills[] | select(.name == "rag-expert") | .description' stdlib/catalog/skill-catalog.json
Or by filesystem, which is often quicker for a name you half-remember:
find stdlib -maxdepth 2 -type d -name '*postgres*'
grep -rl "watermark" stdlib --include=SKILL.md
Every description contains an explicit Use when … clause naming the keywords
and tasks that should select it. Read that clause rather than guessing from the
name.
The Category Map
| Category | Holds | Reach for it when |
|---|---|---|
workflows/ |
Procedures: TDD, refactoring, debugging, code review | The question is "how do I proceed?" |
languages/ |
23 programming languages | Idiom, tooling, or language-specific behaviour |
frameworks/ |
15 web, mobile and desktop frameworks | Framework conventions and lifecycle |
api/ |
REST, GraphQL, gRPC, OpenAPI, microservices | Designing or consuming an interface |
data/ |
Databases, warehouses, pipelines, BI | Storage, queries, analytics, streaming |
devops/ |
Containers, orchestration, IaC, CI/CD, observability | Build, deploy, run |
cloud/ |
AWS, Azure, GCP, Cloudflare | Provider-specific services |
ai/ |
ML, LLM engineering, RAG, agents | Anything model-based |
security/ |
AppSec, identity, secrets, supply chain, compliance | A security question, at any stage |
qa/ |
Test frameworks, load, chaos | Writing or running tests |
tools/ |
Git, documents, browsers, chat platforms, this skill | Working with a tool rather than a domain |
domains/ |
Industry verticals and enterprise platforms | Domain rules: healthcare, finance, SAP |
professional/ |
Accounting, legal, banking, FinOps, standards | Non-engineering expertise |
scientific/ |
Research, quantum, biology | Scientific computing |
design/ |
Architecture patterns, accessibility | Structure or interface quality |
Note that design/design-expert covers software architecture, not visual
design — a legacy naming artefact. accessibility-expert is the interface skill.
Choosing Between Overlapping Skills
Several pairs look similar. The distinctions that matter:
| If the task is… | Use | Not |
|---|---|---|
| Driving a browser to test your own app | playwright-expert |
browser-automation-expert |
| Driving a browser to get data from a site | browser-automation-expert |
playwright-expert |
| The process of reviewing a change | code-review-workflow |
code-review-expert |
| What good code looks like per dimension | code-review-expert |
code-review-workflow |
| A security breach investigation | incident-response-expert |
debugging-workflow |
| A production defect, no attacker | debugging-workflow |
incident-response-expert |
| Transactional workload, rows | postgresql-expert, mysql-expert |
analytical-databases-expert |
| Aggregates over huge tables | analytical-databases-expert |
postgresql-expert |
| Moving events continuously | stream-processing-expert |
airflow-expert |
| Scheduled batch orchestration | airflow-expert |
stream-processing-expert |
| Prompt design and model output | llm-engineering-expert |
agent-engineering-expert |
| A model that calls tools | agent-engineering-expert |
llm-engineering-expert |
| Answering over your documents | rag-expert |
elasticsearch-expert |
Composition Patterns
Common tasks and the skills that serve them:
"Add a feature to our API, test-first"
tdd-workflow (the loop) → api-design-expert (contract) → the language skill →
code-review-workflow (before merge)
"Our checkout is slow"
debugging-workflow (method) → performance-expert (measurement) → the database
or framework skill, once measurement says which
"Build an assistant over our documentation"
rag-expert (retrieval) → llm-engineering-expert (generation and evaluation) →
agent-engineering-expert (only if it calls tools) → identity-access-expert
(who may see which documents)
"Harden our release pipeline"
supply-chain-security-expert (provenance, SBOM) → cicd-expert (pipeline) →
secrets-management-expert (credentials)
"Make the dashboard accessible"
accessibility-expert (conformance) → the framework skill (implementation) →
qa-expert (regression coverage)
"Migrate a large table with no downtime"
refactoring-workflow (parallel change) → the database skill (mechanics) →
sre-expert (rollout and rollback)
When No Skill Fits
Before concluding a skill is missing:
- Search the catalogue by tag, not by the name you expected.
- Check
references/— the topic may be a section inside a broader skill.railslives inruby-expert,sparkindatabricks-expertandanalytical-databases-expert. - Check whether a broader skill covers it.
vector-databasesis insiderag-expertby design, because the choice only matters in that context.
If it is genuinely absent, the test for adding one is whether it is a distinct decision context rather than a distinct technology. Five vector stores share one mental model and belong in one skill with per-store references; MySQL and PostgreSQL differ enough in design consequences to warrant separate skills.
Use skill-creator-expert to author it, and scripts/validate-skills.py to
check conformance.
Best Practices
- Read the
Use whenclause before loading a skill; it is written to be the routing signal. - Start with the workflow when the question is procedural — it will name the expert skills it needs.
- Load two or three skills, not six. Add a fourth when the work reaches it.
- Prefer the specific skill.
mysql-expertoversql-expertwhen the database is MySQL. - Consult
security/early, not as a final review — the cheapest security fixes are design decisions. - Follow the reference links rather than loading a second skill for a detail;
references/is where the depth lives.
Anti-Patterns
- Routing on a keyword in isolation. "Java" in "JavaScript" is not
java-expert. - Loading every plausibly related skill — dilutes attention and fills the context budget.
- Picking the general skill when a specific one exists.
- Skipping the workflow skill and improvising the procedure.
- Assuming a topic is missing because the skill is not named after it.
Resources
stdlib/catalog/skill-index.json— name, category, path, tagsstdlib/catalog/skill-catalog.json— full descriptions, sizes, reference listsstdlib/SKILLS_INVENTORY.md— human-readable listing by categorystdlib/CHANGELOG.md— versioning and migration notesskill-creator-expert— authoring a new skill