CodeFlow AI — VS Code Extension Starter
CodeFlow scans a workspace and creates an interactive, clickable project map. It currently uses lightweight static heuristics; it does not require an AI API.
Features in this starter
- Detects likely entry points such as
main.tsx, index.tsx, app.py, manage.py, urls.py, wsgi.py, asgi.py, Program.cs, and Startup.cs.
- Scans JavaScript/TypeScript, Python, C#, Java, Go, Ruby, and PHP source files.
- Finds many static imports, common frontend HTTP calls, common backend route declarations, function declarations, and likely database-access code.
- Displays clickable nodes and connections in a VS Code webview.
- Supports search/filter and rescanning.
- Skips common generated and dependency folders.
Important limitations
This is a usable starter, not a complete compiler-grade call graph. Static heuristics cannot reliably resolve all dynamic imports, dependency injection, reflection, framework-generated routes, runtime-selected code paths, or API URLs assembled from variables. A future version should add language-specific parsers (TypeScript compiler API, Python AST, Roslyn for C#), framework adapters, and an actual graph layout with directed edges.
Run locally
Requirements: Node.js, npm, and VS Code.
- Extract this project.
- Open its folder in VS Code.
- Run
npm install.
- Run
npm run compile.
- Press
F5 to open an Extension Development Host window.
- Open a sample project folder in that new window.
- Run CodeFlow: Generate Project Flow from the Command Palette (
Cmd+Shift+P on Mac, Ctrl+Shift+P on Windows/Linux).
Package as VSIX
Install dependencies first, then run:
npm run compile
npx vsce package
This creates a .vsix package in the project folder. In VS Code, use Extensions → ... → Install from VSIX... to install it.
Commands
CodeFlow: Generate Project Flow
CodeFlow: Rescan Project
Shortcut: Cmd+Option+F on macOS, Ctrl+Alt+F on Windows/Linux.
Privacy
The scanner processes workspace source files locally. This starter does not upload code to a cloud service. Do not add cloud AI analysis without making that behavior explicit to users.