anishfyi.com Projects All writings

June 10, 20268 min readOpen Source, Claude Code, Developer Tools

Trove: Giving Claude Code a Persistent Memory

A file-based memory index that reloads into context every session, so Claude Code stops starting from zero and each session begins further ahead than the last.

Every Claude Code session normally starts from zero. You re-explain the codebase, the conventions, the decisions you already made, the footgun you hit last week. The model is sharp but amnesiac. I got tired of paying that tax every morning, so I built Trove : a personal, file-based memory index that Claude Code reloads into context at the start of every session.

One fact, one file

A memory you cannot read or edit by hand is a black box. Trove keeps every durable fact as a single file on disk, so the whole store is portable, greppable, diffable, and yours. There is no database, no service, no lock-in. Claude picks the format by the shape of the content: Markdown for prose like decisions and gotchas, JSON for structured context like mappings and config.

~/.claude/trove/
  INDEX.md                 # one line per entry, newest first
  entries/
    use-pgx-not-orm.md     # prose      -> Markdown
    service-ports.json     # structured -> JSON
    staging-db-mirror.md

A prose entry carries frontmatter and a body. The body links to related entries with double brackets, so the trove becomes a small wiki of your own decisions.

---
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.

**Why it matters:** reach for this on any new Go service.
**Related:** [[deploy-single-binary]]

The index is the engine

The trick that makes this cheap is the INDEX.md. It is the only thing loaded into context at session start: one compact line per entry, so the model knows everything it has without paying to load every full file. Recall then scans that index and opens only the handful of entries that actually matter, instead of dumping the whole store into the prompt.

The index is also the human-readable map. It is skimmable and prunable like a notebook's table of contents, and each one-line hook is written to match how you would later ask for it. That single file is the difference between a pile of notes and a memory you can actually use.

Packaged as a Claude Code plugin

Trove ships as an installable plugin so the workflow travels with you. The plugin bundles three skills and a SessionStart hook. The skills are namespaced, and the hook reloads the index every time a session starts.

/plugin marketplace add anishfyi/trove
/plugin install trove@anishfyi-trove
/reload-plugins        # a fresh plugin is not live until you reload
/trove:init            # scaffold ~/.claude/trove

From there, "remember this" captures an entry and "what do I know about X" recalls it. The skills auto-trigger on intent, so most of the time you never type the command at all. A couple of packaging details that cost me time: skills inside a plugin are addressed as /plugin:skill, hooks belong in hooks/hooks.json referenced through ${CLAUDE_PLUGIN_ROOT}, and a renamed repository leaves GitHub Pages in an error state until you trigger a fresh build.

What is worth remembering

A memory is only useful if it is curated. Trove is opinionated about what earns a file.

Why it compounds

What you teach it once it knows for good. You stop re-explaining the repo, you stop repeating the same mistake, and past decisions are one recall away so you do not re-litigate them. A new machine, or a teammate on a project-scope trove, inherits all of it at once. The longer you use it, the more leverage it has, because each session begins further ahead than the last.

Trove is open source under MIT at github.com/anishfyi/trove , with a live page at anishfyi.github.io/trove . It pairs naturally with Querion , which reads a Trove-built semantic layer to answer data questions in your own business language.

Working on something in this territory? Book thirty minutes.