agent-check ยท diff
git:20260210.0dcf249 to git:20260325.705c668
19 added, 9 removed. Audit A to A.
---
name: agent-check
description: Validate custom agent file format and structure
user-invocable: true
---
# Agent File Validator
Validate agent files in `.claude/agents/` for correct format.
---
## Validation Target
- With argument: validate specific file
- Without: validate all `.claude/agents/*.md`
---
## Required Frontmatter
```yaml
---
- name: agent-name # Required: lowercase, hyphenated
- description: Brief desc # Required: under 100 chars
+ name: agent-name # Required: lowercase, hyphenated, 3-50 chars
+ description: > # Required: 10-5000 chars, include triggering conditions + <example> blocks
+ Use this agent when [conditions]. Examples:
+ <example>
+ Context: [situation]
+ user: "[request]"
+ assistant: "[response using this agent]"
+ </example>
color: cyan # Required: yellow, red, green, blue, magenta, cyan
- tools: # Required: YAML list format
+ model: sonnet # Required: inherit, haiku, sonnet, opus, best, sonnet[1m], opus[1m], opusplan
+ tools: # Optional: YAML list (omit = all tools available)
- Read
- Write
- Grep
- model: sonnet # Required: inherit, haiku, sonnet, opus, best, sonnet[1m], opus[1m], opusplan
# forkContext: "true" # Optional: run in forked context (string "true"/"false")
# maxTurns: 20 # Optional: max conversation turns (positive integer)
skills: # Optional: auto-load skills (array)
- linked-skill
memory: # Optional: memory scopes to load (array)
- user
- project
- local
mcpServers: # Optional: MCP server refs or objects (array)
- server-name
hooks: # Optional: agent-scoped lifecycle hooks
PreToolUse:
- matcher: Write
- command: ./validate.sh
+ hooks:
+ - type: command
+ command: ./validate.sh
PostToolUse:
- matcher: Bash
- command: ./log.sh
+ hooks:
+ - type: command
+ command: ./log.sh
permissionMode: default # Optional: permission handling
disallowedTools: # Optional: explicit tool blocking
- NotebookEdit
---
```
### Valid Tools
```
Read, Write, Edit, Bash, Grep, Glob, Task,
WebFetch, WebSearch, TodoWrite, NotebookEdit
```
### Valid Colors
```
yellow, red, green, blue, magenta, cyan
```
### Valid Models
```
inherit, haiku, sonnet, opus, best, sonnet[1m], opus[1m], opusplan
```
---
## Validation Checklist
### Required Fields
- - [ ] `name` exists (lowercase, hyphenated)
- - [ ] `description` exists (under 100 chars)
- - [ ] `tools` exists (YAML list format, not bracket array)
+ - [ ] `name` exists (lowercase, hyphenated, 3-50 chars)
+ - [ ] `description` exists (10-5000 chars, recommend 200-1000 with `<example>` blocks)
- [ ] `color` is set (valid color name)
- [ ] `model` is set (inherit/haiku/sonnet/opus/best/sonnet[1m]/opus[1m]/opusplan)
### Optional Fields
+ - [ ] `tools` are valid tool names, YAML list format (omit = all tools available)
- [ ] `skills` references existing skills (array, if set)
- [ ] `forkContext` is string "true" or "false" (if set)
- [ ] `maxTurns` is positive integer (if set)
- [ ] `memory` is valid array of: user, project, local (if set)
- [ ] `mcpServers` is valid array of string refs or objects (if set)
- [ ] `hooks` has valid structure (if set)
- [ ] `permissionMode` is valid value (if set)
- [ ] `disallowedTools` are valid tool names (if set)
### Content Structure
- [ ] `# Agent Name` heading
- [ ] `## Activation` section
- [ ] Process/workflow description
- [ ] Output format definition
### Format Rules
- [ ] `tools` uses YAML list format (not `[Read, Write]` bracket array)
- [ ] No duplicate tools in list
- [ ] All tools are valid tool names
---
## Output Format
```markdown
## Agent Validation Report
### Files Checked
| File | Status | Issues |
|------|--------|--------|
| code-reviewer.md | OK | None |
| my-agent.md | WARN | Missing color, model |
### Summary
- Total: [N]
- Valid: [N]
- Needs fixes: [N]
```
---
## Auto-Fix
- Convert bracket array tools to YAML list format
- Convert string skills to YAML array
- Add missing `color` field (default: cyan)
- Add missing `model` field (default: inherit)
- Convert boolean forkContext to string
- Convert scalar memory to array format
- Remove invalid tools
- Add recommended sections