Skip to main content

skill-grade

73% of community Claude Code skills score below 60/100.

Nobody graded them before shipping. Now you can.

skill-grade is a static quality checker for Claude Code SKILL.md files — the same role ESLint plays for JavaScript, but for AI agent skills. It catches missing trigger phrases, scope creep, missing examples, and token bloat before they degrade agent behavior in production.

pip install skill-grade

Quick start

# Grade a single skill
skill-grade path/to/SKILL.md

# Grade all skills in a directory (recursive)
skill-grade ./skills/

# Grade via stdin
cat SKILL.md | skill-grade -

# JSON output for CI pipelines
skill-grade SKILL.md --json

# Fail CI below a threshold
skill-grade SKILL.md --threshold A

Example output

skill-grade v0.1.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Skill: my-skill
Score: 65/100  Grade: C
Tokens: ~847 (description: 312, body: 535)

  W  S006  No trigger phrases detected. Add "Use when...", "Triggers include...",
           or "Use for..." so Claude knows when to invoke this skill.
  W  S013  No code examples (no markdown code blocks). Agents learn better from
           concrete examples than prose descriptions.
  W  S014  No structure detected (no ## headers or numbered lists). Structured
           instructions are easier for agents to follow.

Passed: S001 ✓  S002 ✓  S003 ✓  S004 ✓  S010 ✓  S011 ✓

Tip: A+ skills include explicit trigger phrases and concrete examples.

For multiple files:

skill-grade v0.1.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  browser-automation  A+   97/100  ✓
  code-review         B    78/100  1 warning
  deployment          F    35/100  3 errors, 2 warnings

2/3 skills pass (≥70/100)

Checks

Frontmatter

Code Severity Description Penalty
S001 error No YAML frontmatter found (--- delimiters missing) -70
S002 error Missing name field -30
S003 error Missing description field -40
S004 warning Description too short (<50 chars) — unreliable trigger matching -20
S005 warning Description too long (>500 chars) — loads into context on every match -10
S006 warning No trigger phrases ("Use when", "Triggers include", "Use for", "when the user") -20
S007 warning Vague trigger language ("help with", "assist with", "various", "manage", "handle") -15
S008 info No allowed-tools field -5
S009 warning Skill name contains spaces (use hyphens or underscores) -10

Body

Code Severity Description Penalty
S010 error No body content — stub skill -30
S011 warning Body too short (<100 chars) -20
S012 warning Body too long (>8000 chars) — increases context usage -10
S013 warning No code examples (no markdown code blocks) -15
S014 warning No structure (no ## headers or numbered lists) -10
S015 warning Scope creep — 4+ "and" connectors in description -15

Grades

Grade Score
A+ ≥ 90
A ≥ 80
B ≥ 70
C ≥ 60
D ≥ 50
F < 50

GitHub Action

- uses: 0-co/skill-grade@main
  with:
    path: '.'
    threshold: 'B'

Or install directly:

- run: pip install skill-grade
- run: skill-grade ./skills/ --threshold B

Why this exists

Claude Code skills are loaded into context when triggered. A skill with a vague description triggers too broadly (wasted tokens) or not at all (the skill gets ignored). A skill with no examples produces worse agent behavior than one with three concrete command invocations.

These are fixable problems. skill-grade makes them visible before they ship.


Zero dependencies

Pure Python stdlib. No PyYAML, no third-party packages. Works anywhere Python 3.9+ is installed.


pip install skill-grade

Metadata

Release files for skill-grade 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skill-grade 0.1.0
File Size Uploaded
skill_grade-0.1.0.tar.gz 9.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for skill-grade 0.1.0
File Interpreter ABI Platform
skill_grade-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.5 kB

Release files / skill_grade-0.1.0.tar.gz

Download URL skill_grade-0.1.0.tar.gz
Size 9.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a864a274650c6b9f198d2ddc79080f404b07f834961aec26300b063ed0995b01
BLAKE2b-256 checksum
How to use checksums
fa4b3236d6c786d570a0e494126791365865225832abbc6831bf4ab12d0fe480
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / skill_grade-0.1.0-py3-none-any.whl

Download URL skill_grade-0.1.0-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d56ef944acb60f4e79266503265baaf562857dff88b081322b1dff92b6edf283
BLAKE2b-256 checksum
How to use checksums
0a9286908794272b32dd70586280ff86101a05d95127b9005322feafd2335ff7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page