Agent skill

claude-code-skill

Development conventions and architecture guide for the Claude Code CLI repository.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/claude-code-codeaashu-claude-code

SKILL.md

Claude Code — Repository Skill

Project Overview

Claude Code is Anthropic's CLI tool for interacting with Claude from the terminal. It supports file editing, shell commands, git workflows, code review, multi-agent coordination, IDE integration (VS Code, JetBrains), and Model Context Protocol (MCP).

Codebase: ~1,900 files, 512,000+ lines of TypeScript under src/.

Tech Stack

Component Technology
Language TypeScript (strict mode, ES modules)
Runtime Bun (JSX support, bun:bundle feature flags)
Terminal UI React + Ink (React for CLI)
CLI Parser Commander.js (@commander-js/extra-typings)
API Client @anthropic-ai/sdk
Validation Zod v4
Linter/Formatter Biome
Analytics GrowthBook (feature flags & A/B testing)
Protocol Model Context Protocol (MCP)

Architecture

Directory Map (src/)

Directory Purpose
commands/ ~50 slash commands (/commit, /review, /config, etc.)
tools/ ~40 agent tools (Bash, FileRead, FileWrite, Glob, Grep, etc.)
components/ ~140 Ink/React UI components for terminal rendering
services/ External integrations (API, OAuth, MCP, LSP, analytics, plugins)
bridge/ Bidirectional IDE communication layer
state/ React context + custom store (AppState)
hooks/ React hooks (permissions, keybindings, commands, settings)
types/ TypeScript type definitions
utils/ Utilities (shell, file ops, permissions, config, git)
screens/ Full-screen UIs (Doctor, REPL, Resume, Compact)
skills/ Bundled skills + skill loader system
plugins/ Plugin system (marketplace + bundled plugins)
coordinator/ Multi-agent coordination & supervisor logic
tasks/ Task management (shell tasks, agent tasks, teammates)
context/ React context providers (notifications, stats, FPS)
memdir/ Persistent memory system (CLAUDE.md, user/project memory)
entrypoints/ Initialization logic, Agent SDK, MCP entry
voice/ Voice input/output (STT, keyterms)
vim/ Vim mode keybinding support
schemas/ Zod configuration schemas
keybindings/ Keybinding configuration & resolver
migrations/ Config migrations between versions
outputStyles/ Output formatting & theming
query/ Query pipeline & processing
server/ Server/daemon mode
remote/ Remote session handling

Key Files

File Role
src/main.tsx CLI entry point (Commander parser, startup profiling)
src/QueryEngine.ts Core LLM API caller (streaming, tool-call loops)
src/Tool.ts Tool type definitions & buildTool factory
src/tools.ts Tool registry & presets
src/commands.ts Command registry
src/context.ts System/user context collection (git status, memory)
src/cost-tracker.ts Token cost tracking

Entry Points & Initialization Sequence

  1. src/main.tsx — Commander CLI parser, startup profiling
  2. src/entrypoints/init.ts — Config, telemetry, OAuth, MDM
  3. src/entrypoints/cli.tsx — CLI session orchestration
  4. src/entrypoints/mcp.ts — MCP server mode
  5. src/entrypoints/sdk/ — Agent SDK (programmatic API)
  6. src/replLauncher.tsx — REPL session launcher

Startup performs parallel initialization: MDM policy reads, Keychain prefetch, feature flag checks, then core init.

Patterns & Conventions

Tool Definition

Each tool lives in src/tools/{ToolName}/ and uses buildTool:

typescript
export const MyTool = buildTool({
  name: 'MyTool',
  aliases: ['my_tool'],
  description: 'What this tool does',
  inputSchema: z.object({
    param: z.string(),
  }),
  async call(args, context, canUseTool, parentMessage, onProgress) {
    // Execute and return { data: result, newMessages?: [...] }
  },
  async checkPermissions(input, context) { /* Permission checks */ },
  isConcurrencySafe(input) { /* Can run in parallel? */ },
  isReadOnly(input) { /* Non-destructive? */ },
  prompt(options) { /* System prompt injection */ },
  renderToolUseMessage(input, options) { /* UI for invocation */ },
  renderToolResultMessage(content, progressMessages, options) { /* UI for result */ },
})

