The Only Necessary Thing

The most useful thing I have written about my working setup was not written for an article. It was a reply on LinkedIn to someone who had posted about syncing his Claude Code skills between two machines, and the useful part of it was three sentences long. I dropped all claude.md, auto-memory, general skills. Left only project-specific skills and agents. The rest KG memory does.
That was May 2026. The sentence I put just before those three is the one I would defend hardest, and I have not softened it since: the right memory system is the only thing that is absolutely necessary for effective work.
I have written already about how I arrived at that – the wall you hit a few weeks in, when every conversation starts from nothing and you explain the same architecture for the fiftieth time. This is about the other side of the wall, which took me considerably longer to understand than the wall itself did.
Not a place for memory
In July I was scoping down my use of CLAUDE.md and stirring the output style, and the reason is easy to say and slow to accept. They are not a place for memory or your preference. Memory should be dynamic and granular and separate from those.
Dynamic and granular is the keyword, and the second half of it does the work. Granular entries can evolve. A file cannot. A file loads whole, identically, every session, whether this session needs any of it or not, and on the day one line inside it stops being true it goes on loading exactly as before.
There is a related confusion worth naming: mixing current context with permanent context. For the current thing – this session, this task, the shape of what I want and roughly where I would like it to go – I find that giving a /voice command beats any amount of prompt craft. You just talk. It can come out completely unstructured and the nuance survives that fine. But that only works when the permanent context underneath is already well prepared and remembered. Nothing but a memory system prepares it, and no amount of talking substitutes for it.
What the files are for once memory has the rest
I keep one CLAUDE.md, at user level. That is the only one, besides a few narrow cases where a project genuinely needs its own.
Its job is not to hold facts about me. It is to open cooperative space for proper solutions. The model takes on a role whether or not you hand it one, so this file hands it a role indirectly, and that turns out to matter: in some edge cases it moves task completion from twenty percent to a hundred.
Output style is the separate and more expensive question. Output dominates in terms of limits usage – ninety percent of it. So output style is where finetuning pays first, before anything else in the setup gets touched. The version I settled on cuts output tokens by twenty percent without eroding quality.
I did not get there by taste. Fable organised a bench for it, with various hypotheses tested, and that is the part I would pass on to anyone regardless of what they are building. If you task your system to write or rewrite the system prompts for you, let it also test them for you – launch a wave of agents with various inputs and tasks and watch how they do with this prompt or that one. And keep them lean.
Some of the scoping down came from reading rather than from measurement. I read Anthropic’s Interpretability Team whitepapers as they appear, and I think I have read all of them by now. That does not make me an expert on anything inside a model. It does give a feel for what they explore, why they explore it, and what it tends to mean for agentic work.
Thirty percent
Here is the bill, and I would rather put it near the top of the article than at the bottom of a README. KG memory may take up to thirty percent of your token usage.
That is a large number and there is no point dressing it up. What you get for it is this: it significantly cuts repeated reads of your files, and it saves the time you would otherwise spend every day re-explaining. Those two returns are not denominated in the same currency as the cost, which is why the trade is awkward to argue about and easy to feel. You do not notice it on the meter. You notice it on the day you realise you have stopped writing the paragraph that begins “so, the architecture here is”.
Correction, 29 July 2026. The bill shrank on inspection, and this article of all articles should say so. Measured today the memory’s share is closer to twenty-five percent – and specifically of input tokens, the side of the meter it actually lives on. Input turns out to be the cheap side. My last thirty days show 26 million input tokens against 112 million output; priced at list rates the fresh input comes to barely three percent of the bill, and the whole input side of the ledger – cached context included – to about a tenth. Multiply through and the headline number above costs roughly two or three percent of what a month actually costs. The returns are unchanged; the price was overstated. I am leaving the section as written – every sum here carries its date, and this one now carries two.
The operating instruction is smaller than people expect. Just ask it to wrap up a session as you go. Then when you open a new session it remembers what is needed.
What surprised me is what happens when you do not. Close a session in the middle, walk off, come back tomorrow – it still remembers, because it is very good at capturing things as they happen rather than waiting for the end.
One habit survives even for people who use no memory system at all, and it is the one I would start with: leave a letter to your future self at the end of a session. When I shared my CLAUDE.md, I said the memory block could be skipped by anyone not using the plugin – but the letter part should remain. It earns its lines on its own.
Connecting the dots
The idea underneath all of this is much older than the tools, and I came at it sideways.
At one point I had a course pipeline in Claude Code. Ask it for a topic and it would generate a text course – three days of study material, or ten, or a hundred – each file around three thousand words, and I would sync the result to Obsidian and read it on my phone. But a pile of files is not a memory. It is a library you have to remember to visit, and remembering to visit is precisely the faculty you were trying to outsource.
What the Zettelkasten does differently is not the note-taking. The value of the cards comes from connecting the dots and returning to them once in a while, and in time keeping them in your memory as one system. That last clause is the entire design brief for a memory plugin, written by a German sociologist decades before there was anything to plug one into.
The thing that made it buildable was smaller and more ordinary. Graph knowledge can be represented as JSON without any difficulty, and Claude is fluent at reading markdown as well as JSON, or HTML for that matter. Once you have seen that, a knowledge graph stops being an infrastructure project and becomes a file format.
Local, personal, secure
When someone asked whether it would work for his setup too, the honest answer was that it could. It would not be hard to make it an online MCP service, serving whatever you like – another machine, another model wrapper. I declined, and not for technical reasons. The moment it lives somewhere else it loses the flavour of being your own, personal and secure.
I focus on Claude Code only. Not out of loyalty to anything – I have no time to jump between instruments and lose project context every time I do.
There is a second reason to keep it close, and it is the one I would raise with anyone about to build this for a company. I think the next big thing is an intelligent evolving memory system. I built one for myself and its scope is deliberately limited to my own tasks. Doing it properly for other people is difficult, and the difficulty is security rather than architecture. Anthropic’s Zero Trust paper was an eye-opener for me on exactly that, and I would read it before writing a line.
It also could not have been wired properly without a persistent MCP server, which is my small answer to the periodic announcements that MCP is dead. It is much more nuanced than that. MCP is not simply a tool wrapper – it can be – but when you need functionality that exists only for your own AI workflows, building it as a plain API leaves you one step short of where you were going anyway.
One notch below 1.0
In June the plugin sat at 0.9.14, and it will not go to 1.0 until somebody reviews it and gives me feedback. That is not modesty and it is not a device. I have been making the same request since December 2025, when I first put it out: if this is something you are researching too, you are welcome to give it a try and tell me what is wrong with it.
It is the single best thing that helps my daily Claude Code work. More than a hundred commits have gone into it and it still changes every month. github.com/mironmax/claudecode-plugins
And I am still asking beginner’s questions about it in public. In June I stopped in the middle of someone’s post on prompt caching to ask how cache control headers relate to what the model actually caches, or whether there are model caches at all, because I have a memory plugin and I want to ensure optimal performance and I did not want to guess at it. In July I asked a stranger to explain the gist of his recursive-learning experiment, because it sounded like one of the design issues I am currently running into with graph memory and I was not sure I had understood him.
That is roughly where it stands: a version one notch below 1.0, a plugin I open every day without thinking about it, and a list of design problems I have not solved.
I am not in a hurry about the version number. A memory is not the kind of thing that gets finished. You return to it once in a while, connect what is there to what has arrived since, and in time it holds as one system.
Sources – my own LinkedIn posts:
- 8 December 2025 – I did try a few memory systems, and then wrote my own
- 11 June 2026 – version 0.9.14, and the thirty percent warning
- 24 July 2026 – scoping down CLAUDE.md and the output style bench
The rest – local and personal, current versus permanent context, the course pipeline, the Zettelkasten, MCP and caching – comes from comments I left under other people’s posts between May and July 2026.
$ exit 0 – thanks for reading
The fox will keep the drafts warm.



