Get started

Install the CLI & skill

Turn any project's docs into Bookie bets — from your terminal or straight from Claude Code. Takes about a minute.

Prerequisites

  • bun — install from bun.sh
  • A Bookie account — create one if you don't have it yet.

1 · Install

From the root of the project you want to track, run:

curl -fsSL https://bookie.hasslebad.com/install.sh | sh

This drops two project-local files:

  • .bookie/bookie.ts — the CLI (gitignored; fetched, not committed)
  • .claude/skills/bookie/SKILL.md — the Claude Code skill (committed, so your team shares it)

2 · Log in

Authenticate once — your token is stored globally in ~/.config/bookie, so it works across every project:

bun .bookie/bookie.ts login --url https://bookie.hasslebad.com \
  --email you@example.com --password '<password>'

Confirm it worked:

bun .bookie/bookie.ts whoami

3 · Use it

In Claude Code — run the skill:

/bookie

…or just ask "turn this project's docs into Bookie bets." It reads your README/PRD, drafts bets → experiments → tasks, confirms the outline with you, then imports them into your workspace.

From the CLI directly:

bun .bookie/bookie.ts projects          # list orgs + projects
bun .bookie/bookie.ts project <id>      # view a project's bet tree
bun .bookie/bookie.ts import bets.json  # import a project

Add --json to any command for machine-readable output.

How Bookie models your work

Bookie is a decision pipeline — four nested levels that narrow a fuzzy idea down to a checked-off task:

  • Project — a product or initiative. Moves through three phases: exploringbuildinglaunched.
  • Bet — one falsifiable belief the project is making. Has a status (draft, active, validated, invalidated, paused) and is tagged with the stage it's for — the project phase it belongs to. A project can run several active bets at once.
  • Experiment — the cheapest test that could disprove a bet. status: planned, running, completed, inconclusive.
  • Task — a concrete step to run an experiment (todo or done), with an optional description for the detail a title can't hold.
  • Due — recurring manual upkeep on a project (org admin, outreach warmup) that recurs daily or weekly on a chosen day. Each occurrence is settled individually; the project's Dues tab badges what's open.
  • Evidence — customer learning captured on a project: a kind (interview, sales_call, support, usage, churn, competitor, other) plus a strengthbehavior for what people actually did (money spent, workarounds, observed usage), opinion for what they merely said. That's the Mom Test distinction: behavior is the signal worth betting on. Link evidence to the bets it supports or undermines.
  • Tag — a project-scoped label for organizing bets (growth, pricing, retention). A bet can wear several tags, and tagging a bet with a new name auto-creates the tag. Filter the bets board by tag to see one cut at a time.
  • Deck — an HTML slide deck attached to an experiment (a visualized breakdown). Upload a local .html file from the CLI or drag-and-drop it on the experiment; Bookie renders it in a sandboxed viewer that can run the deck's own scripts but can't touch your session.

Free-text fields — statements, validation plans, success bars, results, task titles and descriptions — render lightweight Markdown: **bold**, *italic*, `code`, [links](https://…), and - / 1. lists.

CLI command reference

Everything the CLI can do. Add --json to any command for machine-readable output — use this when scripting or driving Bookie from an agent — and --url / --token to override the configured connection.

# Account
bun .bookie/bookie.ts login --url <url> --email <e> --password '<p>'
bun .bookie/bookie.ts whoami
bun .bookie/bookie.ts logout

# Inspect
bun .bookie/bookie.ts projects            # list orgs + projects
bun .bookie/bookie.ts project <id>        # full bet → experiment → task tree

# Import a whole project in one shot (always creates a NEW project)
bun .bookie/bookie.ts import bets.json

# Bets
bun .bookie/bookie.ts bet create --project <id> --title "..." --statement "..." [--status active] [--stage building]
bun .bookie/bookie.ts bet update <id> [--status invalidated] [--stage launched] [--kill-criteria "..."]
bun .bookie/bookie.ts bet archive <id>

# Experiments
bun .bookie/bookie.ts experiment create --bet <id> --title "..." --validation-plan "..." --success-criteria "..."
bun .bookie/bookie.ts experiment update <id> [--status completed] [--result "..."]
bun .bookie/bookie.ts experiment archive <id>

# Tasks
bun .bookie/bookie.ts task create --experiment <id> --title "..." [--description "..."]
bun .bookie/bookie.ts task update <id> --title "..." [--description "..."]
bun .bookie/bookie.ts task toggle <id>    # done ⇄ todo
bun .bookie/bookie.ts task archive <id>

# Dues (recurring manual upkeep)
bun .bookie/bookie.ts due list --project <id>
bun .bookie/bookie.ts due create --project <id> --title "..." --cadence daily
bun .bookie/bookie.ts due create --project <id> --title "..." --cadence weekly --day friday
bun .bookie/bookie.ts due update <id> [--title "..."] [--cadence daily|weekly] [--day monday|0-6]
bun .bookie/bookie.ts due toggle <id>     # settle ⇄ reopen the current occurrence
bun .bookie/bookie.ts due archive <id>

# Evidence (customer learning, linked to bets)
bun .bookie/bookie.ts evidence list --project <id>
bun .bookie/bookie.ts evidence create --project <id> --title "..." [--kind interview] [--strength behavior|opinion] [--body "..."] [--source "..."] [--date YYYY-MM-DD]
bun .bookie/bookie.ts evidence update <id> [--title "..."] [--kind ...] [--strength ...] [--body ...] [--source ...] [--date ...]
bun .bookie/bookie.ts evidence archive <id>
bun .bookie/bookie.ts evidence link <id> --bet <betId>
bun .bookie/bookie.ts evidence unlink <id> --bet <betId>

# Tags (project-scoped labels for organizing bets)
bun .bookie/bookie.ts bet tag <betId> --tag growth      # add a tag (auto-created if new)
bun .bookie/bookie.ts bet untag <betId> --tag growth
bun .bookie/bookie.ts tag list --project <id>
bun .bookie/bookie.ts tag create --project <id> --name growth [--color "#5e6ad2"]
bun .bookie/bookie.ts tag update <id> [--name acquisition] [--color "#10b981"]
bun .bookie/bookie.ts tag archive <id>
bun .bookie/bookie.ts project <id> --tag growth         # only bets tagged "growth"

# Decks (HTML slide decks attached to experiments)
bun .bookie/bookie.ts deck upload --experiment <id> --file ./deck.html [--title "..."]
bun .bookie/bookie.ts deck list --experiment <id>
bun .bookie/bookie.ts deck archive <id>

Revise a project

import always creates a new project — it never merges into or replaces an existing one, so re-running it duplicates. To change a project you already imported, edit its parts in place with the bet / experiment / task commands above. The common case — swapping one bet for another — is two calls:

bun .bookie/bookie.ts bet create --project <id> --title "..." --statement "..."   # the replacement
bun .bookie/bookie.ts bet archive <oldId>                                        # retire the old one

archive is a soft-delete — archived items stay recoverable in an export and just drop out of the active tree. There is no hard delete.

Updating & uninstalling

  • Re-run the installer to update the CLI and skill to the latest version.
  • bun .bookie/bookie.ts logout clears your stored credentials.
  • Delete .bookie/ and .claude/skills/bookie/ to remove it entirely.
Need an account first? Sign up or log in.