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
.geminicustomization 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 identifier - •
description(required) - When/how to use, with examples - •
user-invokable(optional) - Set tofalsefor sub-agents (default:true) - •
tools- List of allowed tools - •
model- Specific model to use - •
handoffs- 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 hyphens - •
description(required) - Max 1024 chars, describes function and triggers - •
license(optional) - License information - •
compatibility(optional) - Environment requirements - •
metadata(optional) - Key-value pairs for additional info - •
allowed-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,generate - •
tools(optional) - Available tools for this prompt - •
description(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]