Skip to main content

skillscheck

A linter for agent skill definitions. It validates skill directories against the agentskills.io specification and tests compatibility with every major AI coding agent: Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Roo Code, Swival, and Windsurf.

If you publish skills for AI agents, skillscheck catches problems before your users do. It checks frontmatter fields, naming conventions, directory structure, description quality, secret leaks, broken links, token budgets, and the agent-specific config files that each platform expects. When it finds something wrong, it tells you exactly what and where, with a check ID you can look up.

Also available as a VSCode extension ("Agent Skill Lint") for real-time feedback while editing.

Installation

uvx skillscheck /path/to/skills-repo

No configuration files needed. Point it at a directory containing skills and it figures out the rest.

What it checks

skillscheck organizes its diagnostics into four categories.

Spec compliance validates the core structure mandated by the agentskills.io specification: frontmatter presence and syntax, required fields like name and description, naming rules (lowercase, no leading or trailing hyphens, no consecutive hyphens), directory-name consistency, body length and token counts, allowed-tools validation against known tool names, and cross-skill duplicate detection.

Quality looks at things the spec does not cover but that matter in practice. It warns when descriptions are too short or lack "use when" hints that help agents trigger the skill correctly. It flags user-centric phrasing, keyword-stuffed descriptions, leaked secrets (AWS keys, GitHub tokens, private keys, .env files), binary files, and oversized assets. It detects extraneous files (README, LICENSE, Makefile) at the skill root and orphaned files in scripts/references/assets that are not referenced from SKILL.md. It walks every local markdown link and verifies the target exists, including fragment anchors, and catches unclosed code fences. It also points out files that bold the same field labels in entry after entry, where the emphasis no longer shows which instructions matter.

Progressive disclosure checks that reference files stay within reasonable token budgets and that the reference tree does not nest too deeply, following the specification's guidance on keeping skills scannable.

Agent compatibility is where skillscheck goes furthest. Each of the eight supported agents has its own adapter that understands the platform's conventions:

  • Claude Code validates plugin.json and marketplace.json structure and cross-checks fields for consistency
  • Cursor validates .cursor/skills/ frontmatter fields and warns on deprecated .cursorrules
  • Gemini CLI checks gemini-extension.json fields, metadata, and context file existence
  • GitHub Copilot validates frontmatter fields in .github/skills/ skill definitions
  • OpenAI Codex validates agents/openai.yaml sidecars, interface, dependencies, and permissions
  • Roo Code validates .roo/skills/ frontmatter fields, warns on deprecated .roorules and .clinerules
  • Swival checks description and body length limits
  • Windsurf warns on deprecated .windsurfrules

Cross-agent checks detect name, version, and description mismatches between agent config files (e.g. plugin.json vs gemini-extension.json).

skillscheck auto-detects which agents are relevant based on the repository structure, or you can specify them explicitly.

Options

--agents claude,codex,copilot,cursor,gemini,roo,swival,windsurf

Run checks for specific agents. By default, skillscheck auto-detects which agents apply based on the files it finds. Pass all to check every agent regardless.

--check agents,disclosure,quality,spec

Run only specific check categories.

--fix

Auto-fix issues that have safe mechanical fixes: lowercasing names, collapsing consecutive hyphens, renaming directories to match the name field.

--format json

Produce JSON output for CI pipelines and editor integrations.

--strict

Treat warnings as errors and exit with code 1.

Exit codes

Condition Exit code
No errors 0
Errors found 1
--strict with warnings 1

CI integration

skillscheck works well in CI pipelines. Use --format json to get structured output and --strict to fail the build on warnings. A typical GitHub Actions step:

- name: Lint skills
  run: uvx skillscheck ./skills --strict

Release files for skillscheck 0.9.7

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

Source distribution (sdist)

Source distribution for skillscheck 0.9.7
File Size Uploaded
skillscheck-0.9.7.tar.gz 107.8 kB Details

Built distribution (wheel)

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

Total release size: 146.3 kB

Release files / skillscheck-0.9.7.tar.gz

Download URL skillscheck-0.9.7.tar.gz
Size 107.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b4dcbc6dbeae4d4ac3f8296414ee78332521e40cf520760332cc865ffeb31422
BLAKE2b-256 checksum
How to use checksums
c26dc82a6b81d5db47e18e0dc2cd06a4054e5b93766f3b9135ea9825b9e7d620
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / skillscheck-0.9.7-py3-none-any.whl

Download URL skillscheck-0.9.7-py3-none-any.whl
Size 38.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b39fbc7516266a3b76708f51e0b2a3265bb8fa5abd7c9c840d8ef36990519c83
BLAKE2b-256 checksum
How to use checksums
9b907b80ccf8ffc51ab9316459f131f7aed654a6bb7d687122182dbc6b85c8a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.9.7 This release

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.1.2

2 release files

0.1.0

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