Aviram KofmanRead as article →
Jan 2026 · Aviram Kofman

Manifest-Driven Development

What I Learned After Years of AI Workflows

Scroll to begin

The Vibe Coding Hangover

Code looks fine. Then errors cascade.

terminal
async function processUser(data: UserInput) {
const user = await validate(data)
await save(user)
await sendEmail(user.email)
return { ok: true }
}
"Looks fine to me"
The Mindset Shift
How should the LLM do this?
Reframe
What would make me accept this?

Stop thinking about how. Start defining done.

The Framework

Four phases. One loop. Done when it passes.

DefineDoVerifyFix
Define
Specify acceptance criteria
The LLM Science

Why This Works

Not a hack around limitations. A design that treats them as first principles.

Goal-Oriented

RL training made them chase goals. Criteria play to their strength.

01

Can't Hold It All

Neither can you. Goals flex where rigid plans break.

02

Context Drifts

Long sessions rot. External state keeps truth outside the window.

03

Don't Know When Wrong

They can't express uncertainty. Automated checks catch what they miss.

04

This isn't magic. It's engineering.

Try It

The most reliable approach I've found to ship quality code with AI agents. Not because it removes their limitations—but because it works with them.

terminal
> /plugin marketplace add
doodledood/manifest-dev
> /plugin install
manifest-dev@manifest-dev-marketplace