| schema | vision-v1 | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| version | 1 | |||||||||||||||||||||||||||||||||||
| last_reviewed | 2026-05-29 | |||||||||||||||||||||||||||||||||||
| goals |
|
|||||||||||||||||||||||||||||||||||
| non_goals |
|
A lightweight, machine-readable spec for AI agent task queues. The "what to work on" companion to AGENTS.md's "how to work."
Primary audience: any team that has AI agents picking up coding work. Today's agents (Claude Code, Cursor, Windsurf, Devin, Codex, Gemini CLI, Codium, OpenHands, and 30+ others) need a way to ask "what should I work on?" and get back a structured, prioritized, tooling-friendly answer.
The current options all fail:
- GitHub Issues as your only queue — too heavy for sub-PR-sized work, no priority semantics, no claim mechanics, requires network. tasks.md stays file-first for exactly these reasons; teams already living in Issues can opt into an Issues backend (G5) and keep the same spec / CLI / MCP surface, trading the file's offline simplicity for tracker integration.
- Plain markdown checklists — no parser, no lint, no claims, no metadata.
- Per-tool todo formats — fragment by agent. A task written for Claude can't be picked up by Cursor.
tasks.md is the open standard that fills the gap: one file, one spec, parsed by @tasks-md/parser, validated by @tasks-md/lint, exposed via tasks-mcp, manipulated through @tasks-md/cli, and consumed by /next-task skills in every major agent.
The format is the product. The TypeScript packages and MCP server are reference implementations — they exist to validate the spec and bootstrap adoption.
- Spec is canonical.
spec.mddefines TASKS.md format. Examples inexamples/are normative fixtures. Behavior shifts inspec.mdpropagate to parser, lint, MCP, CLI, and every/next-taskvariant in the same commit. - Reference packages stay small. Each of
parser,lint,mcp,clidoes exactly one thing. No package gains features that don't serve the spec. - Cross-agent commands are generated, not hand-edited.
commands/next-task.mdandcommands/lint-tasks.mdare the canonical sources; per-agent variants undercommands/{claude,codex,cursor,devin,gemini,windsurf}/regenerate from those. CI rejects manual edits to generated variants.
- A project management tool. No GUI, no team assignments beyond
(@agent-id)claim suffixes, no time tracking. If you need Jira/Linear semantics, integrate with those tools — don't reinvent them in tasks.md. - A workflow engine. TASKS.md describes what work exists, not how it gets routed. Routing belongs to the agent + the human supervising it.
- A graph database. Blocked-by edges are a flat list, not a topological sort. Agents pick tasks; humans curate priority.
- Tickets are agent prompts. (source) Tasks describe the outcome a human wants, not the implementation. The agent decomposes. This belief shapes every spec decision.
- Removable, not toggleable. Completed tasks are removed entirely (history lives in git log), not marked
[x]. Toggles accumulate noise; removal forces decisions. - One TASKS.md per repo, optionally federated. Workspace-mode (planned) aggregates per-host queues; per-repo queues stay the source of truth.
- No vendor lock-in. Every agent that adopts the spec works against the same file. Switching agents doesn't require migration.
| Spec | Tells agents… | Maintained by |
|---|---|---|
| AGENTS.md | how to work in this repo (conventions, tests, build) | The agents.md community |
| TASKS.md (this spec) | what to work on (queue, priority, claims) | tasksmd contributors |
Devin instructions / Claude CLAUDE.md / Cursor rules |
per-agent customization on top of AGENTS.md | Each agent vendor |
The three layers compose: AGENTS.md sets repo conventions, TASKS.md lists work, agent-specific files refine behavior.
The spec lands in the wild any time an agent supports /next-task or reads TASKS.md at the repo root. The current commands/ directory ships skill/command variants for Claude Code, Codex, Cursor, Devin, Gemini CLI, and Windsurf — install via npx tasks generate-commands or via the upstream agent's marketplace.
Adoption is the only metric that matters. The spec's success is measured by how many repos have a TASKS.md at their root, not by how many features @tasks-md/cli ships.