validate-agent-files
SKILL.md
Validate Agent Files
Validates that agent, skill, prompt, and instruction files follow the correct format and structure.
Provider Folder Reference
This skill works across multiple AI coding assistant providers:
| Provider | Base Folder |
|---|---|
| GitHub Copilot | .github/ |
| Claude Code | .claude/ |
| Codex | .codex/ |
| OpenCode | .config/opencode/ |
Throughout this document, <provider>/ represents your chosen provider's base folder.
When to Use
- Before committing new agents, skills, prompts, or instructions
- When an agent isn't behaving as expected
- To audit existing customization files for issues
- After modifying any
.githubcustomization files
Validation Process
Step 1: Identify File Type
Determine the type based on location and extension:
<provider>/agents/*.md→ Agent file (user-invokable)<provider>/agents/*.subagent.agent.md→ Sub-agent file (workflow component)<provider>/skills/*/SKILL.md→ Skill file<provider>/prompts/*.prompt.md→ Prompt file<provider>/instructions/*.instructions.md→ Instruction file
Step 2: Apply Type-Specific Validation
Agent File Validation (<provider>/agents/*.md)
Required Structure:
---
name: agent-name
description: When to use this agent (should include examples)
user-invokable: true # Optional, defaults to true
---
[System prompt body]
Supported Frontmatter Attributes:
name(required) - Agent identifierdescription(required) - When/how to use, with examplesuser-invokable(optional) - Set tofalsefor sub-agents (default:true)tools- List of allowed toolsmodel- Specific model to usehandoffs- Other agents this can delegate to
Checks:
- ✓ YAML frontmatter present with
---delimiters - ✓
namefield exists and is non-empty - ✓
descriptionfield exists (recommend 50+ characters with examples) - ✓ Body content exists after frontmatter
- ✓ If
toolsspecified, they are valid tool names - ✓ If filename contains
.subagent.agent.md, verifyuser-invokable: falseis set
Naming Convention Checks:
- User-facing agents:
<name>.agent.mdor<name>.md - Sub-agents:
<name>.subagent.agent.mdwithuser-invokable: false
Common Issues:
- Missing
---delimiters - Empty or minimal description
- No usage examples in description
- Body content missing or too brief
- Sub-agent missing
user-invokable: false - Sub-agent not using
.subagent.agent.mdnaming convention
Skill File Validation (<provider>/skills/*/SKILL.md)
Required Structure:
---
name: skill-name
description: What this skill does and when to use it.
---
[Skill instructions body]
Supported Frontmatter Attributes:
name(required) - Must match parent directory name, lowercase with hyphensdescription(required) - Max 1024 chars, describes function and triggerslicense(optional) - License informationcompatibility(optional) - Environment requirementsmetadata(optional) - Key-value pairs for additional infoallowed-tools(optional) - Space-delimited pre-approved tools
Checks:
- ✓ File is named
SKILL.mdinside a directory - ✓
namematches parent directory name exactly - ✓
nameis lowercase, alphanumeric with hyphens only - ✓
namedoesn't start/end with hyphen or have consecutive hyphens - ✓
descriptionis 1-1024 characters - ✓ Body content provides clear instructions
Common Issues:
namedoesn't match directory name- Uppercase characters in name
- Description too vague (should include trigger keywords)
- Missing instructions in body
Prompt File Validation (<provider>/prompts/*.prompt.md)
Required Structure:
---
mode: agent
description: What this prompt does
---
[Prompt template with {{variables}}]
Supported Frontmatter Attributes:
mode(optional) - One of:agent(default),ask,edit,generatetools(optional) - Available tools for this promptdescription(optional but recommended) - What the prompt accomplishes
Checks:
- ✓ File has
.prompt.mdextension - ✓ If
modepresent, it's a valid value - ✓ Variables use
{{variableName}}syntax - ✓ Body content exists (the prompt itself)
Common Issues:
- Wrong extension (
.mdinstead of.prompt.md) - Invalid
modevalue - Undefined variables in template
Instruction File Validation (<provider>/instructions/*.instructions.md)
Required Structure:
---
applyTo: "**/*.ts"
---
[Contextual instructions]
Supported Frontmatter Attributes:
applyTo(required) - Glob pattern(s) for when instructions apply
Checks:
- ✓ File has
.instructions.mdextension - ✓
applyTofield exists - ✓
applyTocontains valid glob pattern(s) - ✓ Body content provides meaningful guidance
Common Issues:
- Wrong extension
- Missing
applyTofield - Invalid glob syntax
- Empty or minimal instructions
Output Format
## Validation: [filename]
**Type:** [Agent|Skill|Prompt|Instruction]
**Status:** ✅ Valid | ⚠️ Warnings | ❌ Invalid
### Issues
- [Issue 1 with line number if applicable]
- [Issue 2]
### Recommendations
- [Suggestion for improvement]
Batch Validation
When validating all files, provide summary:
## Validation Summary
| Type | Total | Valid | Warnings | Invalid |
|------|-------|-------|----------|---------|
| Agents | X | X | X | X || Sub-Agents | X | X | X | X || Skills | X | X | X | X |
| Prompts | X | X | X | X |
| Instructions | X | X | X | X |
### Files Requiring Attention
- [List files with issues]
Weekly Installs
3
Repository
jburlison/metapromptsGitHub Stars
49
First Seen
Feb 19, 2026
Security Audits
Installed on
opencode3
github-copilot3
codex3
kimi-cli3
amp3
gemini-cli3