Manifesto — v1.1 — June 2026
Documentation-Driven Development

Documentation Driven
Development v2

A manifesto for Human–AI collaborative software engineering as a SDD overlayer.

⭐ Fork on GitHub
🖼️ Printable Poster 📄 Printable Manifesto 🔌 IntelliJ Plugin 🔵 VSCode Plugin

Open · Versionable · CC BY 4.0

Table of Contents

The Problem Documental Engineering & 3S Rule The DDD Loop The DDD Document Types Preview & Test Artefacts The Folders Harness & Documental Engineering The Reconstruction Guarantee Scientific Proof — Two Labs, One Thesis GitAgent Protocol & Interoperability Four Superpowers DDD Is / Is Not DDD as Knowledge Capital Getting Started The IDE-First Ecosystem MCP & Contextual Memory Support & Certification Going Further — The Ecosystem

The Problem

Modern AI coding agents are powerful — but stateless. Every new session starts from zero. No context. No history. No conventions.

Without a persistent shared context, teams lose the reasoning behind decisions, the migration history, the rules the AI should follow, and the ability to onboard anyone — human or agent — quickly.

"If it's not in a .md file, it doesn't exist."

Traditional answers — better comments, wikis, Confluence — don't work. They rot. They're invisible to AI. They're written after the fact.

Documentation-Driven Development makes documentation the executable contract of the project — before, during, and instead of conversations.

Standing on the shoulders of giants

Documentation-Driven Development is not a new idea. zsup defined it in 2014: "Write the documentation before writing the code. If you can't explain it clearly, you don't understand it yet."

This manifesto extends that foundation into the AI era. DDD v1 was about writing docs before code — spec-first, human-to-human. DDD v2 is about documentation as persistent, shared infrastructure for teams that include AI agents as first-class contributors.

In 2026, with AI agents in the loop, it's no longer optional. It's the missing infrastructure. No longer an intern task — it's now your core architecture!

Documental Engineering

A new discipline is emerging in AI-assisted development: Context Engineering — the practice of deliberately designing, structuring, and maintaining the information an AI agent needs to perform at its best.

DDD is Documental Engineering — applied to software teams.

Where Context Engineering describes the what (give the AI the right context), Documental Engineering describes the how:

Context Engineering conceptDDD implementation
Persistent context across sessionsVersioned .md files committed in the repo
Structured knowledge base.ai_context/ folder organized by domain
Role-specific informationspecs-functional.md (PO) vs specs-technical.md (dev)
Behavioral rules and constraintsbest-practices.md — always read first
Execution trace and auditabilityDONE.md — written by the AI after each task
Context scopingOne subfolder per feature, migration, or domain

The key insight is that context is not a prompt — it is infrastructure.

A one-shot prompt disappears after the session. A well-structured .ai_context/ folder is permanent, versionable, shareable, and improvable. It turns ephemeral AI interactions into a durable, compounding asset for the entire team.

Context Engineering asks: "what does the AI need to know?"
DDD answers: "Read the .md files."

The 3S Rule — What Makes a Good Context Document

A DDD context document is not just any Markdown file. Every .md in .ai_context/ must satisfy the 3S Rule:

3SPrincipleMeaning
Selected Only what the agent needs Don't dump everything — choose what is relevant. Noise kills context.
Synthetic Summarised, not verbose As short as possible while actionable. Distil, don't transcribe.
Structured Formatted for AI consumption Use headings, bullet points, tables, and code blocks. Structure is clarity.
A document that is Selected, Synthetic, and Structured is a document the agent can actually use.

The DDD Loop

Everyone is in the loop — and the .md files connect them all.

Product Owner
    │  defines specs and acceptance criteria in .md
    ▼
Developer
    │  enriches .md with conventions, rules, constraints
    ▼
AI Agent
    │  reads .md → executes → updates .md with what was done
    ▼
Developer / PO
    │  reviews output → corrects .md → loops
    └──────────────────────────────────────────────────────

The .md files play four roles simultaneously:

RoleDescription
📋 SpecWhat we want to build
📜 ContractThe rules every contributor must follow
📖 JournalWhat was done, why, and how
🔁 Reconstruction kitEverything needed to rebuild from scratch

Steps as Mini-Retrospectives

Each step in steps/ is not just a roadmap milestone — it is a living retrospective unit. When a step closes, the agent appends a compact retrospective directly into the step file: what was done, what remains, what blocked. Stored in dev-context.json under lastSession, it gives the next session instant continuity without reading the entire history.

Not a ceremony. Not a meeting. Three lines committed in Git — and the agent remembers everything.

The DDD Document Types

The .ai_context/ folder organises documentation into eight distinct types, each with a clear owner and lifecycle:

📜

CONTRACT.md permanent

