Kanon (β) — SKILL.md, CLAUDE.md & AGENTS.md linter
Paste a SKILL.md, CLAUDE.md or AGENTS.md and check it against the official Claude docs: frontmatter keys, YAML errors, name and description rules, imports.
Beta. The rules are written by hand from the Claude docs and have not been run against every file Claude Code accepts. It can miss a problem, and it can flag something that works. A clean result means no known problem, not proof that the file loads.
Extra keys like effort and context are allowed.
Results appear here as you type.
What it checks
SKILL.md
- The frontmatter: that it starts on line 1, that the YAML parses (an unquoted colon in a description is the usual culprit — Claude Code then loads the skill with no fields), and that every key is one the target reads.
name: lowercase letters, digits and hyphens, at most 64 characters, no reserved words.description: present, at most 1,024 characters, no XML tags, written in the third person, and saying when to use the skill. In Claude Code, description pluswhen_to_useis cut at 1,536 characters.- Claude Code keys:
effort,context,shelland the boolean keys take only the documented values;agentandbackgroundneedcontext: fork. - The body: under 500 lines, forward slashes in paths, references kept shallow, no wording that goes stale on a date.
CLAUDE.md and AGENTS.md
- Length: Claude Code suggests keeping CLAUDE.md under about 200 lines.
@pathimports, listed with their lines, and imports that reach outside the project.- HTML comments, which Claude Code strips before the model sees the file.
- Whether Claude Code reads AGENTS.md at all: it only does when no CLAUDE.md exists, so a CLAUDE.md that mentions AGENTS.md in words instead of importing it with
@AGENTS.mdgets a warning.
API & claude.ai vs Claude Code
The Claude API and claude.ai accept six frontmatter keys — name, description, license, compatibility, metadata and allowed-tools — and reject an upload with any other key. Claude Code reads more keys and silently ignores the ones it does not know. Pick “API & claude.ai” if the skill has to work everywhere.
Every finding links to the document the rule comes from. If the docs change and a rule here is out of date, the linked page is the one to trust.
Runs entirely in your browser. What you paste is never sent anywhere — the page is not allowed to connect to any server but tools.meltlight.art, and it sends nothing there either.