Skip to main content
Skill Lab includes 28 static checks organized across 4 evaluation dimensions. Each check validates a specific aspect of skill quality, from basic structural requirements to content optimization.

Check Dimensions

Checks are organized into four dimensions:
  • Structure - File organization, frontmatter format, folder validation
  • Naming - Name format and consistency requirements
  • Content - Body quality, token budgets, examples, and references
  • Description - Description field requirements

Severity Levels

Each check has a severity level that affects scoring:
SeverityImpactDescription
ERRORHighSpec violations or critical issues
WARNINGMediumQuality issues that should be fixed
INFOLowSuggestions for improvement

Spec-Required vs. Quality Checks

Of the 28 total checks:
  • 10 checks are spec-required (must pass for spec compliance)
  • 18 checks are quality suggestions (best practices)
Use sklab evaluate -s to run only spec-required checks.

All Checks Summary

Structure Checks (7)

Check IDSeveritySpec RequiredDescription
structure.skill-md-existsERRORYesSKILL.md file exists in the skill directory
structure.valid-frontmatterERRORYesYAML frontmatter is parseable and valid
structure.standard-frontmatter-fieldsWARNINGNoFrontmatter contains only fields defined in the Agent Skills spec
structure.scripts-validWARNINGNo/scripts contains only .py, .sh, .js, .ts, .bash, .rb files
structure.references-validWARNINGNo/references contains only .md, .txt, .rst files
structure.scripts-no-interactiveWARNINGNoScripts do not use interactive input (agents run non-interactive shells)
structure.scripts-self-containedINFONoScripts folder has no loose dependency manifests

Naming Checks (1)

Check IDSeveritySpec RequiredDescription
naming.matches-directoryERRORYesName must match the parent directory name

Content Checks (11)

Check IDSeveritySpec RequiredDescription
content.body-not-emptyWARNINGNoSKILL.md body has meaningful content
content.line-budgetWARNINGNoBody is under 500 lines
content.token-budgetWARNINGNoBody is under 5000 tokens
content.metadata-token-budgetINFONoMetadata is under 150 tokens for efficient discovery
content.has-examplesINFONoContent contains code examples
content.description-actionableINFONoDescription explains when to use this skill
content.reference-depthWARNINGNoReferences are max 1 level deep
content.scripts-referencedWARNINGNoScripts in scripts/ are mentioned in the SKILL.md body
content.script-paths-existWARNINGNoScript paths referenced in body resolve to files on disk
content.asset-paths-existWARNINGNoAsset paths referenced in body resolve to files on disk
content.compatibility-prereqsINFONoCommand runners in body are documented in compatibility field

Schema Checks (9)

These checks validate frontmatter fields:
Check IDSeveritySpec RequiredDescription
naming.requiredERRORYesName field is present in frontmatter
naming.formatERRORYesName is lowercase, hyphen-separated, max 64 chars
description.requiredERRORYesDescription field is present in frontmatter
description.not-emptyERRORYesDescription is not empty or whitespace-only
description.max-lengthERRORYesDescription is under 1024 characters
frontmatter.compatibility-lengthERRORYesCompatibility field is under 500 characters if provided
frontmatter.metadata-formatERRORYesMetadata field is a string-to-string mapping if provided
frontmatter.license-formatWARNINGNoLicense field is a string if provided
frontmatter.allowed-tools-formatWARNINGNoAllowed-tools field is a space-delimited string if provided

Usage

Run all checks:
sklab evaluate ./my-skill
Run spec-required checks only:
sklab evaluate -s ./my-skill
List all checks:
sklab list-checks
List checks by dimension:
sklab list-checks --dimension structure

Implementation Details

Skill Lab uses two patterns for implementing checks:
  1. Behavioral checks - Hand-written classes with @register_check decorator (structure, naming, content)
  2. Schema checks - Declarative FieldRule definitions that are automatically converted to check classes
Both patterns produce identical CheckResult objects and are executed by the StaticEvaluator.
For detailed information about each check, see the dimension-specific pages:

Build docs developers (and LLMs) love