home / skills / plaited / agent-eval-harness / validate-skill
/.agents/skills/validate-skill
npx playbooks add skill plaited/agent-eval-harness --skill validate-skillReview 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