The agent's interaction contract. Profile (strict / standard / permissive), permissions, communication rules. Written once at init. Never reset.

🌟

vision.md permanent

The product vision and epic goals. Written once at init. Never reset. The strategic north star for every context and every step.

🗺️

steps/ permanent

Roadmap phases and features — one file per milestone. Created at init, enriched over time. Never reset.

🎯

CONTEXT.md contextual

The current unit of work: title, description, todo list. The agent reads this first. Reset on every new context.

📋

tasks/specification/ PO-owned

Functional specs: user stories, acceptance criteria, business rules. Reset on new context — except permanent-* files.

⚙️

tasks/technical/ dev-owned

Architecture decisions, API contracts, migration steps, constraints. Reset on new context — except permanent-* files.

tasks/done/ AI-written

Execution reports written by the AI after each task: every change, every decision, every trade-off. Fully reset on new context. Git is the archive.

🎓

skills/ permanent-* kept

Reusable agent knowledge across all contexts: role, stack, conventions, architecture map. permanent-* files survive every context switch.

TypeOwnerLifecycle
CONTRACT.mdDev (init)Permanent
vision.mdDev (init)Permanent
steps/DevPermanent
CONTEXT.mdDevReset on new context
tasks/specification/POReset (except permanent-*)
tasks/technical/DevReset (except permanent-*)
tasks/done/AIFully reset
skills/Devpermanent-* kept, others reset

Preview & Test Artefacts

DDD specs are Markdown — but some tasks demand more than text. For UI work, the AI can generate companion artefacts alongside the spec that make review faster and verification concrete.

🖼️

*-preview.html

A self-contained HTML rendering of the UI component or page described in the spec. The AI generates it alongside the .md — the developer opens it in a browser to validate the visual intent before writing a single line of production code.

Example: tasks/specification/onboarding-wizard-preview.html

🧪

*-test.html

A lightweight test harness — also self-contained HTML — that the AI generates in tasks/done/ after implementation to demonstrate that key acceptance criteria pass. No test framework required: open in browser, read the output.

Example: tasks/done/onboarding-wizard-test.html

ArtefactLocationGenerated byPurpose
spec-*.mdtasks/specification/PO / DevHuman-written intent
spec-*-preview.htmltasks/specification/AIVisual validation before coding
done-*.mdtasks/done/AIExecution report
done-*-test.htmltasks/done/AIAcceptance test runner
The spec says what to build. The preview shows what it should look like. The test proves it works.
All three are Markdown-adjacent, versioned in Git, reviewed by the developer.

The permanent- prefix applies here too: a permanent- preview or test file survives context resets and serves as a living reference for the feature.

The skills/ Folder — Reusable Agent Knowledge

Beyond the context-specific documents (tasks/specification/, tasks/technical/, tasks/done/), DDD introduces a dedicated folder for persistent, reusable knowledge: the skills/ folder.

A skill is what the agent needs to know about how to work on this project — independently of what to do right now.

While tasks/ captures the current context (what to build, how it was done), skills/ captures the stable knowledge that applies across all contexts:

FolderContainsLifecycle
tasks/specification/ Functional specs for the current context Reset on new context (except permanent-*)
tasks/technical/ Technical decisions for the current context Reset on new context (except permanent-*)
tasks/done/ Execution reports written by the AI Fully reset on new context
skills/ Role, stack, conventions, domain expertise Persists across all contexts (permanent-*)

What goes in a skill?

A skill document typically defines:

🎭

Role

Who the agent should be. Senior dev, architect, PO-facing writer… Set the tone before writing a single line of code.

🛠️

Stack & constraints

Languages, frameworks, forbidden libraries, build tools. What exists. What must not be introduced.

📐

Conventions

Naming, file structure, patterns to follow, patterns to avoid. The unwritten rules — now written.

🗺️

Architecture map

The shape of the codebase. Where things live. What touches what. How to navigate without getting lost.

The permanent- convention

Any file prefixed with permanent- in skills/ (or in specification/ and technical/) is preserved when switching to a new context. Everything else is reset.

skills/
├── permanent-dev-typescript.md    ← survives all context switches
├── permanent-architecture.md      ← survives all context switches
└── onboarding-notes.md            ← reset on next context switch
Skills are the agent's memory of who it is on this project. Documents are its memory of what it is doing right now.

Harness, Memory, Context Engineering

In DDD, these three concepts are not separate layers — they are the same thing, expressed differently.

🧠

Memory = the .md files

Not a database, not a chat history, not implicit model "memory". Every decision, convention, and trace lives in a versioned file — readable, editable, forkable. Explicit. Permanent.

🏗️

Context = the documentation

Not a prompt you write before each session — a structured folder that already exists, reflects the current truth of the project, and is maintained by the team across every context switch.

