Billet

One live board for the Markdown task files your coding agents write in your repos.

Completely free, no account needed. For macOS, Windows, and Linux. The skills are open source.

Billet’s Home on Overview, across five sample projects. Running now lists four tasks, one gone quiet and marked stale, three glowing orange with their running times and branches. Beside them is what is ready to start in each project, and below is recent activity by day.

One task, start to finish

Task 16 in a sample project. Each step changes a few lines in its file, and the board follows within a second.

  1. You ask for a Markdown export. The agent checks the idea against the code and writes task 16. It lands in Proposed, since a decision about it is still open.

    "status"
    "proposed"
    "created"
    "2026-11-03"

    A new file, with the next ID from tasks.json.

  2. Once you make the decision, the task moves to Ready. Ask your agent to update it, or drag the card yourself.

    "status"
    "proposed""ready"
  3. The task is marked running on its branch, md-export. Its card glows and shows how long the agent has been at it.

    "status"
    "ready""in-progress"
    "started"
    null"2026-11-04"
    "running"
    null"2026-11-04T14:02:00+01:00"
    "branch"
    null"md-export"
  4. The agent checks the work and marks the task done. The running marker clears and the card moves to the top of Done.

    "status"
    "in-progress""done"
    "finished"
    null"2026-11-04"
    "running"
    "2026-11-04T14:02:00+01:00"null

    Plus one Unreleased entry in CHANGELOG.md.

Billet’s Kanban view for a sample project called lantern. Task 16, Export notes as a Markdown folder, is new in Proposed and selected. Task 8 is running in In progress. The same board with task 16 moved to the Ready column. The same board with task 16 in In progress, outlined in orange and running for 23 minutes on the branch md-export, below task 8, which has been running for 48 minutes. The same board with task 16 at the top of the Done column, finished on 4 November. The project now has 8 open, 7 done, and 3 canceled tasks.

Plain files in your repo

Each task is one Markdown file in docs/tasks/, with a small JSON header for status, order, and blockers. Your agents write them through the skills, and they stay in Git next to the code they describe.

Billet only watches those files. There is nothing to sync, no account, no server, and no database, and your files never leave your machine. A file it cannot read is listed by name with the reason, never hidden.

lantern/
└─ docs/tasks/
   ├─ tasks.json
   ├─ 0015-pin-notes-to-the-sidebar.md
   ├─ 0016-export-notes-as-a-markdown.md
   └─ 0017-import-an-exported-folder-back.md
docs/tasks/0016-export-notes-as-a-markdown.md
---
{
  "id": 16,
  "title": "Export notes as a Markdown folder",
  "status": "in-progress",
  "hardness": "medium",
  "area": "export",
  "tags": ["files"],
  "order": 16,
  "blocked_by": [4],
  "created": "2026-11-03",
  "started": "2026-11-04",
  "finished": null,
  "reason": null,
  "running": "2026-11-04T14:02:00+01:00",
  "branch": "md-export"
}
---
## Outcome

A notebook can be exported as one folder of plain
Markdown files…

Home, across all your projects

Billet’s Home on Overview, scrolled to Statistics: a bar for each of the last 12 weeks of finished tasks, median days from start to finish by hardness, and open tasks by hardness and area. Beside the Overview and Timeline switch, the totals read 5 projects, 4 running, 31 open.

What is happening everywhere

What agents are running now, with runs that have gone quiet marked stale. What started and finished this week, what is ready to start in each project, your projects, and statistics: tasks finished per week, time from start to finish, and open work by hardness and area. The totals sit beside the switch.

Billet’s Home switched to Timeline over 4 weeks, from 11 October to 7 November: a table for each project with days across and areas down. Finished tasks are grey bars and two running tasks are outlined in orange, reaching today.

What ran when

Every project’s tasks as bars from start to finish, by area, with running work carried up to today. The range, Today, and zoom from a week to three months sit beside the switch. Press T to flip between Overview and Timeline.

Each project as a list, a board, or a plan

Billet’s list view with task 16 open: running 23 minutes on md-export, blocked by task 4, unblocking task 17, with its links and the other tasks that share a source file above its Outcome and Current state.

Read the whole task

Open tasks grouped by status, beside the selected task set in full. Above its text you see what blocks it, what it unblocks, the tasks and documents it links to, and other open tasks naming the same files.

The Kanban view grouped by readiness, with columns for Running, Can start, Needs a decision, and Blocked. Done and Canceled are folded to narrow strips.

Group by what you can do now

One column per status, in the order your project defines. One click regroups the board by readiness: running, can start, needs a decision, and blocked, with what unblocks the most first.

