Validate a SKILL.md, Cursor rule or AGENTS.md file

Paste an agent skill, a Cursor .mdc rule or an AGENTS.md. Get errors and warnings with line numbers, checked against the published rules.

How it works

  1. Paste the whole file, including the --- lines at the top
  2. Leave the type on Detect, or pick SKILL.md, Cursor rule or AGENTS.md
  3. For a skill, choose claude.ai and API or Claude Code, then fix each line in the table

What a valid SKILL.md needs

A valid SKILL.md starts with --- on line 1, has a name of at most 64 lowercase letters, numbers and hyphens, and has a non-empty description of at most 1,024 characters that says what the skill does and when to use it. Anthropic's skills documentation also bars XML tags in both fields and bars the words anthropic and claude in the name. The Agent Skills specification adds that a name must not start or end with a hyphen, must not contain two hyphens in a row, and must match its folder name. This tool checks all of that except the folder match, because only the pasted text is available and not the folder name, and it checks the YAML itself. The sample opens with PDF Helper as a name, which fails the character rule (the suggested name is pdf-helper), and a description with a colon and a space inside it, which YAML reads as a nested key and fails on line 3.

Claude Code or the API and claude.ai

The two targets differ. For uploads to claude.ai and the Skills API, the tool requires name and description and treats any other key than license, compatibility, metadata and allowed-tools as an error, because Claude Code's documentation says other keys are a hard error there. For Claude Code, name is optional (it defaults to the folder name), the extra fields such as when_to_use, model, effort, context and paths are accepted, and an unknown field is only a warning because Claude Code ignores it. Claude Code cuts the description and when_to_use together at 1,536 characters in its skill list, and the tool warns past that. The body should stay under 500 lines; longer files should move detail into separate files.

Description quality, YAML traps and secrets

Warnings cover things that parse but work badly. A description in the first or second person (I can help, you can use this) is flagged, because Anthropic's authoring guidance says to write it in the third person. A description with no phrase like use when is flagged, and so is one under 30 characters. In the body, a path such as scripts\extract.py is flagged because forward slashes work on every system, and text tied to a date is flagged because it goes stale. YAML traps are errors with line numbers: a value that contains a colon and a space, a value that starts with *, &, ! or a backtick, a tab used to indent, a repeated key, an unclosed quote, a double-quoted value with an escape YAML does not define such as \q, and a closing --- that is missing. Text after a space and # is a comment and is cut from the value, and the Parsed frontmatter box shows exactly what was read. A shared detector also warns about text that looks like an API key.

Cursor rules and AGENTS.md

A Cursor rule uses the three frontmatter fields description, globs and alwaysApply. The tool reports the rule type the fields imply: Always Apply when alwaysApply is true, Apply to Specific Files when globs is set, Apply Intelligently when only a description is set, and Apply Manually otherwise. An unquoted globs value that starts with * is a warning, since a strict YAML reader rejects it. Cursor advises keeping rules under 500 lines. AGENTS.md has no required fields. The tool only notes missing headings for the sections the agents.md site suggests: overview, build and test commands, code style, testing and security. It does not run the instructions or check that the commands in them work.

Frequently asked questions

What are the name and description limits for a SKILL.md?

The name is at most 64 characters, lowercase letters, numbers and hyphens only. The description is non-empty and at most 1,024 characters. Neither can contain XML tags, and the name cannot contain the words anthropic or claude. These are Anthropic's documented limits for skills.

Why does my skill fail with a YAML error on the description line?

The usual cause is a colon followed by a space inside an unquoted value, as in description: Helps with PDFs: forms and merging. YAML reads the second colon as a new key. Wrap the whole value in double quotes, or use description: > and put the text on indented lines below.

Can I use when_to_use, model or paths in a skill I upload to claude.ai?

No. Claude Code's documentation says uploads to claude.ai, the Skills API and package_skill.py allow only name, description, license, compatibility, metadata and allowed-tools, and any other key is a hard error. Those fields work in Claude Code. Choose that target to see which warnings apply there.

How long can a SKILL.md be?

Anthropic's guidance is to keep the body under 500 lines and move detail into other files that SKILL.md links to, one level deep. The tool warns past 500 lines, counted after the closing --- line.

How do I know if a Cursor rule applies automatically?

Look at the Rule type tile. alwaysApply: true is Always Apply, a globs pattern is Apply to Specific Files, a description alone is Apply Intelligently, and none of the three is Apply Manually, which runs only when you mention the rule.

Is my file uploaded?

No. It is processed in your browser, in this tab, and no server receives it. Your file type and target choices are saved in this browser, the file is not.