thinking-model-router — Claude Code skill: pick the right thinking
A router skill that maps domain and problem type to one thinking skill, or returns NONE. Useful when you would otherwise guess or stack frameworks.
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a claude-codeWhat thinking-model-router does
Faced with a fuzzy problem, it is tempting to grab tools at random or bolt on five frameworks at once. thinking-model-router instead matches a domain (coding, architecture, product, strategy, risk and others) against a problem type (diagnose, decide, understand, create, evaluate, predict, optimize) and hands back a single primary pick. The default is NONE — reason directly.
The procedure runs in six steps. First a short-circuit: if one skill clearly fits by mechanism, the router returns only that. Otherwise candidates get scored on weighted criteria — problem fit 30%, available inputs 20%, time to apply 15%, stakeholder usability 15%, competence to apply 20%. A route needs problem fit of at least 4 and a weighted total of at least 3.5, or the answer is NONE. Second and third skills are an exception, added only when each has a distinct role, and capped at three.
The router does not fire on its own: it carries disable-model-invocation: true, so you invoke it yourself. Skip it when the answer is already obvious — hunting a bottleneck is a direct call for theory-of-constraints. The skill says as much: routing for show is pointless. If the chosen frame yields no insight after 15 minutes, the procedure says to re-route once or fall back to NONE.
What it helps with
- pick one thinking skill when several look plausible
- avoid stacking frameworks on a routine task
- map a domain to a problem type before starting
- get an explicit NONE instead of an invented route
- cap a combination at three skills with distinct roles
Example prompts for the agent
- I can't tell which thinking skill fits this problem — run it through thinking-model-router
- We have flaky tests and no clear starting point: have the router pick an approach
- Should I add a second skill to the primary one, or is one enough? Check with thinking-model-router
How to install thinking-model-router
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a claude-code2Manually: put the files in place
~/.claude/skills/thinking-model-router/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/thinking-model-router/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a codex2Manually: put the files in place
.agents/skills/thinking-model-router/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a cursor2Manually: put the files in place
.cursor/skills/thinking-model-router/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tjboudreaux/cc-thinking-skills thinking-model-router2Manually: put the files in place
.github/skills/thinking-model-router/SKILL.md1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a gemini-cli2Platform CLI
gemini skills install https://github.com/tjboudreaux/cc-thinking-skills --path skills/thinking-model-routerManually: put the files in place
.devin/skills/thinking-model-router/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about thinking-model-router
How do I install thinking-model-router in Claude?
Run npx skills add tjboudreaux/cc-thinking-skills --skill thinking-model-router -a claude-code. The skill file lands at ~/.claude/skills/thinking-model-router/SKILL.md.
What does thinking-model-router do?
It maps a domain and problem type onto the thinking-skills catalog and returns NONE or one primary skill, at most three when roles are distinct. Routing follows mechanism fit rather than habit.
Why doesn't the router run automatically?
It sets disable-model-invocation: true, so invoking it is up to you. That guards against routing where the skill is already obvious.
Source text
SKILL.md · MIT
---
name: thinking-model-router
description: When unsure which thinking skill fits, map domain and problem type, then return NONE or one primary skill by default (at most three complementary).
disable-model-invocation: true
---
# Model Router
**Core rule:** Prefer NONE or one primary skill. Route by mechanism fit, not habit. Combine only when roles are distinct and necessary.
## When to Use
- The right thinking skill is unclear and you would otherwise guess or stack tools.
- Several catalog skills seem plausible and you need a single primary (or explicit NONE).
- High-stakes work where a wrong frame is costly and a quick domain×type match helps.
## When NOT to Use
- The match is already known or obvious ("where's the bottleneck?" → theory-of-constraints) — invoke that skill directly; do not route for show.
- The task is routine implementation with no analytical unknown — reason directly (NONE).
- You are mid-execution of an agreed plan and only need the next concrete step.
- The ask is outside this catalog (pure coding syntax, tool ops with no judgment call) — NONE.
## Invoking a Model (Skill IDs)
The router outputs bare slugs (e.g. `id: five-whys-plus`). Invoke a routed skill with the Skill tool using the exact ID `thinking-skills:thinking-<slug>` — never invent a slug not cited in Procedure. `NONE` means no invocation.
## Procedure
1. **Short-circuit.** If one skill clearly fits by mechanism, return that skill alone. If no skill clearly improves the work, return **NONE** and reason directly. Stop.
2. **Characterize.** Record domain (coding, architecture, product, strategy, personal, abstract, risk, innovation) and problem type (diagnose, decide, understand, create, evaluate, predict, optimize). Note constraints: time, information, stakes, reversibility, complexity.
3. **Candidate by type defaults (override when constraints demand).** Keep only active catalog skills:
- Diagnose → five-whys-plus or scientific-method (kepner-tregoe if IS/IS-NOT matrix needed)
- Decide → reversibility first; then opportunity-cost or probabilistic
- Understand → systems (map-territory if model-vs-reality gap; cynefin if approach domain unclear)
- Create → first-principles (triz for contradictions; effectuation for means-driven; via-negativa for remove-first)
- Evaluate → steel-manning (socratic if assumptions/definitions are the unknown)
- Predict → probabilistic
- Optimize → theory-of-constraints (ooda under time pressure; bounded-rationality for search stop)
- Risk / "what fails?" → pre-mortem or red-team; margin-of-safety for buffers
- Product "what to build?" → jobs-to-be-done
- Competence / durability → circle-of-competence, lindy-effect
- Controlled hypothetical → thought-experiment
- Multi-lens only after one primary fails a blind-spot check → model-combination
4. **Select with criteria (satisficing).** Score only if 2+ candidates remain or stakes make a forced default unsafe. Rate each criterion 1–5 (1 = absent/wrong fit; 3 = usable with gaps; 5 = direct fit): problem fit (30%), available inputs (20%), time to apply (15%), stakeholder usability (15%), competence to apply correctly (20%). A route must score problem fit ≥4 and weighted total ≥3.5; otherwise return **NONE**. For totals within 0.25, prefer fewer inputs and shorter execution; if still tied, choose NONE unless the skills answer distinct complementary questions.
5. **Multi-skill only as exception.** Add a second or third skill only when each has a distinct complementary role the primary leaves open. Cap at three. Prefer sequential over parallel. Near-neighbors and synonyms do not stack. For composition patterns, hand off to model-combination after naming the primary.
6. **Exit.** State abandon signals (forced fit, ignored factors, no insight ~15 minutes). On mismatch, re-route once or fall back to NONE — never force a frame.
**Domain cheat-map (primary first; still default to one or NONE):**
| Domain signal | Prefer |
|---------------|--------|
| Bug / root cause / flaky | five-whys-plus, scientific-method, systems |
| Architecture / tech choice | reversibility, systems, lindy-effect, opportunity-cost |
| Feature / roadmap / engagement | jobs-to-be-done, opportunity-cost, theory-of-constraints |
| Strategy / competition / growth | cynefin, systems, red-team, second-order |
| Personal / career commitment | opportunity-cost, reversibility, circle-of-competence, pre-mortem |
| Argument / belief update | steel-manning, probabilistic, socratic, first-principles |
| Security / disaster / ruin | pre-mortem, red-team, margin-of-safety, via-negativa |
| Innovation / contradiction / simplify | first-principles, triz, effectuation, via-negativa |
## Output
```text
outcome: NONE | one | multi
routes:
- id: <primary skill id or NONE>
role: <job this skill performs>
unique_question: <question only this route answers>
- id: <secondary skill id, only for multi>
role: <distinct complementary job>
unique_question: <distinct open question>
- id: <tertiary skill id, only for multi>
role: <distinct complementary job>
unique_question: <distinct open question>
domain: <domain>
problem_type: <type>
constraints: <time/info/stakes/reversibility>
rationale: <mechanism fit in one sentence>
blind_spots: <what primary still ignores, if any>
exit: <when to abandon or re-route>
```
Default fill: `outcome: NONE` with one `id: NONE` route, or `outcome: one` with one route. Use `multi` only when every listed skill has a distinct role and unique question.
## Verification
- **Falsify / stop:** If the route is habit or familiarity rather than mechanism fit, discard and re-score or return NONE. If multi-skill entries lack distinct roles, collapse to the single best primary. If no candidate clearly helps, NONE is correct — do not invent a route.
- **Over-application guard:** Do not route when the skill is already obvious. Do not return more than three skills. Do not cite deleted or non-catalog names. Do not treat the router as a prerequisite for leaf skills invoked directly.
© tjboudreaux · MIT · tjboudreaux/cc-thinking-skills