backlog
Persistent, cross-session task management for Claude Code. 24 MCP tools for tasks, projects, dependencies, and docs. 7 skills for planning, standups, and handoffs. Event-sourced storage with per-project isolation.
README
backlog
Persistent, cross-session task management for Claude Code. Tasks survive sessions so work started by one agent can be picked up by another.
Zero external dependencies — pure TypeScript with event-sourced storage. Install and it works.
Install
/plugin marketplace add backloghq/backlog
/plugin install backlog@backloghq-backlog
From source
git clone https://github.com/backloghq/backlog.git
cd backlog && npm install && npm run build
claude --plugin-dir /path/to/backlog
Standalone MCP server
Add to your project's .claude/settings.json:
{
"mcpServers": {
"backlog": {
"command": "node",
"args": ["/path/to/agent-teams-task-mcp/dist/index.js"],
"env": {
"TASKDATA": "/path/to/task-data"
}
}
}
}
Skills
| Skill | Description |
|---|---|
/backlog:tasks |
Show the current backlog — pending, active, blocked, overdue tasks |
/backlog:plan |
Break down a goal into tasks with dependencies, priorities, and specs |
/backlog:standup |
Daily standup — done, in progress, blocked, up next |
/backlog:refine |
Groom the backlog — fix vague tasks, missing priorities, broken deps, stale items |
/backlog:spec |
Write a spec document for a task before implementation |
/backlog:implement |
Pick up a task, read its spec, implement it, mark done |
/backlog:handoff |
Prepare for next session — annotate progress, stop active tasks, summarize state |
Agent
The task-planner agent can be auto-invoked by Claude when someone needs to plan work. It reads the codebase, decomposes goals into tasks with dependencies, and writes specs for complex items.
Hooks
| Event | What it does |
|---|---|
SessionStart |
Shows pending task count when a session begins |
TaskCreated |
Syncs Claude's built-in tasks to the persistent backlog |
TaskCompleted |
Marks the matching backlog task as done when Claude completes a built-in task |
SubagentStart |
Auto-assigns unassigned pending tasks to the spawned agent |
Tools (MCP)
24 tools for full task lifecycle management:
| Tool | Description |
|---|---|
task_list |
Query tasks with filter syntax. Returns JSON array with all fields. |
task_count |
Count tasks matching a filter. Same syntax as task_list. |
task_add |
Create a new pending task. Only description required; all other fields optional. |
task_log |
Record already-completed work directly in completed status. |
task_modify |
Partial-update one or more tasks matching a filter. Only provided fields change. |
task_duplicate |
Copy an existing task with optional field overrides. |
task_done |
Mark a task as completed with end timestamp. |
task_delete |
Soft-delete a task. Restorable with task_undo. Use task_purge to permanently remove. |
task_annotate |
Add a timestamped note. Use task_doc_write for longer content. |
task_denotate |
Remove an annotation by exact text match. |
task_start |
Mark a task as actively being worked on. Visible in +ACTIVE queries. |
task_stop |
Stop working on a task. Returns it to pending status. |
task_undo |
Undo the most recent operation. Can be called repeatedly. |
task_info |
Get full JSON details for a single task by ID or UUID. |
task_import |
Bulk-create tasks from a JSON array. Atomic batch operation. |
task_purge |
Permanently remove a deleted task. Irreversible. |
task_doc_write |
Attach/replace a markdown document on a task (specs, notes, context). |
task_doc_read |
Read the markdown document attached to a task. |
task_doc_delete |
Remove a task's document. Permanent. |
task_archive |
Move old completed/deleted tasks to quarterly archive segments. |
task_archive_list |
List available archive segments. |
task_archive_load |
Load archived tasks for read-only inspection. |
task_projects |
List project names with pending/recurring tasks. |
task_tags |
List tags with pending/recurring tasks. |
Filter Syntax
status:pending # all pending tasks
project:backend +bug # bugs in backend project
priority:H due.before:friday # high priority due before friday
+OVERDUE # overdue tasks
+ACTIVE # tasks currently being worked on
+BLOCKED # tasks blocked by dependencies
+READY # actionable tasks (past scheduled date)
agent:explorer # tasks assigned to the explorer agent
( project:web or project:api ) # boolean with parentheses
description.contains:auth # substring match
Supports attribute modifiers (.before, .after, .by, .has, .not, .none, .any, .startswith, .endswith), tags (+tag, -tag), virtual tags (+OVERDUE, +ACTIVE, +BLOCKED, +READY, +TAGGED, +ANNOTATED, etc.), and boolean operators (and, or).
Task Docs
Attach markdown documents (specs, context, handoff notes) to any task:
task_doc_write id:"1" content:"# Spec\n\nBuild the auth flow.\n"
task_doc_read id:"1"
task_doc_delete id:"1"
Writing a doc adds a +doc tag and has_doc:yes, so agents can discover tasks with docs:
task_list filter:"+doc"
task_list filter:"has_doc:yes"
Agent Identity
Tasks support an agent field for tracking which agent owns a task:
task_add description:"Investigate bug" agent:"explorer"
task_list filter:"agent:explorer status:pending"
Project Isolation
Each project gets its own task data automatically. When used as a plugin, task data lives in ~/.claude/plugins/data/backlog/projects/<project-slug>/. When used standalone, set TASKDATA explicitly.
| Variable | Description |
|---|---|
TASKDATA |
Explicit path to task data directory (overrides auto-derivation) |
TASKDATA_ROOT |
Root directory for auto-derived per-project task data |
Development
npm install
npm run build # compile TypeScript
npm run lint # run ESLint
npm test # run tests
npm run test:coverage # run tests with coverage
npm run dev # watch mode
Community
- GitHub Discussions — questions, ideas, show & tell
- Issue Tracker — bug reports and feature requests
- Documentation — full docs, skills reference, filter syntax
If backlog is useful to you, consider giving it a star — it helps others find the project.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.