Open Source

Skald

The backlog your coding agents can work from. Markdown in your repo, a CLI for agents, a board for you. Now 1.0.

terminal
pip install skald-kanban

Coding agents can write the code. Keeping track of the work is the hard part: what each session was asked to do, what it decided, where it stopped, and what is waiting on you. Skald keeps that record in the repository itself, as one Markdown file per story, so the backlog travels with the branch, shows up in pull request diffs, and needs no service to run.

The Skald board on the columns Idea, Plan, Ready, In progress, Review and Done: an epic with a children progress bar, a story claimed by an agent with its checklist progress, a blocked story, two stories with open questions, and a 'Waiting on a human' filter
The board: every project on the machine, live. Cards show checklists, blockers, open questions and who has claimed them.

How work flows

  1. Capture and plan. A story is a Markdown file: a title, a column, tags, dependencies, an acceptance checklist. You can enter stories by hand on the web board or with skald new, or have an agent create them.
  2. An agent picks it up. skald context orients a session in one short block. next and claim pick unblocked work without two agents taking the same story, even at the same moment.
  3. The record builds as it goes. Decisions, questions for you and handoffs are dated notes in the story’s own file. The next session runs skald resume and starts where the last one stopped.
  4. You review. Stories with questions waiting for your answer are highlighted on the board, and the Waiting on a human filter shows just those. Acceptance checklists gate the move to done, and skald diff shows what changed since a commit.
  5. Ship. skald release turns the done column into a changelog section and archives the stories with the version.
A terminal session: skald status, skald claim, skald resume, a handoff note, skald move to review, and skald diff
An agent's session: claim a story, read what it needs, leave a handoff note, move it to review.
A story open on the board: its id, dates and title, status, tags, parent epic, an acceptance checklist and a dated handoff note from an agent
The same story on the board: its parent epic, acceptance checklist and the agent's handoff note.

What you get

  • A contract agents can follow. skald init writes an AGENTS.md that tells any agent how to work the backlog. Agents use the CLI, or the MCP server for clients without a shell. For Claude Code, hooks start every session oriented and stop it from ending with a broken backlog.
  • One board for everything. Every registered repository on the machine in one page, with live updates, drag and drop, multi-select, a dependency graph, swimlanes by any tag, dark and light themes, and the working tree of every worktree, so a claim made in another checkout shows before it is committed.
  • Git as the database. Story changes commit with the code they describe and carry Skald-Story trailers. activity and changelog read the history back, and render commits a snapshot that GitHub shows in place.
  • Several repositories, one backlog. Stories can depend on stories in other projects (project:id).
  • No lock-in. The backlog is plain Markdown. skald export writes it as JSON, JSONL or CSV, and a GitHub issues import is included as an example.
  • Nothing to run. Python standard library only, Python 3.10 or newer, on Linux, macOS and Windows, with tab completion for bash, zsh and fish.
The board split into swimlanes by the area tag: one lane each for area:docs, area:net and area:platform, each with the full set of columns and its own progress bar
Swimlanes by any tag: here one lane per area, each with its own progress bar.

Version 1.0: a stable contract

Skald 1.0 is a promise about what stays put. Until 2.0, the story and config format, the CLI commands and flags, the fields of every --json output and export, the MCP tools, the board’s data API and the agent contract will not be removed or renamed; anything deprecated keeps working, with a warning, for at least one minor release. A contract test pins all of it in CI, so a breaking change cannot ship by accident. Scripts and agents built on Skald today keep working through 1.x, and skald migrate is the upgrade path for any future format change.

1.0 also makes concurrent agents safe in one checkout: commands that change stories take turns, so a story cannot be claimed twice and no note is lost.

Get started

pip install skald-kanban    # or pipx / uv tool install
cd your-repo
skald init                  # .skald/, the agent contract, registration
skald new "Implement WireGuard overlay" --tags infra
skald open                  # the local board, opened on this project

Skald fits best when agents do most of the work, a person reviews it on one board across repositories, and the backlog should read well in a pull request. The README compares it with other in-repository trackers, including when another tool is the better choice.

We use Skald to run our own research and product work, including Cox.