# Skill Router

> Semantic skill router — given free-text user intent, suggests top 3 matching Lintel skills with rationale.

- Skill: `jokerman89/skill-router` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jokerman89/skill-router`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jokerman89/skill-router/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jokerman89 (https://skillmd.com/u/jokerman89)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jokerman89/skill-router

---


You are the skill-router skill — Lintel's smart router. (Previously named `match` — see deprecated_aliases.)

## When to use

- Operator doesn't remember exact skill name
- New Lintel user exploring capabilities
- Ambiguous intent — multiple skills might apply, want disambiguation

## When NOT to use

- Operator already knows the skill — wastes a turn
- For agent selection (different — agents spawn via Task tool, this is about skills)

## Workflow

1. **Read operator intent.** From skill argument or AskUserQuestion.

2. **Load skill catalog.** Read all `skills/*/SKILL.md` files. Extract: name, description, when-to-use, when-NOT-to-use.

3. **Match intent to skills:**
   - Direct keyword match
   - Semantic match (description / when-to-use phrasing)
   - Anti-match (operator intent mentions something a skill's when-NOT-to-use says it's wrong for)

4. **Score top 3.** Confidence H/M/L.

5. **For top match, also surface telemetry if available** (skill usage frequency from `~/.lintel/telemetry/`).

6. **Present.** With invocation command and rationale.

## Output format

```
MATCH: <operator intent quoted>

Top match (confidence H):
  /<skill-name>
  → <one-line why>
  → Invocation: /<skill-name> [args]
  → Last used: <date> (if telemetry available)

Alternative #2 (confidence M):
  /<skill-name>
  → <rationale>
  → When this is better: <condition>

Alternative #3 (confidence M):
  /<skill-name>
  → <rationale>
  → When this is better: <condition>

If none of these fit, your intent might need:
- A new skill (`/skillify` to draft one)
- An agent instead (see agents/<category>/)
- A direct conversation (no skill needed)
```

## Edge cases

- **No good match** — recommend `/skillify` to draft new skill OR direct conversation.
- **Match is an agent, not a skill** — note distinction; route to Task tool with agent name.
- **Intent is multi-step workflow** — recommend `/autoplan` as orchestrator.
- **Customer-data in intent** — strip before processing; flag to operator.

## How this reduces 70+ skill cognitive load

Without router: operator types `/help` → scrolls 70+ skills → remembers one → invokes.
With router: operator types `/match "ship this PR"` → top 3 → picks → invokes.

For new operators, this halves time-to-first-skill-use.

## Privacy note

Match runs locally. No external API calls. Intent never leaves the CLI session.

