A GitHub Action to validate SKILL.md files against the Agent Skills specification.
- Cross-agent compatibility - Ensure your skill works across all coding agents that support the Agent Skills spec
- CLI compatibility - Valid skills install correctly with tools like the Vercel Skills CLI
- Catch errors early - Validate skills in CI before they reach production
- Spec compliance - Ensure your SKILL.md follows the official Agent Skills specification
- Configurable - Ignore specific rules, enforce directory structures, or run in strict mode
- Reference checking - Verify that file references in your skill actually exist
- CI-friendly outputs - JSON arrays for errors and warnings for programmatic use
- name: Validate SKILL.md
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skillSee the examples folder for basic GitHub workflow files you can copy and use:
- Simple example - Basic single-skill validation
- Advanced example - Detect and validate only changed skills
| Input | Description | Required | Default |
|---|---|---|---|
path |
Path to the skill directory containing SKILL.md |
No | . |
fail-on-warning |
Treat warnings as errors | No | false |
ignore-rules |
Comma-separated list of rule IDs to ignore (e.g., name-match-directory) |
No | "" |
enforce-directories |
Comma-separated list of directories the skill must include (e.g., scripts) |
No | "" |
validate-references |
Check that file references in SKILL.md actually exist | No | false |
| Output | Description |
|---|---|
valid |
Whether the SKILL.md is valid (true/false) |
errors |
JSON array of validation errors |
warnings |
JSON array of validation warnings |
- name: Validate SKILL.md
id: validate
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skill
- name: Check results
if: always()
run: |
echo "Valid: ${{ steps.validate.outputs.valid }}"
echo "Errors: ${{ steps.validate.outputs.errors }}"
echo "Warnings: ${{ steps.validate.outputs.warnings }}"- name: Validate SKILL.md
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skill
ignore-rules: name-match-directory,description-quality- name: Validate SKILL.md
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skill
enforce-directories: scripts,references- name: Validate SKILL.md
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skill
validate-references: "true"- name: Validate SKILL.md (strict)
uses: Flash-Brew-Digital/validate-skill@v1
with:
path: ./my-skill
fail-on-warning: "true"This action validates your SKILL.md against the Agent Skills specification:
name: Must be 1-64 characters, lowercase alphanumeric with hyphens, no leading/trailing/consecutive hyphens, must match directory namedescription: Must be 1-1024 characters, non-empty
license: Must be a string if providedcompatibility: Must be 1-500 characters if providedmetadata: Must be a key-value mapping with string valuesallowed-tools: Must be a space-delimited string
- YAML frontmatter must be present (between
---markers) - Frontmatter must be valid YAML
The action also produces warnings for:
- Very short descriptions (< 50 characters)
- Empty body content
- Body exceeding 500 lines
- Unknown fields in frontmatter
---
name: pdf-processing
description: Extract text and tables from PDF files, fill forms, merge documents.
license: Apache-2.0
compatibility: Designed for Claude Code
metadata:
author: example-org
version: "1.0"
---
# PDF Processing Skill
Instructions for agents on how to process PDFs...The 'name' and 'description' fields are required. Other fields are optional.
To install an Agent Skill from a GitHub repository, use the below command. See the Vercel Skills CLI documentation for more information.
npx skills add <owner/repo>Contributions are welcome! Please read our Contributing Guide for more information.