Higher information density, not larger prompts.
Trove makes LLMs operate over repositories far larger than their context window.
The Rust engine indexes symbols, modules, and architecture into .trove/.
The Claude Code plugin captures decisions, gotchas, and conventions in a personal
trove that reloads every session.
The Trove engine parses your codebase into a memory hierarchy: symbols, per-file module summaries, subsystem clusters, and an architecture map. Retrieval flows top-down and stops when it has enough detail.
# requires Rust
git clone https://github.com/anishfyi/trove && cd trove
cargo build -p trove-cli
cargo run -p trove-cli -- index
cargo run -p trove-cli -- query "modify vendor onboarding"
Symbols, modules, subsystems, architecture. Hash-tracked, incremental rebuilds. Output in .trove/ (gitignored).
Query with natural language. Get architecture first, then drill into modules and symbols only if needed. Respects a context budget.
See VISION.md for the full L0-L6 design.
Run these one at a time inside Claude Code, top to bottom.
/plugin marketplace add anishfyi/trove
A marketplace is just a Git repo that lists installable plugins. This points Claude Code at Trove's repo so it knows where to fetch the plugin from. Nothing is installed yet.
Hit an SSH Permission denied (publickey) error? You have no SSH key on GitHub,
so use the HTTPS URL instead: /plugin marketplace add https://github.com/anishfyi/trove.git
/plugin install trove@anishfyi-trove
Pulls the Trove plugin from that marketplace: five skills (init,
remember, recall, index, query) plus
SessionStart and SessionEnd hooks. Read it as
plugin@marketplace, so trove is the plugin and anishfyi-trove
is the marketplace you just added.
/reload-plugins
A freshly installed plugin is not live until you reload. This activates Trove's
skills and hook in your current session. Confirm it landed with /plugin list,
and type /trove: to see the new commands appear. The auto-load hook starts
firing from your next new session onward.
/trove:init
Scaffolds your trove at ~/.claude/trove (or per project): an
INDEX.md and an entries/ folder. That is the whole setup. From
here, say "remember this" or run /trove:remember to capture a fact,
and /trove:recall to search it back.
# skills only (no auto-load hook)
git clone https://github.com/anishfyi/trove /tmp/trove
cp -r /tmp/trove/plugins/trove/skills/* ~/.claude/skills/
Copies the three skills into ~/.claude/skills/ so you get /init,
/remember and /recall. The automatic session-load hook only ships
with the plugin install above.
trove indexParses the repo into symbols, module summaries, subsystem clusters, and an architecture map. Stored in .trove/.
trove queryProgressive retrieval: architecture, then subsystem, module, symbol. Stops when enough context is assembled.
/trove:rememberDistills a decision, gotcha, or convention into one atomic entry and updates the index.
SessionStart injects your personal trove index. SessionEnd prompts reflection and re-index reminders.
Every Claude Code session normally starts from zero: you re-explain the codebase, the conventions, the decisions you already made. Trove ends that. What you teach it once it knows for good, so each session begins further ahead than the last.
INDEX.md (one compact line per entry) is injected into context at session start, so Claude knows everything it has without paying to load every full file.Each entry is a single file, and Claude picks the format that fits what it is storing: Markdown for prose (decisions, gotchas, conventions) and JSON for structured context (mappings, lists of records, config, schemas). The index lists them side by side.
--- title: Use pgx + sqlc, not a heavy ORM, in Go services slug: use-pgx-not-orm type: decision created: 2026-06-13 tags: [go, postgres, data-layer] --- We standardised on pgx for the driver and sqlc to generate type-safe query code from plain SQL. GORM was rejected for hiding query cost behind reflection. **Why it matters:** reach for this on any new Go service. **Related:** [[deploy-single-binary]]
{
"title": "Local service ports",
"slug": "service-ports",
"type": "reference",
"created": "2026-06-14",
"tags": ["infra", "ports"],
"summary": "which service runs on which port",
"data": {
"web": 8000,
"trove-ui": 8010,
"partners": 8011
}
}
# Trove Index
- [Use pgx + sqlc, not a heavy ORM](entries/use-pgx-not-orm.md) - Go data-layer decision
- [Local service ports](entries/service-ports.json) - infra reference (JSON)
- [Staging DB mirrors prod nightly](entries/staging-db-mirror.md) - gotcha, do not seed
| Command | What it does |
|---|---|
trove index | Index the repo into memory layers (CLI). |
trove query | Progressive retrieval with a context budget (CLI). |
/trove:init | Create the personal trove (user or project scope). |
/trove:remember | Capture a durable learning as a new entry. |
/trove:recall | Search the trove and answer from it. |
/trove:index | Index the repo via the engine (plugin skill). |
/trove:query | Retrieve layered context before editing (plugin skill). |
SessionStart hook | Loads the personal index into context each session. |
The skills also auto-trigger on intent: say "remember this in my trove" or "what do I know about X" and the right skill fires without typing the command.