home / skills / plaited / agent-eval-harness / validate-skill@plaited_development-skills
This skill validates skill directories against the AgentSkills specification to ensure proper frontmatter, fields, and naming conventions.
npx playbooks add skill plaited/agent-eval-harness --skill validate-skill@plaited_development-skillsReview the files below or copy the command above to add this skill to your agents.
---
name: validate-skill
description: Validate skill directories against AgentSkills spec
license: ISC
compatibility: Requires bun
allowed-tools: Bash
---
# Validate Skill
## Purpose
This skill validates skill directories against the [AgentSkills specification](https://agentskills.io/specification). Use it to ensure your skills have proper frontmatter, required fields, and follow naming conventions.
**Use when:**
- Creating new skills in any agent's skills directory (`.claude/skills/`, `.cursor/skills/`, etc.)
- Reviewing PRs that modify skills
- Validating skill structure before publishing
## Scripts
### validate-skill.ts
Validate one or more skill directories.
```bash
bunx @plaited/development-skills validate-skill [paths...]
```
**Arguments:**
- `paths`: Paths to validate (defaults to current agent's skills directory)
**Options:**
- `--json`: Output results as JSON
**Examples:**
```bash
# Validate skills in current directory's .claude/skills/
bunx @plaited/development-skills validate-skill .claude/skills
# Validate Cursor skills
bunx @plaited/development-skills validate-skill .cursor/skills
# Validate a specific skill
bunx @plaited/development-skills validate-skill .claude/skills/typescript-lsp
# Validate multiple paths with JSON output
bunx @plaited/development-skills validate-skill .claude/skills .cursor/skills --json
```
## Validation Rules
### Required Fields
- `name`: Skill name (lowercase, alphanumeric with hyphens)
- `description`: Brief description of the skill
### Naming Conventions
- Name must be lowercase
- Only alphanumeric characters and hyphens allowed
- Cannot start or end with hyphen
- Cannot contain consecutive hyphens
- Maximum 64 characters
- Directory name must match skill name
### Optional Fields
- `license`: License identifier
- `compatibility`: Runtime requirements
- `allowed-tools`: Comma-separated list of allowed tools
- `metadata`: Key-value pairs for additional metadata
## Output Format
### Human-Readable (default)
```
✓ .claude/skills/typescript-lsp
✓ .cursor/skills/my-skill
✗ .claude/skills/invalid-skill
ERROR: Missing required field in frontmatter: 'description'
2/3 skills valid
```
### JSON (--json)
```json
[
{
"valid": true,
"path": ".cursor/skills/my-skill",
"errors": [],
"warnings": [],
"properties": {
"name": "my-skill",
"description": "..."
}
}
]
```
## Related Skills
- **typescript-lsp** - Example of a well-structured skill with scripts
- **code-documentation** - TSDoc standards for TypeScript/JavaScript code
This skill validates skill directories against the AgentSkills specification to ensure frontmatter, required fields, and naming conventions are correct. It runs as a command-line validator that produces human-readable or JSON output so you can catch structural issues before publishing or merging changes. Use it to enforce consistent, machine-readable metadata across agent skill collections.
The validator reads one or more skill directories, parses frontmatter and metadata, and checks required fields, naming rules, and optional properties against the AgentSkills spec. It reports errors, warnings, and key properties for each skill and can emit either concise console output or structured JSON for automated tooling. Validation covers directory-name matching, field presence, and pattern constraints.
What fields are required in each skill?
Every skill must include name and description in the frontmatter. Other fields like license and compatibility are optional but recommended when applicable.
How do I get machine-readable results for CI?
Use the --json option to emit a JSON array of validation results suitable for parsing by CI scripts.