What Checks Does validate-skills.py Perform? A Complete Guide to Claude-Skills Validation
The validate-skills.py script performs comprehensive validation across YAML front-matter, markdown structure, reference files, workflow definitions, and cross-skill references to enforce repository quality standards.
The validate-skills.py utility serves as the central quality gate for the Jeffallan/claude-skills repository. This Python script orchestrates multiple specialized checker classes to validate every aspect of a skill's definition, from metadata syntax to documentation accuracy. Understanding what checks validate-skills.py performs helps contributors ensure their skills meet the project's strict specifications before submission.
YAML Front-Matter Validation
The script enforces strict schema compliance for every SKILL.md file's front-matter block through several specialized checkers defined in scripts/validate-skills.py (lines 69–132).
Syntax and Required Fields
YamlChecker– Parses the front-matter block to guarantee syntactically valid YAML.RequiredFieldsChecker– Ensuresnameanddescriptionkeys are present.NameFormatChecker– Verifies the skill name matches the regex^[a-zA-Z0-9-]+$and confirms the directory name mirrors the declared name.
Description Standards
DescriptionLengthChecker– Warns if the description exceeds 1024 characters.DescriptionFormatChecker– Enforces the trigger-only prefix "Use when" to maintain consistent tone.
Metadata Schema
MetadataFieldsChecker– Validates that ametadatamap exists and contains all required sub-fields:triggers,role,scope,output-format,domain, andrelated-skills.MetadataEnumChecker– IncludesScopeEnumCheckerandOutputFormatEnumCheckerto warn on unknownscopeoroutput-formatvalues.
Markdown Body Structure Checks
Beyond metadata, validate-skills.py validates the document structure of skills/*/SKILL.md files (lines 85–128).
-
CoreWorkflowStepCountChecker– Confirms the "## Core Workflow" section contains exactly five numbered steps. -
WhenToUseFormatChecker– Validates that the "## When to Use" section follows bullet-list formatting. -
SectionOrderChecker– Ensures H2 headings appear in the canonical order defined in theCANONICAL_SECTIONSconstant. -
LineCountChecker– Enforces that the body (excluding front-matter) contains between 80 and 100 non-blank lines.
Reference File Validation
The script verifies the integrity of supplementary documentation in skills/*/references/*.md (lines 138–166).
ReferencesDirectoryChecker– Confirms each skill contains areferences/folder.ReferenceFileCountChecker– Ensures at least one.mdfile exists within that folder.NonStandardHeadersChecker– Flags obsolete "Reference for:" or "Load when:" headers that violate the current Agent-Skills specification.
Workflow Definition Checks
For the commands/ directory, validate-skills.py performs deep validation of YAML workflow definitions and their manifests (lines 191–273).
WorkflowDefinitionChecker– Validates each per-command YAML file for required fields, correctphasevalues for phased commands, enum values forstatus,requires,inputs,outputs, and verifies that referenced files actually exist.ManifestDagChecker– Parsescommands/workflow-manifest.yamlto check phase definitions, description files, dependency graphs, duplicate commands, and runs a depth-first search (DFS) to detect directed acyclic graph (DAG) cycles.WorkflowOrphanChecker– Identifies command.mdfiles that lack corresponding YAML definitions.
Cross-Skill Reference Validation
The script maintains graph integrity across the entire skill ecosystem (lines 445–530).
CrossRefChecker– Builds a graph frommetadata.related-skillsand reports:- Bidirectional mismatches – Skill A references Skill B, but Skill B does not reference Skill A.
- Orphan skills – Skills with no incoming or outgoing related-skill links.
Documentation Count Consistency
To prevent documentation drift, validate-skills.py includes a meta-validation check (lines 374–421).
CountConsistencyChecker– Scans top-level documentation files (README.md,ROADMAP.md,QUICKSTART.md, etc.) and warns when declared counts of skills or reference files do not match the actual counts computed from the repository.
Running the Validator
Execute scripts/validate-skills.py from the repository root to invoke the validation suite.
Run All Checks
python scripts/validate-skills.py
Filter by Category
# Only YAML front-matter checks
python scripts/validate-skills.py --check yaml
# Only reference-file checks
python scripts/validate-skills.py --check references
# Only workflow definition and manifest checks
python scripts/validate-skills.py --check workflows
# Only cross-skill reference validation
python scripts/validate-skills.py --check crossrefs
Validate Single Skill
python scripts/validate-skills.py --skill react-expert
CI Pipeline Output
# JSON output for automated pipelines
python scripts/validate-skills.py --format json
The script exits with status 1 if any ERROR-level issue is detected, otherwise 0 (warnings do not trigger failure).
Summary
The validate-skills.py script enforces a comprehensive set of rules that keep the Claude-Skills repository clean, self-documenting, and CI-ready:
- YAML front-matter correctness – Validates syntax, required fields, naming conventions, description format, and metadata enums.
- Markdown body conventions – Enforces section order, specific step counts, line limits, and bullet formatting.
- Reference-file hygiene – Requires directories, minimum file counts, and flags obsolete headers.
- Workflow integrity – Validates command YAML schema, manifest DAG cycles, and orphan detection.
- Cross-skill linkage – Verifies bidirectional
related-skillsreferences and identifies orphans. - Documentation count alignment – Ensures README and roadmap counts match actual repository contents.
Frequently Asked Questions
What is the validate-skills.py script used for?
The validate-skills.py script serves as the central quality gate for the Jeffallan/claude-skills repository. It validates YAML front-matter, markdown structure, reference files, workflow definitions, and cross-skill references to ensure every skill adheres to the project's strict specification before merging.
How do I run only specific checks in validate-skills.py?
Use the --check flag followed by the category name. Valid options include yaml (front-matter), references (reference files), workflows (command definitions), and crossrefs (cross-skill links). For example: python scripts/validate-skills.py --check yaml.
What happens if validate-skills.py finds errors?
The script exits with status code 1 if any ERROR-level issue is detected, making it suitable for CI/CD pipelines. Warnings do not trigger a failure exit code. When run interactively, it prints a human-readable table summarizing all issues; with --format json, it outputs machine-parseable results.
Where are the checker classes defined in the source code?
All checker classes are defined in scripts/validate-skills.py. YAML front-matter checkers appear around lines 69–132, markdown body checkers around lines 85–128, reference file checkers around lines 138–166, and workflow checkers around lines 191–273. The orchestration logic resides in the SkillValidator and main() functions toward the end of the file.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →