One .pb file next to the code

A project board that lives in your repository.

Backlog, milestones, Kanban, requirements, reports and an assistant, in one .pb file next to the code.

Reading is free for everyone, for ever · every install starts with a trial of everything.

harbor.pb — Harbor Booking
The overview page of a board
1
file per project
0
servers or accounts needed
4
trackers to sync with
5
report formats
The .pb file

One file holds one project

Issues, requirements, milestones, labels, a workflow, comments, attachments and a log of who did what.

Plain JSON

The file is yours and stays plain JSON. Open as Text and Open as Board switch between the JSON and the board at any time.

Committed with the code

Commit the file like any other. The plan travels with the branch it describes.

Diffed in review

Changes to the board show up in the pull request, next to the changes to the code.

Edited offline

No server and no account are needed to use a board.

Your editor's colors

Open a .pb file and VS Code shows it as a board, themed with your editor's own colors.

Undo, save, Source Control

Everything saves by itself into the editor's text, so undo, the dirty marker, save and Source Control work as with any text file.

Walkthrough

From an empty file to a running project

The pictures below show one board, harbor.pb, a small made-up project that books berths in harbours.

Create a board

Run Project Board: New Project Board from the Command Palette, pick a name, and the new .pb file opens as a board. Or from a terminal.

Commit the file like any other. Add *.pb text eol=lf to .gitattributes so line endings do not show up as changes.

# create a board from a terminal
pb init harbor.pb --name "Harbor Booking"

The overview

The first page answers "where are we": open and closed issues, the current milestone with its work in progress, a burndown against the ideal line, a heatmap of changes, the timeline of milestones and the latest activity.

The overview page of a board

The backlog

Every issue of the project. Type a title and press Enter to add one, search titles, text and numbers, and filter by label, milestone, kind and state.

Adding, searching and filtering issues in the backlog

An issue

An issue has a Markdown description with a live preview, task lists you can tick in place, labels, a milestone, a status from your workflow, an assignee, tags, links to other issues and comments.

Ticking a task, moving an issue to review and writing a comment

Milestones and the Kanban

A milestone is a goal with dates and a progress bar. Each milestone has a board with one column per status of your workflow. Drag a card to give the issue another status.

The Columns button renames, adds, orders and removes the columns of every board.

Opening a milestone's board and dragging cards between columns

Requirements, traceability and baselines

The Requirements page reads the backlog as a specification: numbered sections and requirements, each with its own identifier, text and attributes.

  • Document: write and reorder requirements, and choose attribute columns.
  • Traceability: a matrix of requirements against the work that satisfies, derives from, verifies or depends on them. Coverage gaps and suspect links are listed below it.
  • Baselines: freeze the requirements under a name, then compare any baseline with today.
  • Attributes: define the attributes requirements carry, such as type, priority and verification method.
Linking a task to a requirement in the matrix and freezing a baseline

Drawings and pictures

A description or a comment can hold drawings and pictures. The drawing editor has a pen, lines, arrows, rectangles, ellipses, diamonds and text. Drawings are stored inside the .pb file and stay editable.

Drawing a sketch and saving it into an issue

The assistant

Ask AI opens an assistant that reads the board with your question. It runs Claude Code, or a language model of another extension such as GitHub Copilot. It may look at the repository, read only.

Changes it suggests are listed as proposals: nothing is written until you apply them, applied changes are signed with the assistant's name, and undo takes them back.

The recording shows a real answer of Claude Code; the wait for it is shortened.

Asking Claude about a milestone and applying the changes it proposes

Reports, export and import

Reports prints the board as documents: a Markdown book, a single Markdown file, a Hugo content tree, a static HTML site or one printable HTML book. Choose a title, a milestone and what to include, preview the result, then generate it into a folder.

Import and export reads issues from CSV and from the exports of GitHub, GitLab, Redmine and Trac, and writes the board out again, as CSV for example (pb export --format csv).

Choosing a report format and previewing it

Connections to other trackers

A board can be connected to GitHub, GitLab, Redmine and Trac to preview, pull and push issues, comments and milestones, and to Confluence to publish the report. Every synchronization shows what it will do first. Tokens stay in VS Code's secret storage and never reach the .pb file.

Activity and history

Every change is an event signed by its author. The Activity page shows the history by day, with search and filters by person and by kind, and the raw write-append list the file holds.

When the list grows, Consolidate the Event Log folds it into the project tree.

Searching the history and reading the event list

Claude Code and the pb command

Every integrated terminal gets a pb command that reads and edits boards:

