Skip to content
/

Backlog.md

backlog-md · MrLesk/Backlog.md · ★ 5.6k · last commit 2026-05-07

Structured task management for AI coding agents using per-task markdown files, MCP, and a web Kanban board — all inside the git repo.

Best whenNever edit task files directly; all mutations must go through the CLI or MCP layer to maintain metadata integrity.
Skip ifEditing task markdown files directly, Working on multiple tasks per agent session
vs seeds
superpowersand spec-driver (Claude Code-only skills), Backlog.md is fully cross-tool via MCP and CLI, targeting Claude Code, Codex,…
Primitive shape 35 total
Commands 14 Subagents 1 MCP tools 20
00

Summary

Backlog.md — Summary

Backlog.md is a markdown-native task manager and Kanban visualizer built for spec-driven AI development in any Git repository. It ships as a CLI binary (backlog) installable via npm/bun/brew/nix and exposes a full MCP server so AI agents (Claude Code, Codex, Gemini CLI, Kiro, Cursor) can manage tasks without touching files directly. Every task is a plain .md file under backlog/tasks/, making the backlog human-readable, git-diffable, and offline-capable. The system enforces a three-checkpoint review gate workflow: task decomposition → implementation planning → code review, keeping humans in the loop without blocking async AI execution. A bundled web UI (backlog browser, default port 6420) provides a drag-and-drop Kanban board synced to the same markdown files the CLI and MCP operate on.

Compared to seeds: most similar to taskmaster-ai (file-based tasks, MCP exposure, multi-agent support) but diverges by storing each task as a standalone .md file rather than a monolithic tasks.json, shipping a full web browser UI, and providing an explicit Definition-of-Done checklist per task rather than taskmaster's complexity/expansion prompt chaining.

01

Overview

Backlog.md — Overview

Origin

Created by MrLesk; v1.45.1 as of analysis. Active development, 38 contributors, 5,622 GitHub stars. MIT licensed, TypeScript/Bun stack.

Philosophy

"Backlog.md turns any folder with a Git repo into a self-contained project board powered by plain Markdown files and a zero-config CLI. Built for spec-driven AI development — structure your tasks so AI agents deliver predictable results."

The core thesis is that AI agents need a structured task surface to deliver predictable results. Random vibe-coding instructions produce random outputs; structured tasks with acceptance criteria and implementation plans produce consistent ones.

Manifesto-style positions

  • Every task is a plain .md file — never hidden in a database
  • 100% private and offline — all data lives inside the repo
  • "Review checkpoint #1/2/3" — human approval gates built into the recommended workflow
  • "Never bypass the CLI" — all mutations must go through backlog commands (CLI or MCP), enforcing metadata synchronization
  • "Plan before coding" — implementation plan written in the task file before any code is touched, approved by human before agent proceeds
  • Cross-platform: macOS, Linux, Windows

Target audience

Software developers working with AI coding agents in git repositories, especially those managing AI-assisted tasks in Claude Code, Codex, Gemini CLI, or Kiro.

02

Architecture

Backlog.md — Architecture

Distribution

  • npm package (npm i -g backlog.md or bun add -g backlog.md)
  • Homebrew (brew install backlog-md)
  • Nix (nix run github:MrLesk/Backlog.md)

Install Complexity

One-liner (any package manager)

Runtime Requirements

  • Node.js or Bun (Bun preferred; built with Bun+TypeScript 5)
  • Git (optional — --no-git flag available for filesystem-only mode)

Directory Tree (after backlog init)

<project-root>/
├── backlog/
│   ├── config.yml              # Project configuration
│   ├── tasks/
│   │   ├── task-1 - Add OAuth System.md
│   │   └── task-2 - Fix search bug.md
│   ├── drafts/                 # Draft tasks not yet on board
│   ├── docs/                   # Project documentation
│   ├── decisions/              # Architectural decision records
│   └── archive/                # Archived/closed tasks
├── backlog.config.yml           # (optional root-level config)
├── AGENTS.md                    # AI agent workflow instructions (MCP path)
├── CLAUDE.md                    # (CLI integration path)
└── .claude/
    └── agents/
        └── project-manager-backlog.md  # Sub-agent definition

