agentleFS
karina-yjmkarina-yjm/which-skill/SKILL.md

which-skill

Skill1 starsChanged 4 months agoMITView on GitHub

which-skill — quote-backed intent match over installed agent skills; recommend 2–3, never autoload. Use when asking which skill to use, how to pick a skill, what tool fits a job, or describing a task without naming a skill — including paraphrases that miss trigger words (color-blind UI → accessibility). Also use to run the paraphrase harness. Do not use when a skill is already named, or to search/install from the ecosystem (find-skills).

12 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use resolving-merge-conflicts, to-issues and 8 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • GoogleSkill

    resolving-merge-conflicts

    Use when you need to resolve an in-progress git merge/rebase conflict.

    Also in 3 projects that use this

  • GoogleSkill

    to-issues

    Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices.

    Also in 3 projects that use this

  • Google CloudSkill

    triage

    Gather context on a change or bug and plan the implementation.

    Also in 4 projects that use this

  • +7 more from google

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 10 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Prefer the in-context skill catalog (name + description).

    line 54
  2. Very specific:

    If missing / thin / stale: scan skill roots and read each SKILL.md frontmatter only.

    line 55
  3. Distinctive:

    Quote rule: every keep binds intent to a verbatim phrase from that skill's description.

    line 71
  4. Distinctive:

    When the best match is weak, or paraphrase would work but the description is too narrow:

    line 95
  5. Very specific:

    No local fit → offer bare help → find-skills only if they may want an uninstalled skill.

    line 105
  6. Distinctive:

    Never invent a skill name absent from the loaded catalog

    line 114
  7. Distinctive:

    Prefer specific over generic.

    line 115
  8. Distinctive:

    When the user says "run paraphrase cases" / self-check / after editing this skill: load references/paraphrase-cases.md and score every case …

    line 119

“Common” is measured: kept by at least 6 in 10 of the 10 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

which-skill

Intent match, not keyword match.

Recommend-only · quote-backed · live-catalog.

Ranks already installed skills and stops at the recommendation. Never silently load or run another skill.

Not find-skills (ecosystem install). Not a hardcoded domain→skill table.

Demos: examples.md · Harness: references/paraphrase-cases.md

Steps

1. Gate — negative space

SignalAction
User already named a skillStop — router not needed
Trivial one-shot, no specialized workflowNo skill needed — just do the task
Needs a skill that is clearly not installedHand off to find-skills

Done when: you exited with a clear reason, or you proceed knowing a local skill may exist.

2. Extract intent

One sentence: job (outcome) · object (artifact) · constraints.

Pick altitude:

AltitudeMeaning
atomicOne skill
combo2–3 skills in sequence
flowMulti-session pipeline (only if those skills are installed)

Done when: a restatement without the user's wording still picks the same family and altitude.

3. Load the live catalog

Single source of truth = this session's descriptions. No memorized tables.

  1. Prefer the in-context skill catalog (name + description).
  2. If missing / thin / stale: scan skill roots and read each SKILL.md frontmatter only. Paths: references/scan-roots.md. Follow symlinks; skip broken; optionally report reachable / broken.
  3. Skip which-skill, skill-router, and non-actionable meta docs.

Done when: you have {name, description} for every reachable install — not a memory guess.

4. Semantic rank (quote-backed)

Score against the intent sentence (not surface keywords):

AxisStrongWeak
Jobdescription's action = outcomesame domain, different action
Objectright artifact kindadjacent domain only
Scopealtitude matchestoo broad or too narrow
  • Paraphrase test: phrasing would miss the skill's triggers, intent still matches → still a hit.
  • Quote rule: every keep binds intent to a verbatim phrase from that skill's description. No "sounds related."

Return top 2–3. Combos count toward the cap. Specific beats generic; atomic beats flow when one skill suffices.

Done when: each candidate has intent ↔ quote; altitude is decided.

5. Present (recommend-only)

Reply in the user's language. Do not open or run a recommended skill until they confirm.

**{name}** — {one-line what it does}
- Quote: "{verbatim from description}"
- Why: {intent ↔ that quote}
- Altitude: atomic | combo step N | flow
- Invoke: {how to attach — wait for OK}

Weak but paraphrase-solid → still recommend, then step 6.

Done when: 2–3 picks with quotes, or an explicit no-match / no-skill-needed path. No catalog dump. No autoload.

6. Description feedback (weak / empty only)

When the best match is weak, or paraphrase would work but the description is too narrow:

Description feedback for `{name}`:
- Missed paraphrase: "{user phrasing}"
- Suggested trigger branch: "{one Use when… clause}"

At most one feedback block. For skill authors — optional for the user.

No local fit → offer bare help → find-skills only if they may want an uninstalled skill.

Done when: feedback emitted for a real gap, or skipped because quotes were strong.

Hard rules

  1. Recommend-only — never autoload another skill
  2. Quote-backed — no quote → no recommend
  3. Live catalog — never hardcode domain→skill maps
  4. Never invent a skill name absent from the loaded catalog
  5. Prefer specific over generic; atomic over flow when one skill suffices

Paraphrase harness

When the user says "run paraphrase cases" / self-check / after editing this skill: load references/paraphrase-cases.md and score every case against the current catalog.

Done when: each case is hit | miss | skipped-not-installed + name + quote used.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.