Skill Linter

A client-side linter for agent skill files (SKILL.md). Paste your skill and it scores the structure a good skill needs — a clear name and description, an explicit “when to use” trigger, concrete examples, imperative step-by-step instructions, and a scoped length — against a 12-point rubric, with per-criterion feedback on what is missing. Everything runs in your browser; nothing is uploaded. Built to catch the quality gaps that separate a curated skill from the average public one.

12/ 12
Well-formed skillpublic skills average ≈ 6.2 / 12
Name2/2
Clear name: “commit-message”.
Description & trigger2/2
Has a description and a when-to-use trigger.
Examples2/2
Includes a fenced code example.
Imperative steps2/2
4 step-style lines, mostly imperative.
Scope & length2/2
108 words — a healthy, scoped length.
Structure2/2
4 headings organize the skill.
Paste your SKILL.md

A structural lint, not a correctness check — a skill can score 12 and still teach the wrong thing. Everything runs in your browser; nothing is uploaded.

A skill file is a small document you load into an agent’s context to teach it a repeatable procedure — and like any instruction handed to a capable-but-literal worker, its quality is mostly structural. The linter scores six properties a good SKILL.md needs. It wants a clear name and a description that states the trigger — the “use this when …” that makes the skill discoverable — because a skill the agent cannot tell when to reach for is dead weight. It wants at least one concrete example, imperative step-by-step instructions rather than prose, and a scoped length that fits in context without crowding out the task.

Scoring is deliberately deterministic. The tool runs heuristics over the text — frontmatter presence, a when-to-use section, example or code fences, bulleted or numbered steps, imperative verbs, a word count in a healthy band — and awards up to two points each for a 0–12 total, then tells you per criterion what it did and did not find. It is a structural lint, not a correctness check: a skill can score a perfect 12 and still encode the wrong procedure, so the score means “well-formed,” not “right.”

Why bother? Because a skill loaded into a live loop changes what the agent does, and a poorly-formed one is a net negative — it burns tokens, fires on the wrong tasks, or issues instructions the model dutifully follows into a mistake. Public skill collections are growing fast and their average quality is unremarkable, while the curated, tightly-structured ones lift agent success rates by a real margin. Running a structural lint first — in your browser, with nothing uploaded — is the cheapest way to clear the low bar before the expensive part of testing a skill in production.

How it works

  • Scores a pasted SKILL.md against a 12-point structural rubric.
  • Checks name, description, when-to-use, examples, steps, scope.
  • Per-criterion feedback on exactly what is missing.
  • Pure in-browser — nothing is uploaded or stored.

Frequently asked questions

What makes a skill “good”?

The same things that make any instruction good for an agent: it is discoverable and it is unambiguous. Discoverable means a crisp name and a description that says exactly when to reach for it — the trigger the agent matches against. Unambiguous means imperative, step-by-step instructions and at least one concrete example, scoped tightly enough that the whole thing fits comfortably in context. Vague, sprawling, example-free skills get ignored or misapplied; the rubric here scores each of those properties.

How is the score computed?

The linter runs deterministic heuristics over the text — checking for name/description frontmatter, a when-to-use section, example or code blocks, bulleted or numbered steps, imperative phrasing, and a length in a healthy band — and awards up to two points per criterion for a 0–12 total. It is a structural lint, not a judgment of whether your instructions are correct; a skill can score 12 and still teach the wrong thing. Read it as a checklist that catches the common structural gaps.

Is my skill uploaded anywhere?

No. The linter is pure client-side JavaScript — the text you paste never leaves your browser, there is no network request, and nothing is stored. You can disconnect from the network and it still works. That is deliberate: skill files often contain internal process detail you would not want to send to a server just to lint.

Why does skill quality matter so much?

Because a skill is loaded into an agent’s context to change its behavior, and a bad one is worse than none — it wastes tokens, misfires on the wrong tasks, or gives instructions the agent then follows off a cliff. As public skill libraries explode in number, average quality is mediocre, and the curated, well-structured ones measurably lift an agent’s success rate. Linting for structure is the cheapest first pass before you ever wire a skill into a live loop.