Methodology

Spec-Driven Kanban: A Board Where Every Card Has a Spec

A plain kanban card is a title and a hope. A spec-driven card carries a written, approved spec, so it becomes the agent's brief and the reviewer's checklist at once, and the board's columns turn into real workflow gates.

By Kylian Migot · Updated July 2026 · 11 min read

Quick answer

Spec-driven kanban is a kanban board for AI agents where every card carries a written, approved spec, scope, in-scope files, acceptance criteria, and exclusions, before an agent touches code. The columns encode gates rather than status: Backlog → Spec drafted → Spec approved → In progress → In review → Done. The same spec becomes the agent's brief and the reviewer's checklist, which is what makes agent work on a board reviewable instead of a leap of faith.
What it is
A board where every card carries an approved spec before an agent codes
A spec card holds
Goal · in-scope files · acceptance criteria · out-of-scope exclusions
Columns as gates
Backlog → Spec drafted → Spec approved → In progress → In review → Done
Parallel-safety
One agent per card, one git worktree per card
01

Why Vibe-Managed Boards Break With Agents

A traditional kanban card is a title and a short description: “Add rate limiting to checkout.” For a human teammate that is enough, because a human fills the gaps from shared context, asks a question in standup, and knows implicitly which files are off-limits. The card is a pointer to a conversation, and the conversation carries the real definition of done.

Hand that same one-line card to a coding agent and the pointer dangles. The agent has no standup, no shared history, and no instinct for what is out of bounds. It reads “add rate limiting,” decides for itself that this means a new middleware layer, a Redis dependency, and edits to eight routes, and produces a 400-line diff that technically satisfies the title and satisfies nothing you actually wanted. This is drift: with no written definition of done, the agent optimizes for a plausible interpretation instead of the intended one, and you find out only when you open the PR.

A board full of one-line cards is a board managed by vibes, and vibes do not survive contact with an autonomous executor. Managing agents as work items, covered more broadly in project management for AI agents, needs the card itself to carry the contract. That is the single change spec-driven kanban makes.

02

The Anatomy of a Spec-Driven Card

A spec-driven card replaces the title-and-hope with a small, structured spec. It does not need to be long, a good one fits on a screen, but it must answer four questions the agent would otherwise guess at: what is the goal, which files may change, what does done mean, and what must stay untouched. Here is the checkout card from above, written as a spec instead of a wish:

## Story: Add rate limiting to the checkout API

Goal:
  Protect POST /api/checkout from abuse with a per-IP rate limit.

In-scope files:
  - src/app/api/checkout/route.ts   (add the limiter)
  - src/lib/ratelimit.ts            (new; token-bucket helper)
  - src/lib/ratelimit.test.ts       (new; unit tests)

Acceptance criteria:
  - 11th request from one IP within 60s returns HTTP 429
    with { error: "rate_limited" } and a Retry-After header.
  - Requests under the limit are unaffected (still 200).
  - ratelimit.test.ts covers the boundary (10 ok, 11th blocked).

