A coding agent starts every session knowing nothing. You explain the project, it does good work, the session ends, and the next one begins from zero. The usual patch is a longer context window, but that only moves the wall. When the context fills, it gets summarised — and a summary keeps decisions while losing the reasons behind them. “We chose A” survives. “We rejected B because we measured it and it was worse” does not. So the next session proposes B again, and you pay for that experiment twice.

I wrote floppy to fix the second half of that problem. It is a plugin for Claude Code and Cursor, and it gives the agent two things: a memory that lives in your repository, and two procedures that use it.

Why the repository

Most memory tools put the memory somewhere else — a vector database, a hosted service, a directory in your home folder. That is the wrong place for anything that describes code, for three reasons.

It does not travel. A second machine, a colleague, a CI job — none of them get the memory with git clone.

It cannot be reviewed. A note that says “the retry limit is three because the upstream rate-limits at four” is a claim about the code. If it lives outside the repository, no pull request ever shows it changing, and nobody notices when it stops being true.

It rots invisibly. Code and memory drift apart, and there is no diff where the drift becomes obvious.

floppy’s memory is a set of markdown files. Git holds them next to the code they describe. A second machine gets them with one clone. When a note becomes wrong, correcting it is a commit like any other.

Two procedures

start answers “where did we stop?” It reads the current-state file, the memory index, and the notes that relate to the task at hand — then checks the live state of the repository and says so out loud when the documents and reality disagree. That last part matters more than it sounds: a status file that was rewritten in place carries no sign of its own age, so a stale document and a current one look identical.

wrap answers “what did we learn?” It writes the session’s findings into the memory and commits them.

Neither procedure is a prompt asking the agent to be thoughtful. They are scripts with checks: a file-list check, a memory linter, and a session lock so two sessions do not write over each other.

What it does not do

It does not make the agent smarter, and it does not remove the need to read what it wrote. A memory nobody corrects becomes a confident source of stale facts — which is worse than no memory, because it reads as authoritative.

The requirements are deliberately small: bash, git, and a git repository. Outside a repository every command stops with an error instead of guessing. There is no daemon, no database, and no network call you cannot read in the source.

If you want to try it:

claude plugin marketplace add spscream/ai-floppy
claude plugin install floppy@floppy

Then run the init skill in the repository you want it to remember.