Skip to main content
skillcheck

PyPI version Python CI status License

Static analyzer for SKILL.md files. Validates frontmatter, body sizing, file references, and cross-agent compatibility against the agentskills.io specification. No network calls. No LLM API calls. No file mutations.

842 tests cover all rule modules.

Install

pip install skillcheck

Requires Python 3.10 or later. For more accurate token estimates, install the optional extra:

pip install "skillcheck[tiktoken]"

Usage

skillcheck SKILL.md            # validate one file
skillcheck skills/             # scan a directory for files named SKILL.md
skillcheck SKILL.md --format json
skillcheck --help              # full flag reference

Sample output:

✔ PASS  skills/claude-api/SKILL.md
  line 2   ⚠ warning  frontmatter.name.reserved-word  Name contains the term 'claude'.
  line 4   · info     frontmatter.field.ecosystem      Field 'license' is ecosystem-common.

Checked 18 files: 18 passed, 0 failed, 29 warnings

GitHub Action

- uses: moonrunnerkc/skillcheck@v1
  with:
    path: skills/

Diagnostics appear as inline PR annotations. Inputs documented in action.yml.

pre-commit

repos:
  - repo: https://github.com/moonrunnerkc/skillcheck
    rev: v1.5.0
    hooks:
      - id: skillcheck

The hook passes --no-color by default so the captured pre-commit log stays clean. Override or extend with args: in your .pre-commit-config.yaml (for example, args: ["--no-color", "--strict"]).

What it checks

  • Frontmatter: required fields, types, name and description length limits, reserved-word collisions.
  • Description quality: 0-100 score across action verbs, trigger phrases, keywords, specificity, and length.
  • Sizing: line and token thresholds against the agentskills.io disclosure budgets.
  • References: broken links, escapes outside the skill directory, depth limits.
  • Cross-agent compatibility: Claude Code, VS Code, Codex, Cursor.
  • Capability graph (--analyze-graph): orphaned capabilities, unused inputs, unproduced outputs, unreferenced tools.
  • History ledger (--history): per-skill append-only JSON file tracking validation results across runs.

Agent modes

When the calling agent can run a prompt, skillcheck can ingest its response and merge findings into the report:

skillcheck SKILL.md --emit-critique-prompt > prompt.txt
# hand prompt.txt to the agent, then:
skillcheck SKILL.md --ingest-critique response.json

The same flow exists for capability graph extraction (--emit-graph-prompt / --ingest-graph). Prompt variants are tuned per agent via --critique-agent and --graph-agent (claude, codex, cursor).

An ingested response describes exactly one skill, so --ingest-critique and --ingest-graph require a single resolved SKILL.md. Pointing them at a directory that expands to more than one skill exits 2. Run the ingest once per skill.

Exit codes

Code Meaning
0 No errors. Warnings alone exit 0 unless --strict is set.
1 One or more errors. Also: warnings with --strict (the umbrella --strict-vscode / --strict-cursor only escalate their own diagnostics; the umbrella additionally escalates any warning-only run). Also: history.skill.regressed with --fail-on-regression. Also: any ingest parse failure.
2 Input or argument error (missing path, conflicting flags, malformed input, an ingest flag pointed at more than one skill).
3 Symbolic checks passed but an ingested critique reported semantic errors.

When both 1 and 3 would apply, 1 wins so CI consumers see the higher-severity signal.

Configuration

Defaults live in a skillcheck.toml discovered upward from the validated path. Override per invocation with --config PATH. Organization-specific frontmatter keys belong under [frontmatter] extension_fields. Override the name reserved-word list with [frontmatter] reserved_words = ["acme", "internal"] (an empty array reverts to the defaults).

--ignore PREFIX suppresses any diagnostic whose rule ID starts with PREFIX. The prefix is matched against the full dotted rule ID, so all three levels work: a top-level category (--ignore sizing), a category-and-field pair (--ignore frontmatter.name), or a fully-qualified rule (--ignore compat.unverified). The flag is repeatable.

Documentation

Releases

Pushing a version tag (v1.2.3) runs .github/workflows/release.yml, which builds the wheel and sdist, issues a SLSA build provenance attestation via actions/attest-build-provenance, and publishes to PyPI through trusted publishing. To verify a release artifact before installing:

gh attestation verify dist/skillcheck-*.whl --owner moonrunnerkc

This confirms the wheel was built by moonrunnerkc/skillcheck CI from the source at the tagged commit. Untagged builds (PR and main-branch CI) are not attested or published.

License

MIT. See LICENSE.

Metadata

Release files for skillcheck 1.5.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 skillcheck 1.5.0
File Size Uploaded Provenance Actions
skillcheck-1.5.0.tar.gz 205.3 kB With provenance Details for skillcheck-1.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for skillcheck 1.5.0
File Interpreter ABI Platform Actions
skillcheck-1.5.0-py3-none-any.whl Python 3 none any Details for skillcheck-1.5.0-py3-none-any.whl

Total release size: 307.9 kB

Release files / skillcheck-1.5.0.tar.gz

Download URL skillcheck-1.5.0.tar.gz
Size 205.3 kB
Tags Source
SHA-256 checksum
How to use checksums
d50a536f86ff0dc7c02f0dbd32a13160a6c30e4eca7f3f09973065b690158d7e
BLAKE2b-256 checksum
How to use checksums
308f4538a40fa98624293a99103768f5bffa6ff3710b9c21484c8495bb13194a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release files / skillcheck-1.5.0-py3-none-any.whl

Download URL skillcheck-1.5.0-py3-none-any.whl
Size 102.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
260b58d5320d40cf73fb68b855aad31d1ce3d15b2dd294e21cf3a5a5342aa5ba
BLAKE2b-256 checksum
How to use checksums
e1fdd4e2cce5887f548b8190584d4475781a7e06e01c14e6c1df705cb08a36b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Security for skillcheck 1.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for skillcheck-1.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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