skills/bitterblossom/SKILL.md
Operate Bitterblossom's `bb` event-plane CLI for agent workloads. Use when Codex needs to inspect or run `bb`, configure `plane.toml`, `agents/`, or `tasks/`, dispatch or audit tasks, handle runs, dead letters, recovery, parked tasks, submissions, gates, review-factory workflows, or help another repo consume Bitterblossom. Trigger phrases: "Bitterblossom", "bb", "event plane", "agent workload", "run a task", "inspect runs", "DLQ", "parked task", "submission loop", "review factory".
npx skillsauth add misty-step/bitterblossom bitterblossomInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Operate the event plane. Do not move workload judgment into the plane.
Bitterblossom is bb: tasks + agents + triggers as files, with a durable run
ledger, budgets, retries, dead letters, and optional webhook/cron serving.
Agents are CLI users, so prefer stable --json surfaces over prose parsing.
bb as runtime and ledger, not an agent brain.plane.toml, agents/<name>.toml,
tasks/<name>/task.toml, and tasks/<name>/card.md.--config <plane> explicitly unless the user has set BB_PLANE_DIR.--json for agent-readable output. Text is for humans.bb run prints an early run id and periodic stderr heartbeats;
bb run --json stays quiet until it emits the final run bundle.bb is not on PATH, use cargo run --quiet -- from the source repo or
./target/debug/bb after cargo build.Run these before changing or dispatching anything:
bb --config <plane> check
bb --config <plane> task list --json
bb --config <plane> runs list --json
Read the output for:
webhook/cron) or dispatch (manual).| Need | Use |
|---|---|
| Validate config and see loaded agents/tasks | bb --config <plane> check |
| Decision-ready task/run/DLQ health | bb --config <plane> status --json |
| Task inventory, parked state, budgets | bb --config <plane> task list --json |
| Trigger manual work | bb --config <plane> run <task> --payload '<json>' --json |
| Dispatch a manual builder lane | bb --config <plane> run build --payload '{"backlog":"<id-or-path>"}' --json |
| Diagnose failed CI | bb --config <plane> run ci-diagnose --payload '{"repo":"owner/repo","head_sha":"<sha>"}' --json |
| Compare candidate model configs | Run at least three candidate tasks, then bb --config <plane> run model-eval --payload '<json>' --json |
| Inspect ledger | bb --config <plane> runs list --json; bb --config <plane> runs show <id> --json |
| Export run telemetry | bb --config <plane> runs export (bb.run_telemetry.v1 JSONL) |
| Handle pre-execute failures | bb --config <plane> dlq list --json; bb --config <plane> dlq replay <id> --json |
| Park or unpark workload dispatch | bb --config <plane> task park|unpark <task> |
| Classify inherited running rows after host restart | bb --config <plane> recover |
| Run webhook/cron plane | bb --config <plane> serve |
| Submission storm / review factory | bb submit ..., verdict bb run <kind> ..., then bb gate --json |
Detailed command recipes: references/operator-recipes.md.
bb run can have external side effects. Do not blindly re-run a successful
or executing task.GH_TOKEN=$(gh auth token) bb ... over copying
tokens into shell history.build task is a manual API-auth OMP/GLM builder lane. Use
it for shaped implementation work only; it creates/pushes a branch and report
but does not merge or replace the submission gate.model-eval task.
First-class cohorts for build, review, gardener, ci-diagnose, and
submission-storm members are listed under
docs/model-evals/. Record accepted
findings there before promoting a new default.unpark.Verdict tasks (correctness, security, product, simplification,
arbiter, verify) expect a submission payload. Do not call them with an
arbitrary repo/rev payload.
Shape:
bb --config <plane> submit open --change <change> --rev <rev> --json
bb --config <plane> run correctness --payload '{"submission":"<submission>"}' --json
bb --config <plane> gate --submission <submission> --json
If a verdict task fails with payload has no 'submission' field, the plane is
correct; the invocation was wrong.
If bb gate --json reports a canonical member as run:failure, read that
member's safe_next_command. Replays prove the failed pre-execute path can run,
but they do not count for the canonical gate key; the safe recovery is a clean
replacement submission after fixing the operator or infrastructure issue. The
command includes the loaded plane's --config path so an agent can run it from
another cwd.
bb recover classifies inherited running rows after a host restart.bb runs resolve is for awaiting_recovery after side-effect inspection.bb status --json marks awaiting_recovery older than one hour as
escalate_stale_recovery, with age fields, but the operator still resolves
the run only after inspecting side effects.bb dlq replay --json mints a new run linked to a pre-execute dead letter
and returns the replayed run bundle.bb serve exposes webhook ingress, cron scheduling, the HTML operator view, and
read APIs. Do not bind publicly without BB_API_TOKEN; the server refuses
non-loopback binds without it.
Useful API mirrors:
GET /api/tasksGET /api/statusGET /api/runsGET /api/runs/<id>GET /api/dlqGET /api/submissionsThe portable artifact is this whole folder: skills/bitterblossom/. Consumers
should copy or symlink the folder, not just SKILL.md, so references and agent
metadata travel with it.
Harness Kit integration should keep one source of truth. Prefer a source entry, bootstrap projection, or explicit symlink from Harness Kit to this folder over a manual copied skill that can drift.
When using Bitterblossom, report:
bb binary used;testing
Dogfood Bitterblossom by using `bb` itself to work through the Bitterblossom backlog, especially backlog.d delivery, submission storms, verdict gates, Fly Sprite execution, and operator UX notes. Use when the user asks to "dogfood Bitterblossom", "work through the Bitterblossom backlog with bb", "use bb on itself", "capture Bitterblossom friction", "run the bb backlog loop", or "test the event plane as its primary user".
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------