docs/GETTING_STARTED_ANALYSIS.md
Date: 2026-04-05 Requested by: @csells Question: "How much of the getting started docs are genuinely necessary and how many point to errors that should be fixed?"
The getting started documentation is ~3x longer than it needs to be, largely because it documents workarounds for problems that should be fixed in the tool itself. Of the ~1,600 lines across the core getting-started docs (README quick start, QUICKSTART.md, INSTALLING.md, SETUP.md), roughly:
| Category | Est. Lines | % of Total | Verdict |
|---|---|---|---|
| Genuinely necessary (core concepts, happy path) | ~400 | 25% | Keep |
| Useful reference (platform variants, IDE matrix) | ~350 | 22% | Keep but consolidate |
| Workarounds for fixable UX issues | ~450 | 28% | Fix the tool, delete the docs |
| Redundant/duplicated across files | ~400 | 25% | Consolidate into one place |
Bottom line: About half the getting-started surface area compensates for tool-level UX gaps. If those gaps were fixed, the docs could shrink by ~50% and the remaining docs would be more effective because users wouldn't have to read past noise to find the signal.
These sections earn their keep. A new user needs this information and the tool can't reasonably convey it automatically.
brew install beads # or npm install -g @beads/bd
cd your-project
bd init
bd create "Task" -p 1
bd ready
This is the irreducible core. Everything else is either reference or workaround.
bd dep add, bd dep tree, bd ready --explain — these are the
differentiating feature. The QUICKSTART walkthrough (lines 98-230) is
well-written and necessary.These documentation sections exist because the tool has a UX gap. Each one represents a place where the tool should be smarter so the docs can be shorter.
bd: command not found / PATH issues (~40 lines across 3 files)Appears in: INSTALLING.md, TROUBLESHOOTING.md, QUICKSTART.md
The fix: The install script already tries to handle PATH. But bd should
print a one-liner after install: "Add this to your shell profile: export PATH=..." — or better, the Homebrew formula and npm package should handle
this automatically (Homebrew already does). The go install path is the
problem child.
Recommendation: Remove go install from the "Quick Install" section
entirely. It's a developer/contributor path, not a user path. Move it to
CONTRIBUTING.md. The happy path should be brew install beads or npm install -g @beads/bd — both handle PATH automatically.
Appears in: INSTALLING.md (lines 107-130), README.md (lines 75-91), CONTRIBUTING.md
Root cause: Users who go install need CGO + ICU headers. But prebuilt
binaries don't need any of this.
The fix: Same as above — stop promoting go install as a primary install
method. The prebuilt binary path (Homebrew, npm, install script) requires zero
build dependencies. CGO/ICU docs belong in CONTRIBUTING.md only.
zsh: killed bd / macOS crashes (~20 lines, duplicated in 2 files)Appears in: INSTALLING.md, TROUBLESHOOTING.md (identical content)
The fix: This only affects go install without CGO. If go install is
demoted to a contributor path, this goes away for users. For contributors,
make install already handles it.
Appears in: TROUBLESHOOTING.md
The fix: bd init should detect when it fails to create .beads/ and
print a helpful message: "Windows Controlled Folder Access may be blocking
bd.exe. Add bd.exe to the whitelist in Windows Security settings." Currently
it hangs indefinitely, which is the real bug.
bd binaries in PATH (~30 lines)Appears in: TROUBLESHOOTING.md
The fix: bd version (or bd doctor) should check for multiple bd
binaries in PATH and warn. Many CLI tools do this (e.g., brew doctor).
Appears in: TROUBLESHOOTING.md
The fix: Embedded mode (the default) doesn't have port conflicts. This
only applies to server mode. The docs should note this is server-mode-only
and bd init in server mode should detect port conflicts and suggest shared
server mode.
Appears in: TROUBLESHOOTING.md
The fix: Embedded mode uses file locking. bd should detect the lock,
identify the holding PID, and print: "Another bd process (PID 12345) is using
the database. Wait for it to finish or kill it." Instead of a raw SQLite error.
Appears in: TROUBLESHOOTING.md
Root cause: A /tmp/beads-dolt-circuit-*.json file persists and blocks
all operations. Users have to know to manually delete it.
The fix: bd doctor --fix should clear stale circuit breaker files. Or
better: the circuit breaker should auto-reset after a configurable cooldown
(it has a 30s cooldown, but the state file persists across reboots on macOS
because /tmp -> /private/tmp isn't cleared).
bd doctor not working in embedded mode (~15 lines)Appears in: TROUBLESHOOTING.md (indirectly), doctor.go code
The fix: This is the default mode! bd doctor should work in the default
mode. Telling users to switch to server mode to use the diagnostic tool is
backwards.
Appears in: TROUBLESHOOTING.md
The fix: Sandbox mode is auto-detected since v0.21.1. The docs still
describe manual --sandbox flag usage extensively. The auto-detection section
should be the primary content; the manual flags should be a small footnote.
Appears in: TROUBLESHOOTING.md
The fix: bd hooks install should set correct permissions automatically
(it may already, but users still hit this). The timeout issue should be
documented in bd hooks install output, not buried in troubleshooting.
Appears in: TROUBLESHOOTING.md, docs/ANTIVIRUS.md
The fix: Code signing. The docs acknowledge this ("Future plans for code signing"). Until then, the install script should print a note on Windows. The extensive troubleshooting section is a band-aid.
| Location | Content |
|---|---|
| README.md lines 65-99 | Homebrew, Go, npm, build from source |
| INSTALLING.md (full file) | Same + platform-specific + troubleshooting |
| QUICKSTART.md lines 33-38 | go build from source |
| CONTRIBUTING.md lines 16-31 | Clone + build from source |
Recommendation: README.md should have a 3-line install section linking to INSTALLING.md. QUICKSTART.md should say "Install bd (see INSTALLING.md)" and skip the build commands. CONTRIBUTING.md should cover dev setup only.
./bd (local binary) syntaxThe quickstart shows ./bd create, ./bd ready, etc. — suggesting the user
built from source and is running a local binary. This is the contributor
experience, not the user experience. Users who installed via Homebrew/npm
would just run bd.
The fix: Change all ./bd references to bd in QUICKSTART.md.
Lines 69-96 in QUICKSTART.md + lines 60-63 in README.md + FAQ entries.
The bd init wizard already asks and explains this interactively.
Recommendation: One paragraph in QUICKSTART.md, link to a reference doc for details.
bd setup <tool> referenceMost of SETUP.md documents bd setup --check, bd setup --remove, flags for
each of 10+ tools, comparison tables, custom recipes, etc.
Recommendation: This is reference documentation, not getting-started
documentation. Move it out of the getting-started path. Most users need
exactly: bd setup claude or bd setup cursor. One line each.
Lines 295-340 cover compaction, cleanup, and migration — in a "quickstart" doc. A new user creating their first issue doesn't need to know about database garbage collection.
Recommendation: Move to ADVANCED.md or a dedicated MAINTENANCE.md.
Lines 257-290 cover Notion integration in the quickstart. This is an advanced integration, not a getting-started topic.
go install to contributor docs — eliminates CGO/ICU/PATH docs
for users (~120 lines saved across files)bd init hang on Windows Controlled Folder Access — detect the
failure and print a message instead of hangingbd doctor work in embedded mode — this is the default modebd doctor --fix
handle thembd binaries in PATH — warn in bd version output./bd to bd in QUICKSTART.md — reflects actual user experiencebrew install beads # or: npm install -g @beads/bd
cd my-project
bd init # creates database, detects role, installs hooks
bd create "My first task" -p 1
bd ready # shows the task
Five commands. No CGO. No PATH fiddling. No Dolt installation. No role configuration docs. No circuit breaker files to delete. The tool handles it.
The docs for this should be ~50 lines in README.md plus a link to the QUICKSTART walkthrough (~150 lines covering dependencies and the ready queue). Everything else is reference documentation, not getting-started documentation.
| File | Lines | Role in Getting Started |
|---|---|---|
| README.md | 190 | Entry point, quick start, feature overview |
| docs/QUICKSTART.md | 355 | Tutorial walkthrough |
| docs/INSTALLING.md | 535 | Installation for all platforms |
| docs/SETUP.md | 555 | IDE/editor integration setup |
| docs/TROUBLESHOOTING.md | 1030 | Error recovery |
| docs/FAQ.md | 513 | Common questions |
| CONTRIBUTING.md | 367 | Developer setup |
| docs/SYNC_SETUP.md | ~100 | Multi-machine sync |
| AGENT_INSTRUCTIONS.md | ~100 | Agent dev workflow |
Also reviewed: cmd/bd/init.go (actual init flow), cmd/bd/prime.go (context
injection), cmd/bd/doctor.go (health checks), scripts/install.sh (installer).