A task management system designed for human-agent collaboration, combining emacs org-mode design documents, a backlog working surface, and Claude Code integration.
Traditional task management (GitHub Issues, Jira, Linear) is designed for human-to-human collaboration. When AI coding agents enter the workflow, these systems create friction:
| Challenge | Traditional Systems | dev-agent-backlog |
|---|---|---|
| Context locality | Issue separate from design docs | Task lives in design doc |
| Atomic updates | API call separate from code | File change in same commit |
| API friction | Auth, rate limits, network | Direct file read/write |
| Source of truth | Issue is primary | Design doc is primary |
This system treats design documents as the source of truth. Tasks exist because of design decisions. The backlog is a working surface, not the canonical record.
your-project/
βββ README.org # Project config (categories, statuses)
βββ org-setup.org # Shared org-mode configuration
βββ backlog.org # Working surface for active tasks
βββ CHANGELOG.md # User-facing change log
βββ docs/
β βββ design/
β βββ README.org # Index of design docs
β βββ 000-template.org
β βββ 001-feature.org
β βββ ...
βββ .claude/
βββ commands/ # Slash commands
β βββ new-design-doc.md
β βββ design-review.md
β βββ queue-design-doc.md
β βββ task-queue.md
β βββ task-start.md
β βββ task-complete.md
β βββ task-hold.md
βββ skills/
βββ backlog-update/
βββ backlog-resume/
βββ new-design-doc/
Org-mode files following an RFC/RFD pattern:
- Each document captures a decision and its rationale
- Tasks defined inline with
** TODO [ID]headings - Questions tracked with
** OPEN/** DECIDED
A single backlog.org serving as the active working surface:
- Tasks "checked out" from design docs
- Progress notes accumulate during work
- Completed tasks "reconciled" back to design docs
Claude Code slash commands:
/new-design-doc <title>- Create a new design document/design-review <doc>- Review doc: resolve questions, finalize tasks, move to Accepted/queue-design-doc <doc>- Queue all tasks from a design doc/task-queue <id>- Check out a task from design doc to backlog/task-start <id>- Begin work with context and handoff notes/task-complete <id> [version]- Reconcile completed task with attribution/task-hold <id> <reason>- Move task to blocked
Proactive skills:
backlog-update- Reminds to update backlog and changelog before commitsbacklog-resume- Surfaces WIP tasks and handoff notes on session startnew-design-doc- Suggests creating design docs during architecture discussions
Draft β Review β Accepted β Active β Complete
β β β β
β β β βββ /task-complete (when last task done)
β β βββ /queue-design-doc or /task-queue
β βββ /design-review (resolve questions, finalize tasks)
βββ /new-design-doc
| Status | Meaning |
|---|---|
| Draft | Under development, not ready |
| Review | Ready for feedback |
| Accepted | Approved, ready to implement |
| Active | Implementation in progress |
| Complete | Fully implemented and verified |
| Archived | No longer active (rejected/obsolete) |
Design Doc Backlog
ββββββββββββββββββββ ββββββββββββββββββββ
β ** TODO [ID] ββcheckoutββ *** TODO [ID] β
β β β :SOURCE: link β
ββββββββββββββββββββ β progress notes β
ββββββββββ¬ββββββββββ
β work
βΌ
ββββββββββββββββββββ
β *** DONE [ID] β
ββββββββββ¬ββββββββββ
β reconcile
βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β ** DONE [ID] ββββββββββββ (removed) β
β :VERSION: v1.0 β ββββββββββββββββββββ
ββββββββββββββββββββ
- Checkout: Copy task to backlog Active section with
:SOURCE:link - Work: Add progress notes under the task
- Reconcile: Mark DONE in design doc, remove from backlog
# Clone or download dev-agent-backlog
git clone https://github.com/farra/dev-agent-backlog.git
# Initialize your project
./dev-agent-backlog/bin/init.sh MYPREFIX ~/path/to/your-project
# Example for a project called "acme-api":
./dev-agent-backlog/bin/init.sh ACME ~/dev/acme-apiThe init script creates:
README.org- Project configuration (categories, statuses)org-setup.org- Shared org-mode configurationbacklog.org- Working surface for active tasksdocs/design/README.org- Design doc indexdocs/design/000-template.org- Template for new design docs.claude/commands/- Slash commands for Claude Code.claude/skills/- Proactive skills for Claude Code
If you prefer to copy files manually:
cp templates/org-setup.org your-project/
cp templates/backlog-template.org your-project/backlog.org
mkdir -p your-project/docs/design
cp templates/design-doc-template.org your-project/docs/design/000-template.org
cp -r .claude your-project/
# Then edit files to replace PROJECT with your prefixEdit the tags for your project:
#+TAGS: p0 p1 p2 | frontend backend infra
Use the slash command:
/new-design-doc Your Feature Name
Or manually:
cp docs/design/000-template.org docs/design/001-first-feature.orgWith Claude Code:
/task-queue PROJECT-001-01
/task-start PROJECT-001-01
# ... do the work ...
/task-complete PROJECT-001-01 v1.0
With Emacs:
- Position on a task heading
M-x dab-task-queueto check out- Edit backlog.org for progress notes
- Manually reconcile when done
Add to your config:
;; Load the task queue command
(load "path/to/your-project/elisp/workflow-commands.el")
;; Optional: bind to a key
(define-key org-mode-map (kbd "C-c q") #'dab-task-queue)See backlog.org Setup section for agenda configuration.
The .claude/ directory contains:
- Slash commands: Explicit actions you invoke
- Skills: Proactive behaviors Claude offers
| Command | Description |
|---|---|
/new-design-doc <title> |
Create a new design document from template |
/design-review <doc> |
Review doc: resolve questions, finalize tasks, move to Accepted |
/queue-design-doc <doc> |
Queue all tasks from a design doc, set status to Active |
/task-queue <id> |
Check out a task from design doc to backlog Active section |
/task-start <id> |
Begin work: gather context, display handoff notes, update attribution |
/task-complete <id> [version] |
Mark done with attribution, check if doc is Complete |
/task-hold <id> <reason> |
Move task to Blocked section with reason |
| Skill | Trigger | Behavior |
|---|---|---|
backlog-resume |
Session start | Checks for WIP tasks, surfaces handoff notes |
backlog-update |
Before commits | Reminds to update backlog, changelog, and handoff notes |
new-design-doc |
Architecture discussions | Suggests creating design docs |
Tasks in the backlog track:
:SOURCE:- Link to canonical location in design doc:HANDOFF:- Notes for next session (what to try, where stuck):WORKED_BY:- Who has worked on this (claude-code, human)
Completed tasks in design docs also include:
:COMPLETED_BY:- Who marked it done:TRANSCRIPT:- Link to Claude conversation transcript
[PROJECT-NNN-XX]
β β β
β β βββ Task sequence (01, 02, ...)
β βββββββ Design doc number (001, 002, ...)
ββββββββββββββ Project prefix (DAB, GF, ...)
Documents are numbered sequentially (001, 002, 003...). Use #+CATEGORY: in
the document header to classify documents. Valid categories are defined in
README.org:
| Category | Description |
|---|---|
| feature | Core product functionality |
| infra | Infrastructure, tooling, CI/CD |
| research | Research, analysis, spikes |
| hygiene | Tech debt, chores, maintenance |
| incident | Bugs, outages, RCAs |
| security | Audits, vulnerabilities, hardening |
| data | Storage, pipelines, metrics |
| bs | Brainstorms, speculative ideas |
| Aspect | GitHub Issues | dev-agent-backlog |
|---|---|---|
| Agent efficiency | API calls, auth | Direct file access |
| Context | Sparse, linked | Inline in design docs |
| Atomic commits | No | Yes |
| External visibility | Excellent | Requires repo access |
Best for: Small teams, agent-heavy workflows, design-driven development.
| Aspect | Jira/Linear | dev-agent-backlog |
|---|---|---|
| Overhead | High (web UI) | Low (text files) |
| Customization | Limited | Unlimited |
| Cost | Paid tiers | Free |
Best for: Teams that value simplicity and agent integration over enterprise features.
- Design docs as source of truth: Tasks exist because of design decisions
- Working surface pattern: Backlog is ephemeral; design docs are permanent
- Atomic operations: Task state and code versioned together
- Plain text everything: Git history is task history
This system evolved from dev-agent-work, an earlier experiment in agent-friendly task management. Key improvements in this version:
- Design docs as canonical source (not standalone task files)
- Checkout/reconcile workflow (vs direct task editing)
- Richer org-mode integration (queries, agenda views)
- Structured slash commands and skills
Apache 2
This system documents itself using itself. See docs/design/ for the design documents and backlog.org for current work.