Skip to main content
ClaudeWave
Skill79 repo starsupdated yesterday

skill-check

The skill-check validator ensures skill files conform to required SKILL.md format standards, including mandatory frontmatter fields like name and description, optional configuration for tools, models, and context, and proper YAML structure. Use this before deploying skills to catch formatting errors and missing required metadata that would prevent correct skill registration and execution.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/claude-world/director-mode-lite /tmp/skill-check && cp -r /tmp/skill-check/skills/skill-check ~/.claude/skills/skill-check
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Skill File Validator

Validate skill files for correct format.

---

## Validation Target

- With argument: validate specific file
- Without: validate all `.claude/skills/*/SKILL.md`

---

## Required Frontmatter

```yaml
---
name: skill-name              # Required: lowercase, hyphenated
description: What it does     # Required: shown in / menu
version: 0.1.0              # Optional: semantic version
user-invocable: true          # Optional: default true
model: sonnet               # Optional: inherit, haiku, sonnet, opus, best, sonnet[1m], opus[1m], opusplan
allowed-tools:                # Optional: restrict tools (YAML list)
  - Read
  - Write
  - Bash
context: fork                 # Optional: isolated context
agent: agent-name             # Optional: run as specific agent
argument-hint: "<hint>"       # Optional: hint for arguments
when_to_use: Description of when this skill should be used  # Optional: underscore format
arguments:                    # Optional: structured argument definitions
  - name: arg-name
    description: What the argument does
    required: true
disable-model-invocation: false  # Optional: prevent programmatic invocation
hooks:                        # Optional: lifecycle hooks (same format as settings.json)
  PreToolUse:
    - matcher: Write
      hooks:
        - type: command
          command: ./scripts/validate.sh
  PostToolUse:
    - matcher: Bash
      hooks:
        - type: command
          command: ./scripts/log.sh
  Stop:
    - hooks:
        - type: command
          command: ./scripts/verify.sh
          once: true
---
```

### Valid Tools (for allowed-tools)
```
Read, Write, Edit, Bash, Grep, Glob, Task,
WebFetch, WebSearch, TodoWrite, NotebookEdit
```

---

## Validation Checklist

### Required Fields
- [ ] `name` exists (lowercase, hyphenated)
- [ ] `description` exists

### Optional Field Validation
- [ ] `allowed-tools` are valid tool names (if specified)
- [ ] `allowed-tools` uses YAML list format (if specified)
- [ ] `agent` references existing agent file (if specified)
- [ ] `version` is valid semver format (if specified)
- [ ] `model` is valid value: inherit, haiku, sonnet, opus, best, sonnet[1m], opus[1m], opusplan (if specified)
- [ ] `context` is valid value: fork (if specified)
- [ ] `argument-hint` is a string (if specified)
- [ ] `when_to_use` is a descriptive string (if specified)
- [ ] `arguments` is a valid array with name/description/required entries (if specified)
- [ ] `disable-model-invocation` is boolean (if specified)
- [ ] `hooks` has valid structure (if specified)

### Content Structure
- [ ] Clear instructions
- [ ] Uses `$ARGUMENTS` if expecting input
- [ ] Step-by-step process if complex

---

## Output Format

```markdown
## Skill Validation Report

### Files Checked
| File | Status | Issues |
|------|--------|--------|
| workflow/SKILL.md | OK | None |
| my-skill/SKILL.md | WARN | Missing description |

### Summary
- Total: [N]
- Valid: [N]
- Needs fixes: [N]
```

---

## Auto-Fix

- Add missing `name` from directory name
- Add missing `description`
- Convert bracket array tools to YAML list format
- Remove invalid frontmatter fields
- Add `$ARGUMENTS` handling