Directory structure per tool: {ToolName}.ts or .tsx (main), UI.tsx (rendering), prompt.ts (system prompt), plus utility files.

Command Definition

Commands live in src/commands/ and follow three types:

  • PromptCommand — Sends a formatted prompt with injected tools (most commands)
  • LocalCommand — Runs in-process, returns text
  • LocalJSXCommand — Runs in-process, returns React JSX
typescript
const command = {
  type: 'prompt',
  name: 'my-command',
  description: 'What this command does',
  progressMessage: 'working...',
  allowedTools: ['Bash(git *)', 'FileRead(*)'],
  source: 'builtin',
  async getPromptForCommand(args, context) {
    return [{ type: 'text', text: '...' }]
  },
} satisfies Command

Commands are registered in src/commands.ts and invoked via /command-name in the REPL.

Component Structure

  • Functional React components with Ink primitives (Box, Text, useInput())
  • Styled with Chalk for terminal colors
  • React Compiler for optimized re-renders
  • Design system primitives in src/components/design-system/

State Management

  • AppState via React context + custom store (src/state/AppStateStore.ts)
  • Mutable state object passed to tool contexts
  • Selector functions for derived state
  • Change observers in src/state/onChangeAppState.ts

Permission System

  • Modes: default (prompt per operation), plan (show plan, ask once), bypassPermissions (auto-approve), auto (ML classifier)
  • Rules: Wildcard patterns — Bash(git *), FileEdit(/src/*)
  • Tools implement checkPermissions() returning { granted: boolean, reason?, prompt? }

Feature Flags & Build

Bun's bun:bundle feature flags enable dead-code elimination at build time:

typescript
import { feature } from 'bun:bundle'
if (feature('PROACTIVE')) { /* proactive agent tools */ }

Notable flags: PROACTIVE, KAIROS, BRIDGE_MODE, VOICE_MODE, COORDINATOR_MODE, DAEMON, WORKFLOW_SCRIPTS.

Some features are also gated via process.env.USER_TYPE === 'ant'.

Naming Conventions

Element Convention Example
Files PascalCase (exports) or kebab-case (commands) BashTool.tsx, commit-push-pr.ts
Components PascalCase App.tsx, PromptInput.tsx
Types PascalCase, suffix with Props/State/Context ToolUseContext
Hooks use prefix useCanUseTool, useSettings
Constants SCREAMING_SNAKE_CASE MAX_TOKENS, DEFAULT_TIMEOUT_MS

Import Practices

  • ES modules with .js extensions (Bun convention)
  • Lazy imports for circular dependency breaking: const getModule = () => require('./heavy.js')
  • Conditional imports via feature flags or process.env
  • biome-ignore markers for manual import ordering where needed

Services

Service Path Purpose
API services/api/ Anthropic SDK client, file uploads
MCP services/mcp/ MCP client, tool/resource discovery
OAuth services/oauth/ OAuth 2.0 auth flow
LSP services/lsp/ Language Server Protocol manager
Analytics services/analytics/ GrowthBook, telemetry, events
Plugins services/plugins/ Plugin loader, marketplace
Compact services/compact/ Context compression
Policy Limits services/policyLimits/ Org rate limits, quota checking
Remote Settings services/remoteManagedSettings/ Managed settings sync (Enterprise)
Token Estimation services/tokenEstimation.ts Token count estimation

Configuration

Settings locations:

  • Global: ~/.claude/config.json, ~/.claude/settings.json
  • Project: .claude/config.json, .claude/settings.json
  • System: macOS Keychain + MDM, Windows Registry + MDM
  • Managed: Remote sync for Enterprise users

Guidelines

  1. Read relevant source files before making changes — understand existing patterns first.
  2. Follow the tool/command/component patterns above when adding new ones.
  3. Keep edits minimal and focused — avoid unnecessary refactoring.
  4. Use Zod for all input validation at system boundaries.
  5. Gate experimental features behind bun:bundle feature flags or env checks.
  6. Respect the permission system — tools that modify state must implement checkPermissions().
  7. Use lazy imports when adding dependencies that could create circular references.
  8. Update this file as project conventions evolve.

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results