Config Files

  • backlog/config.yml or backlog.config.yml
  • Configures: statuses, definition-of-done defaults, defaultAssignee, autoCommit, port, defaultEditor

Target AI Tools

Claude Code, OpenAI Codex, Gemini CLI, Kiro, Cursor — any MCP-compatible or CLI-capable agent

Source Layout

src/
├── cli.ts           # CLI entry point
├── commands/        # CLI command handlers
├── mcp/
│   ├── server.ts    # MCP stdio server
│   ├── tools/
│   │   ├── tasks/   # task_create, task_list, task_edit, etc.
│   │   ├── documents/
│   │   ├── milestones/
│   │   ├── definition-of-done/
│   │   └── workflow/
│   └── resources/   # backlog://workflow/* resource URIs
├── guidelines/
│   ├── agent-guidelines.md
│   └── project-manager-backlog.md
├── core/            # Business logic
├── file-system/     # Task file I/O
├── git/             # Git integration
└── server/          # Web UI server
03

Components

Backlog.md — Components

CLI Binary: backlog

Command Purpose
backlog init Initialize project, configure MCP/CLI integration, set up AI instruction files
backlog task create Create a new task with metadata (description, AC, DoD, assignee, priority, deps)
backlog task edit Edit any task field including plan, notes, AC checks, DoD checks
backlog task list List tasks with filtering by status, assignee, milestone, labels
backlog task search Fuzzy search across tasks, docs, decisions
backlog task archive Archive a completed task
backlog board Paint live terminal Kanban board
backlog board export Export board as shareable markdown report
backlog browser Launch web UI on configurable port (default 6420)
backlog doc create/update/list Manage project documentation files
backlog milestone create/list Manage milestones
backlog config list/get/set Manage project configuration
backlog mcp start Start the MCP stdio server
backlog search Full-text search across tasks, docs, decisions

MCP Server Tools (stdio protocol)

Tool Purpose
task_create Create task (full metadata)
task_list List tasks with filtering
task_search Search tasks by title, description, modified files
task_edit Edit task metadata, plan, notes, AC, DoD, dependencies
task_view View single task details
task_complete Mark task as done
task_archive Archive task
milestone_create/list/view Milestone management
definition_of_done_defaults_* Manage default DoD checklist items
document_create/update/list/view/search Document management

MCP Resources

Resource URI Purpose
backlog://workflow/overview When/how to use Backlog for a project
backlog://workflow/task-creation Task scoping, AC, parent/subtask guide
backlog://workflow/task-execution Execution workflow and discipline guide
backlog://workflow/task-finalization DoD, finalization workflow

Sub-Agent Definition

.claude/agents/project-manager-backlog.md — a Claude Code sub-agent persona definition that gives Claude a "project manager" role with Backlog.md expertise.

Skills

.claude/skills/ — (present in repo; content not enumerated)

Configuration

backlog.config.yml or backlog/config.yml — all project settings including statuses, DoD defaults, autoCommit, defaultPort, onStatusChange callback.

05

Prompts

Backlog.md — Prompt Files

Verbatim Excerpt 1: Agent Guidelines (src/guidelines/agent-guidelines.md)

Prompting technique: Iron-Law command prohibition with rationale anchoring

# ⚠️ CRITICAL: NEVER EDIT TASK FILES DIRECTLY. Edit Only via CLI

**ALL task operations MUST use the Backlog.md CLI commands**

- ✅ **DO**: Use `backlog task edit` and other CLI commands
- ✅ **DO**: Use `backlog task create` to create new tasks
- ✅ **DO**: Use `backlog task edit <id> --check-ac <index>` to mark acceptance criteria
- ❌ **DON'T**: Edit markdown files directly
- ❌ **DON'T**: Manually change checkboxes in files
- ❌ **DON'T**: Add or modify text in task files without using CLI

**Why?** Direct file editing breaks metadata synchronization, Git tracking, and task relationships.

