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 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]
Scan to join WeChat group