-
Notifications
You must be signed in to change notification settings - Fork 2
feat(codegraph): add CodeGraph local code-intelligence plugin #212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| { | ||
| "name": "codegraph", | ||
| "version": "1.0.1", | ||
| "description": "Local-first code intelligence for AI agents (MCP) - query a pre-indexed knowledge graph of symbols, call graphs, and code structure instead of scanning files", | ||
| "author": { | ||
| "name": "Colby McHenry", | ||
| "url": "https://github.com/colbymchenry" | ||
| }, | ||
| "homepage": "https://github.com/colbymchenry/codegraph", | ||
| "repository": "https://github.com/colbymchenry/codegraph", | ||
| "license": "MIT", | ||
| "keywords": ["code-intelligence", "knowledge-graph", "code-navigation", "semantic-search", "local-first"], | ||
| "mcpServers": { | ||
| "codegraph": { | ||
| "type": "stdio", | ||
| "command": "npx", | ||
| "args": ["-y", "@colbymchenry/codegraph", "serve", "--mcp"] | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| { | ||
| "name": "codegraph", | ||
| "version": "1.0.1", | ||
| "description": "Local-first code intelligence for AI agents (MCP) - query a pre-indexed knowledge graph of symbols, call graphs, and code structure instead of scanning files", | ||
| "author": { | ||
| "name": "Colby McHenry", | ||
| "url": "https://github.com/colbymchenry" | ||
| }, | ||
| "interface": { | ||
| "displayName": "Codegraph", | ||
| "shortDescription": "Local-first code intelligence for AI agents (MCP) - query a pre-indexed knowledge graph of symbols, call graphs, and code structure instead of scanning files", | ||
| "longDescription": "Local-first code intelligence for AI agents (MCP) - query a pre-indexed knowledge graph of symbols, call graphs, and code structure instead of scanning files", | ||
| "developerName": "Colby McHenry", | ||
| "category": "Development", | ||
| "capabilities": [ | ||
| "Tool" | ||
| ], | ||
| "defaultPrompt": [ | ||
| "Use Codegraph for my current task." | ||
| ], | ||
| "websiteURL": "https://github.com/colbymchenry/codegraph" | ||
| }, | ||
| "homepage": "https://github.com/colbymchenry/codegraph", | ||
| "repository": "https://github.com/colbymchenry/codegraph", | ||
| "license": "MIT", | ||
| "keywords": [ | ||
| "code-intelligence", | ||
| "knowledge-graph", | ||
| "code-navigation", | ||
| "semantic-search", | ||
| "local-first" | ||
| ], | ||
| "mcpServers": "./.mcp.json" | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "mcpServers": { | ||
| "codegraph": { | ||
| "type": "stdio", | ||
| "command": "npx", | ||
| "args": [ | ||
| "-y", | ||
| "@colbymchenry/codegraph", | ||
| "serve", | ||
| "--mcp" | ||
| ] | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "description": "Inject CodeGraph navigation guidance at session start when the repo is indexed (a .codegraph/ directory exists)", | ||
| "hooks": { | ||
| "SessionStart": [ | ||
| { | ||
| "matcher": "startup", | ||
| "hooks": [ | ||
| { | ||
| "type": "command", | ||
| "command": "${CLAUDE_PLUGIN_ROOT}/hooks/context.sh", | ||
| "timeout": 10 | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
| } | ||
| } | ||
|
amondnet marked this conversation as resolved.
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| #!/usr/bin/env bash | ||
| # Emit CodeGraph navigation guidance ONLY when the current project is indexed | ||
| # (a `.codegraph/` directory exists at the repo root). In an unindexed repo we | ||
| # stay silent — indexing is the user's decision, and an unconditional "this | ||
| # repo is indexed" claim would send subagents into failing codegraph calls. | ||
| # | ||
| # The wording mirrors CodeGraph's own marker-fenced instructions block, which | ||
| # exists because the MCP server's `initialize` instructions reach only the main | ||
| # agent — Task-tool subagents and non-MCP harnesses see this context instead. | ||
|
|
||
| # Locate the indexed root. A SessionStart hook usually runs at the repo root, | ||
| # but if the session starts in a subdirectory (common in monorepos) a bare CWD | ||
| # check would miss a `.codegraph/` at the root. Prefer the git repo root, fall | ||
| # back to an upward walk for `.codegraph/`, then the CWD. | ||
| root="$(git rev-parse --show-toplevel 2>/dev/null)" | ||
| if [ -z "$root" ]; then | ||
| dir="$PWD" | ||
| while [ "$dir" != "/" ]; do | ||
|
Check failure on line 18 in plugins/codegraph/hooks/context.sh
|
||
| if [ -d "$dir/.codegraph" ]; then | ||
|
Check failure on line 19 in plugins/codegraph/hooks/context.sh
|
||
| root="$dir" | ||
| break | ||
| fi | ||
| dir="$(dirname "$dir")" | ||
| done | ||
| fi | ||
| : "${root:=$PWD}" | ||
|
|
||
| if [ ! -d "$root/.codegraph" ]; then | ||
|
Check failure on line 28 in plugins/codegraph/hooks/context.sh
|
||
| exit 0 | ||
| fi | ||
|
|
||
| cat <<'EOF' | ||
| ## CodeGraph | ||
|
|
||
| This repository is indexed by CodeGraph (a `.codegraph/` directory exists). Reach for it BEFORE grep/find or reading files when you need to understand or locate code: | ||
|
|
||
| - **MCP tools** (when available): `codegraph_explore` answers most code questions in one call — the relevant symbols' verbatim source plus the call paths between them. `codegraph_node` returns one symbol's source + callers, or reads a whole file with line numbers. If the tools are listed but deferred, load them by name via tool search. | ||
| - **Shell** (no MCP client needed): `npx -y @colbymchenry/codegraph explore "<symbol names or question>"` and `npx -y @colbymchenry/codegraph node <symbol-or-file>` print the same output — portable even without a global `codegraph` install (drop the `npx -y @colbymchenry/` prefix if the CLI is on your PATH). | ||
| EOF | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
|
amondnet marked this conversation as resolved.
|
||
| "description": "Inject CodeGraph navigation guidance at session start when the repo is indexed (a .codegraph/ directory exists)", | ||
| "hooks": { | ||
| "SessionStart": [ | ||
| { | ||
| "matcher": "startup", | ||
| "hooks": [ | ||
| { | ||
| "type": "command", | ||
| "command": "${CLAUDE_PLUGIN_ROOT}/hooks/context.sh", | ||
| "timeout": 10 | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
|
amondnet marked this conversation as resolved.
|
||
| "mcpServers": { | ||
| "codegraph": { | ||
| "type": "stdio", | ||
| "command": "npx", | ||
| "args": [ | ||
| "-y", | ||
| "@colbymchenry/codegraph", | ||
| "serve", | ||
| "--mcp" | ||
| ] | ||
| } | ||
| } | ||
| } | ||
|
amondnet marked this conversation as resolved.
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| { | ||
| "name": "codegraph", | ||
| "version": "1.0.1", | ||
| "description": "Local-first code intelligence for AI agents (MCP) - query a pre-indexed knowledge graph of symbols, call graphs, and code structure instead of scanning files", | ||
| "author": { | ||
| "name": "Colby McHenry", | ||
| "url": "https://github.com/colbymchenry" | ||
| }, | ||
| "homepage": "https://github.com/colbymchenry/codegraph", | ||
| "repository": "https://github.com/colbymchenry/codegraph", | ||
| "license": "MIT", | ||
| "keywords": [ | ||
| "code-intelligence", | ||
| "knowledge-graph", | ||
| "code-navigation", | ||
| "semantic-search", | ||
| "local-first" | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| --- | ||
| name: Navigating Codebases with CodeGraph | ||
| description: Query a pre-indexed knowledge graph of a codebase (symbols, call graphs, dependencies, impact) instead of scanning files with grep/glob/Read. Use when exploring an unfamiliar codebase, tracing who calls or is called by a function, assessing the blast radius of a change, finding where a symbol is defined or used, or answering architecture questions. Triggers on mentions of code navigation, call graph, callers, callees, impact analysis, symbol search, or understanding code structure. | ||
| allowed-tools: mcp__codegraph__codegraph_search, mcp__codegraph__codegraph_explore, mcp__codegraph__codegraph_callers, mcp__codegraph__codegraph_callees, mcp__codegraph__codegraph_impact, mcp__codegraph__codegraph_node, mcp__codegraph__codegraph_status, mcp__codegraph__codegraph_files | ||
| --- | ||
|
|
||
| # CodeGraph - Local Code Intelligence | ||
|
|
||
| CodeGraph gives you a pre-indexed knowledge graph of the current project — symbol | ||
| relationships, call graphs, and code structure — so you can answer questions | ||
| instantly instead of consuming tokens scanning files with grep, glob, and Read. | ||
|
|
||
| ## When to Use | ||
|
|
||
| **First check:** CodeGraph applies only in repositories it has indexed — a | ||
| `.codegraph/` directory exists at the repo root. If there is no `.codegraph/` | ||
| directory, skip CodeGraph entirely; indexing is the user's decision (suggest | ||
| `codegraph init` only if they want it). | ||
|
|
||
| In an indexed repo, reach for CodeGraph **before** grep/find or reading files when | ||
| you need to understand or locate code: | ||
|
|
||
| - **Explore / answer most code questions** in one call → `codegraph_explore` | ||
| (returns the relevant symbols' verbatim source plus the call paths between them) | ||
| - **Inspect one symbol** (source + callers) or read a whole file with line numbers | ||
| → `codegraph_node` | ||
| - **Search** for a symbol, type, or concept by name/intent → `codegraph_search` | ||
| - **Trace callers** — who invokes this function/method? → `codegraph_callers` | ||
| - **Trace callees** — what does this function call? → `codegraph_callees` | ||
| - **Assess impact / blast radius** of changing a symbol → `codegraph_impact` | ||
| - **List indexed files** in the project → `codegraph_files` | ||
| - **Check index health / freshness** → `codegraph_status` | ||
|
|
||
| ## How to Use | ||
|
|
||
| 1. For broad questions ("how does X work?", "where is auth handled?"), start with | ||
| `codegraph_explore` — it answers most code questions in a single call. | ||
| 2. To navigate relationships from a known symbol, use `codegraph_node`, then | ||
| `codegraph_callers` / `codegraph_callees`. | ||
| 3. Before refactoring or renaming, run `codegraph_impact` to find everything affected. | ||
| 4. If the MCP tools are listed but deferred, load them by name via tool search. | ||
| 5. **Shell fallback (no MCP client needed):** `npx -y @colbymchenry/codegraph explore "<symbols or question>"` | ||
| and `npx -y @colbymchenry/codegraph node <symbol-or-file>` print the same output as | ||
| the MCP tools — portable even without a global `codegraph` install (drop the | ||
| `npx -y @colbymchenry/` prefix if the CLI is on your PATH). | ||
| 6. If a tool response shows a `⚠️` staleness banner naming a file, `Read` that file | ||
| directly for live content — it was edited within the sync debounce window. | ||
|
|
||
| ## Important Notes | ||
|
|
||
| - **Indexing is per-project**, signalled by the `.codegraph/` directory. No | ||
| `.codegraph/` → don't call CodeGraph tools. | ||
| - **100% local.** No code leaves the machine; the server bundles its own runtime. | ||
| - The index auto-syncs on file changes via a native file watcher, so results stay | ||
| current as the codebase evolves. |
Uh oh!
There was an error while loading. Please reload this page.