Out of scope (do NOT change):
  - The Stripe session logic in route.ts.
  - Any other /api/* route.
  - The User schema or database migrations.

Each block does load-bearing work. The goal gives the agent a one-sentence outcome to aim at. The in-scope files collapse the hallucinated-scope failure mode, the agent is told exactly where it may write. The acceptance criteria are a testable definition of done, so the agent has something concrete to verify its work against before you ever see it. And the out-of-scope list, often the most valuable block, is what stops a rate-limiting story from quietly rewriting your Stripe logic. The full craft of writing these lives in spec-driven AI development; on the board, the point is simply that this spec rides on the card.

03

The Columns Are Gates, Not Labels

On a vibe board, columns are decoration: someone drags a card from “Doing” to “Done” when they feel like it. On a spec-driven board, the columns encode the workflow's actual checkpoints, and two of the transitions are hard gates that nothing crosses without passing a check. A card walks this lane:

  1. 1

    Backlog

    A plain-language story sits here as a title and maybe a sentence of intent. It is a candidate, not yet a brief. Nothing is committed and no agent is involved.
  2. 2

    Spec drafted

    The card gets a draft spec, goal, in-scope files, acceptance criteria, exclusions, generated from the title plus an analysis of the codebase. It is a proposal for how the work should be bounded, ready for a human to read.
  3. 3

    Spec approved (the human gate)

    A person reads the draft, tightens anything too broad, adds a missing constraint, and approves. This is the load-bearing gate: no agent starts coding until a human has signed off on the spec. It is the one place the workflow forces you to think before an autonomous process runs.
  4. 4

    In progress (agent in its own worktree)

    The approved spec becomes the agent's brief. The agent runs in its own git worktree on its own branch, so its changes are physically isolated from every other card. The card shows the branch, the agent's current action, and a live output tail.
  5. 5

    In review (the PR gate)

    The agent opens a pull request. The reviewer checks the diff against the acceptance criteria on the card, not against a vibe. This is the second gate: work does not advance until the PR is approved and merged.
  6. 6

    Done

    The PR is merged and the worktree is cleaned up. The card, its approved spec, agent log, and final diff stay searchable, so six months later you can reconstruct exactly what was decided and why.

The two gates, spec approval and PR review, are where a human is deliberately in the loop, and they bracket the one column where the agent runs unattended. That shape is intentional: you spend your attention defining the work and verifying it, and let the agent own the middle.

04

WIP Limits and One Worktree per Card

Kanban's oldest lesson, limit work in progress, matters more with agents than it ever did with humans, and for a second reason on top of the classic one. The classic reason is throughput: a card in In review that nobody reviews is a stalled card, and starting a fifth agent while four PRs wait unread just grows a review backlog you cannot clear. Your review throughput, not agent speed, is the real bottleneck on a spec-driven board.

The second reason is collision. Multiple agents editing one working tree will overwrite each other and produce a tangle no spec can untangle. The fix is a two-part isolation rule that a spec-driven board enforces by construction:

One agent per card

Exactly one agent owns a card's work at a time. The card is the unit of assignment, so there is never ambiguity about who is writing what, and the spec bounds precisely what that one agent may touch.

One worktree per card

Each In-progress card gets its own git worktree and branch. Two agents can run at once because they write to different directories, their diffs never mingle until both open PRs, and conflicts surface at merge time where they belong.

Bounded scope from the spec and physical isolation from the worktree are complementary: the spec keeps an agent from wanting to touch a neighbouring card's files, and the worktree makes it impossible for it to accidentally do so. The mechanics of running agents this way, and how many is sane at once, are in parallel agents with git worktrees.

Your AI workspace for shipping software.

Download AIDEN free and point it at your existing Claude Code or Codex setup. No credit card, running in minutes.

Download AIDEN free

Free to start · macOS 12+ · No credit card required

05

The Spec Doubles as the Review Contract

The quiet payoff of putting a spec on the card is that review stops being a leap of faith. Without a written intention, reviewing an agent's PR means reading the whole diff cold and guessing whether it does the right thing, which is why most people skim and merge, and skimming is when bugs ship. The spec turns review into a checklist: you read the diff against the acceptance criteria, one line at a time.

Did the 11th request return a 429 with a Retry-After header? Did the tests cover the boundary? Did anything outside the in-scope files change, which the exclusion list forbids? These are binary questions with answers you can find in the diff, not judgment calls about intent. The same document that briefed the agent now scores its work, and because it was approved before the code existed, it is an honest contract rather than a rationalization written after the fact. Turning that reviewed PR into a merge is the last step of the AI PR automation workflow.

06

Plain Kanban vs Spec-Driven Kanban

The two boards look identical, cards in columns, but they behave differently the moment an agent picks up a card. The difference is entirely in what the card carries and what the columns enforce:

DimensionPlain kanbanSpec-driven kanban
Card contentTitle + a description (a hope)Approved spec: goal, files, criteria, exclusions
Definition of doneImplicit, inferred by whoever codesConcrete, testable acceptance criteria on the card
Review basisThe whole diff, read coldThe diff checked against acceptance criteria
Column meaningStatus labels you drag betweenGates: spec approval and PR review are enforced
Parallel-safetyAgents overlap and collideOne agent + one worktree per card, isolated
Agent success rateLow, drift on ambiguous scopeHigh, bounded scope with a verifiable target

None of this makes plain kanban wrong for humans, who supply the missing context themselves. It makes plain kanban wrong for agents, who cannot. The broader case for agent-native boards is in AI kanban for developers, and the Claude-Code- specific version, with the honest tool landscape, is in the Claude Code kanban guide.

07

How Spec-Driven Kanban Goes Wrong

The method is only as good as the discipline behind it. Three failure modes hollow out a spec-driven board until it is a vibe board with extra ceremony:

Specs too vague

A spec that says "handle errors gracefully" with no in-scope files and no testable criteria is a title in disguise. The agent drifts exactly as it would on a plain card, and you have paid the spec overhead for nothing. If a spec would not let a reviewer answer done/not-done, it is not a spec.

Approving without reading

The approval gate only works if you actually read the draft. Rubber-stamping every spec because the AI wrote it defeats the entire purpose, the gate exists so a human catches an over-broad scope or a missing exclusion before an autonomous process acts on it.

No WIP limit

Start a card for every idea at once and either your review column overflows or, worse, agents sharing a checkout step on each other. Without a WIP cap and one-worktree-per-card, parallelism turns from a feature into a source of corrupted state.
08

How AIDEN Implements Spec-Driven Kanban

AIDEN's board is not a plain kanban with a spec field bolted on, it is spec-first by construction. Its model is Project → Epic → Story → Spec, and the story is where the board lives. When you add a story card, AIDEN drafts its spec, goal, in-scope files, acceptance criteria, exclusions, from the card title plus an analysis of your codebase, and parks the card in Spec Review. Nothing runs yet.

The approval gate is enforced, not advisory: since v1.5.21, no agent starts coding until you have read and approved the spec on the card. Once you do, AIDEN opens a dedicated git worktree on a new branch (one worktree per story, so parallel stories never collide), launches your Claude Code or Codex CLI with the approved spec as its working brief, and shows the branch, action, and live output on the card. When the agent finishes, the work lands as a PR per story with the spec attached as the description, so your reviewer reads the diff against the exact criteria you approved. Because AIDEN orchestrates the CLIs you already run, you bring your own inference, it is a cockpit over your agents, not a new model. Every gate this article describes, the human approval gate and the PR gate, is wired into the board rather than left to discipline.

FAQ

What is spec-driven kanban?
Spec-driven kanban is a kanban board for AI agents where every card carries a written, approved spec, scope, in-scope files, acceptance criteria, and exclusions, before an agent writes any code. The board's columns encode workflow gates rather than just status: a card cannot reach In progress until a human approves its spec, and it cannot reach Done until its PR passes review against that spec. The spec is the card's contract, doubling as the agent's brief and the reviewer's checklist.
How is spec-driven kanban different from a normal kanban board?
A normal kanban card is a title and a description, a hope that whoever picks it up infers the right scope. That inference is exactly what breaks with AI agents, which will happily interpret a one-line card into a 30-file diff. A spec-driven card removes the inference: it names the files in scope, states a testable definition of done, and lists what must not change. The columns also become enforced gates (spec approval, PR review) instead of drag-and-drop labels.
What does a spec-driven kanban card contain?
A goal (one sentence on the outcome), the in-scope files the agent may create or modify, concrete acceptance criteria that define done in a verifiable way, and an out-of-scope list naming what must stay untouched. That small spec is drafted from the card title plus an analysis of the codebase, approved by a human, and then handed to the agent verbatim as its brief. The same document becomes the reviewer's checklist when the PR arrives.
Why does each card need its own worktree?
Because parallel agents on a shared checkout will step on each other. A spec-driven board pairs one agent per card with one git worktree per card, so each agent works in an isolated directory and branch. Bounded scope from the spec plus physical isolation from the worktree is what makes running several cards at once safe, no two agents touch the same working tree, and merge conflicts surface at PR time rather than mid-run.
Does AIDEN implement spec-driven kanban?
Yes. AIDEN's board is spec-first by design: a story's spec is drafted from the card and a codebase analysis, gated on your approval (an enforced gate since v1.5.21), then the agent runs in its own git worktree and lands the work as a PR-per-story with the spec attached. It orchestrates your existing Claude Code and Codex CLIs, so you bring your own inference. The free tier covers one project; Solo is $19/mo for unlimited personal projects.

Keep reading

A kanban board that is spec-first by design.

AIDEN drafts a spec on every card, gates it behind your approval, runs the agent in its own worktree, and lands a PR per story. Free for one project.

macOS 12+ · Bring your own Claude Code or Codex · Your code stays local