🔗

Harnessing = done by context itself

The .ai_context/ folder doesn't just inform the agent — it constrains it. The agent knows its role, the rules, the history. It cannot drift. The context is the harness.

You don't prompt your way to a reliable agent. You harness it — with documentation.

A New Approach: Documental Engineering

Documental Engineering is the practice of treating the document layer as the primary engineering artifact — not the code, not the model, not the prompt.

The agent is a SEAL — a Self-Evolving Agent Learning system. Not because its weights change, but because its harness does. Every session adds to done/. Every correction sharpens a skill. Every new context builds on the accumulated knowledge of all previous ones.

👻

The ghost in the machine

Documental Engineering is the invisible infrastructure that makes the agent coherent, consistent, and trustworthy across every session. It doesn't appear in the output. It doesn't show up in the diff. But remove it — and the agent loses its memory, its identity, and its constraints in the very next session.

Documentation is the constant. The harness is a context.

The Reconstruction Guarantee

The project must be fully reconstructible from its .md files alone.

If a new developer joins, or a new AI agent session starts, or the entire codebase is lost — the .md files must contain enough information to:

🕹️

Real-world proof: Legends of the Future Past (1992)

Legends of the Future Past is a MUD (Multi-User Dungeon) that went offline and stayed dark for decades. In 2026, it came back — not because someone had the original server code, but because the structured text files describing the world had survived: zones, characters, rules, quests, lore.

The executable was gone. The documentation was not. The game was rebuilt from its data files alone.

This is the ultimate demonstration of the Reconstruction Guarantee. In software engineering, your .md files are those data files. The codebase can be rewritten. The context — decisions, conventions, architecture — cannot be recovered if it was never written down.

→ Read the story on Reddit ↗

⚠️

Real-world anti-proof: malus.sh — AI as a license-laundering machine

malus.sh is a "Clean Room as a Service" — real or satirical, it's hard to tell — proposing to use AI robots to independently recreate any open source library from scratch, delivering "legally distinct code" under a proprietary license, with zero attribution, zero copyleft, zero obligations.

Whether it ships or not, it names something unavoidable: if an AI can reconstruct a codebase from its public documentation and API alone, what does intellectual property mean when the documentation is the only survivor?

This is the dark mirror of the DDD Reconstruction Guarantee. The same principle that lets you rebuild your own system from structured documents can be turned against any open source project whose API is well-documented. DDD is a tool — its ethics depend entirely on who wields it, and why.

→ See the provocation ↗ → Our call for a new kind of license ↓

Code is temporary. Documentation is permanent.

Scientific Proof: Two Labs, One Thesis

Two independent research groups — Microsoft Research and Google DeepMind — have published findings in 2026 that, taken together, provide a rigorous scientific foundation for DDD. Neither paper mentions DDD. Both describe exactly what DDD implements.

🔬

Microsoft Research — "LLMs Corrupt Your Documents When You Delegate"

In April 2026, Philippe Laban, Tobias Schnabel and Jennifer Neville published "LLMs Corrupt Your Documents When You Delegate." Their DELEGATE-52 benchmark tested 19 models across 52 documents and 20 interactions each.

ConditionDegradation after 20 interactions
Top-tier frontier models~25% of content corrupted
Average across 19 models~50% of content corrupted
At 100 interactionsNo plateau — monotonic decline
With agentic tool use+6% additional degradation
Python code (verifiable domain)98%+ accuracy — the only domain that held

The corruption is silent — not gibberish, but small confident changes: a detail shifted, a qualification dropped, an emphasis altered. Invisible on a quick scan. Compounding over time.

"When you delegate document maintenance to an LLM, the theory dies twice. First: you didn't build the understanding, because you delegated. Second: the LLM silently corrupted the artifact itself."
— Christian Ekrem, connecting the research to Peter Naur's 1985 theory of programming

DDD's structural answer

Risk (DELEGATE-52)DDD architectural response
LLMs corrupt documents when asked to update themThe AI only adds new files in done/ — never modifies existing docs
Errors compound over multiple interactionsEach context starts clean — done/ is fully reset
Agentic setups make corruption worseDeveloper reviews and commits every change — no silent writes
Short-term performance hides long-term decayGit tracks every change — corruption is detectable and reversible
You lose both document and mental modelskills/permanent-* are human-written, never AI-modified
The documents are not the AI's to modify. They are the team's to maintain.
The AI's job is to execute — and to report.
🧬

Google DeepMind — "Intelligent Delegation in Multi-Agent Systems" (2026, arXiv)

Researchers at Google DeepMind (Tomašev, Franklin, Osindero) argue that as AI agents begin delegating tasks to other agents and to humans, formal systems for authority, accountability and verification are required to prevent systemic risk.

