SKILL.md 8.3 KB


name: "codegraph"

description: CodeGraph — 预构建的代码知识图谱 MCP 工具集。为 AI 编程智能体提供语义级代码理解:一次调用获取符号源码、调用链路、影响范围和全文本搜索。支持 35+ 语言、17+ Web 框架路由识别、iOS/RN 跨语言桥接。自动同步文件变更。用于架构理解、代码搜索、变更影响分析、跨文件流程追踪等场景。

CodeGraph

CodeGraph is a pre-indexed code knowledge graph + MCP server. It parses your codebase with tree-sitter (backed by a native Rust kernel), stores every symbol, edge, and file in SQLite (FTS5), and exposes it to AI agents through MCP tools. Auto-syncs on file changes.

Repo: https://github.com/colbymchenry/codegraph Version: 1.5.0+


Quick Start

1. Install CodeGraph CLI

# Via npm (any platform)
npm i -g @colbymchenry/codegraph

# Or via installer (no Node.js required):
#   macOS/Linux: curl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh
#   Windows: irm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex

2. Wire up your agent

codegraph install

Auto-detects and configures: Claude Code, Cursor, Codex CLI, OpenCode, Hermes Agent, Gemini CLI, Antigravity IDE, Kiro.

3. Initialize a project

cd your-project
codegraph init

Creates .codegraph/ directory and builds the full knowledge graph.


MCP Tools

CodeGraph exposes the following MCP tools when running as codegraph serve --mcp:

codegraph_explore (PRIMARY — call first)

Answer almost any question in one call: "how does X work", a flow ("how does X reach Y"), or surveying an area.

Input: {
  query: string          // Symbol names, file names, or natural language
  projectPath?: string   // Path to indexed project (default: cwd)
  maxFiles?: number      // Max files to include
}
Output: Symbols' verbatim source grouped by file + call paths + blast radius

codegraph_node

Two modes:

  1. Read a file — pass file (path or basename) without symbol → returns line-numbered source (Read-equivalent)
  2. One symbol — returns location, signature, source, caller/callee trail

    Input: {
    symbol?: string        // Symbol name (qualified or short)
    file?: string          // File path or basename
    line?: number          // Line number (disambiguation)
    includeCode?: boolean  // Include source code (default: true)
    projectPath?: string
    }
    

codegraph_search

Quick symbol search by name. Returns locations only (no code).

Input: {
  query: string          // Symbol name to search
  kind?: string          // Filter by node kind (class, function, etc.)
  limit?: number         // Max results
  projectPath?: string
}

codegraph_callers / codegraph_callees

Find what calls a function / what a function calls.

Input: {
  symbol: string         // Symbol name
  limit?: number
  projectPath?: string
}

codegraph_impact

List symbols affected by changing a symbol.

Input: {
  symbol: string         // Symbol to analyze
  depth?: number         // Traversal depth (default: 2)
  projectPath?: string
}

codegraph_files

Show file structure of the indexed project.

Input: {
  format?: "tree" | "list"
  filter?: string        // Glob pattern
  maxDepth?: number
  projectPath?: string
}

codegraph_status

Check if a project is indexed and see its statistics.

Input: {
  projectPath?: string   // If omitted, checks the current project
}

CLI Commands

codegraph                         # Interactive installer
codegraph install                 # Wire up agents
codegraph uninstall               # Remove CodeGraph from agents + CLI
codegraph init [path]             # Initialize + build graph
codegraph uninit [path]           # Remove CodeGraph from project
codegraph index [path]            # Full re-index
codegraph sync [path]             # Incremental sync
codegraph status [path]           # Show index statistics
codegraph unlock [path]           # Remove stale lock file
codegraph query <search>          # Search symbols
codegraph explore <query>         # CLI equivalent of codegraph_explore
codegraph node <symbol|file>      # CLI equivalent of codegraph_node
codegraph callers <symbol>        # Find callers
codegraph callees <symbol>        # Find callees
codegraph impact <symbol>         # Impact analysis
codegraph affected [files...]     # Find affected test files
codegraph daemon                  # Manage background daemons
codegraph upgrade [version]       # Update to latest
codegraph version                 # Print version
codegraph help [command]          # Show help

