A Claude Code skill
Your task board in Markdown,
right next to your code.
Claude proposes the next work, writes the cards, and archives what's done. Your backlog lives as plain Markdown files in docs/kanban/ — in git, diffable, readable by you and the agent. No database, no MCP. Just talk to the board.
The board, rendered in your terminal — the same files that live in git.
Plain Markdown, in your repo
Every card is a Markdown file under docs/kanban/. Diffable, reviewable, versioned with your code — not locked in a SaaS.
Steered in plain language
Say "/kanban what's next?" or "/kanban #4 is done." Claude reads the board and your sources, then proposes, writes, and archives for you.
No database, no MCP
Just a skill file and a small Node script. The board is plain Markdown any agent can read, so Cursor or Codex can drive it too — nothing to install, host, or pay for, and it keeps working offline.
Built for solo founders
Keep marketing, building, docs, and research side by side in one repo — so the model can compose across everything you have.
Install in one prompt
From your project root, tell Claude Code (or any agent that can run shell commands):
Set up the kanban skill for this project. Read
https://ai4kanban.dev/INSTALL_PROMPT.txt
and follow it.The agent copies the skill into .claude/skills/kanban/, reads your codebase to fill in the configuration, scaffolds the board, and proposes your first three tasks.
Using the kanban skill in Claude Code
Once installed, drive it in plain language:
A local board you can open in the browser
Prefer to look instead of ask? One command opens a board over the same Markdown files — read a task in full without hunting for its file in your IDE tree, and act on it with a click instead of re-typing the same prompt into the chat.
It's optional — the install step ships nothing extra. When you want it, just ask Claude:
/kanban run the local board UIClaude starts the prebuilt server for you — localhost only, nothing to compile.
Each card's buttons hand a move to an agent, no chat needed:
- Implement — hand the card to Claude to build
- Edit — revise the card, don't run it
- Refine — push a stuck card one step on
- Resolve — answer the card's open questions
- Archive — file a finished card away
- Reject — drop a card and note why
The indie-hacker preset
Building all day while nobody's watching is the classic solo-founder trap. This preset splits your time three ways — finding users, checking demand, and building — and Claude keeps new work spread across all three instead of piling it onto one.
growth
50%Get in front of users — posts, outreach, launches. Claude suggests methods worth trying and drafts them.
validation
30%Check the market wants it before you build deep. Post an honest question, share a trial, save the verdict.
building
20%Stay at MVP. Build when it scales your work, strengthens the product, or users clearly ask for it.
The indie-hacker preset also adds review gates — a moat test and a trust test — plus a market-validation method for posting to Reddit or X before you build. Swap in your own tracks and weights at install time.
Project management in Markdown, not a flat list
A flat to-do list is just a list. This one does four things a list can't — recurring work, subtasks for the big jobs, a memory of what's done, and a throughput count.
Recurring tasks
Some work is never one-and-done. Keep each as a card in docs/kanban/todo/recurring/ — a job that never gets archived — and let Claude Code's /loop run it on the cadence you pick, like every morning.
Competitor tracking
See what rivals shipped or changed, and flag anything worth a response.
Social listening
Pull fresh posts from Reddit or Slack and surface the ones that matter.
Board review
Sweep the backlog for stale, duplicate, or already-done cards.
Not every job needs the same level of automation. A card can sit at any rung — from one you drive by hand, to one Claude handles for you, to a script that runs on its own:
Push each job as far up as it earns — some stay hands-on, others run themselves.
Group tasks
A task too big to start tends to just sit there. When one card can't hold it, it becomes a group task — its own folder with a tracking root.md and one card per piece. Each piece gets its own id and is wired with Blocked by and Related links, so you always know the next thing to pick up.
todo/42-payments/
root.md # the tracking task
feature/43-checkout.md # a subtask, its own card + id
feature/44-refunds.md
bug/45-webhook-retry.mdProject memory
Working the board is a loop. Each round, Claude proposes new work by pulling from three sources, you make the call, and it folds the result into a memory hub — so the next round builds on the last instead of repeating it.
- 1
Propose. Pulls from three sources for work that isn't already shipped or shelved:
- Your project — Codebase, board, docs, team chat — it connects what's already here into work worth doing.
- The outside — Reddit, Slack, your CRM. Recurring jobs pull in fresh signal and drop the findings on the board.
- You — Your own steer and feedback, kept in the board so a good call is never lost or asked twice.
- 2
You decide. Ship it, skip it, or fix the plan. A few words back to Claude is enough.
- 3
Learn. Folds the outcome and your feedback into the hub, so the next round starts sharper.
memory.mdNotes from each scan carry to the next, with a watermark per source — so it re-reads only what changed.
archive.mdShipped work shrinks to a plain line. It reads this before proposing, so it won't re-suggest what's done.
rejected.mdIdeas you turned down are kept with the reason, so it never floats them at you again.
redesign.mdA design mistake you corrected becomes a note, so the next card doesn't repeat the wrong plan.
Task metrics
Each archived card is one shipped unit, so your velocity is just a number in git next to the work — no dashboard, no separate tool.
metrics.csv — completed, created, rejected, and their total. The script keeps it up to date; you never touch it.