Skip to main content

Static analysis linter for Claude Code plugins, skills, and agents

Project description

skilllint

PyPI version Python versions License CI

Static analysis linter for AI agent plugins, skills, and agents — for Claude Code, Cursor, Codex, and any agentskills.io-compatible platform.


What it does

skilllint validates the structure and content of AI agent files: plugins, skills, agents, and commands. It catches broken references, missing frontmatter, oversized skills, invalid hook configurations, and more — before they cause silent failures at runtime.

$ skilllint plugins/my-plugin

plugins/my-plugin/skills/my-skill/SKILL.md
  SK006  Token count 14823 exceeds recommended limit of 8192

plugins/my-plugin/agents/my-agent.md
  NR001  Namespace reference 'other-plugin:some-skill' — plugin directory not found

2 errors in 2 files

Installation

pip install skilllint

Or with uv:

uv add skilllint          # add to a project
uv tool install skilllint # install as a global tool

Requires Python 3.11–3.14.


Quick start

# Validate a plugin directory
skilllint plugins/my-plugin

# Validate a single skill file
skilllint plugins/my-plugin/skills/my-skill/SKILL.md

# Validate everything and show a summary
skilllint --show-summary plugins/

# Auto-fix issues where possible
skilllint --fix plugins/my-plugin

# Count tokens in any markdown file
skilllint --tokens-only .claude/CLAUDE.md

Exit codes: 0 = all checks passed · 1 = validation errors · 2 = usage error


Pre-commit hook

Add to .pre-commit-config.yaml:

repos:
  - repo: https://github.com/bitflight-devops/agentskills-linter
    rev: v0.1.0
    hooks:
      - id: skilllint

Platform support

skilllint ships with adapters for three platforms and supports third-party adapters via Python entry points:

Platform Adapter ID Bundled
Claude Code claude-code
Cursor cursor
OpenAI Codex codex
OpenCode, Gemini, and others via entry points

Restrict validation to one platform:

skilllint --platform claude-code plugins/my-plugin

What gets validated

Code Category Description
FM001–FM010 Frontmatter Required fields, valid values, schema compliance
SK001–SK009 Skill Description quality, token limits, complexity, internal links
PL001–PL005 Plugin Structure, registration, subprocess safety
HK001–HK005 Hook Script existence, configuration validity
NR001–NR002 Namespace refs Cross-plugin skill/agent/command references
PR001–PR005 Registration Plugin manifest correctness

CLI reference

Usage: skilllint [OPTIONS] [PATHS]...

Options:
  --check            Validate only, don't auto-fix
  --fix              Auto-fix issues where possible
  --verbose, -v      Show detailed output including info messages
  --no-color         Disable colour output for CI
  --tokens-only      Output only the integer token count
  --show-progress    Show per-file PASSED/FAILED status
  --show-summary     Show validation summary panel at the end
  --filter TEXT      Glob pattern to match files within a directory
  --filter-type TEXT Shortcut: skills | agents | commands
  --platform TEXT    Restrict to a specific platform adapter
  --help             Show this message and exit

All four command names are aliases for the same tool:

skilllint   # primary
agentlint   # alias
pluginlint  # alias
skillint    # alias

Third-party adapters

Register a custom platform adapter via Python entry points in your pyproject.toml:

[project.entry-points."skilllint.adapters"]
my-platform = "my_package.adapter:MyPlatformAdapter"

Your adapter must implement the AdapterProtocol interface from skilllint.adapters.protocol.


Links


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

skilllint-0.4.0.tar.gz (157.3 kB view details)

Uploaded Source

Built Distribution

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

skilllint-0.4.0-py3-none-any.whl (88.4 kB view details)

Uploaded Python 3

File details

Details for the file skilllint-0.4.0.tar.gz.

File metadata

  • Download URL: skilllint-0.4.0.tar.gz
  • Upload date:
  • Size: 157.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for skilllint-0.4.0.tar.gz
Algorithm Hash digest
SHA256 6426f74b019b86363190ea7e379ede50240176a5d6c5f8823c7634e44f709707
MD5 35e414fb10f92b3857ace4089ef59362
BLAKE2b-256 5e2c5c555a472cc38e7d02ece5643ee1846e9706052ffda2e22ebd4bc14266d4

See more details on using hashes here.

File details

Details for the file skilllint-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: skilllint-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 88.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for skilllint-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13d4cf9394d5f450d6a373bb8e4e197a141177adb47a9c2f468d6b42da432d4a
MD5 6fbf03b5c7c966248dc9b4169ebab8be
BLAKE2b-256 9a51efbd36d9467638b70fdb01fc285b74a4587fa47128a0ac232ae345b4ac09

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