| name | claude-code-expert |
| description | This skill should be used when working with Claude Code infrastructure including agents, skills, slash commands, hooks, plugins, settings.json, or CLAUDE.md files. Triggers on YAML frontmatter, .claude/ directory files, Task tool configuration, or hook debugging. Do NOT use for creating NEW skills from scratch - use claude-creator instead. |
Claude Code Expert
Comprehensive quick-reference for Claude Code extensibility. For detailed examples, see the reference files linked at the end.
When to Use
- Updating existing skills, agents, slash commands, or plugins
- Creating new agents, slash commands, or plugins (NOT new skills)
- Debugging hook configurations or integration issues
- Reviewing Claude Code file formats for correctness
Do NOT use for: Creating NEW skills from scratch (use claude-creator instead), general coding tasks, or CI/CD unrelated to Claude Code.
Core Concepts
The Four Extension Types
| Type | Invocation | Purpose | Location |
|---|
| Skills | Auto (model-invoked) | Persistent context/knowledge | ~/.claude/skills/, .claude/skills/, <plugin>/skills/ |
| Agents | Explicit (@agent-name) | Multi-step workflows | .claude/agents/, <plugin>/agents/ |
| Commands | User (/command) | Saved prompts/shortcuts | ~/.claude/commands/, .claude/commands/, <plugin>/commands/ |
| Plugins | Package | Bundled distribution | .claude-plugin/plugin.json |
Decision Framework
- Should Claude remember X automatically? → Skill
- Should Claude follow workflow Y step-by-step? → Agent
- Do users need shortcut to Z? → Command
- Should setup be shared/distributed? → Plugin
File Formats Quick Reference
Skill Frontmatter
---
name: skill-name
description: This skill should be used when [triggers]. It provides [capabilities].
allowed-tools: Read, Grep, Glob
context: fork
agent: my-agent
hooks:
PreToolUse: [...]
PostToolUse: [...]
Stop: [...]
---
Skills hot-reload when modified. See references/skill-triggers.md for trigger optimization.
Agent Frontmatter
---
name: agent-name
description: What agent does and when to use it.
model: opus
color: blue
tools: Read, Grep, Glob, Bash
hooks:
PreToolUse: [...]
PostToolUse: [...]
Stop: [...]
---
Disable agents: "disallowed-tools": ["Task(agent-name)"] in settings.json.
Command Frontmatter
---
description: Brief description for autocomplete
argument-hint: [file] [options]
model: opus
allowed-tools: Bash(git *), Read, Grep
disable-model-invocation: false
hooks:
PreToolUse: [...]
Stop: [...]
---
Special syntax: $ARGUMENTS, $1/$2, inline bash with exclamation prefix (requires allowed-tools), @path/file
See references/command-patterns.md for patterns and examples.
Plugin Manifest
{
"name": "plugin-name",
"description": "What this plugin provides",
"version": "1.0.0",
"author": "Author Name"
}
Hooks Quick Reference
Locations: settings.json (global) or frontmatter (component-scoped)
| Hook | Timing | Frontmatter | settings.json |
|---|
PreToolUse | Before tool runs | ✅ | ✅ |
PostToolUse | After tool completes | ✅ | ✅ |
Stop | When component/agent finishes | ✅ | ✅ |
UserPromptSubmit | When user sends message | ❌ | ✅ |
PermissionRequest | When permission requested | ❌ | ✅ |
SessionStart | Session starts/resumes | ❌ | ✅ |
SessionEnd | Session ends | ❌ | ✅ |
SubagentStart/Stop | Subagent lifecycle | ❌ | ✅ |
Notification | Notification sent | ❌ | ✅ |
PreCompact | Before context compact | ❌ | ✅ |
Matcher patterns: Bash(git commit:*), Write(*.py), Edit(src/**/*.ts), mcp__server_*, *
Hook options: matcher, command, once (run only once per session)
See references/hook-recipes.md for complete schemas and recipes.
Settings & CLI
Location: .claude/settings.json or ~/.claude/settings.json
| Setting | Description |
|---|
agent | Use agent's system prompt, tools, model for main thread |
language | Response language (e.g., "japanese") |
disallowed-tools | Disable tools: Task(AgentName), mcp__server_* |
CLI flags: --agent, --tools, --disable-slash-commands, --session-id, --system-prompt
CLAUDE.md & Rules
CLAUDE.md: Project root or ~/.claude/CLAUDE.md. Keep concise (always loaded).
Rules directory: .claude/rules/*.md - modular alternative to single CLAUDE.md.
Writing Style
CRITICAL: Use imperative/infinitive form, not second person.
| ✅ Correct | ❌ Incorrect |
|---|
| "Identify candidate files..." | "You should identify..." |
| "Extract data from..." | "You can extract..." |
Common Issues
| Issue | Cause | Fix |
|---|
| Skill not triggering | Vague description, >1024 chars | Add specific trigger keywords |
| Hook not executing | Not executable, wrong path | chmod +x, use relative path from root |
| Agent not found | Name mismatch, wrong location | Match name to filename, check .claude/agents/ |
| Inline bash not working | Missing allowed-tools | Add allowed-tools: Bash(...) to frontmatter |
Validation Checklist
References
- references/skill-triggers.md - Skill triggers, body structure, frontmatter
- references/agent-patterns.md - Agent body structure, frontmatter, patterns
- references/command-patterns.md - Command patterns, TodoWrite usage
- references/hook-recipes.md - Hook schemas, recipes, debugging
- references/configuration.md - CLAUDE.md, rules, settings, CLI, background agents