Verbatim Excerpt 2: AGENTS.md (AI workflow instruction injected by backlog init)

Prompting technique: Context-gated instruction loading via MCP resources

## BACKLOG WORKFLOW INSTRUCTIONS

This project uses Backlog.md MCP for all task and project management activities.

**CRITICAL GUIDANCE**

- If your client supports MCP resources, read `backlog://workflow/overview` to understand when and how to use Backlog for this project.
- If your client only supports tools or the above request fails, call `backlog.get_backlog_instructions()` to load the tool-oriented overview.

- **First time working here?** Read the overview resource IMMEDIATELY to learn the workflow
- **Already familiar?** You should have the overview cached ("## Backlog.md Overview (MCP)")
- **When to read it**: BEFORE creating tasks, or when you're unsure whether to track work

Verbatim Excerpt 3: ccpm SKILL.md (reference companion)

Prompting technique: Dispatch-table pattern — maps natural language phrases to file references

description: "CCPM - spec-driven project management: PRD → Epic → GitHub Issues → parallel agents →
shipped code. Use this skill for anything in the software delivery lifecycle: writing a PRD ('write a
PRD for X', 'let's plan X', 'scope this out'), parsing a PRD into an epic, decomposing an epic into
tasks, syncing to GitHub... Use ccpm any time the user is talking about shipping a feature, managing
work, or tracking progress — even if they don't say 'ccpm' or 'PRD'."

Verbatim Excerpt 4: Workflow README (user-facing spec-driven loop)

Prompting technique: Numbered-step scaffolding with interleaved human review gates

**Step 3 — Plan before coding.** Ask the agent to research and write an implementation plan in the task.
Do this right before implementation so the plan reflects the current state of the codebase.

**🤖 Ask your AI Agent:**
> Work on BACK-10 only. Research the codebase and write an implementation plan in the task.
> Wait for my approval before coding.

> [!NOTE]
> **Review checkpoint #2** — read the plan. Does the approach make sense? Approve it or ask
> the agent to revise.
09

Uniqueness

Backlog.md — Uniqueness & Positioning

Differs from Seeds

Backlog.md is closest to taskmaster-ai in the seed set — both are file-based task managers with MCP servers designed for AI coding agents. However, the architectural delta is significant: taskmaster-ai stores all tasks in a single monolithic tasks.json with complex nested JSON structures, while Backlog.md stores each task as a separate plain .md file making the backlog human-readable, git-diffable at the task level, and editable with any markdown tool. Backlog.md also ships a full web browser UI (port 6420 drag-and-drop Kanban) that taskmaster lacks, enforces explicit human review checkpoints as first-class workflow gates (not just optional suggestions), and provides a Definition-of-Done checklist per task. Unlike agent-os or claude-conductor (pure markdown scaffolds), Backlog.md enforces all mutations through a CLI/MCP layer to maintain metadata integrity — direct file editing is explicitly banned. Unlike superpowers (skills-only behavioral framework), Backlog.md is a standalone tool that works across any AI coding agent, not just Claude Code.

Distinctive Positioning

  • Only tool in this batch with a full web dashboard (Kanban board, drag-and-drop)
  • Highest star count in the batch (5,622) — reflects real-world adoption
  • Cross-agent by design: MCP + CLI path covers all major AI tools simultaneously
  • "Never edit markdown files directly" is a hard architectural invariant enforced by CLI/MCP gates
  • onStatusChange callback is a unique automation hook enabling event-driven side effects (e.g., auto-launching an agent when a task reaches "In Progress")

Observable Failure Modes

  • No built-in isolation: multiple agents editing different tasks in the same working tree can create merge conflicts if not disciplined about feature branches
  • Web UI tech stack is unspecified — may have compatibility issues on some platforms
  • Auto-commit disabled by default means dirty repo unless explicitly configured
  • No time estimates or sprint velocity tracking — purely a task state manager, not a full PM tool
  • The "one task per session" recommendation is guidance only — nothing prevents agents from working on multiple tasks simultaneously and creating context overflow
