Skald
The backlog your coding agents can work from. Markdown in your repo, a CLI for agents, a board for you. Now 1.0.
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.
How work flows
- 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. - An agent picks it up.
skald contextorients a session in one short block.nextandclaimpick unblocked work without two agents taking the same story, even at the same moment. - 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 resumeand starts where the last one stopped. - 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 diffshows what changed since a commit. - Ship.
skald releaseturns the done column into a changelog section and archives the stories with the version.
What you get
- A contract agents can follow.
skald initwrites anAGENTS.mdthat 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-Storytrailers.activityandchangelogread the history back, andrendercommits 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 exportwrites 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.
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.