Agent onboarding
You are working inside a forked copy of byob-go-cli, a personal template repository for Go CLI tools. The beads database you're looking at contains the template's architectural decisions alongside the tasks for this specific project.
What's in the workspace
- byob library beads (
bd list --type=byob) — ~125 records shipped by the template under a custombyobtype, organized into category roots (parentless) with child decisions. These are the preferred structure and idioms. They are NOT work to be closed. Treat them as design references to consult when implementing tasks. - Memories (
bd memories) — one-line tips (like "use sync.OnceValue for lazy singletons", "wrap errors with %w"). These auto-inject into your session viabd prime, so you should already see them in your context. - Task beads (
bd ready --exclude-type=byob,bd list --type=task) — the actual work for this specific tool. These are what you claim, implement, and close.
How to work
- At the start of each session,
bd primegives you the current workflow context and any memories. - Run
bd ready --exclude-type=byobto find tasks ready to work on. Claim one withbd update <id> --claim. (Without the filter, byob's ~125 library beads flood the ready list; your own decision/epic/task beads are unaffected.) - Before implementing, consult the relevant byob beads. To find
them:
bd list --type=byob --no-parentto see the category rootsbd list --type=byob -l errors(or any other category label) to filter by topicbd show <id>for the full Problem / Idea / Tradeoffs / Sketch
- Implement the task following the decisions + memories. Code should match the template's idioms.
- When done,
bd close <task-id>and move to the next ready task. - If you hit a gap in the template — an architectural question that the existing decisions don't answer — you can add a new decision bead for the specific tool, or (if it's a generally-reusable insight) surface it so the template itself can be updated.
Key commands
bd list --type=byob --no-parent— browse the category rootsbd list --type=byob -l errors— drill into one categorybd memories— list the tip layerbd memories error— search memories by keywordbd show <id>— full bead contentsbd ready --exclude-type=byob— tasks ready to work onbd create "<title>" -t task— add a new taskbd prime— re-inject workflow context (also runs automatically on session start)
Philosophy
- byob beads are preferences, not contracts. They're the template's default answers to "how should this be structured?" — apply them in new code you write. Don't build anything — tests, lints, CI gates, pre-commit hooks, runtime asserts, custom vet checkers — that fails when a byob decision is violated. The gap between idiom and invariant is the whole point of the preference framing. Existing code that diverges might or might not be a bug; assess case-by-case rather than reflexively migrating.
- The template is opinionated about cobra, pure-Go (
CGO_ENABLED=0), and the gh-CLI-lineage factory/command/IO idioms. Don't fight those. - Tasks are what's unique about THIS project. byob beads are what's shared across all projects built from this template.
Read CREDITS.md for the upstream lineage (gh CLI, Go stdlib, Effective
Go, cobra) if you want the provenance of the ideas in this library.
Decisions
No child decisions yet.