Chapter 56 · Reviewing Claude Config
Subchapter 56.1
reference/claude-code-requirements.mdMarkdown9 KBView on GitHub
Claude Code-specific conventions, formats, and requirements that differ from general best practices. This reference consolidates domain-specific knowledge necessary for validating Claude Code configuration files.
Required Fields:
---
name: skill-name-in-kebab-case
description: Clear description with activation triggers
---Optional Fields:
version: 1.0.0 # Semver format (MAJOR.MINOR.PATCH)Field Requirements:
name: MUST be kebab-case (use-dashes-not_underscores)description: MUST include activation triggers (when to use the skill)version: SHOULD follow semantic versioning if marketplace-boundValid Example:
---
name: reviewing-changes
version: 2.0.0
description: Comprehensive code reviews for Android. Detects change type and applies appropriate review depth. Use when reviewing pull requests, checking commits, or analyzing code changes.
---Invalid Examples:
---
name: reviewing_changes # ❌ Underscore instead of dash
description: Reviews code # ❌ Too vague, no activation triggers
---Required Fields:
---
name: agent-name-in-kebab-case
description: Clear description of agent purpose
---Optional Fields:
model: sonnet # haiku, sonnet, opus, or inherit
tools: Read, Write, Grep, Glob, Bash # Specific tools onlyField Requirements:
name: kebab-case, unique within projectdescription: Clear purpose and activation contextmodel: One of: haiku, sonnet, opus, inherit (lowercase)tools: Exact tool names (case-sensitive): Read, Write, Edit, Grep, Glob, Bash, WebFetch, WebSearchtools field to inherit all tools (default)| Model | Value | Use Case |
|---|---|---|
| Haiku | haiku | Fast, simple tasks (formatting, scripts, quick operations) |
| Sonnet | sonnet | Balanced default (code review, testing, documentation) |
| Opus | opus | Complex reasoning (architecture, novel problems) |
| Inherit | inherit | Use parent session’s model |
Default: If model field omitted, defaults to sonnet
Read-Only Tools (LOW RISK):
Read - Read file contentsGrep - Search file contentsGlob - Find files by patternWrite Tools (MEDIUM RISK):
Write - Create new filesEdit - Modify existing filesExecution Tools (HIGH RISK):
Bash - Execute shell commandsNetwork Tools (MEDIUM-HIGH RISK):
WebFetch - Fetch URL contentWebSearch - Search webRead-only agents (safest pattern):
tools: Read, Grep, GlobWrite-capable agents (moderate risk):
tools: Read, Grep, Glob, Write, EditFull-access agents (highest risk - justify in review):
# Omit tools field to inherit all tools
# OR explicitly list all needed toolsRead, Grep, Glob and add tools as neededtools field grants all tools (document why this is necessary)Main skill file (SKILL.md):
If exceeding 500 lines:
skill-name/
├── SKILL.md # Main orchestration (aim for ≤500 lines)
├── checklists/ # Task-specific procedures
├── reference/ # Detailed criteria (loaded as needed)
├── examples/ # Sample outputs
└── scripts/ # Executable automation (if applicable)Main file should:
Supporting files should:
Example routing:
### Step 2: Load Appropriate Checklist
Based on detected type, read the relevant checklist:
- **Agents** → `checklists/agents.md`
- **Skills** → `checklists/skills.md`
- **Settings** → `checklists/settings.md`CRITICAL: settings.local.json must NEVER be committed to git
Detection:
git status | grep "settings.local.json"
git diff --cached | grep "settings.local.json"If found: Flag as CRITICAL blocking issue
Rationale: Contains user-specific settings and potentially sensitive paths
Format (in settings.json):
{
"autoApproved": [
"Bash(git status:*)",
"Bash(git diff:*)",
"Read(/absolute/path/to/specific/dir/**)"
]
}Guidelines:
Bash(git status:*) not Bash(*)Read(/full/path/**) not Read(**)Read(/project/src/**/*.ts) to limit file types| Issue | Detection | Fix |
|---|---|---|
| Tabs instead of spaces | Malformed YAML error | Replace tabs with spaces |
| Missing colon | Parser error | Add : after field name |
| Wrong field name | Skill not recognized | Check exact spelling: name not Name |
| Invalid model value | Ignored or error | Use: haiku, sonnet, opus, inherit |
| Issue | Detection | Fix |
|---|---|---|
| Wrong tool name | Tool not available | Use exact case: Grep not grep |
| Typo in tool name | Tool not available | Check spelling: Bash not bash |
| Over-privileged | Security review | Remove unnecessary tools |
| Issue | Detection | Fix |
|---|---|---|
| Main file >500 lines | Line count | Split into supporting files |
| All context loaded upfront | Review structure | Use on-demand loading |
| Circular dependencies | File references | Reorganize file structure |
YAML Frontmatter:
name field present and kebab-casedescription field present with activation triggersversion follows semver (if present)model is valid value: haiku/sonnet/opus/inherit (if present)tools uses exact case-sensitive names (if present)Progressive Disclosure:
Security:
File Organization:
SKILL.md with YAML frontmatter.claude/agents/*.md or plugins/*/agents/*.md.claude/prompts/*.md or .claude/commands/*.md.claude/settings.json (NOT settings.local.json)Model Values: haiku | sonnet | opus | inherit
Tool Names: Read | Write | Edit | Grep | Glob | Bash | WebFetch | WebSearch
Line Limit: SKILL.md ≤500 lines (guideline)
Naming: kebab-case for name fields
NEVER Commit: settings.local.json
YAML: Spaces only, no tabs