Skip to main content

Quality grader for Claude Code SKILL.md files. ESLint for AI agent skills.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skill_grade-0.1.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skill_grade-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file skill_grade-0.1.0.tar.gz.

File metadata

  • Download URL: skill_grade-0.1.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for skill_grade-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a864a274650c6b9f198d2ddc79080f404b07f834961aec26300b063ed0995b01
MD5 8716e470210be5433dfd0ee3ea483244
BLAKE2b-256 fa4b3236d6c786d570a0e494126791365865225832abbc6831bf4ab12d0fe480

See more details on using hashes here.

File details

Details for the file skill_grade-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: skill_grade-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for skill_grade-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d56ef944acb60f4e79266503265baaf562857dff88b081322b1dff92b6edf283
MD5 98bc3c68083feb733d53c97d5fe0f8c7
BLAKE2b-256 0a9286908794272b32dd70586280ff86101a05d95127b9005322feafd2335ff7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page