Skip to content

Why installed Claude Code skills sit dormant

By Maximo Correa · 2026-07-24

Installing a Claude Code skill only puts a file on disk. It loads when something invokes it, which is a separate step most setups skip. Reliable firing needs three parts: a FLOW.md router mapping intent to skill, a hook that keeps that router in context every turn, and a hand-picked set small enough to route well.

The gap every plugin directory leaves open

You find a skill. You copy the install command. It lands in your project. Then you go back to work and nothing changes.

That is not a bug in the skill. A Claude Code skill is a file of instructions, and a file does nothing until something loads it. Installing puts it on disk. Invoking is a separate step, and it is the step most setups quietly skip.

Every directory helps you with the first step. The second one is where the value actually is, and it is where they all stop.

Why "the agent will figure it out" is not a plan

Claude can select a well-described skill when the prompt obviously matches it. The failure mode is not raw selection, it is continuity: three prompts later, mid-task, with a full context window, the moment to load the skill has passed and nothing reminds anyone that it exists.

We tested this rather than assuming it. Our own selection-at-scale check came back null. With roughly a hundred well-described skills installed, native selection did not collapse. So we do not claim that agents cannot pick skills, and you should be skeptical of anyone who does without showing you the run.

What actually decays is whether the right skill fires at the right moment, every time, across a long session. That is a different problem, and it has a different fix.

What makes a skill fire

Three parts, and you need all three.

A router. A FLOW.md file that maps intent to skill: this kind of request routes to that skill, at this gate. It is plain markdown, so you can read it before you trust it.

A hook. A SessionStart and per-prompt nudge that keeps the router in context, so the routing decision gets made every turn instead of only the first one. This is the part that addresses continuity.

Curation. A hand-picked set, because a router over a thousand unrelated skills is a worse router. Fewer, better-matched skills route more reliably than a bigger pile.

Anthropic's own documentation points the same way: hooks plus re-invocation are the documented mechanism for getting an agent to reliably use what it has.

Being honest about what a hook is

A hook is a context nudge, not a hard gate. It cannot physically stop a model from skipping a step. Anyone selling you determinism here is overselling.

What it does is keep the contract in front of the model on every turn, which in our own usage is the difference between a skill that fires and a skill that sits there. That is a real effect and a modest claim, and we would rather make the modest claim accurately.

What this looks like on Flowy

Every Auto-invoked listing ships that router and that hook alongside the upstream plugin. You install it once, then you prompt normally, and the matching skill loads when the work matches it.

Indexed listings are the honest other half of the catalog. They install normally and you invoke them yourself, and the listing says exactly that instead of implying otherwise. A directory that marks everything as automatic is not telling you anything.

Try it

Add the marketplace and install the engine once, then install and activate any overlay:

/plugin marketplace add flowy-sh/flowy-core
/plugin install flowy-core
/plugin install flowy-superpowers
/flowy-superpowers:activate

Then browse the catalog and pick the Flow, a plugin of hand-picked skills routed by a FLOW.md, that matches the work you actually do. Read the skills first. They are all right there.

Why installed Claude Code skills sit dormant · Flowy