A memory index that grows as you use Claude Code.
Install once and Claude starts keeping a personal, file-based trove of your decisions, gotchas, conventions and references. Every fact is one file, Markdown or JSON, and it reloads into context at the start of every session so nothing learned gets forgotten.
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: its three skills (init,
remember, recall) plus the SessionStart hook. 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:initScaffolds a trove at user scope (~/.claude/trove) or per project. Just markdown: an INDEX.md and an entries/ folder.
/trove:rememberDistills a decision, gotcha, preference or reference into one atomic entry, the way a new leaf sprouts, and adds a one-line pointer to the index. Dedupes against what is already there.
/trove:recallReads the index, opens the relevant entries, and answers grounded in them with citations, so past you can inform present you.
A SessionStart hook injects your index into context the moment a session opens. Claude starts aware of what it already knows.
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:init | Create the trove (user or project scope). |
/trove:remember | Capture a durable learning as a new entry. |
/trove:recall | Search the trove and answer from it. |
SessionStart hook | Loads the index into context automatically 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.