After 28 chapters of in-depth analysis, you should have a comprehensive understanding of Claude Code’s architecture. But if you want to look at a specific feature’s implementation in the source code, where should you go?
This index handbook organizes Claude Code’s core source files by functional module, helping you quickly locate what you want to see.
Core Architecture Modules#
Agent Loop Core#
| File Path | Core Class/Function | Description |
|---|
src/core/agent.ts | Agent class | Agent Loop main loop, query-response-handling flow |
src/core/loop.ts | runLoop() | Message loop executor, processes user input and tool results |
src/core/query.ts | processQuery() | Single query processing, tool calls and response generation |
| File Path | Core Class/Function | Description |
|---|
src/tools/base.ts | BaseTool abstract class | Base class for all tools, defines common interface |
src/tools/registry.ts | ToolRegistry | Tool registry, manages available tool list |
src/tools/loader.ts | loadTools() | Dynamic tool module loading |
| File Path | Core Class/Function | Description |
|---|
src/tools/FileReadTool.ts | FileReadTool | File reading, supports offset/limit pagination |
src/tools/FileEditTool.ts | FileEditTool | File editing, enforces read before edit |
src/tools/BashTool.ts | BashTool | Bash command execution, includes Git safety protocol |
src/tools/GrepTool.ts | GrepTool | Code search, based on ripgrep |
src/tools/AgentTool.ts | AgentTool | Spawn sub-agents, supports fork mode |
src/tools/SkillTool.ts | SkillTool | Skill system, budget constraint management |
Context Management#
Auto Compaction#
| File Path | Core Class/Function | Description |
|---|
src/services/compact/compact.ts | compact() | Manual compaction, summary generation |
src/services/compact/autoCompact.ts | autoCompact() | Auto compaction, threshold triggered |
src/services/compact/prompt.ts | Compression prompt template | Defines compression behavior and summary format |
Microcompaction#
| File Path | Core Class/Function | Description |
|---|
src/services/compact/microcompact.ts | microcompact() | Microcompaction implementation, three-mechanism coordination |
src/services/compact/timeCleaner.ts | timeCleaner() | Timestamp cleaner |
src/services/compact/cacheCleaner.ts | cacheCleaner() | Cache-aware cleaner |
Token Budget#
| File Path | Core Class/Function | Description |
|---|
src/constants/toolLimits.ts | DEFAULT_MAX_RESULT_SIZE_CHARS | Tool result size limit (50K) |
src/constants/toolLimits.ts | MAX_TOOL_RESULTS_PER_MESSAGE_CHARS | Single message tool result limit (200K) |
src/utils/tokenEstimator.ts | estimateTokens() | Token estimator, conservative strategy |
Prompt Engineering#
System Prompts#
| File Path | Core Class/Function | Description |
|---|
src/constants/prompts.ts | getSystemPrompt() | System prompt assembly |
src/constants/prompts.ts | getSimpleDoingTasksSection() | Minimalist instruction group |
src/constants/prompts.ts | getGitSafetyProtocol() | Git safety protocol |
Dynamic Boundary#
| File Path | Core Class/Function | Description |
|---|
src/services/prompt/dynamicBoundary.ts | SYSTEM_PROMPT_DYNAMIC_BOUNDARY | Dynamic boundary marker |
src/services/prompt/promptBuilder.ts | buildPrompt() | Prompt builder |
Cache System#
Cache Break Detection#
| File Path | Core Class/Function | Description |
|---|
src/services/api/promptCacheBreakDetection.ts | recordPromptState() | Record prompt state |
src/services/api/promptCacheBreakDetection.ts | checkResponseForCacheBreak() | Detect cache breaks |
src/services/api/promptCacheBreakDetection.ts | perToolHashes | Per-tool independent hashes |
Cache Optimization#
| File Path | Core Class/Function | Description |
|---|
src/services/cache/dateMemoization.ts | getMemoizedDate() | Date memoization, avoid midnight cache breaks |
src/services/cache/schemaCache.ts | schemaCache | Tool Schema cache |
src/services/cache/betaHeaderLatch.ts | afkModeHeaderLatched | Beta Header latch |
Permissions and Security#
Permission System#
| File Path | Core Class/Function | Description |
|---|
src/utils/permissions/types.ts | PermissionMode enum | Permission mode type definitions |
src/utils/permissions/modeResolver.ts | resolvePermissionMode() | Permission mode resolution |
src/utils/permissions/denialTracking.ts | DENIAL_LIMITS | Denial tracking thresholds (3/20) |
src/utils/permissions/denialTracking.ts | shouldFallbackToPrompting() | Fallback determination |
YOLO Classifier#
| File Path | Core Class/Function | Description |
|---|
src/services/classifier/yoloClassifier.ts | YOLOClassifier class | YOLO classifier main class |
src/services/classifier/stage1Fast.ts | stage1Fast() | Stage 1 fast filtering |
src/services/classifier/stage2Deep.ts | stage2Deep() | Stage 2 deep reasoning |
src/services/classifier/whitelist.ts | isWhitelisted() | Whitelist check |
Agent System#
Sub-Agents#
| File Path | Core Class/Function | Description |
|---|
src/agents/base.ts | BaseAgent class | Agent base class |
src/agents/subAgent.ts | SubAgent class | Standard sub-agent implementation |
src/agents/fork.ts | forkAgent() | Fork mode, inherits context |
Coordinator Mode#
| File Path | Core Class/Function | Description |
|---|
src/agents/coordinator.ts | CoordinatorAgent class | Coordinator Agent |
src/agents/coordinatorPrompt.ts | Coordinator prompt | “Never delegate understanding” |
src/agents/worker.ts | WorkerAgent class | Worker Agent |
Agent Lifecycle#
| File Path | Core Class/Function | Description |
|---|
src/agents/lifecycle.ts | registerAsyncAgent() | Register background Agent |
src/agents/lifecycle.ts | completeAsyncAgent() | Mark Agent complete |
src/agents/lifecycle.ts | enqueueAgentNotification() | Result notification injection |
Memory System#
Memdir Core#
| File Path | Core Class/Function | Description |
|---|
src/memory/memdir.ts | Memdir class | Memory directory management |
src/memory/memdir.ts | MEMORY_FILENAME | MEMORY.md index file |
| File Path | Core Class/Function | Description |
|---|
src/memory/extractMemories.ts | extractMemories() | Automatic memory extraction |
src/memory/extractAgent.ts | ExtractAgent | Extraction-specific Agent |
Auto-Dream#
| File Path | Core Class/Function | Description |
|---|
src/memory/autoDream.ts | autoDream() | Automatic overnight consolidation |
src/memory/consolidator.ts | ConsolidatorAgent | Consolidator Agent |
src/memory/lock.ts | acquireConsolidateLock() | PID lock mechanism |
Session Memory#
| File Path | Core Class/Function | Description |
|---|
src/memory/sessionMemory.ts | SessionMemory class | Session summary management |
src/memory/sessionMemory.ts | summarizeSession() | Session summary generation |
Hooks System#
Hooks Core#
| File Path | Core Class/Function | Description |
|---|
src/hooks/registry.ts | HookRegistry | Hook registry |
src/hooks/dispatcher.ts | dispatchHook() | Hook dispatcher |
src/hooks/types.ts | HookType enum | Hook type definitions |
Specific Hook Implementations#
| File Path | Event Name | Trigger Timing |
|---|
src/hooks/commandHooks.ts | before:command | Before command execution |
src/hooks/commandHooks.ts | after:command | After command execution |
src/hooks/agentHooks.ts | before:agent | Before Agent call |
src/hooks/agentHooks.ts | after:agent | After Agent call |
src/hooks/httpHooks.ts | before:http | Before HTTP request |
src/hooks/httpHooks.ts | after:http | After HTTP response |
Skills System#
Skills Core#
| File Path | Core Class/Function | Description |
|---|
src/skills/registry.ts | SkillRegistry | Skills registry |
src/skills/loader.ts | loadSkill() | Skills loader |
src/skills/types.ts | Skill interface | Skill type definitions |
Skills Storage#
| File Path | Core Class/Function | Description |
|---|
src/skills/storage.ts | getSkillStoragePath() | Get skill storage path |
src/skills/storage.ts | loadSkillManifest() | Load skill manifest |
Feature Flags#
Flag Definitions#
| File Path | Core Class/Function | Description |
|---|
src/featureFlags/flags.ts | feature() function | Build-time Flag check |
src/featureFlags/flags.ts | KAIROS | KAIROS mode Flag |
src/featureFlags/flags.ts | TRANSCRIPT_CLASSIFIER | Classifier Flag |
Remote Configuration#
| File Path | Core Class/Function | Description |
|---|
src/featureFlags/remote.ts | getRemoteFlag() | Get remote Flag value |
src/featureFlags/growthbook.ts | GrowthBookClient | GrowthBook client |
Configuration and Settings#
Configuration Files#
| File Path | Purpose | Description |
|---|
CLAUDE.md | Project-level config | Coding standards, architecture constraints |
.claude/settings.json | User settings | Personal preferences, feature toggles |
.claude/settings.local.json | Local settings | Machine-specific configuration |
Settings Management#
| File Path | Core Class/Function | Description |
|---|
src/settings/loader.ts | loadSettings() | Settings loader |
src/settings/validator.ts | validateSettings() | Settings validator |
src/settings/types.ts | Settings interface | Settings type definitions |
Utility Modules#
Git Operations#
| File Path | Core Class/Function | Description |
|---|
src/utils/git/status.ts | getGitStatus() | Get Git status |
src/utils/git/diff.ts | getGitDiff() | Get Git diff |
src/utils/git/worktree.ts | createWorktree() | Create git worktree |
File Operations#
| File Path | Core Class/Function | Description |
|---|
src/utils/file/reader.ts | readFile() | File reading, pagination support |
src/utils/file/writer.ts | writeFile() | File writing |
src/utils/file/watcher.ts | FileWatcher | File change listener |
Network Requests#
| File Path | Core Class/Function | Description |
|---|
src/utils/http/client.ts | HttpClient | HTTP client |
src/utils/http/retry.ts | retryRequest() | Request retry logic |
Quick Lookup Index#
Lookup by Function#
| You want to understand… | Start here |
|---|
| How Agent Loop works | src/core/agent.ts, src/core/loop.ts |
| How tools are defined | src/tools/base.ts, tool files |
| How context is compressed | src/services/compact/ directory |
| How token budget is calculated | src/constants/toolLimits.ts |
| How system prompts are assembled | src/constants/prompts.ts |
| How cache is optimized | src/services/cache/ directory |
| How permissions are judged | src/utils/permissions/ directory |
| How YOLO classifier works | src/services/classifier/ directory |
| How sub-agents are spawned | src/agents/subAgent.ts |
| How Fork mode is implemented | src/agents/fork.ts |
| How memory is stored | src/memory/memdir.ts |
| How auto extraction works | src/memory/extractMemories.ts |
| How Auto-Dream is triggered | src/memory/autoDream.ts |
| How Hooks are used | src/hooks/ directory |
| How skills are loaded | src/skills/ directory |
| How Feature Flags are defined | src/featureFlags/flags.ts |
| How settings are read | src/settings/loader.ts |
Lookup by Problem#
| You have this problem… | Check these files |
|---|
| Why read before edit | src/tools/FileEditTool.ts |
| Why Git operations have safety limits | src/tools/BashTool.ts prompts |
| How to restore files after compaction | src/services/compact/compact.ts |
| Why token estimation is conservative | src/utils/tokenEstimator.ts |
| Why cache breaks | src/services/api/promptCacheBreakDetection.ts |
| Why classifier denies | src/services/classifier/yoloClassifier.ts |
| Why coordinator doesn’t code | src/agents/coordinatorPrompt.ts |
| Why memory doesn’t work | src/memory/memdir.ts, src/memory/extractMemories.ts |
| Why Hooks don’t trigger | src/hooks/dispatcher.ts |
Usage Suggestions#
Recommended Order for Reading Source Code#
- First look at interface definitions:
types.ts files to understand data structures and contracts - Then look at main flow: Core class entry methods, grasp overall logic
- Finally look at details: Specific implementations, edge cases, error handling
Debugging Tips#
- Environment variables:
CLAUDE_CODE_DEBUG=1 to enable debug logging - Log location:
~/.claude/logs/ for detailed logs - API logs:
CLAUDE_CODE_DUMP_AUTO_MODE=1 to export classifier input/output
Contributing Code#
- Coding standards: Refer to project standards in
CLAUDE.md - Test requirements: Core module changes require accompanying tests
- Documentation sync: Code changes sync related documentation updates
This index handbook covers Claude Code’s main source files. As versions iterate, file paths may change, but core architecture and design philosophy remain stable. Recommend bookmarking for quick reference when needed.