// A FRAMEWORK FOR PROGRAM COMPREHENSION

Development is comprehension. Compile it.

vibedecoding is a software development framework. It puts two artifacts around your code repo: a private engineering wiki that holds what your system means, and a dependency-aware issue tracker that holds what happens next. Agents maintain both. Builds verify both. Nothing is allowed to rot.

~/my-project
❯ devwiki init my-project
scaffolded 20 files: wiki, tracker, prompts, guard
❯ bd ready --exclude-type idea
1. [P1] [task] mp-a3f: Ingest resumes after broker restart
❯ npm run build
gen: 18 work pages, 25 ideas, coverage matrix ✓
lint: 130 pages, 419 links ✓
130 pages — comprehension, compiled
█

READING IS THE JOB

Most of software development is not typing — it is working out what the system is and why. That understanding is the most expensive artifact your team produces. It is also the only one you throw away.

↻

Agents comprehend from scratch

Every session starts blind. The agent greps, reads, and re-derives your architecture — then the session ends and the comprehension dies with it.

DERIVED DAILY, SAVED NEVER
?

Code answers what, never why

Search over a codebase finds what is — not what should be, what was rejected, or what that strange lock is actually protecting.

WRONG QUESTION
↯

Docs and backlogs rot

Team wikis drift from reality the day they're written. Backlogs mix real work with wishes until nobody trusts the queue.

TRUTH DECAYS

COMPREHENSION, COMPILED

Treat understanding as a build artifact: compile it once, keep it current, and make everything downstream — including your agents — consume the compiled form instead of re-reading the sources.

ARTIFACT 1

The Wiki — what it means

  • Design pages and decision records: the why that code can't say
  • Curated and cross-linked, never appended-to; contradictions get flagged
  • Plain markdown — authored in Obsidian, rendered as a private site
the close ritual
ARTIFACT 2

The Tracker — what's next

  • Dependency-aware issues: blockers, parents, provenance
  • Ideas parked from birth; work gated by refinement
  • The ready queue is correct by construction
  • Runs on Beads: a local, git-synced issue database behind the bd command
my-project/
├─ wiki/ # PRIVATE — the IP
│ ├─ .beads/ # issue database
│ ├─ design/ + adr/
│ ├─ work/ # generated from the tracker
│ ├─ tests/ # markdown test cases
│ ├─ prompts/ # judgment tasks for agents
│ └─ site/ # private static site
└─ src/ # your code — the boundary

A Hard Boundary

The wiki is a private repo beside your source. That source is a codebase you already have: an agent compiles the first design pages from it, and the loop drives every change back into it after that. Understanding stays in; nothing crosses out but opaque issue IDs — and a pre-push guard greps every outgoing commit to keep it that way. Open-source the code if you want to. Keep the comprehension either way.

THE LOOP

One lifecycle from passing thought to distilled knowledge. Every stage is enforced by structure, not discipline.

STAGEWHAT ENFORCES ITWHAT THAT GUARANTEES
01a passing thought→a type the ready queue excludes→it never appears next to real work
02the idea pile→a scheduled triage pass→graduated or pruned, never left to rot
03a graduated item→a blocking refinement chore→unrefined work cannot reach the queue
04the ready queue→dependency math→a queue that cannot lie
05a claimed item→workers build, reviewers verify→nothing closes unreviewed
06a finished change→the close ritual→design pages updated, or “no design impact” on the record
07a closed issue→the close-audit prompt→skipped distillation gets reopened
↺The wiki is not what it was at step 01 — the next passing thought arrives into a system that already knows more.

Ideas are parked. Work is gated. Closes are audited. None of it depends on anyone remembering to care.

WHAT LIVES IN THE WIKI

Five kinds of pages, one link graph, and a build that refuses to render anything broken.

CURATED

Design Pages & ADRs

Why the system is shaped like this. Decision records survive the refactors that erase their evidence from the code.

GENERATED

Work Pages

Rendered from the tracker at every build and hash-stamped — a hand-edit fails the build. There is nothing to keep in sync.

VERIFIED

Tests as Pages

Each test case is a markdown file linked to the work it covers. A coverage matrix flags anything closed but never verified.

DRAWN

Diagrams by Style Guide

A palette and conventions that agents read each session. Consistency comes from a style guide plus lint, not a generator.

JUDGED

Prompts, Versioned

Refine, triage, close-audit, ingest, implement — the judgment work of the process lives as reviewable files, not tribal knowledge.

LINKED

The Link Graph

Wikilinks resolve in the editor and on the site; issue and test IDs are link targets too. One broken link fails the build.

A team wikivibedecoding
Kept honest byGood intentionsA failing build
Work trackingA separate tool that driftsThe tracker is the source; pages are generated
Written forHumans onlyHumans and agents, same files
After each changeDriftMandatory distillation at close
Understanding livesIn heads and threadsIn a repo, compiled

THE ENGINE

The framework is built as an engine: one package, a CLI, and a template. Every project's wiki is an instance; the machinery is developed in exactly one place.

Instantiate
❯ devwiki init my-project

A full workspace in one command: private wiki, issue tracker, agent prompts, boundary guard, and a private site.

The Gate
❯ npm run build

Regenerate from the tracker → lint the link graph → check coverage → render. If the wiki is wrong, it doesn't build.

Evolve
❯ devwiki upgrade

Template improvements flow to existing instances: pristine files re-stamped, customized files flagged — never overwritten.

Ingest
prompts/ingest.md # point an agent here

Point an agent at an existing codebase and compile the first design pages, decisions, and a seeded backlog.

The engine runs today — it maintains this framework's own wiki and backlog. It is not released yet. If that changes, it will change here first.

BUILT INSIDE ITSELF

vibedecoding is developed as a vibedecoding project. Its own wiki holds the framework's design; its own backlog holds the framework's roadmap. Every papercut found in any instance is filed upstream and triaged like everything else.

THE META PROJECT

The framework's design pages, decision records, and tests — the first instance of its own engine. Every change is dogfooded here before any project sees it.

THE INSTANCES

One private wiki per project, scaffolded in a command, running on the shared engine, feeding discoveries back upstream as parked ideas.

The system tracks its own growth: tooling needs are ideas, ideas are triaged, and the framework improves through the same gate as everything it manages.

PRINCIPLES

THE QUEUE CANNOT LIE

Readiness is dependency math, not opinion. Unrefined work is structurally blocked.

GENERATED MEANS GENERATED

Derived pages are hash-stamped. A hand-edit fails the build, so drift is impossible.

A FAILING BUILD IS THE GATE

No CI, no process police. A broken wiki simply refuses to render.

IDEAS ARE NOT WORK

Parked from birth, triaged on schedule, pruned without guilt.

CLOSE MEANS DISTILL

Every close updates the design pages or states “no design impact” — on the record.

PLAIN MARKDOWN FOREVER

Obsidian to write, a static site to read, grep at worst. No lock-in, ever.

THE BOUNDARY IS STRUCTURAL

Private wiki, public code, and a guard that greps every push. Leaks are hard by design.

AGENTS ARE CHEAP; ROT IS NOT

Maintenance is delegated to agents. Honesty is enforced by the build.