Imported from jhnguyy/pi-env (
.agents/skills/index-generator/SKILL.md). Install upstream withnpx skills add jhnguyy/pi-env --skill index-generator. Copyright stays with the author.
Index Generator
Use a compressed index when passive navigation helps an agent find relevant sources without loading the full collection.
What a Good Index Is
A navigational map, not documentation. One line per entry with the most distinctive, retrievable facts — not a description of what the file is.
| Bad | Good |
|---|---|
| "Overview of the API migration project" | "REST→GraphQL migration: 47 endpoints, v1 deprecated 2024-11-15, rollback window 48h" |
| "AI reference notes" | "Vercel eval of passive context (100%) and skills (53%), plus the compression strategy" |
| "Server config notes" | "nginx: rate limit 100 req/s, upstream timeout 30s, SSL cert expires 2026-03" |
Format
Adapt to context. For markdown/notes vaults:
## <Group>
| Entry | [Status] | Summary |
|---|---|---|
| [[path/to/note]] | active | One-liner: key facts, numbers, decisions made |
For code or docs (pipe-delimited, AGENTS.md-style):
[<Domain> Index]
|<subfolder>:{file1 — one-liner, file2 — one-liner}
|<subfolder>:{file3 — one-liner}
Rules regardless of format:
- One line per entry, no sub-bullets
- Concrete details: names, numbers, statuses, decisions — not summaries of topics
- Status column only where entries have meaningful state (projects, tasks)
- Group by subdomain when the set is large. Link to sub-indexes rather than flattening everything.
Process
- Enumerate — list all files/notes in scope
- Read — read each entry that you do not know. Read any existing index first to preserve its intentional structure.
- Write — one-liner per entry, lead with the most distinguishing fact
- Link up — if this is a sub-index, verify the parent index references it
Maintenance
- Read before overwriting — avoids dropping entries added since last generation
- Status fields drift. Verify them from the source, not from memory.
- Remove entries for files that no longer exist
- When a new subdomain appears, create its index and add it to the parent