Files
claude-code/.github/copilot-instructions.md
2026-03-31 10:22:34 +00:00

67 lines
3.5 KiB
Markdown

# Claude Code CLI — Agent Instructions
## What This Is
This is the **leaked source code** of Anthropic's Claude Code CLI (leaked 2026-03-31). It is a read-only reference codebase — there is no build system, no tests, and no package.json included. Treat it as a study/exploration resource.
- **Language**: TypeScript / TSX
- **Runtime**: Bun (not Node.js)
- **Terminal UI**: React + Ink (React for CLI)
- **Scale**: ~1,900 files, 512,000+ lines across `src/`
## Architecture
### Core Pipeline
1. **Entrypoint**`src/main.tsx`: Commander.js CLI parser, service initialization, lazy feature loading via Bun feature flags
2. **Query Engine**`src/QueryEngine.ts` (~46K lines): LLM API call handler — streaming, tool loops, thinking mode, retries, token counting
3. **Tool System**`src/Tool.ts` (~29K lines) + `src/tools/`: ~50 tools (BashTool, FileEditTool, AgentTool, etc.), each self-contained with input schema, permissions, and execution logic
4. **Command System**`src/commands.ts` (~25K lines) + `src/commands/`: ~50 slash commands (`/commit`, `/review`, `/config`, etc.)
5. **Context**`src/context.ts`: Collects OS, shell, git, and user context for prompt construction
### Key Subsystems
| Directory | Purpose |
|-----------|---------|
| `src/bridge/` | IDE integration layer (VS Code, JetBrains) — bidirectional messaging, JWT auth, session management |
| `src/coordinator/` | Multi-agent orchestration |
| `src/services/` | External integrations — Anthropic API, MCP, OAuth, LSP, analytics, plugins |
| `src/hooks/` | React hooks including `toolPermission/` for per-tool permission checks |
| `src/components/` | ~140 Ink UI components |
| `src/plugins/` | Plugin system |
| `src/skills/` | Skill system |
| `src/tasks/` | Task management |
| `src/types/` | Centralized TypeScript type definitions |
| `src/utils/` | Shared utilities |
| `src/schemas/` | Zod-based config schemas |
| `src/memdir/` | Persistent memory directory |
| `src/voice/` | Voice input |
| `src/vim/` | Vim mode |
| `src/buddy/` | Companion sprite (Easter egg) |
### Feature Flags (Dead Code Elimination)
Bun strips inactive code at build time via `import { feature } from 'bun:bundle'`. Notable flags: `PROACTIVE`, `KAIROS`, `BRIDGE_MODE`, `DAEMON`, `VOICE_MODE`, `AGENT_TRIGGERS`, `MONITOR_TOOL`, `COORDINATOR_MODE`.
## Code Style & Conventions
- **Imports**: ESM with explicit `.js` extensions (e.g., `from './commands.js'`)
- **Files/Dirs**: kebab-case (`commit-push-pr.ts`, `add-dir/`)
- **Classes/Components**: PascalCase (`BashTool`, `QueryEngine`)
- **Functions**: camelCase (`getCommands()`, `getAllTools()`)
- **Constants**: UPPER_SNAKE_CASE (`ALLOWED_TOOLS`, `FRAME_INTERVAL_MS`)
- **Linter**: Biome (not ESLint). Look for `biome-ignore` directives
- **Ant-only code**: Some imports/features are gated behind `process.env.USER_TYPE === 'ant'` (Anthropic internal)
- **Index pattern**: Features export via `index.ts` files
## Navigation Tips
- **Find a tool**: Look in `src/tools/<ToolName>/` — each tool is a directory with its implementation, UI, and permissions co-located
- **Find a command**: Look in `src/commands/<command-name>/` or `src/commands/<command-name>.ts`
- **Understand permissions**: Start at `src/hooks/toolPermission/`
- **Trace an API call**: Start at `src/QueryEngine.ts``src/services/api/`
- **Understand types**: Centralized in `src/types/`, tool-specific types in `src/Tool.ts`
- **Follow the bridge**: IDE integration starts at `src/bridge/bridgeMain.ts`
- **MCP integration**: `src/services/mcp/`