ax-check rule

AXC-D024: Skill description over 1,024 characters

The frontmatter description is longer than the 1,024 characters the specification allows.

ax-check is a checker being prepared for release. This page documents the rule ahead of that release; see all 50 rules.

Severityerror
KindConformance. A finding is a fact about the input.
Modeax-check lint
Applies toSKILL.md
Pattern tagsskills, context-budget
Fix in one lineCut the description to what and when; move detail into the SKILL.md body or references.

The description in the SKILL.md frontmatter is longer than the 1,024 characters the Agent Skills specification allows. A loader that enforces the limit may reject the skill or cut the description, and a cut loses the end of the text, where a “when to use it” sentence may sit. Even where it is accepted, the description is loaded for every installed skill, so extra length costs context all the time.

What it checks

ax-check measures the length of the frontmatter description of each SKILL.md and reports any longer than 1,024 characters.

Why it matters

The Agent Skills specification sets a maximum of 1,024 characters for description. Anthropic’s skill authoring guidance (vendor guidance) gives the same maximum and adds that the description “is injected into the system prompt”. The description’s job is discovery: say what the skill does and when to use it, so the agent can decide whether to load the body. Instructions, examples and reference material belong in the body or in bundled files, which load only when the skill is used.

How to fix

  • Cut the description to two parts: what the skill does, and when to use it (and, if useful, when not to).
  • Move steps, examples, option lists and background into the SKILL.md body.
  • Move long reference material into files under references/ and link to them from the body.

Example

Before

---
name: invoice-review
description: >
  Checks a draft invoice before it is sent. First open the invoice and read
  every line item, then compare each line with the order, then check the tax
  rate for the customer's country using the table below, then check the due
  date against the payment terms ... (a tax table and 12 more steps follow,
  1,400 characters in total)
---

After

---
name: invoice-review
description: Checks a draft invoice before it is sent, covering totals, tax and due dates. Use this when asked to review, check or approve an invoice. Do not use it to create invoices.
---

# Invoice review

1. Open the draft invoice and read every line item.
2. Compare each line with the order.
3. Check the tax rate in [the tax table](references/tax-rates.md).

How ax-check detects it

ax-check takes the description value as the YAML parser returns it and counts its characters. A folded or literal block scalar is measured after YAML has joined its lines. The value is not trimmed first.

What it ignores: a missing description is reported by AXC-D022, not here. A long description that is still under the limit is not reported by this rule; AXC-D016 reports descriptions that are far longer than the others in the same set of skills.

Known false positives: ax-check counts characters as JavaScript string units, so an emoji or another character outside the Basic Multilingual Plane counts as two. A description just under the limit that uses many such characters may be reported.

If the finding does not apply, silence it with --disable AXC-D024.

Sources

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.