No description
  • Go 58.4%
  • TypeScript 28.3%
  • Shell 8.7%
  • CSS 4.3%
  • JavaScript 0.2%
Find a file
Matt Reider f002b1896e
Some checks failed
CI / Go tests (push) Waiting to run
CI / Fixture + demo build (push) Has been cancelled
CI / VS Code extension (push) Has been cancelled
CI / Publish (tag only) (push) Has been cancelled
Landing + prologue: cut the most Claude-shaped texture
A reader on a different project clocked the writing as Claude from
the second sentence; the same tells were live on this site. Smoothing
the most obvious ones without rewriting wholesale.

Landing:
- 'Three pieces fit together: a, b, and c' (triadic colon-list lead)
  rewritten as a sentence with an action verb opener and the surface
  list embedded inline. The 'Pivotal-style coach' line follows as a
  second sentence rather than a third triadic element.
- 'Acceptance is the seam that matters most' bold label and its
  closing 'That seam is what stops the team from shipping fast but
  wrong' flourish replaced. Now labeled 'The PM still accepts' with
  the closing folded into the action paragraph.
- 'Why now' lead rewritten with contractions and a spikier idiom
  ('cheap to do and risky to skip') instead of the polished 'both
  cheaper to run and more necessary to keep' parallel.
- 'The economics flipped' tightened: 'chose its default' became
  'settled on Scrum', 'AI agents inverted the math' became 'AI
  agents changed that math', and the symmetric pair-programming /
  refactoring sentence rebalanced.
