Skip to content
Mastering Claude

Home / Extending: skills, MCP, subagents, hooks, plugins

Extending: skills, MCP, subagents, hooks, plugins8 minApplication

Skill routing fails silently

Claude decides whether to invoke a skill by comparing the request's vocabulary against that skill's description field alone, and a mismatch of language or jargon between the two causes automatic invocation to fail with no visible signal in the response.

Nothing signals, at the moment of a request, that an installed skill covers the subject exactly: Claude decides whether to invoke it by comparing the request's vocabulary against that skill's description field, and a skill that shares no word with the request stays silent (source code.claude.com/docs/en/skills, accessed on 2026-09-02).

A single field decides

The documentation is explicit on this point: description states what the skill does and when to use it, it is the only text Claude reads to decide whether to invoke it automatically. When this field is absent, Claude falls back on the first paragraph of the SKILL.md file. This text is also truncated to one thousand five hundred and thirty-six characters in the listing presented to the model, to limit token cost: a long description whose main use case comes at the end of the text loses exactly the sentence that would have triggered the invocation.

The vocabulary mismatch warns no one

A skill described in English for a use case named chart or dataviz may not trigger on a request in French that uses the word graphique, even when the need is identical. A skill described for summarising a ticket may not trigger on a request that talks about synthesising an incident. The answer still arrives, written by Claude directly, and nothing in its form distinguishes a response that drew on the installed skill from one that ignored it.

---
description: Crée des graphiques et des tableaux de bord à partir de données
---

Two direct workarounds

The first is to phrase your request using the very vocabulary of the installed description, which assumes you have read it at least once. The second is to invoke the skill directly by its name, with the slash, rather than relying on automatic matching: the same skill is then invoked regardless of the word chosen in the phrase that follows.

This risk of non-triggering connects directly to what is taught in skills, teaching Claude a workflow: a correctly written skill that is never invoked is no better than a skill that does not exist.

Figure 1

The truncation limit of the description field

1536characters
length at which a skill's combined description is truncated in the listing presented to the model
code.claude.com/docs/en/skills, 2026-09-02
The figure measures the maximum length of the text the model actually sees to decide whether to invoke a skill, description and when_to_use combined.
Figure 2

Same installed skill, same need, different vocabulary

A skill described in English with the words chart and dataviz, facing two phrasings of the same requestWords used in the requestOverlap with the installed descriptionSkill invoked automatically
Request aligned with the descriptionchart, datavizstrongyes
Request rephrased in different vocabularygraphique, tableau de bordweakno
The table compares two phrasings of the same request against the same installed skill, to show where the lexical matching plays out.
Calibrate it yourself

The description of the skill installed for this use case uses the words chart, dataviz and visualization in its SKILL.md file. A user asks Claude, in French, to build a graphique (the French word for a chart) from a table of figures they have just pasted into the conversation. Claude responds by writing the requested chart's code directly in the body of its reply.

Write, in one sentence, what this situation establishes, and in one sentence what it does not establish.

What to remember
  • Claude decides whether to invoke a skill by comparing the request's vocabulary against that skill's description field alone.
  • A skill's combined description is truncated to one thousand five hundred and thirty-six characters in the listing presented to the model, to limit token cost.
  • A mismatch of language or jargon between the request and the installed description causes automatic invocation to fail with no visible signal in the response.
  • Phrasing the request with the vocabulary of the installed description, or invoking the skill directly by its name, works around this risk.
Do this now

Open the SKILL.md file of a skill you use regularly, note down three exact words from its description field, then rephrase a recent request using these words to check that it does indeed trigger this skill.

What still needs checking

These points depend on an interface or a rule that may have changed since this was written. Check them on your own screen before relying on them.

  • The truncation threshold of one thousand five hundred and thirty-six characters is a harness implementation detail, liable to change with a future version, to be rechecked at https://code.claude.com/docs/en/skills before citing it as a fixed limit.
Check the source

Every datable claim in this lesson links here to the public text behind it. A source that does not open proves nothing.