Muhammad Tabarak - Home
Technical Takes

Markdown Files for Vibe Coding: A System That Keeps AI Projects Sane

AI-assisted coding projects fall apart without shared context. Here's the simple markdown file system I use to keep them organized.

Muhammad Tabarak
Muhammad TabarakFounder & Software Engineer
October 14, 2026
4 min read
Markdown Files for Vibe Coding: A System That Keeps AI Projects Sane

"Vibe coding," building quickly with heavy AI assistance and looser upfront planning, works great right up until the AI loses track of decisions you made three prompts ago and quietly contradicts them. The fix isn't more discipline in your prompting. It's a simple, boring system: markdown files that hold the context your AI tool can't remember on its own.

The actual problem vibe coding runs into

AI coding tools don't reliably retain project-wide context across a long session, especially once you've made architecture decisions, established naming conventions, or ruled out an approach for a specific reason. Without something written down, you end up re-explaining the same context repeatedly, or worse, the AI silently reintroduces an approach you already rejected, because it has no memory that you rejected it.

Why markdown, specifically

It's plain text, versioned alongside your code, readable by both you and the AI tool without any special tooling. No database, no separate app, no context that lives outside the project itself. That simplicity is the entire point. The system only works if maintaining it takes less effort than the problem it's solving.

The files I actually keep in every AI-assisted project

CONTEXT.md — A short, living summary of what the project is, who it's for, and the core architecture decisions already made. This is the first thing I paste into a new AI session, so I'm not re-explaining the project from scratch every time.

DECISIONS.md — A running log of specific technical choices and why they were made, not just what was chosen. "Using Postgres over MongoDB because the data is genuinely relational and needs transactional guarantees" is far more useful to reference later than just "using Postgres." The reasoning is what prevents an AI tool, or a future version of you, from quietly relitigating a settled decision.

CONVENTIONS.md — Naming patterns, folder structure rules, and code style preferences specific to this project. AI-generated code drifts in style without this, one file using camelCase, another using snake_case, because nothing told it otherwise.

TODO.md — What's actually in progress versus what's planned versus what's explicitly deferred. This keeps AI-assisted sessions focused on the current scope instead of drifting into implementing something you've deliberately postponed.

How this actually changes a coding session

Instead of starting a session with a vague prompt and hoping the AI infers the right context, I start by pointing it to CONTEXT.md and DECISIONS.md directly. This alone eliminates most of the "wait, why did it just redo that differently" moments that make AI-assisted coding feel unpredictable.

When a new decision gets made mid-session, real-time database, chosen library, an approach ruled out, it goes into DECISIONS.md immediately, not at the end of the day when the reasoning has already faded from memory.

The mistake I see people make with this system

Treating it as documentation to write once and forget. The value is entirely in it staying current. A DECISIONS.md file that's three weeks stale is worse than no file at all, because it actively misleads whoever, or whatever, reads it next. Updating these files takes minutes and should happen in the same session as the decision, not as a cleanup task saved for later.

Where this pays off most

Longer AI-assisted projects, ones spanning multiple sessions or multiple people, benefit the most. A single quick prototype you'll throw away in an afternoon doesn't need this overhead. Anything you're actually going to maintain, iterate on, or hand off benefits from this from day one, because the cost of losing context compounds the longer the project runs.

The bottom line

Vibe coding isn't undisciplined by nature. It just needs a different kind of discipline than traditional planning, one that captures context as you go instead of upfront. A handful of markdown files, kept honestly current, is enough to keep an AI-assisted project coherent without slowing down the actual speed that makes this way of building worth it in the first place.


Suggested internal links: Link to Day 3's AI tools for junior developers article and Day 9's AI-augmented development piece.

CTA: Building with AI tools and want the exact file templates I use? DM "VIBE" for the starter set.