agentsclimarketplace

Skill validation

Skill blakebauman/skillist-validator/skills/skill-validation

Validate agent skills against the Agent Skills specification (agentskills.io) — SKILL.md frontmatter, name and description rules, character limits, directory layout, bundled file references, and progressive disclosure. Use when the user asks to validate, lint, check, or verify a skill or a directory of skills; when they ask whether a SKILL.md is spec-compliant or why a skill fails to load; before publishing or packaging skills; or when they are debugging a skill that an agent will not pick up. Applies to skills for any client — Claude Code, Cursor, Codex CLI, Gemini CLI — not just Claude.From its SKILL.md

Install
npx -y skills add blakebauman/skillist-validator --skill skill-validation

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 16 days oldThe repository was created 16 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Check skills against the Agent Skills specification and report what to fix.

Run the validator first, then interpret its findings. Do not review a SKILL.md by eye when the script can answer the mechanical questions — reading by eye misses character limits, silent YAML coercions, and broken bundled paths, which are the failures that actually break skills at load time.

1. Locate the skills

A skill is any directory containing a SKILL.md. Common locations:

LocationWhat lives there
.claude/skills/<name>/Project-local skills
~/.claude/skills/<name>/Personal skills
skills/<name>/Skills shipped inside a plugin or repo
<anywhere>/<name>/SKILL.mdA single skill under development

If the user named a path, use it. Otherwise check the project's skills/ and .claude/skills/ directories. Ask which to check only when several exist and the request is ambiguous.

2. Run the validator

python3 scripts/validate_skill.py <path>

It accepts one skill directory or a tree containing many, and discovers every skill beneath the path.

FlagUse it when
--format jsonYou need to filter or count findings, or feed them into a fix loop
--strictThe user wants warnings to fail too (CI, pre-publish gates)
--errors-onlyThe user only wants hard specification violations
--list-rulesThe user asks what is checked

Exit codes: 0 clean, 1 violations found, 2 bad path or no skill there. Exit 1 is the normal result for a skill with problems — report the findings, do not treat it as a tool failure.

3. Interpret the findings

Every finding carries a rule ID, a level, a location and a fix hint. The three levels mean different things and must be reported differently:

  • ERROR — a specification violation. The skill is non-conformant and may fail to load. Always report these and offer to fix them.
  • WARN — a specification recommendation or an authoring guideline from agentskills.io. Real, but a judgment call. Report with the reasoning, and say when ignoring one is defensible.
  • NOTE — portability information, not a defect. Mention only if relevant to where the skill will run.

The full rule catalog, with the specification clause behind each rule and what a good fix looks like, is in references/rule-catalog.md. Read it when a finding needs explaining, when the user asks why a rule exists, or when you are deciding whether a warning is worth acting on.

The specification's own limits and field definitions are summarized in references/spec-rules.md. Read it when you need the authoritative constraint rather than the validator's phrasing — for example when a user disputes a finding.

4. Report

Lead with the verdict, then the findings grouped by skill, errors first. Use the format in references/report-format.md when the user asks for a written report, a review of many skills at once, or output to paste elsewhere. For a quick single-skill check, a short summary plus the findings is enough.

State counts honestly. "3 errors, 5 warnings across 4 skills" is the report; "mostly fine" is not.

5. Fix

Only after reporting. Fix errors first, then warnings the user accepts.

  • Never rename a skill directory or name field without asking. Callers, documentation, and /skill-name invocations depend on it. AS106 has two valid fixes — rename the directory or the field — and only the user knows which is correct.
  • Never invent content to satisfy a warning. A thin description (AS203) is fixed by learning what the skill actually does, not by padding it. If you cannot tell, ask.
  • Re-run the validator after fixing and report the new counts. A fix that introduces a different violation is not a fix.

For description findings (AS203, AS204, AS205, AS206), rewriting well enough to change triggering behavior is its own task — hand off to the skill-description-tuning skill rather than guessing at wording.

Gotchas

These are the failures that recur, and the reasons the validator exists:

  • metadata: version: 1.0 is a number, not a string. YAML parses unquoted 1.0 as a float, and the specification requires metadata values to be strings. Quote it: version: "1.0".
  • allowed-tools is space-separated, not a YAML list and not comma-separated. allowed-tools: Read Bash(git:*) is correct. A list silently changes the value's type.
  • name must match the parent directory exactly. This is the single most common hard violation, and it usually appears after a directory rename.
  • Character limits are on the field, not the line. A folded > description is measured after folding — 1024 characters of prose, not 1024 per line.
  • Frontmatter must be the very first thing in the file. A leading blank line, a BOM, or a comment above --- means no frontmatter is found at all, and the skill will not load.
  • A missing bundled file is an error, not a warning. A references/<file>.md that does not exist fails at runtime, in the middle of a task, after the agent has already committed to the approach.
  • Write illustrative paths as placeholders. A literal-looking bundled path in prose reads as a real reference to the validator — and to an agent. Use angle brackets (references/<name>.md) for examples; the validator skips them.
  • Paths into the user's project are not bundled files. The validator deliberately does not check .workspace/INDEX.md or ~/Downloads/data.csv for existence. Do not "fix" those by creating files.

Validating this plugin's own skills

python3 scripts/validate_skill.py --strict ../

The validator is covered by fixtures with known defects. If you change it, run python3 tests/run_tests.py from the repository root before reporting success.

What ships with it: 4 files

57.4 KB alongside SKILL.md, 1 of them executable

references/

scripts/

Gives 0 of the 12 instructions most quality gates skills give in ~1.4k tokens

Counted across 1,195 of the 2,094 authors here whose files we hold, read 2026-08-07

  • Read the output and check the exit codein 54 of 1195, across 14 files
  • Verify requirements using a line-by-line checklistin 53 of 1195, across 12 files
  • Identify the verification command proving the claimin 51 of 1195, across 12 files
  • Run the full verification commandin 50 of 1195, across 11 files
  • Verify output confirms the claimin 49 of 1195, across 12 files
  • Check version control diff after agent delegationin 46 of 1195, across 6 files
  • State claim with evidencein 44 of 1195, across 4 files
  • Run the test suitein 33 of 1195, across 26 files
  • Keep state in memory by defaultin 27 of 1195, across 6 files
  • Make prototype runnable with one commandin 26 of 1195, across 5 files
  • Produce a verification reportin 25 of 1195, across 14 files
  • Detect the package manager from lockfilesin 24 of 1195, across 5 files

Said here and by no other author read

  • run the validator before manual review
  • ask which skill to check when ambiguous
  • treat exit code 1 as found violations
  • read the rule catalog to explain findings
  • read specification summaries for authoritative constraints
  • group findings by skill with errors first

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,834. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.