File Index
Scan the project workspace, describe each file in plain English, and save the result as
FILE-INDEX.md. Optionally ingest files into the RAG system so they become semantically
searchable by all other skills.
No required MCP dependencies — file reading is local only.
Optional: Audette MCP (for rag_ingest — makes files searchable)
What makes a good index
Each entry should answer: "Do I have a file about X, and where is it?"
- Real description of the content, not just the filename
- Group by folder so the structure is clear
- Flag important files (contracts, executed agreements, financial data) with ⭐
Step 1: Scan the workspace
List all files recursively. Skip:
- Hidden files and folders (anything starting with
.) FILE-INDEX.mditself- Build artifacts (
node_modules/,dist/,__pycache__/,.git/)
Note the folder structure — use it to organize the index.
Step 2: Analyze each file
Read each file and write a 1–2 sentence description. Approach by type:
PDFs — Use the Read tool. If the PDF is image-only (no extractable text), note "Scanned PDF — no text extractable."
Word docs (.docx) — Use the Read tool.
Excel / CSV — Read the first few rows to understand the data structure and what it contains.
Text, Markdown, JSON — Read directly.
Images — Note the filename and skip content analysis.
Unknown types — Note the extension and skip.
Each description should capture:
- Document type (contract, report, form, utility bill, PCNA, etc.)
- Who or what it's about
- Key visible details (date ranges, property addresses, dollar amounts, parties)
Step 3: Write FILE-INDEX.md
Save to the workspace root. Format:
# File Index
*Last updated: [date]*
*Total files: N*
## Root
| File | Description |
|------|-------------|
| [filename](filename) | ⭐ Executed purchase agreement for 123 Main St, signed 2025-03-15 |
## utilities/
| File | Description |
|------|-------------|
| [filename](utilities/jan-2025.pdf) | Eversource electricity bill for Jan 2025, account 12345, 18,420 kWh |
| [filename](utilities/feb-2025.pdf) | Eversource electricity bill for Feb 2025, account 12345, 16,890 kWh |
Mark files with ⭐ when they're executed contracts, financial agreements, or primary deliverables.
Step 4: RAG ingestion (optional but recommended)
If the Audette MCP is connected and .audette-config.json exists, offer to ingest the
indexed files into the RAG system:
"I've indexed N files. Would you like me to also ingest them into the search index so you can ask questions across all your documents? (yes / skip)"
If yes, call rag_ingest for each supported file type (PDF, XLSX, DOCX, TXT, MD, CSV).
Use the workspace_id from .audette-config.json if available.
For each file:
- Call rag_ingest with file_path, workspace_id (from config), source: "upload"
- Files where skipped=true were already indexed — no need to re-ingest
Report how many were ingested vs. already indexed vs. skipped (unsupported type).
Step 5: Confirm
Tell the user:
- How many files were indexed
- Notable finds (e.g., "Found 2 executed contracts, 12 utility bills, 1 PCNA report")
- Whether RAG ingestion ran and how many files are now searchable
Keeping the Index Fresh
If FILE-INDEX.md already exists, offer to update rather than rebuild — re-analyze files
that are new or modified since the last update (compare modification dates). For RAG,
idempotent rag_ingest calls will skip unchanged files automatically via content hash.