---
name: choose-skill
description: Routes a task to the right skill in this library — a router over the full catalog, mapping the situation in front of you to the one skill (or skill chain) that fits. Use when starting a task and unsure which skill applies, when several skills seem relevant, when the user asks which skill to use, or when invoked as the entry point for installed Skillsheet skills.
category: loop-engineering
keywords: router, discovery, skill-selection, meta, catalog, choose
---

# Choose Skill

A router, not a worker. Its only job is to match the situation at hand to the right skill in this library, then hand off — reading the chosen skill before acting. Routing wrongly is expensive; routing then *not reading* the routed skill is worse, because the skill's process is the value.

## When to apply

Use at the start of any task ("which skill covers this?"), when two or more skills seem relevant and the order matters, or when the user asks what this library can do for a given situation.

## Routing table

Match by situation, not by keyword similarity:

| Situation | Skill |
|---|---|
| Starting a multi-step dev task; need the general working loop | [agent-development-loop](/skills/agent-development-loop) |
| Deciding whether to keep looping or stop (tests green, budget spent) | [loop-verifier](/skills/loop-verifier) |
| Flooded with work — bugs, reviews, features arriving at once | [loop-triage](/skills/loop-triage) |
| Scope is exploding or pace is unsustainable | [loop-budget](/skills/loop-budget) |
| Something blocks the loop mid-task | [loop-constraints](/skills/loop-constraints) |
| About to change code; need the change to be small and safe | [minimal-fix](/skills/minimal-fix) |
| Under code review with comments to address | [review-loop](/skills/review-loop) |
| Turning a requirement/PRD into working software | [journey-driven-implementation](/skills/journey-driven-implementation) |
| Wiring UI to real logic end-to-end | [ui-backend-integration](/skills/ui-backend-integration) |
| Implementing a feature; keep it lean and proportionate | [lean-implementation](/skills/lean-implementation) |
| Given an example and told to produce work like it | [example-mimicry](/skills/example-mimicry) |
| Asked to audit/roast code quality like a static analyzer | [engineering-roast](/skills/engineering-roast) |
| Building or fixing tests for finished work | [test-to-completion](/skills/test-to-completion) |
| Verifying a migration/conversion preserves meaning | [round-trip-testing](/skills/round-trip-testing) |
| Module boundaries unclear; restructuring for maintainability | [domain-modularization](/skills/domain-modularization) |
| Migrating a legacy app or monolith to a modern stack | [app-modernization](/skills/app-modernization) |
| Docs drifted from the implementation; repo needs tidying | [housekeeping-docs](/skills/housekeeping-docs) |

## Workflow

1. **Name the situation** — one sentence: what is true right now, and what must be true when done.
2. **Match the table** — pick the single best-fit row. Ties break toward the earlier loop stage (triage → implement → verify → review).
3. **Chain, don't hoard** — most tasks need 1–2 skills; the chosen skill's *Related skills* section handles handoffs. Don't preload more than the first skill.
4. **Read before acting** — open the chosen skill and follow its workflow; the router's output is the handoff, not the work.
5. **Note the gap** — if nothing fits, say so explicitly and proceed unskilled; gaps are how the library grows.

## Rules

- Route, then read — never act on a skill's summary alone; the body is the process.
- One primary skill at a time — chains are sequential handoffs, not parallel loads.
- The table is the source of truth — when a new skill joins the library, its row lands here in the same change.
