SKILL.md validator
Paste a SKILL.md and see at once whether it breaks the open Agent Skills specification, which line is wrong, and how much of Claude Code’s skill listing it uses. It runs in your browser: nothing you paste is uploaded or stored.
What it checks
- Frontmatter YAML. An unquoted value containing a colon and a space, such as
description: Writes a commit message: a subject line, is not valid YAML. Claude Code’s docs say a skill whose YAML fails to parse still loads with no fields set, so/skill-nameworks but Claude cannot match your description. - Name. Required by the Agent Skills specification: 1 to 64 characters, lowercase letters, digits and single hyphens, no leading or trailing hyphen, equal to the folder name.
- Description. Required, at most 1,024 characters. Claude Code joins
descriptionandwhen_to_useand cuts the entry at 1,536 characters (see its skills page), so the check flags text past that point. - Other fields.
compatibilityat most 500 characters,metadataas string values (writeversion: "1.0"in quotes),allowed-toolsas one space-separated string, and a note for fields neither the specification nor Claude Code lists. - Size. Body length against the specification’s suggestions (under 500 lines, under 5,000 tokens). Token counts are estimates at four characters per token.
The checks match what the SKILL.md description checklist explains, and if the file is valid but Claude still ignores it, go through the four-step diagnosis. It reads one file only; it does not run an agent, so it cannot tell you the model will pick the skill.
Checking a whole collection
For one file, this page is enough. If you keep dozens of skills, Skill Ledger does the same checks across all of them, flags pairs whose descriptions compete for the same request, and re-runs your should-trigger prompts when you edit. It is free for 12 skills in your browser.