$ pb issues --milestone "0.2 Reservations"
#13 open   In progress  Hold a berth while the payment runs  [0.2 Reservations] {backend, feature} @Tomas Lind 2 comments
#14 open   In progress  Payment page  [0.2 Reservations] {mobile, feature} @Mei Okafor
#15 open   In review    Confirmation email with QR code  [0.2 Reservations] {backend} @Ada Reyes
#17 open   To do        Two skippers can hold the same berth  [0.2 Reservations] {bug, priority:high}

$ pb close 17 --comment "Fixed by the unique hold index."
Commented on #17.
Closed #17.

When the board is open in the editor, pb edits it through the editor: changes appear at once, join the undo history and never clash with what you are typing. Run Claude Code in a terminal next to the open board and watch it comment on and close issues.

Run Project Board: Let Claude Code Edit Boards in This Folder (or pb skill --install) once per project. It writes a Claude Code skill to .claude/skills/project-board/SKILL.md that teaches Claude how to work with the board.

Agents in VS Code's own chat get two tools, pb_read_board and pb_apply_actions. The second asks for confirmation before it changes anything.

See the command line and AI agents.

Free & Pro

Reading is free for everyone, for ever

Project Board comes in a Free plan and paid plans. A subscription pays for editing.

Free

€0 / for ever

Boards open read only, and nothing is ever locked away.

  • Open and read every board, on every page
  • Search, filter, history and the traceability matrix
  • Reports: Markdown, Hugo and HTML
  • Export, and open the file as text
  • Create and edit issues, comments, milestones, labels and requirements
  • Kanban drag and drop, drawings, baselines
  • Apply the changes the assistant and chat agents propose
  • Changes that pb and Claude Code make to a board open in the editor

Pro and Team 30-minute trial

from €4 / month

Everything in Free, plus editing. The trial is the first 30 minutes after the first use, with everything available.

  • Everything in Free
  • Create and edit issues, comments, milestones, labels and requirements
  • Kanban drag and drop, drawings, baselines
  • Apply the changes the assistant and chat agents propose
  • Changes that pb and Claude Code make to a board open in the editor
PlanPriceSeats
Pro€4 a month2 devices
Pro yearly€40 a year2 devices
Team€15 a month5 devices

After the trial, an installation without a subscription is on the Free plan. The file is yours and stays plain JSON. The client portal shows what is on sale today.

To use a plan, run Project Board: Sign In (or open Settings → Subscription on the board), or paste a license key with Project Board: Activate Subscription. See Plans and Manage Subscription open the portal. A paid installation keeps working offline: keys are checked on your machine, and the payments server is only asked from time to time. The key is kept in VS Code's secret storage, never in the .pb file. Licensing has the details.

Reference

Commands and settings

Commands

All commands are under Project Board in the Command Palette.

CommandWhat it does
New Project BoardCreates a new .pb file and opens it.
New IssueAdds an issue to the open board.
Go to Page...Jumps to a page of the open board.
Show ActivityOpens the activity page.
Import Issues from a FileOpens the import page.
Ask the AssistantOpens the assistant.
Consolidate the Event LogFolds the event list into the project tree.
Open as Text / Open as BoardSwitches between the JSON and the board.
Let Claude Code Edit Boards in This FolderInstalls the Claude Code skill.
Change the Name That Signs EditsSets pb.author.name.
Sign In / Sign Out / See Plans / Manage SubscriptionUse the plan of your account, or subscribe to one.
Activate / Refresh / Deactivate SubscriptionEnter a license key by hand, check it again, or remove it.

Settings

SettingDefaultMeaning
pb.author.name, pb.author.emailemptyWho signs edits. Empty uses the git user of the board's repository.
pb.activityLogLimit500Activity entries kept when the log is consolidated.
pb.attachmentMaxKb2048Largest attachment, in KB.
pb.ai.enabledtrueShow the assistant.
pb.ai.claude.commandclaudeThe Claude Code command the assistant runs.
pb.ai.claude.modelemptyModel passed to Claude Code.
pb.ai.claude.readRepositorytrueLet Claude read the repository, read only, when it answers.
pb.ai.languageModeltrueOffer language models of other extensions.
pb.cli.liveEditingtrueLet pb edit open boards through the editor.
pb.cli.addToTerminalPathtruePut pb on the PATH of integrated terminals.
pb.license.serverUrl, pb.license.publicKey, pb.license.keyPrefixemptyReplace the payments server and product the build was connected to. See licensing.
Install

Get it into VS Code

Requires VS Code 1.108 or newer.

Version 0.10.0 · 740 KB

Install the downloaded file
# in VS Code:  Extensions ▸ ··· ▸ Install from VSIX... ▸ pick the file

# or from a terminal:
code --install-extension softforge-project-board-0.10.0.vsix

Then run Project Board: New Project Board from the Command Palette, or open any .pb file.

Keep the plan next to the code.

One file, committed with the code, diffed in review and edited offline. No server and no account.