Validate agent skills against the agentskills.io specification
Project description
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, placeholder text, leaked secrets (AWS keys, GitHub tokens, private keys, .env files), binary files, and oversized assets. It also walks every local markdown link and verifies the target exists, including fragment anchors.
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.jsonandmarketplace.jsonstructure and cross-checks fields for consistency - Cursor validates
.cursor/configuration - Gemini CLI checks
gemini-extension.jsonfields and metadata - GitHub Copilot checks
copilot.yamland.copilot/directory layout - OpenAI Codex validates
openai.yamlsidecars, interface, dependencies, and permissions - Roo Code validates
.roo/and.roomodes, warns on deprecated.roorulesand.clinerules - Swival checks
.agents/directory structure - Windsurf validates
.windsurf/config, warns on deprecated.windsurfrules
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skillscheck-0.9.0.tar.gz.
File metadata
- Download URL: skillscheck-0.9.0.tar.gz
- Upload date:
- Size: 68.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c70080e9df9aa56ede7f3cc6cfdc3b3c5f77498b6959ebdbc4ef4bb84dd864e
|
|
| MD5 |
83c48c62a2972f42f52b9e7dcbb1d581
|
|
| BLAKE2b-256 |
e15bb19075a467f2d3e4172fffd5da5f0de1560867f703fe4fcf73c849fc82c0
|
File details
Details for the file skillscheck-0.9.0-py3-none-any.whl.
File metadata
- Download URL: skillscheck-0.9.0-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1ac8bf1440f50bea94dab884810ca054922e16cbc81eb987af3a41ced14c304
|
|
| MD5 |
bf68bb268dcb1f0c221bc9fef69f4dd4
|
|
| BLAKE2b-256 |
ae66a14f8e1c03b9d7b51d3ad39c4253c9c3ec064576d836fb823eb072a4efd3
|