Skip to main content

Linter for Claude Code SKILL.md files. Validates YAML frontmatter, required fields, description length, and common secret patterns.

Project description

claude-skill-check

CI PyPI Python License: MIT

A small Python linter for Claude Code SKILL.md files. It checks:

  • YAML frontmatter is present and parses cleanly
  • name and description are present
  • name is lowercase kebab-case, 1-64 chars, starts with a letter
  • description length is reasonable (20-1024 chars after trimming)
  • allowed-tools is either a string or a list of strings
  • Common secret patterns (Anthropic/OpenAI keys, AWS access keys, GitHub tokens, PEM blocks) are not leaked in the file
  • Unknown frontmatter fields get a warning
  • Empty body gets a warning

Install

pip install claude-skill-check

Usage

Lint a single file:

claude-skill-check path/to/SKILL.md

Lint every SKILL.md under a directory:

claude-skill-check path/to/skills-dir/

Exit status: 0 on no errors, 1 on any errors, 2 when no skill files were found.

Only show errors

claude-skill-check --quiet path/to/skills-dir/

Use as a library

from claude_skill_check import validate_skill_file

result = validate_skill_file("path/to/SKILL.md")
if not result.ok:
    for issue in result.errors:
        print(issue.code, issue.message)

Issue codes

Code Severity Meaning
E000 error file not found or not a regular file
E001 error file is empty or not valid UTF-8
E002 error missing YAML frontmatter
E003 error frontmatter is not valid YAML
E004 error frontmatter is empty
E005 error frontmatter is not a mapping
E100 error missing required field (name or description)
E101 error name is not a string
E102 error name is not a valid kebab-case identifier
E110 error description is not a string
E112 error description exceeds 1024 chars
E120 error allowed-tools is not a string or list
E121 error allowed-tools list contains a non-string item
E200 error possible secret detected in the skill file
W111 warning description is shorter than 20 chars
W300 warning skill body is empty after frontmatter
W900 warning unknown frontmatter field

Development

pip install -e '.[dev]'
pytest

License

MIT

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

claude_skill_check-0.1.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

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

claude_skill_check-0.1.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for claude_skill_check-0.1.0.tar.gz
Algorithm Hash digest
SHA256 87452792787c8cec86260e64b1657dd1c2a2ca290cc460b6509364d77595ab1f
MD5 2eb942aed6f20a124c5cbb44be61080d
BLAKE2b-256 7d0d022cb92bcc37d765feeab05483cb23e46628d08c2bebbddbbe0e65f119b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for claude_skill_check-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76d6c572d6da3e165a891eb837f0433f9004c7a3fe68a9166dbb2eacb6bd4743
MD5 617172095ac738563ed06127c49a0bcf
BLAKE2b-256 108467dc146d19a2cb92c6f3133b75fb1b1f7b454f065a93f803c95a767279d3

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