ax-check rule
AXC-D003: Description only restates the name
Every meaningful word in the description already appears in the name, so the description adds nothing an agent can use.
ax-check is a checker being prepared for release. This page documents the rule ahead of that release; see all 50 rules.
| Severity | warn |
| Kind | Heuristic. A pattern match: a prompt to look, not a verdict. |
| Mode | ax-check lint |
| Applies to | MCP tool lists, OpenAPI, SKILL.md, CLI help |
| Pattern tags | description, selection |
| Fix in one line | Say what the item does in task language, what it needs and what it returns, not just its name again. |
Every meaningful word in the description already appears in the name. “Gets user.” for get_user, or “Manage customers” for a customers command, adds nothing an agent did not already know. The agent still has to guess what the item needs, what it returns and when to use it.
What it checks
ax-check compares the words of the description with the words of the item’s name. When the description contributes no new content word, it reports the item.
Why it matters
The name is the first thing an agent reads. The description exists to add what the name cannot: the task in plain language, the inputs, the result and the limits. A description that repeats the name wastes the one field built for that job.
Anthropic’s skill authoring guidance (vendor guidance) says the description “should include both what the Skill does and when to use it.” The tool descriptions guide asks for the same in task language.
How to fix
Say what the item does in task language, what it needs and what it returns. Name the object it acts on and any important limit, such as a page size or a scope.
Example
Before
Usage: billing <command> [options]
Commands:
invoices Invoices
customers Manage customers
sync Run sync
After
Usage: billing <command> [options]
Commands:
invoices List, create and void invoices for one customer account
customers Look up, add and archive customer records
sync Pull new payments from the bank feed into the ledger (safe to repeat)
How ax-check detects it
- The name is split into words at underscores, hyphens, dots, spaces and camelCase boundaries, so
getUserById,get_useranddns.recordsall become separate words. - The description is split into words. Common stop words (“the”, “a”, “for”, “returns” and similar) and bare numbers are removed.
- Words that describe the kind of item rather than what it does are also removed: tool, command, subcommand, endpoint, operation, function, method, API, CLI, utility, helper, skill, run, execute, call, invoke, manage, handle, perform, and their plural or third-person forms.
- Both sides pass through a light stemmer, so “users” matches “user” and “deletes” matches “delete”.
- The rule fires when every remaining description word is in the name. It also fires when nothing remains, for example “Runs the command.”
This rule runs only when AXC-D002 did not fire. When it fires, AXC-D015 (description too short) is not reported for the same item, so one weak description gives one finding.
Known false negatives: one extra vague word is enough to pass. “Gets user data” passes for get_user, although “data” adds little. The rule does not judge quality, only whether anything new was said.
Known false positives: a very long, descriptive name, such as list_unpaid_invoices_for_customer, can make an accurate one-line description look like a restatement. Even then, adding the limits or the result usually helps. Silence the rule with --disable AXC-D003 if the finding does not apply.
Sources
- Site guide: Write tool descriptions an agent can act on, agentexperience.tech. https://agentexperience.tech/insights/tool-descriptions/ . Asks for a description that says what the tool is for in task language.
- Vendor guidance: Skill authoring best practices, Anthropic, retrieved 2026-10-08. https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices . Says the description “should include both what the Skill does and when to use it.”
Related evidence
Records in the AX evidence register that share a pattern tag with this rule. A shared tag means the record is about the same pattern, not that it tests this rule. Read the evidence class before the number.
- EV-0020: Praise and list order move tool selection (Preprint). A preregistered preprint with two small OpenAI models found that stacked praise in a tool description raised its pick rate by about 43 percentage points, and that with identical listings the first-listed tool was picked about 72 points more often.
- EV-0001: An enum in the schema ends silent failures from example-only vocabularies (Preprint). SilentProbe (preprint) reports that a vocabulary a parameter description only exemplified ("e.g.") was missed on 88 of 88 attempts across twelve models, and that promoting it into the schema cut the failure to 0 of 89.
- EV-0003: Error text that names the next tool lifts recovery (Preprint). A preprint testing five OpenAI models reports that an expired-credential error naming a terminal command left 45% of tasks recovered, naming the server's login tool instead raised recovery to 84%, and on rate limits naming the call to repeat raised recovery from 6% to 88%.
- EV-0018: Skill rules that name a command or path change what agents do (Preprint). A study of 3,159 skills (preprint) found that adding a checkable rule raised the rate at which four coding agents took the required action by +0.23 on average, with the gain coming mainly from rules naming a command or path the old skill did not mention.
- EV-0019: Skill selection precision collapses as the skill pool grows (Preprint). A preprint reports that as the pool of available skills grew from 5 to 100, the precision with which agents actually used the right skill fell from 29.6% to 3.3%.
- EV-0021: Agents leave available tools unused: the adoption gap (Preprint). On OSWorld-MCP (preprint), a reasoning model given MCP tools called one on only 55 of 309 tasks, 23.9% of the tasks a tool could reach, and the same tools made a non-reasoning model 5.9 points worse.
