Skip to content
Back to skills

Choosing Tools

ASecurity

Decide which installed skill or tool, if any, should own a task — a fit-ranking dispatch step at task starts and direction changes, not a per-message ritual. Use when starting substantive work that more than one installed capability could plausibly own, when unsure whether a discipline skill (TDD, debugging, data-contract guardrails) applies to the work at hand, when two skills seem to claim the same job, or when the user asks "which tool/skill should handle this". Ranks candidates against th...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added August 31, 2026
ai-agentsrailsdebugging

Works with

  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned August 31, 2026

npx -y skills add grimaldost/craft-collection --skill choosing-tools --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Choosing Tools?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Choosing Tools
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grimaldost-choosing-tools/badge)](https://www.skillsdirectory.com/skills/grimaldost-choosing-tools)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: choosing-tools
description: Decide which installed skill or tool, if any, should own a task — a fit-ranking dispatch step at task starts and direction changes, not a per-message ritual. Use when starting substantive work that more than one installed capability could plausibly own, when unsure whether a discipline skill (TDD, debugging, data-contract guardrails) applies to the work at hand, when two skills seem to claim the same job, or when the user asks "which tool/skill should handle this". Ranks candidates against their descriptions' positive and negative triggers and loads one only when its expected benefit clearly exceeds its context and anchoring cost; exits in one line when nothing fits, and sets aside a loaded skill plainly when it turns out wrong. Pairs with toolkit-awareness, which answers what is installed — this skill decides whether and when to load it. Not for inventory questions (that is toolkit-awareness) and not for authoring or tuning skill descriptions (that is skill-authoring).
---

# Choosing Tools

Tool selection runs on fit, not volume. This skill states the dispatch policy
once, centrally, so no individual skill has to argue for its own attention —
descriptions describe, and this protocol ranks them.

This is a **flexible** skill: the procedure below is the default shape of the
decision, and the judgment inside each step is yours.

## When this runs

At task starts and direction changes — the moments where work could take a
shape: build, fix, migrate, refactor, review, plan, audit. **Inside a long
autonomous task the internal phase shifts are direction changes too** —
design→build→run→report each invite a quick re-check and a one-line naming of
the active discipline, rather than riding the opening dispatch for hours. It
does not run on conversational turns, follow-up messages inside an active task,
or questions answerable directly. A dispatch check on "hang on" is ceremony,
not selection.

## The dispatch procedure

1. **Name the task in one phrase.** "Schema change with downstream consumers",
   "unexplained test failure", "new feature, shape unclear". The phrase is
   what candidates get ranked against.
2. **Shortlist candidates.** Installed skills whose triggers plausibly match.
   When unsure what is installed, get a live inventory rather than recalling
   from memory — an inventory skill when one is installed (e.g.
   session-workflow's toolkit-awareness), else the harness's skill listing or
   a repo's `AGENTS.md` index already in context.
3. **Read the target tool's own record.** When the task will exercise a tool
   that has a registered dogfooding-feedback intake (e.g. a `feedback-targets`
   binding, where session-workflow's loop is installed), read the newest
   report's Misses/Friction from that intake — one Read — before settling the
   shortlist. Dispatch is where a recorded miss must resurface: the same
   under-dispatch recurred across six arcs, once the day after being written
   down, because nothing read the record back at this step. No registered
   intake → skip; the step costs nothing.
4. **Check positive and negative triggers.** A candidate that matches the
   phrase but sits in another skill's declared territory ("not for X — that
   is Y") loses to the owner. Negative space decides ties.
5. **Load when the bar is met.** Load the best fit when its expected benefit —
   risk averted, rework avoided, discipline the task genuinely needs — clearly
   exceeds its cost: the context it occupies and the way a loaded skill
   anchors the plan. When a process discipline and an implementation skill
   both apply, load the process discipline first; it shapes how the
   implementation runs.
6. **Exit in one line when nothing clears the bar.** "No installed skill owns
   this; proceeding directly" is a complete, correct outcome. Record it and
   move on.
7. **Set aside misfires plainly.** A loaded skill that turns out not to fit is
   abandoned explicitly — "loaded X; it assumes Y, which doesn't hold here;
   continuing without it." Following a misfit skill to completion because it
   was loaded is anchoring, not diligence.

## The loading bar

The threshold is deliberately qualitative — "clearly exceeds" — because a
numeric cutoff in prose would be fake precision. What calibrates the bar over
time is measurement: the trigger evals and their gates, not adjectives. Two
rules of thumb hold:

- Cheap, scoped reference skills (a schema, a config convention) clear the bar
  easily; heavyweight process skills that restructure the whole turn need a
  task that actually has the failure modes they prevent.
- Keyword overlap alone never clears the bar. "Test" appearing in the task
  does not load a TDD skill; implementing behavior does.
- Declining to load a skill is not declining its cheapest, most durable core.
  The bar gates skill *ceremony*, not the cheap insurance some disciplines carry
  (e.g. leaving a red-green regression test after a bug fix — seconds of work,
  lasting protection — even when the full skill isn't worth loading). Apply the
  core, skip the ceremony.

## Boundaries

- **The inventory is someone else's job** — what is installed and who owns which
  concern comes from an inventory skill (e.g. session-workflow's
  toolkit-awareness), the harness's skill listing, or a repo's `AGENTS.md` index.
  This skill consumes that answer; it does not produce it.
- **skill-authoring** owns descriptions — when a skill keeps winning or losing
  dispatch wrongly, fix its trigger surface there, never by inflating register;
  selection quality depends on descriptions staying honest.

## Dispatch-router hook

The plugin ships a UserPromptSubmit hook that runs a lexical router over each
substantive prompt and names each matching skill by its activation test — a
question to answer, not a coincidence to notice. It skips skills this install
lacks, and never reads the cwd's name as trigger vocabulary. On by default;
`HUMBLEPOWERS_DISPATCH_PROMPT_INJECT=0` opts out.

Files in this skill

  • SKILL.md5.9 KB
  • scripts/inject_dispatch.py8.9 KB
  • scripts/router.py8.6 KB
  • scripts/router_rules.json13 KB
  • scripts/test_inject_dispatch.py8.6 KB
  • scripts/test_router.py18.1 KB
  • scripts/test_stress_regressions.py11.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.