Billet’s Plan view for a sample project called tidepool: three chains of task cards joined by lines, in steps labeled Now, Next, and After that. A pane on the right lists four selected tasks in three phases, with a Copy plan button.

A plan from the blockers

Open tasks laid out by what they wait on, one well per chain. Click a task to plan it with everything before it, then copy the plan as one prompt of /billet-start commands, phase by phase, saying which can run in parallel.

Three tasks selected in the list view, with a menu open offering to copy 3 tasks, 3 start commands, a prompt for 3 tasks, or 3 full tasks, and to move them or mark their hardness.

Hand work to your agents

Selecting a task copies its ID and title, ready to paste into a session. Pick several and copy them as /billet-start commands, one per parallel session, or as one prompt.

Not sure what to do next? The die picks a random task that can start now.

The project picker open over the list view, showing five projects with their running and open task counts. lantern-site has nothing open and is dimmed.

Every project, one keystroke away

Add the folder that holds your projects, such as ~/Developer, and any project kept elsewhere. ⌘P, or the project’s name in the title strip, switches between them, recent ones first, and projects with nothing open are dimmed.

Keyboard-first: ⌘1 to ⌘5 switch views, T flips Home between Overview and Timeline, the arrow keys move through each view, and ? lists every shortcut.

Search for the word conflict across all projects, listing five tasks from three projects with the status and matching line of each. The Kanban view with a row of filters under the title strip, narrowed to medium tasks, so the box in the title strip reads 5 of 9 open.

Find, filter, and sort

Search every task’s text with ⌘F, in this project or across all of them, closed tasks included. Filter by area, tag, hardness, running, or can start, and sort by board order, ID, hardness, dates, or area. Each project keeps its own filter and sort.

The skills

Short instruction files your agent loads. Install the billet-* skills once, run billet-init in a project, then manage tasks by asking.

Finished tasks keep what was learned, so an agent can look up what earlier work found instead of finding it again.

billet-skillsOn GitHub, zlib license

Set up and plan

billet-init
Sets up a project once: creates the task folder and tells the project’s agents about it.
billet-add
Turns an idea into a task file, checked against the code and existing tasks.
billet-critique
Challenges a plan before work starts: weak spots, wrong assumptions, missing decisions.
billet-split
Breaks a large task into pieces only when they can really be worked on in parallel.

Work

billet-start
Starts or continues a task, asks open questions first, and marks it running on its branch.
billet-finish
Verifies the work, closes the task, and adds a changelog entry.
billet-merge
Merges a finished task’s branch, checks the result, closes the task, and removes its worktree.
billet-cancel
Drops a task with a reason and keeps its record.

Keep track

billet-list
Reports open tasks with their IDs, status, and hardness.
billet-leftovers
Checks whether recent work finished what it set out to do and files what is left.
billet-groom
Cleans up the board’s data and checks it is still accurate against the code.
billet-recall
Answers what earlier tasks and docs already know about a topic, with links.

Questions

Something missing? Find me on socials.

Do I need an AI agent to use it?

No. A task is a Markdown file with a small JSON header, so you can write one by hand. The skills just mean your agent keeps the files for you.

Which agents do the skills work with?

Any coding agent that supports skills. Run one like any other skill, for example /billet-add, or just ask your agent to add a task.

Can Billet change my tasks?

It never creates tasks, writes their text, or talks to a model. You can tidy by hand: drag a card to another status, mark its hardness, or clear a stale running marker. Those edits follow the skills’ rules, touch only the header, and never overwrite a newer change an agent just made.

How does it know an agent is working on a task?

When an agent starts a task, the start skill writes a running timestamp and the branch into the task’s header. Finishing clears it. Billet shows how long that has been and on which branch. If a session dies halfway, clear the stale marker from the task’s right-click menu.

Where are my tasks stored?

In each project’s docs/tasks/ folder, inside your repository. The folder is a setting, for projects that keep tasks somewhere else. Billet itself only keeps its own settings, such as recent projects, the current view, and the window position.

Can I use my own columns?

Yes. A tasks.json beside the task files lists the status columns in order. The defaults are proposed, ready, in-progress, done, and canceled.

Why is it called Billet?

A billet is a written order that assigns someone a job, which is what a task file is. Pin them to a board and you get a billet board.

I’ve been using it for months now, and it works nicely for local task management. I wouldn’t go back to writing tasks by hand and working through them myself.

Download Billet

Completely free, with no account or paid tier. Your files stay on your machine and nothing is tracked. At startup Billet asks this site for the latest version number, which you can turn off in Settings.

  • macOS
  • Windows
  • Linux

Coming soon

By downloading Billet, you agree to the Billet Terms.

The skills are available now. Get them on GitHub.

Check out my other projects