7.2 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Repository Overview
This is a best practices repository for Claude Code configuration, demonstrating patterns for skills, subagents, hooks, and commands. It serves as a reference implementation rather than an application codebase.
Key Components
Weather System (Example Workflow)
A demonstration of two distinct skill patterns via the Command → Agent → Skill architecture:
/weather-orchestratorcommand (.claude/commands/weather-orchestrator.md): Entry point — asks user for C/F, invokes agent, then invokes SVG skillweather-agentagent (.claude/agents/weather-agent.md): Fetches temperature using its preloadedweather-fetcherskill (agent skill pattern)weather-fetcherskill (.claude/skills/weather-fetcher/SKILL.md): Preloaded into agent — instructions for fetching temperature from wttr.in APIweather-svg-creatorskill (.claude/skills/weather-svg-creator/SKILL.md): Skill — creates SVG weather card, writesorchestration-workflow/weather.svgandorchestration-workflow/output.md
Two skill patterns: agent skills (preloaded via skills: field) vs skills (invoked via Skill tool). See orchestration-workflow/orchestration-workflow.md for the complete flow diagram.
Skill Definition Structure
Skills in .claude/skills/<name>/SKILL.md use YAML frontmatter:
name: Display name and/slash-command(defaults to directory name)description: When to invoke (recommended for auto-discovery)argument-hint: Autocomplete hint (e.g.,[issue-number])disable-model-invocation: Settrueto prevent automatic invocationuser-invocable: Setfalseto hide from/menu (background knowledge only)allowed-tools: Tools allowed without permission prompts when skill is activemodel: Model to use when skill is activecontext: Set toforkto run in isolated subagent contextagent: Subagent type forcontext: fork(default:general-purpose)hooks: Lifecycle hooks scoped to this skill
Presentation System
Any request to update, modify, or fix the presentation (presentation/index.html) must be handled by the presentation-curator agent (.claude/agents/presentation-curator.md). Always delegate presentation work to this agent via the Task tool — never edit the presentation directly.
The agent is self-evolving: after every execution, it updates its own skills to stay in sync with the presentation. It has three preloaded skills:
vibe-to-agentic-framework: The conceptual framework ("Vibe Coding → Agentic Engineering"), weight rationale, and journey narrative. Updated after every slide change.presentation-structure: Slide format, weight system, navigation, section ranges. Updated when slides are added/removed/reordered.presentation-styling: CSS classes, component patterns, syntax highlighting. Updated when new styling patterns are introduced.
Hooks System
Cross-platform sound notification system in .claude/hooks/:
scripts/hooks.py: Main handler for Claude Code hook eventsconfig/hooks-config.json: Shared team configurationconfig/hooks-config.local.json: Personal overrides (git-ignored)sounds/: Audio files organized by hook event (generated via ElevenLabs TTS)
Hook events configured in .claude/settings.json: PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStart, SubagentStop, PreCompact, SessionStart, SessionEnd, Setup, PermissionRequest, TeammateIdle, TaskCompleted, ConfigChange.
Special handling: git commits trigger pretooluse-git-committing sound.
Critical Patterns
Subagent Orchestration
Subagents cannot invoke other subagents via bash commands. Use the Task tool:
Task(subagent_type="agent-name", description="...", prompt="...", model="haiku")
Be explicit about tool usage in subagent definitions. Avoid vague terms like "launch" that could be misinterpreted as bash commands.
Subagent Definition Structure
Subagents in .claude/agents/*.md use YAML frontmatter:
name: Subagent identifierdescription: When to invoke (use "PROACTIVELY" for auto-invocation)tools: Comma-separated allowlist of tools (inherits all if omitted). SupportsTask(agent_type)syntaxdisallowedTools: Tools to deny, removed from inherited or specified listmodel: Model alias:haiku,sonnet,opus, orinherit(default:inherit)permissionMode: Permission mode (e.g.,"acceptEdits","plan","bypassPermissions")maxTurns: Maximum agentic turns before the subagent stopsskills: List of skill names to preload into agent contextmcpServers: MCP servers for this subagent (server names or inline configs)hooks: Lifecycle hooks scoped to this subagent (PreToolUse,PostToolUse,Stop)memory: Persistent memory scope —user,project, orlocal(seereports/claude-agent-memory.md)background: Set totrueto always run as a background taskisolation: Set to"worktree"to run in a temporary git worktreecolor: CLI output color for visual distinction
Configuration Hierarchy
.claude/settings.local.json: Personal settings (git-ignored).claude/settings.json: Team-shared settingshooks-config.local.jsonoverrideshooks-config.json
Disable Hooks
Set "disableAllHooks": true in .claude/settings.local.json, or disable individual hooks in hooks-config.json.
Workflow Best Practices
From experience with this repository:
- Keep CLAUDE.md under 200 lines per file for reliable adherence
- Use commands for workflows instead of standalone agents
- Create feature-specific subagents with skills (progressive disclosure) rather than general-purpose agents
- Perform manual
/compactat ~50% context usage - Start with plan mode for complex tasks
- Use human-gated task list workflow for multi-step tasks
- Break subtasks small enough to complete in under 50% context
Debugging Tips
- Use
/doctorfor diagnostics - Run long-running terminal commands as background tasks for better log visibility
- Use browser automation MCPs (Claude in Chrome, Playwright, Chrome DevTools) for Claude to inspect console logs
- Provide screenshots when reporting visual issues
Documentation
docs/AGENTS.md: Subagent orchestration troubleshootingorchestration-workflow/orchestration-workflow.md: Weather system flow diagramdocs/COMPARISION.md: Commands vs Agents vs Skills invocation patterns
Reports
reports/claude-in-chrome-v-chrome-devtools-mcp.md: Browser automation MCP comparison (Playwright vs Chrome DevTools vs Claude in Chrome)best-practice/claude-memory.md: CLAUDE.md loading behavior in monorepos (ancestor vs descendant loading)reports/claude-skills-for-larger-mono-repos.md: Skills discovery and loading behavior in monorepos (static vs dynamic discovery)reports/claude-agent-memory.md: Agent memory frontmatter — persistent memory scopes (user, project, local) for subagentsreports/claude-advanced-tool-use.md: Advanced tool use patterns — Programmatic Tool Calling (PTC), Tool Search, Tool Use Examplesreports/claude-usage-and-rate-limits.md: Usage commands (/usage,/extra-usage,/cost), rate limits, and pay-as-you-go overflow billing