Skip to main content

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, 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.

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

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

skillscheck-0.9.2.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

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

skillscheck-0.9.2-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file skillscheck-0.9.2.tar.gz.

File metadata

  • Download URL: skillscheck-0.9.2.tar.gz
  • Upload date:
  • Size: 72.6 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

Hashes for skillscheck-0.9.2.tar.gz
Algorithm Hash digest
SHA256 d040f954635ea07f08d48c0e52ff2b425eab54cbf96ddf7b8fe0e0782fad52f5
MD5 f45826719cfdc889dae6a6748f40dd6f
BLAKE2b-256 27a1ab7f0505ac1af124c05c492e89cae7eec32ed66adedcef9cebe585944b22

See more details on using hashes here.

File details

Details for the file skillscheck-0.9.2-py3-none-any.whl.

File metadata

  • Download URL: skillscheck-0.9.2-py3-none-any.whl
  • Upload date:
  • Size: 34.3 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

Hashes for skillscheck-0.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 272de95485743c242af6e4702a85a5e4f5043b79edb931f7917874cd12110d05
MD5 d860930464b6a65c3197318f29c6234e
BLAKE2b-256 cc8b730b50ed996e64ffd295b3286d02c1eaad2bdb7c19c0891eef12b94d2093

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