{"slug": "my-ai-keeps-forgetting-what-we-already-decided", "title": "My AI Keeps Forgetting What We Already Decided", "summary": "A developer built a git-based knowledge system called kms to solve AI coding agents' lack of persistent memory across sessions. The plugin, available for Claude Code and other agents, stores decisions, facts, guardrails, and skills as markdown files in the repo, allowing agents to recall past context. The developer shared a walkthrough of the tool, including its schema and commands, noting its limitations.", "body_md": "Every week I re-explain the same architecture choices to my AI coding\n\nagent. New session, zero memory — like we never talked. That's not a\n\nprompting problem, it's a memory problem, and I fixed it with a\n\ngit-based knowledge system that lives right next to the code. Here's\n\nthe actual walkthrough, the schema it writes, and where it falls\n\nshort — not just the pitch.\n\nI plan a feature with Claude Code on Tuesday. Wednesday, fresh\n\nsession: *\"Where did we leave off?\"* No idea. I re-explain everything.\n\nBy Thursday I've explained it a third time to a different agent. Each\n\none asks good questions, gets a good answer, and forgets it the moment\n\nthe session ends. The plan was never the problem — nothing durable\n\never got written down, so there was nothing for the next session to\n\nread.\n\n`kms`\n\nis a Claude Code plugin that captures decisions, facts, and\n\nguardrails as plain markdown files, version-controlled right alongside\n\nyour code. Any agent that reads the repo reads the knowledge base\n\nfirst, before it asks you anything.\n\nInstall:\n\n```\n/plugin marketplace add vivantel/kms\n/plugin install kms\n```\n\nFour artifact types, each with one job:\n\n| Type | Answers | Lives in |\n|---|---|---|\n| Fact | What's true right now | `docs/facts/` |\n| Decision | What you're committing to, and why | `docs/decisions/` |\n| Guardrail | What must (or must not) happen, derived from a decision | `docs/guardrails/` |\n| Skill | How to act on all of the above | `docs/skills/` |\n\nOne command:\n\n```\n/kms:quickstart\n```\n\nIf `docs/{facts,decisions,guardrails,skills}/`\n\ndoesn't exist yet,\n\nquickstart sets it up first. Then it asks one direct question:\n\n*\"What decision or plan is currently live for you right now?\"*\n\nSay you're picking an auth provider. Quickstart interviews you — what\n\nyou're choosing, why, what would make this wrong — then writes the\n\nresult to `docs/decisions/0001-auth-provider-choice.md`\n\n:\n\n```\n---\nid: 0001-auth-provider-choice\ntitle: Use Auth0 for user authentication\nstatus: accepted\ndate: 2026-09-03\ntags: [auth, infra]\ntrack: product\n---\n\n## Decision\n\nAuth0 for all user-facing auth. Rejected rolling our own — team of\ntwo, no time to own session security. Rejected Firebase Auth — we're\nnot on the rest of the Firebase stack and didn't want the lock-in.\n\n## Rationale\n\n...\n```\n\nNothing gets summarized or paraphrased away — that's your call,\n\ncaptured once, in your own words. The session closes by naming what to\n\nrun next, not leaving you to guess: `query`\n\nto pull this decision back\n\nup later with a citation, `capture`\n\nafter the next session that\n\ntouches it.\n\nFrom that point on, Claude Code\n\nreads that file the next time it opens the repo and knows exactly\n\nwhat was decided. Codex reads the same skill set through its own\n\nplugin manifest. Kilo Code CLI reads it too, once `kilo.jsonc`\n\npoints\n\nat the published skills manifest.\n\nFacts and guardrails link back to why they exist, not just what they\n\nsay. Say you decide Medium posts close with an install CTA, Dev.to\n\nposts close with a GitHub-stars ask. That's a decision. The guardrail\n\nthat enforces it on every article cites that decision by id. A skill\n\nthat tells you how to adapt a draft per platform references the\n\nguardrail. Change the decision later, and `capture`\n\n/`lint`\n\ncatch the\n\nguardrail and skill silently drifting out of sync with it — instead\n\nof you finding out three articles later.\n\nCommands worth knowing once you've got a knowledge base going:\n\n`query`\n\n— retrieve a past decision with a citation, instead of\nre-explaining it.`capture`\n\n— log what a work session changed, after the fact; flags\ncontradictions it finds along the way.`lint`\n\n— validate the whole knowledge base on demand: dangling\nreferences, missing fields, stale derived artifacts.`brainstorm`\n\n— generate fresh approaches with no anchor to past\ndecisions, for exploring before anything's locked in.`onboard`\n\n— a role-tailored, 5-day ramp-up plan for a new teammate,\nbuilt from the existing knowledge base.`conform`\n\n— check whether a pending change respects the guardrails\nbefore it lands.It's not magic memory — you still write the interview answers\n\nyourself; quickstart just makes sure they get written down instead of\n\nstaying in your head. It doesn't replace tests, code review, or\n\nactual documentation for end users. And it only helps if the habit\n\nsticks — a knowledge base nobody updates after month one is just a\n\n`docs/`\n\nfolder with extra steps. The parts that make that less likely\n\nare `capture`\n\n(so updating it is a five-minute pass after a session,\n\nnot a separate chore) and `lint`\n\n(so drift gets caught instead of\n\nsilently rotting).\n\nI've tried system prompts, paste-in context files, separate\n\nnote-taking apps I'd open in another window. They all fail the same\n\nway: they live outside the repo, so they don't survive a fresh\n\nsession, and they rely on you remembering to open them, paste them in,\n\nand keep them updated. This is different because it's part of the\n\nrepository — every decision is version-controlled, every fact is\n\nverified, and a guardrail is derived from a real commitment instead of\n\nvibes. When the project changes, the knowledge base changes with it,\n\nin the same commit history as the code.\n\nIf this is useful to you, a star helps other developers find it:\n\nThen install the plugin and run `/kms:quickstart`\n\non one real decision\n\nthat's been living in your head. You'll never explain it twice.\n\n*Contributions welcome* — see\n\n[CONTRIBUTING.md](https://github.com/vivantel/kms/blob/main/CONTRIBUTING.md)\n\nfor how to propose new skills or improve existing ones.", "url": "https://wpnews.pro/news/my-ai-keeps-forgetting-what-we-already-decided", "canonical_source": "https://dev.to/sergemso/my-ai-keeps-forgetting-what-we-already-decided-4okd", "published_at": "2026-09-03 22:41:57+00:00", "updated_at": "2026-09-03 23:23:49.652296+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools"], "entities": ["kms", "Claude Code", "Codex", "Kilo Code CLI", "vivantel"], "alternates": {"html": "https://wpnews.pro/news/my-ai-keeps-forgetting-what-we-already-decided", "markdown": "https://wpnews.pro/news/my-ai-keeps-forgetting-what-we-already-decided.md", "text": "https://wpnews.pro/news/my-ai-keeps-forgetting-what-we-already-decided.txt", "jsonld": "https://wpnews.pro/news/my-ai-keeps-forgetting-what-we-already-decided.jsonld"}}