home / skills / plaited / agent-eval-harness / validate-skill@plaited_development-skills

validate-skill@plaited_development-skills skill

/.plaited/skills/validate-skill@plaited_development-skills

This skill validates skill directories against the AgentSkills specification to ensure proper frontmatter, fields, and naming conventions.

This is most likely a fork of the validate-skill skill from plaited
npx playbooks add skill plaited/agent-eval-harness --skill validate-skill@plaited_development-skills

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.5 KB
---
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

Overview

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.

How this skill works

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.

When to use it

  • Creating a new skill in an agent skills directory (e.g., .claude/skills/, .cursor/skills/)
  • Reviewing pull requests that add or modify skills
  • Running CI checks before publishing or merging skill changes
  • Auditing an existing skills collection for compliance
  • Integrating validation into a release pipeline for agent packages

Best practices

  • Run validation locally before opening a PR to catch format and naming errors early
  • Enable --json in CI to produce machine-readable results for failing workflows
  • Keep skill names lowercase, alphanumeric with single hyphens and under 64 characters
  • Ensure directory name exactly matches the skill name declared in frontmatter
  • Provide at least name and description in frontmatter; include license and compatibility when relevant

Example use cases

  • Validate the current repository’s skills directory: bunx @plaited/development-skills validate-skill .claude/skills
  • Check multiple agent skill folders at once and produce JSON for CI: bunx ... validate-skill .claude/skills .cursor/skills --json
  • Verify a single skill during development: bunx ... validate-skill .claude/skills/typescript-lsp
  • Run validation as a pre-merge CI step to block PRs that break the AgentSkills spec
  • Scan an entire monorepo to generate a compliance report and identify missing metadata

FAQ

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.