04

Workflow

Backlog.md — Workflow

Phase 1 — Task Decomposition

Artifact: New tasks in backlog/tasks/ with acceptance criteria

Human action: Describe feature to AI agent, ask it to decompose into small tasks.

Review checkpoint #1: Human reads task descriptions and acceptance criteria.

Phase 2 — Implementation Planning

Artifact: Implementation plan written into the task file

Human action: Ask agent to research codebase and write plan in the task.

Review checkpoint #2: Human reads plan, approves approach or requests revision.

Phase 3 — Implementation

Artifact: Code changes, tests, updated task status

Human action: Let agent implement.

Review checkpoint #3: Human reviews code, runs tests, verifies results against acceptance criteria.

Workflow Artifacts per Phase

Phase Artifact Location
Decomposition Task .md files with AC backlog/tasks/
Planning plan: field in task Task file frontmatter/body
Execution Code + task notes/final-summary Codebase + task file
Finalization DoD checklist complete, task archived backlog/archive/

Approval Gates

Gate Type Description
Task decomposition review file-review Human reads task descriptions + AC before any code
Implementation plan review file-review Human approves plan before implementation begins
Code review human-required Human reviews code, runs tests, verifies against AC

Task Lifecycle States

Default: To Do → In Progress → Done (configurable via statuses in config)

Key Constraints

  • One task per agent session recommended (avoids context overflow)
  • One PR per task
  • Tasks must be small enough for single-conversation completion
  • backlog task create --dep task-1,task-2 for dependency tracking
06

Memory Context

Backlog.md — Memory & Context

State Storage

All state is stored as plain Markdown files in the backlog/ directory:

Store Path Content
Active tasks backlog/tasks/task-<id> - <title>.md Status, assignee, priority, AC, DoD, plan, notes, final-summary, deps, refs
Draft tasks backlog/drafts/ Unpublished/WIP tasks
Archive backlog/archive/ Completed tasks
Documentation backlog/docs/ Project docs, organized in subdirectories
Decisions backlog/decisions/ Architectural decision records
Config backlog/config.yml Project configuration

Task File Format

Each task file has YAML frontmatter:

---
id: task-42
title: "Add OAuth System"
status: "In Progress"
assignee: @sara
priority: high
labels: [auth, backend]
dependencies: [task-1, task-2]
milestone: v2.0
acceptance_criteria:
  - [ ] OAuth flow works
  - [x] Tests pass
definition_of_done:
  - [ ] Ship notes written
modified_files: [src/auth.ts, src/routes.ts]
---

Followed by markdown body sections: ## Plan, ## Notes, ## Final Summary.

Persistence

  • Scope: Project-scoped (all state lives in the repo)
  • Git-integrated: Tasks are committed as part of the repo; cross-branch tracking available
  • Cross-branch: checkActiveBranches option tracks task states across active git branches

Memory Features

  • --modified-file search index: tasks record which files they touched, enabling backlog search --modified-file src/path.ts
  • onStatusChange hook: shell command triggered on any task status change with $TASK_ID, $OLD_STATUS, $NEW_STATUS, $TASK_TITLE variables