codegraph affected

Trace import dependencies to find which test files are affected by changes:

codegraph affected src/utils.ts src/api.ts
git diff --name-only | codegraph affected --stdin
codegraph affected src/auth.ts --filter "e2e/*"

Configuration

Zero-config by default. Optional codegraph.json at project root:

{
  "exclude": ["static/", "**/vendor/**"],
  "include": ["Tools/", "Local/typescript/"],
  "extensions": {
    ".dota_lua": "lua",
    ".tpl": "php"
  }
}

Environment Variables

Variable Purpose
CODEGRAPH_WATCH_DEBOUNCE_MS File watcher debounce (clamped 100ms–60s, default 2000ms)
CODEGRAPH_MCP_TOOLS Re-enable hidden tools: explore,node,search,callers
CODEGRAPH_EXPLORE_LINENUMS Set to 0 to disable line numbers
CODEGRAPH_NO_DAEMON Disable background daemon (sandboxed environments)
CODEGRAPH_TELEMETRY Set to 0 to disable telemetry
DO_NOT_TRACK Also disables telemetry
CODEGRAPH_DAEMON_IDLE_TIMEOUT_MS Daemon idle timeout

Key Features

  • 35+ Languages: TypeScript, JavaScript, Python, Go, Rust, Java, C#, PHP, Ruby, C/C++, Swift, Kotlin, Scala, Dart, Lua, and more
  • 17+ Framework Routes: Django, Flask, FastAPI, Express, NestJS, Laravel, Rails, Spring, Gin, ASP.NET, Vapor, React Router, SvelteKit, Vue/Nuxt, Astro
  • Cross-language Bridging: Swift ↔ ObjC, React Native (legacy bridge, TurboModules, Fabric, Paper), Expo Modules
  • Dynamic Dispatch: Callbacks, React re-render, interface→impl, JSX children — edges grep can't follow
  • Auto-sync: Native file watcher (FSEvents/inotify/RDCW) with debounced re-index
  • 100% Local: SQLite database, no data leaves your machine
  • Benchmark: 89% fewer tool calls, 60% cheaper, 69% fewer tokens vs. unassisted agent (validated on 7 repos)

Agent Usage Guidance

When CodeGraph's MCP server is active:

  1. Call codegraph_explore FIRST for any structural/flow question — it returns verbatim source grouped by file, call paths, and blast radius. Usually the only call needed.

  2. Treat returned source as already Read — do NOT re-open those files with the Read tool.

  3. For a flow question ("how does X reach Y"), name the symbols spanning the flow in the query (e.g. mutateElement renderScene). CodeGraph surfaces the path between them, including dynamic-dispatch hops.

  4. For reading a file or symbol, use codegraph_explore with its name/path — you get line-numbered source (safe to Edit from) plus impact info.

  5. Don't grep then Read — one codegraph_explore replaces the entire search+read loop.

  6. After edits, check the staleness banner — files listed as pending need a direct Read; everything else is fresh.

  7. Monorepo support: pass projectPath to query a specific sub-project that has a .codegraph/ index.


Supported Languages

TypeScript (.ts, .tsx), JavaScript (.js, .jsx, .mjs), ArkTS (.ets), Python (.py), Go (.go), Rust (.rs), Java (.java), C# (.cs), PHP (.php), Ruby (.rb), C (.c, .h), C++ (.cpp, .hpp, .cc), Objective-C (.m, .mm, .h), Metal (.metal), CUDA (.cu, .cuh), Swift (.swift), Kotlin (.kt, .kts), Scala (.scala, .sc), Dart (.dart), Svelte (.svelte), Vue (.vue), Astro (.astro), Liquid (.liquid), Pascal/Delphi (.pas, .dpr, .dpk, .lpr), Lua (.lua), R (.R, .r), Luau (.luau), CFML (.cfc, .cfm, .cfs), COBOL (.cbl, .cob, .cpy), VB.NET (.vb), Erlang (.erl, .hrl, .escript), Solidity (.sol), Terraform/OpenTofu (.tf, .tfvars, .tofu), Nix (.nix).