|
1 | | -# Project Index for Claude Code |
2 | | - |
3 | | -**⚠️ Beta Community Tool - Let Claude Code Fork It!** This is my personal indexing solution that I'm sharing (still in beta). I'm not maintaining this as a product. If you run into issues, have Claude Code help you fix them! Give this repo URL to Claude and ask it to fork, set up, and adapt it for your specific needs. |
4 | | - |
5 | | -## Background |
6 | | - |
7 | | -I created this tool for myself and talked about it in [this video](https://www.youtube.com/watch?v=JU8BwMe_BWg) and [this X post](https://x.com/EricBuess/status/1955271258939043996). People requested it, so here it is! This works alongside my [Claude Code Docs mirror](https://github.com/ericbuess/claude-code-docs) project. |
8 | | - |
9 | | -I may post videos explaining how I use this project - check [my X/Twitter](https://x.com/EricBuess) for updates and explanations. |
10 | | - |
11 | | -This isn't a product - just a tool that solves Claude Code's architectural blindness for me. Fork it, improve it, make it yours! |
12 | | - |
13 | | -Automatically gives Claude Code architectural awareness of your codebase. Add `-i` to any prompt to generate or update a PROJECT_INDEX.json containing your project's functions, classes, and structure. |
14 | | - |
15 | | -## Quick Install |
16 | | - |
17 | | -```bash |
18 | | -curl -fsSL https://raw.githubusercontent.com/ericbuess/claude-code-project-index/main/install.sh | bash |
19 | | -``` |
20 | | - |
21 | | -## Usage |
22 | | - |
23 | | -Just add `-i` to any Claude prompt: |
24 | | - |
25 | | -```bash |
26 | | -claude "fix the auth bug -i" # Auto-creates/uses index (default 50k) |
27 | | -claude "refactor database code -i75" # Target ~75k tokens (if project needs it) |
28 | | -claude "analyze architecture -ic200" # Export up to 200k to clipboard for external AI |
29 | | - |
30 | | -# Or manually create/update the index anytime |
31 | | -/index |
32 | | -``` |
33 | | - |
34 | | -**Key behaviors:** |
35 | | -- **One-time setup**: Use `-i` once in a project and the index auto-updates forever |
36 | | -- **Size memory**: The number (e.g., 75) is remembered until you specify a new one |
37 | | -- **Auto-maintenance**: Every file change triggers automatic index updates |
38 | | -- **To stop indexing**: Simply delete PROJECT_INDEX.json |
39 | | - |
40 | | -## What It Does |
41 | | - |
42 | | -PROJECT_INDEX extracts and tracks: |
43 | | -- **Functions & Classes**: Full signatures with parameters and return types |
44 | | -- **Call Relationships**: Which functions call which others |
45 | | -- **File Organization**: All code files respecting .gitignore |
46 | | -- **Directory Structure**: Project layout with file counts |
47 | | - |
48 | | -This helps Claude: |
49 | | -- Find the right code without searching |
50 | | -- Understand dependencies before making changes |
51 | | -- Place new code in the correct location |
52 | | -- Avoid creating duplicate functions |
53 | | - |
54 | | -## Three Ways to Use |
55 | | - |
56 | | -### Small Projects - Direct Reference with `@PROJECT_INDEX.json` |
57 | | -```bash |
58 | | -# Reference directly in your prompt |
59 | | -@PROJECT_INDEX.json what functions call authenticate_user? |
60 | | - |
61 | | -# Or auto-load in every session by adding to CLAUDE.md: |
62 | | -# Add @PROJECT_INDEX.json to your CLAUDE.md file |
63 | | -``` |
64 | | - |
65 | | -**Best for**: Small projects where the index fits comfortably in context. Gives Claude's main agent direct awareness of your whole project structure. |
66 | | - |
67 | | -### Medium Projects - Subagent Mode with `-i` flag |
68 | | -```bash |
69 | | -# Invokes specialized subagent to analyze PROJECT_INDEX.json |
70 | | -claude "refactor the auth system -i" # Default up to 50k tokens |
71 | | -claude "find performance issues -i75" # Target ~75k tokens for more detail |
72 | | -``` |
73 | | - |
74 | | -**Best for**: Medium to large projects where you want to preserve the main agent's context. The subagent analyzes the index separately and returns only relevant findings. |
75 | | - |
76 | | -The subagent provides: |
77 | | -- Call graph analysis and execution paths |
78 | | -- Dependency mapping and impact analysis |
79 | | -- Dead code detection |
80 | | -- Strategic recommendations on where to make changes |
81 | | - |
82 | | -### Large Projects - Clipboard Export with `-ic` flag |
83 | | -```bash |
84 | | -# Export to clipboard for external AI with larger contexts |
85 | | -claude "analyze entire codebase -ic200" # Up to 200k tokens |
86 | | -claude "architecture review -ic800" # Up to 800k tokens |
87 | | -``` |
88 | | - |
89 | | -**Best for**: Very large projects whose index won't fit in Claude's context window. Export to AI models with larger context windows: |
90 | | -- Gemini Pro (2M tokens) |
91 | | -- Claude models with 200k+ tokens |
92 | | -- ChatGPT |
93 | | -- Grok |
94 | | - |
95 | | -**Note**: I'm not using this on large projects myself yet - this is inspiration/theory. Your mileage may vary. If you hit snags, have Claude Code update it to work for your specific use case! |
96 | | - |
97 | | -## Token Sizing |
98 | | - |
99 | | -The number after `-i` is a **maximum target**, not a guaranteed size: |
100 | | - |
101 | | -- **Default**: 50k tokens (remembered per project) |
102 | | -- **-i mode range**: 1k to 100k maximum |
103 | | -- **-ic mode range**: 1k to 800k maximum for external AI |
104 | | -- **Actual size**: Often much smaller - only uses what the project needs |
105 | | -- **Compression**: Automatic to fit within limits |
106 | | - |
107 | | -Examples: |
108 | | -- Small project with `-i200`: Might only generate 10k tokens |
109 | | -- Large project with `-i50`: Compresses to fit ~50k target |
110 | | -- Huge project with `-ic500`: Allows up to 500k if needed |
111 | | - |
112 | | -The tool remembers your last `-i` size per project and targets that amount, but actual size depends on your codebase. |
113 | | - |
114 | | -## Language Support |
115 | | - |
116 | | -**Full parsing** (extracts functions, classes, methods): |
117 | | -- Python (.py) |
118 | | -- JavaScript/TypeScript (.js, .ts, .jsx, .tsx) |
119 | | -- Shell scripts (.sh, .bash) |
120 | | - |
121 | | -**File tracking** (listing only): |
122 | | -- Go, Rust, Java, C/C++, Ruby, PHP, Swift, Kotlin, and 20+ more |
123 | | - |
124 | | -## Installation Details |
125 | | - |
126 | | -- **Location**: `~/.claude-code-project-index/` |
127 | | -- **Hooks configured**: |
128 | | - - `UserPromptSubmit`: Detects -i flag |
129 | | - - `Stop`: Refreshes index after session |
130 | | -- **Commands**: `/index` for manual creation/update |
131 | | -- **Agent**: `~/.claude/agents/index-analyzer.md` for deep analysis |
132 | | -- **Python**: Automatically finds newest 3.8+ version |
133 | | - |
134 | | -## Fork & Customize |
135 | | - |
136 | | -**The whole point of this tool is that Claude Code can unbobble it for you!** When you hit issues, don't wait for me - have Claude fix them immediately. This is a community tool meant to be forked and adapted. |
137 | | - |
138 | | -How to customize: |
139 | | -1. Fork the repo or work with the installed version |
140 | | -2. Describe your problem to Claude Code |
141 | | -3. Let Claude modify it for your exact needs |
142 | | -4. Share your improvements with others |
143 | | - |
144 | | -Common customizations: |
145 | | -```bash |
146 | | -cd ~/.claude-code-project-index |
147 | | -# Then ask Claude: |
148 | | -# "The indexer hangs on my 5000 file project - fix it" |
149 | | -# "Add support for Ruby and Go files with full parsing" |
150 | | -# "Skip test files and node_modules even if not in .gitignore" |
151 | | -# "Make it work with my monorepo structure" |
152 | | -# "Change compression to handle my specific project better" |
153 | | -``` |
154 | | - |
155 | | -Remember: Claude Code can rewrite this entire tool in minutes to match your needs. That's the power you have - use it! |
156 | | - |
157 | | -## Known Issues & Quick Fixes |
158 | | - |
159 | | -**Large projects (>2000 files)**: May timeout or hang during compression |
160 | | -- Fix: Ask Claude "Rewrite compress_if_needed() to handle my 3000 file project" |
161 | | - |
162 | | -**.claude directory**: Already fixed - now excluded from indexing |
163 | | - |
164 | | -**Timeouts**: Default is 30 seconds, may be too short for huge projects |
165 | | -- Fix: Ask Claude "Make timeout dynamic based on file count in i_flag_hook.py" |
166 | | - |
167 | | -For any issue, just describe it to Claude and let it fix the tool for you! |
168 | | - |
169 | | -## Requirements |
170 | | - |
171 | | -- Python 3.8 or higher |
172 | | -- Claude Code with hooks support |
173 | | -- macOS or Linux |
174 | | -- git and jq (for installation) |
175 | | - |
176 | | -## Troubleshooting |
177 | | - |
178 | | -**Index not creating?** |
179 | | -- Check Python: `python3 --version` |
180 | | -- Verify hooks: `cat ~/.claude/settings.json | grep i_flag_hook` |
181 | | -- Manual generation: `python3 ~/.claude-code-project-index/scripts/project_index.py` |
182 | | - |
183 | | -**-i flag not working?** |
184 | | -- Run installer again |
185 | | -- Check hooks are configured |
186 | | -- Remove and reinstall if needed |
187 | | - |
188 | | -**Clipboard issues?** |
189 | | -- Install pyperclip: `pip install pyperclip` |
190 | | -- SSH users: Content saved to `.clipboard_content.txt` |
191 | | -- For unlimited clipboard over SSH: [VM Bridge](https://github.com/ericbuess/vm-bridge) |
192 | | - |
193 | | -## Technical Details |
194 | | - |
195 | | -The index uses a compressed format to save ~50% space: |
196 | | -- Minified JSON (single line) for file storage |
197 | | -- Short keys: `f`→files, `g`→graph, `d`→docs, `deps`→dependencies |
198 | | -- Compact function signatures with line numbers |
199 | | -- Clipboard mode (`-ic`) uses readable formatting for external AI tools |
200 | | - |
201 | | -## Uninstall |
202 | | - |
203 | | -```bash |
204 | | -~/.claude-code-project-index/uninstall.sh |
205 | | -``` |
206 | | - |
207 | | ---- |
208 | | -Created by [Eric Buess](https://github.com/ericbuess) |
209 | | -- 🐦 [Twitter/X](https://x.com/EricBuess) |
210 | | -- 📺 [YouTube](https://www.youtube.com/@EricBuess) |
211 | | -- 💼 [GitHub](https://github.com/ericbuess) |
| 1 | +# File was edited |
| 2 | +# Old: **Current test coverage:** |
| 3 | +- ✅ **Unit tests**: 42 tests covering individual functions (all mocked) |
| 4 | +- ✅ **Integration tests**: 7 tests covering full workflow (mocked Ollama) |
| 5 | +- ✅ **E2E tests**: 3 tests with real Ollama instance via NixOS |
| 6 | +# New: **Current test coverage:** |
| 7 | +- ✅ **Unit tests**: 42 tests covering individual functions (all mocked) |
| 8 | +- ✅ **Integration tests**: 7 tests covering full workflow (mocked Ollama) |
| 9 | +- ✅ **E2E tests**: 4 tests including real Ollama instance via NixOS |
0 commit comments