Context Handoff

  • MCP resources (backlog://workflow/*) serve as context injection points; agents load these at session start
  • AGENTS.md / CLAUDE.md generated by backlog init provide persistent workflow instructions
  • --plain flag on CLI commands produces AI-friendly text output for embedding in prompts

Compaction

No explicit compaction mechanism. Archives are moved to backlog/archive/ rather than deleted; full history preserved in git.

07

Orchestration

Backlog.md — Orchestration

Multi-Agent Support

Yes. Backlog.md is explicitly designed for multiple agents working in parallel on the same project.

  • Agents use --actor agent-1 style flags (on the Tracer model; Backlog.md uses assignee: @agent-name)
  • MCP tool calls are atomic — the server handles concurrent writes safely
  • Dependency tracking (--dep) prevents agents from starting blocked tasks

Orchestration Pattern

Task-decomposition-tree: Tasks can have parent-child relationships (subtasks under parent tasks), dependencies between tasks, and are surfaced to agents as a ready-to-work queue.

Isolation Mechanism

No built-in isolation (no worktrees, containers). Agents edit the same working tree. The recommended pattern is one PR per task, implying feature branches, but Backlog.md itself does not enforce this.

Execution Mode

Interactive-loop (human-in-the-loop): The recommended workflow is a human-paced loop with three explicit checkpoints. No continuous/daemon execution.

Multi-Model

No. Backlog.md itself does not route different models — it is tool-agnostic. The agent client (Claude Code, Codex, etc.) determines the model.

Consensus Mechanism

None. Coordination is through task state (assignee, status, dependencies) stored in files.

Prompt Chaining

Yes — the recommended pattern chains: decomposition prompt → plan-writing prompt → implementation prompt, with human approval gates between each stage.

Sub-Agent Definition Format

persona-md: .claude/agents/project-manager-backlog.md defines a project manager sub-agent persona. Separate from the main Claude Code agent.

Auto-Commit

Optional — autoCommit: false by default. When enabled, each CLI/MCP task operation commits the change to git automatically.

08

Ui Cli Surface

Backlog.md — UI & CLI Surface

Dedicated CLI Binary

Binary name: backlog Aliases: backlog (primary), used as backlog mcp start to activate MCP server Distribution: npm, bun, brew, nix

Primary subcommand groups:

  • task — create, edit, list, search, view, archive, complete
  • board — terminal Kanban display, export
  • browser — launch web UI
  • doc — document management
  • milestone — milestone management
  • config — configuration management
  • mcp — start/stop MCP server
  • init — project initialization wizard
  • search — global search

Local Web Dashboard

Exists: Yes Type: Web dashboard Default port: 6420 (configurable via defaultPort) Tech stack: Not explicitly stated in README; served by a built-in Bun HTTP server Features:

  • Interactive Kanban board with drag-and-drop
  • Task creation and editing with rich forms
  • Interactive acceptance criteria editor with checklists
  • Real-time updates across all views
  • Responsive design for desktop and mobile
  • Task archiving with confirmation dialogs
  • Seamless CLI integration — all changes sync with markdown files

Launch: backlog browser (auto-opens browser by default; --no-open to disable, --port N to change port)

Terminal TUI

backlog board — live terminal Kanban display with color-coded columns backlog task <id> — interactive task viewer with 'E' to open in editor

IDE Integration

Via MCP: any MCP-compatible IDE or agent can connect. Claude Code is specifically mentioned as a primary target.

AI Agent Surface

  • AGENTS.md / CLAUDE.md / GEMINI.md — generated workflow instruction files
  • MCP resources at backlog://workflow/* — structured context loading
  • --plain flag on all read commands — AI-friendly text output without decorative formatting
  • --json flag — machine-readable output (some commands)

Observability

  • Task state changes tracked in git history (when autoCommit enabled)
  • onStatusChange callback: shell command triggered on status transitions
  • No structured audit log or replay capability beyond git history

Related frameworks

same archetype · same primary tool · same memory type

claude-mem (thedotmack) ★ 78k

Background worker service captures every tool call as an observation, AI-compresses sessions, and auto-injects relevant past…

pi (badlogic/earendil) ★ 55k

A minimal, hackable, multi-provider terminal coding agent that adapts to your workflows via npm-installable TypeScript Extensions…

Agent Skills (Addy Osmani) ★ 46k

Encodes senior-engineer software development lifecycle as 23 auto-routed skills and 7 slash commands for any AI coding agent.

wshobson/agents Plugin Marketplace ★ 36k

Single Markdown source for 83 domain-specialized plugins that auto-generates idiomatic artifacts for five AI coding harnesses.

TabbyML/Tabby ★ 34k

Self-hosted AI coding assistant server (alternative to GitHub Copilot) with admin dashboard, RAG-based completions, and multi-IDE…

Compound Engineering ★ 17k

Make each unit of engineering work compound into easier future work via brainstorm→plan→execute→review→learn cycles.