Their five requirements for safe AI delegation:

  • Dynamic capability assessment — continuously evaluate what the agent can do
  • Adaptive task reassignment — re-delegate if performance degrades
  • Structural transparency — monitoring and audit trails, including intermediate steps
  • Verifiable task completion — proof that obligations were met
  • Privilege attenuation — pass only minimum permissions when sub-delegating

DDD already implements all five — not with a new infrastructure, but with existing primitives:

DeepMind requirementDDD implementation
Authority definitionCONTRACT.md — strict / standard / permissive profile
Task assignment & scopedev-context.json — title, description, todos, steps
Process-level monitoringtasks/specification/ → spec validated before execution
Verifiable task completiontasks/done/*.md — execution report written by the AI
Audit trailGit history — every change committed alongside its context
Human-in-the-loop for high-risk tasksDeveloper reviews and commits — no silent writes
Privilege attenuationCONTRACT.md profile scopes agent permissions per project
Verifiable task completion (machine-level)Vouch — obligation IDs, evidence, release gate
"Without verifiable delegation protocols, large-scale multi-agent systems in high-stakes domains could amplify failures and obscure responsibility."
— DeepMind, arXiv 2026

The paper is conceptual (no benchmarks yet). But its framing of delegation as a governance and risk-management challenge — not a prompt-engineering problem — maps precisely onto what DDD practitioners already know from practice.

Two labs. One conclusion.

Microsoft Research proves that delegating document maintenance to AI corrupts the artifact.
Google DeepMind proves that delegating tasks to AI without formal authority and accountability creates systemic risk.

DDD's answer to both: humans write the context, humans assign the task, humans review the output, Git tracks everything.

GitAgent Protocol & The Markdown Question

DDD does not exist in isolation. Two emerging reference points confirm and sharpen its approach from different angles.

🔗

The GitAgent Protocol — open-gitagent/gitagent-protocol ↗

The GitAgent Protocol formalises how AI agents interact with Git repositories: structured file conventions, agent manifests, and task coordination through versioned files. The core premise mirrors DDD exactly — Git is not just version control, it is the communication bus between agents and humans.

Where GitAgent Protocol defines the machine-readable layer (agent manifests, structured metadata), DDD provides the human-readable layer: the .md files that describe intent, conventions, and decisions in a form that both humans and agents can read, write, and reason about.

DDD and GitAgent Protocol are complementary: DDD is the discipline, GitAgent is a formalisation of the protocol beneath it. A DDD repository is a natural GitAgent-compatible workspace.

⚠️

"Markdown Was a Mistake for Agent Output" — Medium ↗

This article argues that Markdown as AI output format is problematic: agents generate Markdown for chat interfaces where it renders as prose, creating an illusion of structure that collapses the moment you try to parse, verify, or act on it programmatically.

DDD's position is the inverse — and it matters to understand why. In DDD, Markdown is not agent output. It is human input. Developers and POs write the .md files. The agent reads them. The agent's output in done/ is explicitly reviewed and committed by a human before it enters the context.

PatternWho writesWho readsProblem?
AI chat output as MarkdownAgentHuman (in chat)Yes — unstructured, unparseable, volatile
DDD context files (.ai_context/)HumanAgentNo — human-authored, structured, versioned
DDD done/ reportsAgentHuman + AgentReviewed — human commits what matters
The problem is not Markdown. The problem is who writes it, and whether it is reviewed.
DDD solves both: humans write the context, humans review the output.
🔒

Vouch — "A compiler for release contracts" — duriantaco/vouch ↗

Vouch takes human-owned intent (YAML) and compiles it into typed obligation IDs, runs evidence collection (tests, SARIF, audit logs), and operates a release gate: block | escalate | canary | auto_merge.

Their positioning: "Use Vouch when a risky AI-authored change needs more than 'CI passed.'"

That sentence describes exactly the end of every DDD task cycle. DDD and Vouch are complementary layers of the same pipeline:

DDD spec (.md)  →  Agent reads  →  Agent executes
    → done/*.md + code changes
        → Vouch compiles obligations
            → evidence (tests, SARIF, audit)
                → gate: block | escalate | auto_merge
LayerToolWhat it does
Input harnessDDD .ai_context/Structures what the agent reads and how it works
Output gateVouchVerifies what the agent produced, with obligation IDs
DDD is the context contract — the input.
Vouch is the release contract — the output gate.
Together: a fully auditable, human-owned, machine-verifiable AI development pipeline.

Four Superpowers

🌐 Language Agnostic

DDD is not tied to any language, framework, or toolchain. The .md files describe intent, rules, and context — not syntax. The same approach works whether your stack is Angular, React, Spring Boot, Django, Rust, or anything else.

When you migrate from one framework to another, the documentation survives the migration. Only the code changes.

Your .md files will still be valid the day you switch to a framework that doesn't exist yet.

📦 Fully Portable

Plain Markdown, committed alongside the code — infinitely portable:

No vendor lock-in. No proprietary format. No special tooling required.

🤖 Agent Agnostic

DDD does not care which AI agent sits in your IDE. It works with any agent that can read a file.

All you need is a high-IQ, adaptive, and comprehensive AI agent with a clear view of the project in an instant. Not an inflexible corporate co-worker who has attended every stand-up and memorised every meeting memo.

Any agent is expandable.

🔄 Contextual Adaptation

DDD documentation is living documentation — it evolves with the project. Every correction makes the next AI session smarter:

EventDDD Response
New framework versionUpdate migration-xxx.md, execute, update MIGRATION_DONE.md
Convention changedUpdate best-practices.md, commit
New architectural constraintAdd entry in docs/, reference it in best-practices.md
AI produced something wrongCorrect the .md, re-run — the error won't happen again
Every session improves the next one.

DDD Is Not / DDD Is

DDD is NOT

  • A replacement for code comments
  • A wiki that nobody maintains
  • A one-time README
  • An AI-only practice
  • Generating docs from code

DDD IS

  • A living contract between all contributors
  • A forcing function for clarity
  • The answer to AI agent statelessness
  • For any language, framework, team size
  • Compatible with any AI coding agent

DDD as Knowledge Capital

In traditional software engineering, the intellectual property of a project lives in its code. In DDD, this assumption is inverted.

The real intellectual property is the documentation.

The code is an artifact — a snapshot of one implementation, in one language, at one point in time. It can be rewritten, refactored, or replaced entirely. It frequently is.

The .md files encode something the code never can:

This is Knowledge Capital — the compounding intellectual asset of the team. It grows with every session, every correction, every new .md entry. Unlike code, it does not become legacy. It becomes richer.

A team that loses its codebase can rebuild.
A team that loses its Knowledge Capital starts from zero.
⚖️

A Call for a New Kind of License

Current open-source licenses — MIT, Apache, GPL, CC BY — were designed for artifacts: files that exist at a point in time. DDD documentation is not an artifact. It is a living, compounding context — closer to a methodology, a knowledge base, and a collaborative memory than a static file.

We propose the concept of a Living Knowledge License:

Traditional license assumes…Living Knowledge License assumes…
The value is in the artifactThe value is in the accumulated context
A copy is equivalent to the originalA fork diverges and must be maintained separately
Authorship is a moment in timeAuthorship is a continuous, multi-agent contribution
The license governs distributionThe license governs contribution, attribution, and evolution

This is not a formal legal license — yet. It is a call for the open-source community to recognize that AI-assisted, documentation-driven projects represent a new category of intellectual property that existing licenses were not designed to protect or govern.

Open questions for the community

  • ❓ Who owns the Knowledge Capital when an AI agent contributes to it?
  • ❓ How should attribution work when a .md is co-authored by a dev, a PO, and an AI?
  • ❓ What are the obligations of a fork that builds on accumulated DDD context?
  • ❓ How do we license a methodology — not just its output?
The code belongs to the license.
The context belongs to the team.
We need a license that understands the difference.

Getting Started

Step 1 — Create the folder structure

Organize documentation by context, each in its own versioned subfolder:

.ai_context/
├── README.md                  ← project overview for the agent (permanent)
├── CONTRACT.md                ← agent interaction rules (permanent)
├── CONTEXT.md                 ← current context: title, description, todo list
├── dev-context.json           ← machine-readable context metadata
├── vision.md                  ← product vision and epic goals (permanent)
├── history.json               ← past contexts journal (JSON Lines, permanent)
├── steps/                     ← roadmap phases and features (permanent)
│   └── phase1-core.md             ← milestone description
├── skills/                    ← reusable agent knowledge (permanent-* kept)
│   ├── permanent-dev-stack.md     ← role, stack, conventions
│   └── permanent-architecture.md ← codebase map
└── tasks/
    ├── done/              ← AI execution reports (reset on new context)
    ├── specification/     ← functional specs (permanent-* kept)
    └── technical/         ← technical decisions (permanent-* kept)

Step 2 — Write the functional specifications

In each feature subfolder, create a specs-functional.md. This is PO territory — written in business language, no code: user stories, acceptance criteria, business rules, edge cases, links to mockups.

Step 3 — Write the technical specifications

In the same subfolder, create a specs-technical.md. This is dev territory: architecture decisions, API contracts, data models, component structure, dependencies, constraints, references to docs/*.md.

Step 4 — Write best-practices.md

Global rules the AI must follow on every task — naming conventions, coding patterns, what to avoid, which libraries to use. This file is always read first.

Step 5 — Prompt as a User Story or ticket

Frame your prompt exactly like a Jira / Linear / GitHub issue — or a personal note. The format doesn't matter. What matters is that the prompt references the .md files:

As a [role], I want [feature] so that [outcome].

Acceptance criteria:
- [ ] ...
- [ ] ...

Technical context: see .ai_context/features/authentication/specs-technical.md
Rules to follow:   see .ai_context/best-practices.md

Step 6 — Let the AI execute and report

Ask the AI agent to:

Step 7 — Commit everything

Commit .md files alongside the code. Every commit is a versioned snapshot of both the code and its context:

feat(auth): implement login flow

See .ai_context/features/authentication/DONE.md for full execution report.

The IDE-First Ecosystem

DDD's primary interface is your IDE and its built-in AI agent — not a chat window, not an external platform. The .md files live in the repo. The AI agent lives in the IDE. The developer stays in flow.

.ai_context/  (in repo)
      │
      ▼  attached / referenced by the developer
IDE Agent  (Copilot · JetBrains AI · Cursor · Windsurf…)
      │
      ▼  reads context → executes → updates .md
Code  +  updated DONE.md
      │
      ▼  reviewed and committed by the developer
Git — versioned snapshot of code AND context

This is a local, zero-dependency, agent-agnostic workflow that works with any IDE and any AI agent — today, without any additional tooling. MCP and external context servers are valid extensions for advanced use cases, but they are not required.

DDD Tooling Roadmap

DDD works today with any IDE. The next step is native IDE support — plugins that make DDD a first-class citizen of the development environment.

🧠

JetBrains Plugin

IntelliJ · WebStorm · Rider…

  • ✦ Auto-detects .ai_context/ in the project
  • ✦ Templates by language/framework at project init
  • ✦ Injects .md files into the JetBrains AI context automatically
  • ✦ UI panel to create, browse, and edit DDD files
  • ✦ "DDD Ready" badge in the project tree
🔵

VSCode / Cursor / Windsurf

Copilot · Cursor · Continue · Cline…

  • ✦ Same auto-detection and template system
  • ✦ Generates .cursorrules, CLAUDE.md, COPILOT_INSTRUCTIONS.md from best-practices.md
  • ✦ Compatible with all major AI extensions
  • ✦ Command palette: DDD: New feature context
  • DDD: New migration plan · DDD: View DONE.md
Approach Context delivery Session persistence Vendor lock-in
Copy-paste to chat Manual, per session None High
MCP server Automated, external Partial Medium
DDD + IDE plugin Automated, local Full (committed) None

The plugin eliminates the only remaining friction in DDD: manually attaching files to the agent context. With the plugin, the context is always ready — because it lives in the repo.

🔭 What's Next — Conversation-to-Document

The DDD loop still has one blind spot: the conversation itself. Every session with an AI agent produces decisions, discoveries, and trade-offs. Today, they vanish when the session closes.

The next plugin feature: read the current conversation and propose a structured .md draft — extracted decisions, new rules, execution notes — that the developer reviews, adjusts, and commits.

PrincipleRationale
Extract, don't dumpA raw transcript is noise. Only what deserves to be permanent is proposed.
Propose, don't auto-commitThe human validates what enters the .md. No silent writes.
.md first, not vector memoryThe output is editable Markdown — versionable, auditable, agent-readable.
The conversation is the raw material. The plugin proposes. The developer decides what becomes documentation.

DDD, MCP & Contextual Memory

Two technologies are often mentioned alongside DDD: MCP (Model Context Protocol) and contextual memory tools. Here's how they relate — and when they matter.

📄

DDD

The content layer. Structured, versioned, explicit knowledge — committed in Git alongside the code.

✅ Works everywhere
✅ Versionable
✅ Team-wide
✅ Auditable

🔌

MCP

The transport layer. Automates injection of your .ai_context/ into the agent — no manual attachment needed.

✅ Multi-agent setups
✅ Shared team context
⚠️ Requires infrastructure
⚠️ Not needed for solo dev

🧠

Memory Tools

Mem0, Zep, Memoir… Versioned or implicit memory stored outside Git.

⚠️ Requires infrastructure
⚠️ Agent-written (corruption risk)
⚠️ Incompatible with Copilot
⚠️ Marginal value with DDD

🔖

Case study: Memoir — "Git for AI Memory"

Memoir is a high-performance semantic memory system for AI agents that replaces opaque vector databases with Git-like versioned memory: branch, commit, merge, rollback, cryptographic integrity, semantic paths instead of UUID keys.

Their core diagnosis is our thesis, word for word:

"AI memory is a global variable anti-pattern. Your agent's memory is code without version control. One bad session poisons every future retrieval."

The fact that Memoir had to build "Git for AI memory" to solve memory drift is the strongest possible confirmation that the right mental model for agent memory is version control. DDD practitioners just skipped the infrastructure and used the one that already exists.

DimensionMemoirDDD
VersioningCryptographic, semantic pathsPlain Git
AuthorshipAgent-written, auto-aggregatedHuman-written, human-reviewed
Portabilitymemoir-ai.dev infrastructureZero — any Git repo
Agent compatibilitymemoir-compatible agents onlyAny agent that can read a file
Corruption riskMitigated by rollbackPrevented by human review gate

🧪 Working Hypothesis

If you practice DDD correctly, you don't need a contextual memory layer. A well-maintained .ai_context/ folder is a strictly superior alternative: explicit, versionable, auditable, and infrastructure-free.

Apply this test before reaching for a memory tool:

If it's important enough for the agent to remember, it's important enough to be in a .md file.
Dimension DDD (.ai_context/) Memoir (versioned memory) Memory tools (Mem0, Zep…)
What is storedStructured rules, specs, decisionsSemantic agent memory (versioned)Implicit facts, conversation history
Who writes itHumans — deliberatelyAgent — auto-aggregatedAgent — automatically
Versionable✅ Plain Git✅ Cryptographic❌ Opaque vector store
Human-readable✅ Plain Markdown⚠️ Semantic paths❌ Embeddings
Works with GitHub Copilot✅ Yes❌ memoir-compatible only❌ Closed environment
Infrastructure costZeromemoir-ai.dev serviceVector DB + embeddings, always-on
Corruption preventionHuman review + Git commitRollback after the factNone

Support the Manifesto

DDD is free, open, and will stay that way. If it saved you time, improved your workflow, or sparked a conversation in your team — consider buying us a coffee. ☕

Patreon ☕ Buy Me a Coffee Ko-fi GitHub Sponsors

Every contribution helps us maintain the manifesto, grow the community, and work toward the Living Knowledge License.

Documentation First Certification

Does your organization want to demonstrate a genuine commitment to Documentation-Driven Development? The Documentation First Certification is a structured audit and recognition program for teams and companies that have adopted DDD practices.

Documentation First Certified Badge

The AI Documentation First badge
displayed on your GitHub repo, website, and job postings.

🔍

Audit

A structured review of your .ai_context/ folder, your DDD loop, and your team's practices by a certified DDD reviewer.

🏷️

Badge

A digital badge for your GitHub repo and documentation, with a verification link proving authenticity.

🏆

Apply for Certification

✉️ Request Certification

certification@documentationfirst.ai

Going Further — The Ecosystem

DDD does not exist in a vacuum. Below are projects, articles, and references that share its concerns — context persistence, agent harnessing, memory architecture, and dev tooling. Organised by the axes that matter: Harness, Spec-Driven Development, Memory, and Dev Environment.

🔗 Harness & Context Infrastructure

📋

GitAgent Protocol

Formalises how AI agents interact with Git repos: structured file conventions, agent manifests, task coordination through versioned files. DDD is the human layer on top of this machine-readable protocol.

🔒

Vouch

"A compiler for release contracts." Takes human-owned intent (YAML) → obligation IDs → evidence (tests, SARIF, audit) → release gate: block / escalate / canary / auto_merge. DDD is the input harness. Vouch is the output gate.

🗂️

OpenViking

An open-source context database for AI Agents. Unifies management of context — memory, resources, and skills — through a file system paradigm, enabling hierarchical context delivery and self-evolving agents. Conceptually very close to .ai_context/.

🔗

Beads

Provides persistent, structured memory for coding agents. Replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context. The graph approach vs. DDD's flat folder — a complementary design space.

🐝

Hivemind

Captures every coding-agent interaction in your org as a structured trace, codifies repeated patterns into reusable skills, and propagates those skills to every agent on the team. The team-level equivalent of DDD's skills/ folder — but automated and shared.

🏗️

Harness Engineering — OpenAI / Codex

A 5-month experiment shipping a real product with zero manually written code. 3 engineers, ~1 500 PRs, ~1M lines — all by Codex. The key lesson: replace one big AGENTS.md with a structured docs/ tree as a table of contents.

📐 Spec-Driven Development (SDD)

SDD tools are excellent spec-generation engines — and what they produce is Markdown. That output drops straight into DDD's tasks/specification/ and tasks/technical/. DDD engulfs SDD: they generate specs, DDD hosts, versions, and compounds them for the whole project lifecycle.

🧭

Spec-Driven Development — Martin Fowler

Birgitta Böckeler's field guide to the three SDD tools (Kiro, spec-kit, Tessl). Frames the shift: the spec becomes the source artifact, code becomes a projection the agent regenerates. DDD is the permanent home for those specs.

🏗️

SDD: AI-Native Engineering — Microsoft

Microsoft's formalisation of the SDD pipeline: intent → specification → plan → tasks → implementation, with the spec as executable source of truth. DDD extends this from a single feature to the entire project lifecycle.

📋

spec-kit — GitHub

A CLI that installs /specify, /plan, /tasks, /implement slash-commands into your agent and writes .md specs. A perfect front-end to feed a DDD .ai_context/.

🌀

Kiro — AWS

A CLI + agent that generates requirements.md → design.md → tasks.md in .kiro/specs/. The three-file pipeline maps almost one-to-one onto DDD's specification, technical, and steps layers.

🧩

Tessl

Goes spec-centric: the .spec.md file is the source, the generated code is disposable. The purest expression of SDD — and a natural upstream producer of the specs DDD keeps alive and versioned.

🎨

design.md — Google Labs

A format specification for describing a visual identity to coding agents: colours, typography, spacing, tone. Design becomes a portable .md spec — exactly the kind of permanent context DDD stores under skills/permanent-*.

🧪

Atlassian's DESIGN.md — In Practice

"What we learned testing portable design context in practice." Atlassian's field report on carrying design context across agents and tools as a single DESIGN.md — validating DDD's thesis that context belongs in versioned Markdown, not in tool-locked state.

🌐

designmd.co

The home of the DESIGN.md convention — a portable, agent-readable format for design context. A dedicated instance of the DDD principle applied to visual identity: if it's not in the .md, the agent can't see it.

🧠 Memory & Retrieval

🔖

Memoir

"Git for AI Memory." Replaces opaque vector databases with versioned, cryptographically secure semantic memory: branch, commit, merge, rollback. Their diagnosis — "AI memory is a global variable anti-pattern" — is our thesis, word for word.

🏛️

MemPalace

Stores conversation history as verbatim text and retrieves with semantic search. No summarisation, no paraphrasing. Structured like a palace: people and projects become wings, topics become rooms, content lives in drawers. Searches can be scoped, not run against a flat corpus.

🕸️

Jcode

Embeds each conversation turn as a semantic vector, then queries a memory graph via cosine similarity to find related entries. Optionally uses a memory sideagent to verify relevance before injecting into the conversation. A fine-grained take on retrieval-augmented context.

📖

RAG vs CAG — The Architect's Guide to LLM Memory

A clear breakdown of Retrieval-Augmented Generation vs. Context-Augmented Generation for LLM memory architecture. Essential reading for understanding where DDD's explicit, versioned context layer sits in the broader memory design space.

🖥️ Dev Environment & Tooling

📊

AI Engineering Coach — Microsoft

"Analyse your AI coding assistant usage — any harness, one dashboard." Observability for AI-assisted development: track what your agents actually do, where they help, and where context breaks down. Pairs naturally with a DDD project as the measurement layer.

📄

Claude Code — Best Practices

Anthropic's official best practices for Claude Code. Covers how to structure instructions, manage context, and guide the agent effectively. Essential reading — and a natural counterpart to your CONTRACT.md and skills/ files.

📁

Claude Code — The CLAUDE.md Directory

Anthropic's specification for the CLAUDE.md file — the project-level instruction file Claude reads at session start. Functionally equivalent to DDD's skills/permanent-*.md. If you use Claude Code, your DDD context maps directly onto this.

⚠️

Markdown Was a Mistake for Agent Output

Argues that Markdown as AI output format is unstructured and unparseable. DDD's position is the inverse: Markdown as human input and versioned context — not agent output — is exactly the right tool. The distinction matters.

📚 Foundations & Research

📝

zsup — Documentation-Driven Development (2014)

The original DDD definition: "Write the documentation before writing the code. If you can't explain it clearly, you don't understand it yet." DDD v2 builds on this foundation for the AI era.

🔬

Microsoft Research — DELEGATE-52 (2026)

Laban, Schnabel, Neville — "LLMs Corrupt Your Documents When You Delegate." 19 models, 52 documents, 20 interactions each. Top models: ~25% corruption. Average: ~50%. No plateau. The scientific foundation for DDD's human-review gate. Commentary →

🧬

Google DeepMind — Intelligent Delegation in Multi-Agent Systems (2026)

Tomašev, Franklin, Osindero — formal systems for authority, accountability, and verification in AI delegation. Their five requirements for safe AI delegation are implemented by DDD using plain Git primitives.

🕹️

Legends of the Future Past — Reddit (2026)

A MUD from 1992 rebuilt from its data files alone — the original server code was gone but the structured world files survived. The real-world proof of the DDD Reconstruction Guarantee.