graphify
howell5/willhong-skills
Structural code index via AST—query symbols before searching, explore unfamiliar codebases faster.
What is graphify?
Graphify builds a searchable structural index (AST graph) of your codebase across 12 languages using tree-sitter. Use it to find classes, functions, imports, and call relationships before grepping, or refresh it after editing files to keep the index in sync.
- Extract AST structure (classes, functions, imports, call graph) from 12 languages (Python, JavaScript, TypeScript, Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, PHP)
- Query symbols by name across the codebase with case-insensitive search
- Incrementally update the index after editing specific files or auto-detect changes via git diff
- Generate a JSON graph with nodes (symbols), edges (relationships), and metadata for structured navigation
How to install graphify
npx skills add https://github.com/howell5/willhong-skills --skill graphify- Node.js and npm installed
- Run `npm i -g graphify-ts` once per machine (uses Bun runtime)
- Run `graphify build .` once per project to create the initial index
How to use graphify
- 1.Install globally: `npm i -g graphify-ts`
- 2.Build the initial index: `graphify build .` (creates `graphify-out/graph.json`)
- 3.Query symbols: `/graphify query <name>` to find classes, functions, or imports
- 4.After editing files, refresh: `/graphify update <file1> [file2...]` or `/graphify auto-update` to detect changes via git diff
- 5.Repeat queries as needed; rebuild only when you want a full rescan
Use cases
- Explore an unfamiliar codebase by querying entry points and symbol locations instead of guessing filenames
- Find all references to a class or function across multiple files before refactoring
- Refresh the code graph after batch edits to keep symbol lookups accurate in the same session
- Navigate large projects by understanding which files contain which symbols and how they connect
- Developers onboarding to unfamiliar codebases
- Teams working on large or multi-language projects
- Engineers refactoring or searching code without IDE support
graphify FAQ
No. The graph does not auto-refresh. Run `graphify update <files>` or `graphify auto-update` only if you plan to query again in the same session. Otherwise, the next build or update will catch up.
Python, JavaScript, TypeScript (JSX/TSX), Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, and PHP.
Graphify uses AST parsing to understand code structure (classes, functions, imports, calls), not just text matching. This gives you precise symbol locations and relationships without false positives.
Yes. Manual updates avoid write conflicts. You control when the index refreshes, so multiple sessions won't interfere.
Nodes (symbols with file locations), edges (relationships like contains, imports, calls, inherits), and metadata (file count, symbol count, edge count).
Full instructions (SKILL.md)
Source of truth, from howell5/willhong-skills.
name: graphify description: "Use when exploring unfamiliar codebases, before searching for code, or after editing files. Builds a structural AST index (classes, functions, imports, call graph) from 12 languages via tree-sitter. Trigger: /graphify" allowed-tools: Bash(graphify:*)
graphify — Code Navigation Layer
Structural index of the codebase. Know what exists, where, and how it connects — before you grep.
Requires CLI: npm i -g graphify-ts (uses Bun runtime).
Manual updates only. The graph does not refresh on its own — you (or the user) run graphify update or graphify build when you want a fresh index. This avoids write conflicts in git worktrees and other multi-session setups.
First-time setup (one-time per machine)
npm i -g graphify-ts # install CLI
Then, once per project:
graphify build .
After that, refresh manually whenever the index drifts from the code (see graphify update below).
Commands
/graphify build — Build index (first time, or full rebuild)
graphify build .
Scans all source files, extracts AST structure, saves to graphify-out/graph.json.
Report: "Indexed {files} files, {nodes} symbols, {edges} relationships"
/graphify query <name> — Search for symbols
graphify query graphify-out/graph.json <name>
Case-insensitive search. Returns matching symbols with file locations.
/graphify update <files...> — Incremental update after edits
graphify update graphify-out/graph.json <file1> [file2...]
Re-extract only the specified files. Run this after editing code if you plan to query the graph again in the same session.
/graphify auto-update — Bulk update from git diff
graphify auto-update [dir]
Computes changed code files via git diff + untracked files, then calls updateIndex. Silent when there's nothing to do. Convenient for refreshing after a batch of edits without naming each file.
When to Use
Before searching code: If graphify-out/graph.json exists, query it before Glob or Grep. The graph tells you which files contain which symbols. This is the main value — replace blind keyword search with structured lookup.
After editing: If you'll query the graph again in the same session, run graphify update <edited-files> (or graphify auto-update for a bulk refresh). Otherwise leave it — the next graphify build or update will catch up.
Exploring unfamiliar code: Run /graphify query <concept> to find entry points without guessing filenames.
Supported Languages
Python, JavaScript, TypeScript (JSX/TSX), Go, Rust, Java, C, C++, Ruby, C#, Kotlin, Scala, PHP
Graph Output
Saved as graphify-out/graph.json:
{
"nodes": [{ "id": "main::app", "label": "App", "sourceFile": "main.py", "sourceLocation": "main.py:5" }],
"edges": [{ "source": "file::main", "target": "main::app", "relation": "contains", "confidence": "EXTRACTED" }],
"metadata": { "files": 10, "nodes": 45, "edges": 62 }
}
Edge relations: contains, method, imports, imports_from, calls (INFERRED), inherits
Related skills
More from howell5/willhong-skills and the wider catalog.

preline-theme-generator
Generate, preview, save, or validate Preline theme CSS using the bundled local generator in this skill. Use when the user asks to create a new Preline theme, match a brand color, translate a mood into a theme, generate light and dark theme CSS, preview theme output without writing files, or review and fix generated theme tokens. Do not use for generic non-Preline CSS work or arbitrary command execution.

android-adb
Android device control via raw ADB commands. Use for device/emulator discovery, USB or Wi-Fi connection, app launch/force-stop, tap/swipe/keyevent/text input, screenshots, UI hierarchy dump, and ADB troubleshooting.

systematic-literature-review
当用户明确要求"做系统综述/文献综述/related work/相关工作/文献调研"时使用。AI 自定检索词,多源检索→去重→AI 逐篇阅读并评分(1–10分语义相关性与子主题分组)→按高分优先比例选文→自动生成"综/述"字数预算→资深领域专家自由写作(固定摘要/引言/子主题/讨论/展望/结论),保留正文字数与参考文献数硬校验,强制导出 PDF 与 Word。支持多语言翻译与智能编译(en/zh/ja/de/fr/es)。

ticket-resolution
Create, triage, advance, and close HubSpot support tickets — pipeline discovery, contact/company association, priority queues, bulk stage moves, resolution close-out.

hf-cli
Hugging Face Hub CLI for managing models, datasets, spaces, buckets, and jobs on the Hub.

huggingface-best
>