- Install lead rewritten ('The fastest path to a working backlog
  is...' was a definitional X-is-Y opening); the CLI subsection
  reordered so the action ('install it first') leads instead of
  the explanation; the MCP subsection drops 'covering the entire
  workflow' and uses '~50 tool calls' instead of 'around fifty'.

Tutorial prologue (mirrored across the rendered HTML, the
GitHub-readable README, and the Go template):
- 'The shape is small: one ranked backlog, weekly sprints, three
  kinds of work, a few rituals to hold it together' intro removed.
  The page just opens with what the workflow is and what this page
  is for.
- 'That blurriness further out is just what software actually
  feels like' aphoristic close on Velocity removed.
- 'Three kinds of work' paragraph rewritten: 'Features are
  stories:' definition merged into prose, the chore comma-cascade
  put in parens, the release-marker close given a clearer pivot.
- 'Friday retro' opener 'the team takes a breath' (precious
  diction) replaced with the concrete 'On Friday afternoon the
  team puts three columns on a board'.
2026-05-28 11:26:48 +02:00
.claude agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
.cursor/rules agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
.devcontainer agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
.github agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
actions agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
autocomplete agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
backlog agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
bin agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
cmd/am-server agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
coach agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
commands agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
config agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
docs Landing + prologue: cut the most Claude-shaped texture 2026-05-28 11:26:48 +02:00
git agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
markdown agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
mcpserver agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
schema agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
scripts Landing + prologue: cut the most Claude-shaped texture 2026-05-28 11:26:48 +02:00
test-results agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
tests agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
utils agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
vscode agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
.config.json Initial support for timelines 2018-07-09 22:25:50 +04:00
.gitignore agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
AGENTS.md agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
build-site agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
build.sh agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
CLAUDE.md agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
go.mod agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
go.sum agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
LABORATORY.md agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
LICENSE Initial commit 2018-04-17 12:31:06 -04:00
main.go agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
package-lock.json agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
package.json agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
README.md agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00
vscode agilemarkdown 0.6.0: laboratory, three-surface tutorial, revamped landing 2026-05-28 11:06:21 +02:00

agilemarkdown

agilemarkdown

A backlog manager that stores in markdown so any LLM reads it natively, and coaches you through the Pivotal-style XP workflow.

CI Open in GitHub Codespaces

Try it in your browser: click the badge above to launch a Codespace with am, the VS Code extension, and a seeded 54-story demo project all pre-installed. Open /workspaces/am-demo when it loads.

A tool for managing backlogs efficiently. Three pieces fit together.

The backlog lives in git as markdown. Each story is a plain file with YAML frontmatter on top and a body underneath. Priority is a ranked list; the icebox is a capture pile, not ranked. Velocity is computed from accepted points across a rolling window. The repo is the database, and any text editor works on it.

The LLM sees what the human sees. am mcp is a stdio MCP server with 55 tools, and any MCP-aware client connects (Claude Desktop, Claude Code, Cursor, Codex CLI). LLMs read markdown natively, so the agent and the human are looking at the same files at the same time.

The Pivotal way ships as a coach. The agent is the dev pair and the human is the product manager. The hard rules block real violations: features are capped at 8 points, bugs and chores are not estimated, the dev pair never accepts its own work, an iteration cannot silently overcommit beyond rolling velocity, and releases stay as date markers. Working agreements layer on top as nudges, and acceptance is the moment the human owns.

Lineage

agilemarkdown is the way Pivotal built software, encoded in plain files for the AI era.

I worked at Pivotal Software for six years. Pivotal Labs was the consulting practice; Pivotal Tracker was the opinionated SaaS the team built for itself and shipped to anyone who wanted to work the same way. The two went hand in hand: Tracker only made sense if you also followed the workflow it assumed. This project is biased toward Pivotal Tracker on purpose. The original help center, captured by the Internet Archive on 2017-05-03, is quoted inline throughout the site.

Documentation

https://agilemarkdown.com

  • Tutorial. End-to-end walkthrough of the Pivotal lifecycle (inception, plan, iteration, retro) on the same fixture as the test suite. Three surfaces: CLI, Claude Code, VS Code extension.
  • Reference. Repository layout, item schema, state machine, velocity formula, MCP tools, CLI verbs, coach-mode wiring, and configuration.

Install

The intended workflow is: VS Code with Claude Code installed, your code repo open, agilemarkdown added to the repo, the MCP server wired up. After that the agent reads the backlog and writes the code in one place.

1. VS Code. Install VS Code.

2. Claude Code. Install Claude Code in VS Code. Other agents that read project files (Cursor, Codex CLI, Copilot) work too; the install step below ships an instruction file for each.

3. The am binary. Single static binary, available for Linux, macOS, and Windows on amd64 and arm64.

# macOS arm64 example
curl -L -o /usr/local/bin/am \
  https://github.com/mreider/agilemarkdown/releases/latest/download/agilemarkdown_darwin_arm64
chmod +x /usr/local/bin/am
am --version

Or build from source with Go 1.23+: go install github.com/mreider/agilemarkdown@latest. See the latest release for prebuilt binaries.

4. Add agilemarkdown to your code repo. Open your repo in VS Code and run:

cd ~/code/my-app
am init

This drops the coach-mode files (source body at .claude/agilemarkdown-coach.md, a thin CLAUDE.md that @-imports it, AGENTS.md, copilot-instructions, cursor rule, the six Claude Code skills, and the PreToolUse hook with settings.json). Existing files are never overwritten. Greenfield repos can use am create-backlog instead, which adds a backlog folder on top.

5. Wire the MCP server. Claude Code reads MCP config from .mcp.json at the workspace root. Add:

{
  "mcpServers": {
    "agilemarkdown": { "command": "am", "args": ["mcp"] }
  }
}

For Claude Desktop, paste the same JSON into ~/Library/Application Support/Claude/claude_desktop_config.json (or the equivalent for your OS). Cursor: Settings → MCP. Codex CLI: ~/.codex/config.toml per the codex docs.

6. Optional: the Agile Markdown VS Code extension. A board view inside VS Code (Current, Icebox, Epics, detail panel, drag-and-drop, KPI tab, ⌘K search). The extension shells out to the same am CLI per click, so anything the board does is reachable from your shell too. Install from the marketplace once it ships, or build from vscode/ in this repo.

7. Optional: bash alias.

$(go env GOPATH)/bin/agilemarkdown alias am

Start a backlog

A backlog is a git repo. Empty or shared:

mkdir my-backlog && cd my-backlog
git init
am create-backlog product
cd product
am create-item "Build login flow"
am sync

am create-backlog drops three sets of files into the repo: the backlog folder itself with sample stories, the agent-instruction projections so any AI agent inherits the coach stance, and the Claude Code skills + PreToolUse hook under .claude/ so the hard rules can actually block tool calls. Existing files are never overwritten.

The source coach body lives at .claude/agilemarkdown-coach.md. CLAUDE.md is a thin file that pulls it in via @.claude/agilemarkdown-coach.md, so a project that already has its own CLAUDE.md instructions can keep them and add a single import line. AGENTS.md, .github/copilot-instructions.md, and .cursor/rules/coach.mdc carry the same body inline since those formats do not support the @ import.

Already have a backlog repo from before v4.4? Run am init in it to install or refresh the same set. Idempotent.

Users auto-discover from git config and git log. For a team-shared backlog, push the repo to GitHub. Each contributor clones it, runs am locally, and pushes their changes. Repo permissions are the access model; branch protection plus required reviews give backlog changes an approval flow.

am sync regenerates derived views (index.md, per-tag pages, velocity.md, timeline.md, users.md), validates each item against the JSON Schema, then commits and pushes if a remote is configured.

Editing

Any markdown editor works. Items are YAML frontmatter on top with a markdown body underneath, so VS Code, Obsidian, nvim, Cursor, and the rest read them out of the box.

AI integration

am mcp exposes the backlog as a Model Context Protocol server with 55 tools across read, write, run, and coach categories. Wire it into Claude Desktop, Claude Code, Cursor, or any MCP-aware client and the agent can:

  • Read and write items, change status, run sync, validate the schema
  • Stack-rank _priority.md and _icebox.md, bulk-promote icebox to priority preserving order
  • Render velocity, iteration, burnup, and epic-burnup charts as ASCII inline in the chat
  • Capture rejection reasons, hypotheses, learnings, and team agreements as plain markdown
  • Run the coach: preflight an action against the hard rules (coach_check), check whether the iteration fits rolling velocity (iteration_fit)

The same surface is reachable from the shell. Every read view has a --json sibling (am dashboard --json, am show priority --json, am sprint plan --json, am show cfd --json), and ten data-export verbs (am list-backlogs, am list-items, am get-item, am get-comments, am type-mix, am cfd, am whoami, am history, am search, am set-description) emit the same JSON shapes the MCP server returns. Pipe through jq for shell scripts, CI checks, or status-bar widgets without standing up an MCP client. See the Data API reference.

Coach mode (AI as dev pair, human as PM)

The coach is the part of agilemarkdown that turns an MCP-aware agent into a practitioner of the Pivotal way. It ships in four layers.

Words. am create-backlog writes the source coach body to .claude/agilemarkdown-coach.md and projects it across the four agent-instruction formats: CLAUDE.md is a thin @ import (so an existing CLAUDE.md is not overwritten), and AGENTS.md, .github/copilot-instructions.md, .cursor/rules/coach.mdc carry the same body inline. The body says: the agent is the dev pair, the human is the PM, here are the hard rules.

Tools. Two MCP tools and CLI mirrors back the ceremonies: coach_check returns a structured verdict with the rule, its slug, and a suggested next move; iteration_fit reports whether the iteration overcommits.

Skills. Six Claude Code skills under .claude/skills/ auto-fire on the right phrases: am-inception runs the kickoff, am-plan runs IPM, am-align runs the pre-pull restatement so the agent does not confidently build the wrong thing, am-decompose breaks a problem into Pivotal-sized stories, am-accept walks the PM through accept-or-reject on a delivered story, and am-retro runs the end-of-iteration retro.

Hooks. A PreToolUse hook at .claude/hooks/coach-gate.sh, wired through .claude/settings.json, gates set_status and set_estimate. When Claude Code is about to flip a story to accepted or estimate a feature above 8 points, the hook intercepts and exits 2; the tool call aborts with the refusal message in the conversation. Words become teeth.

Run am coach in any agilemarkdown repo to see the coach's read on the project right now.

Multi-user

Git provides the multi-user model. Concurrent edits across different items merge cleanly, attribution comes from the git author of each commit, and history is read with git log path/to/item.md. Access control is the repository's permissions. Generated views regenerate every sync; configure .gitattributes with merge=ours on those paths if their merges become noisy.

Inspired by

The workflow comes from Pivotal Tracker. agilemarkdown follows the same six-state machine, the same acceptance gate, fixed iteration windows, velocity computed from accepted points, the same story-type rules (features pointed by default, bugs and chores not), the icebox as the single intake list, and the bulk-promote step from icebox to backlog. See "Why do we miss Pivotal Tracker?" for the rationale that drove the design.