$npx -y skills add butterbase-ai/butterbase-skills --skill journey-durableUse as the durable-objects build stage of the Butterbase journey. Implements the Durable section of 02-plan.md by delegating to durable-objects. Calls manage_durable_objects (deploy). Skipped if the plan has no per-key stateful actors (chat rooms, multiplayer, rate limiters).
| 1 | # Journey: Durable Objects |
| 2 | |
| 3 | Stage 3i of the guided journey. Deploy stateful per-key actors. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | - Dispatched by `journey` when `current_stage: durable`. |
| 8 | - Directly via `/butterbase-skills:journey-durable`. |
| 9 | - Skipped (annotated `(n/a)`) if the plan has no Durable section. |
| 10 | |
| 11 | ## Preflight |
| 12 | |
| 13 | If `docs/butterbase/03-preflight.md` is missing, older than 24 hours, or `00-state.md` has `app_id: null`, invoke `butterbase-skills:journey-preflight` first. Wait for it to return successfully before proceeding. |
| 14 | |
| 15 | ## Inputs |
| 16 | |
| 17 | - `docs/butterbase/02-plan.md` — the Durable section. |
| 18 | - `docs/butterbase/00-state.md` — for `app_id`. |
| 19 | |
| 20 | ## Procedure |
| 21 | |
| 22 | 0. **Refresh docs.** Call `butterbase_docs` with `topic: "functions"`. For Durable Object class structure, also WebFetch `https://docs.butterbase.ai/durable-objects`. Skip if cache is fresh. |
| 23 | |
| 24 | For each Durable Object class in the plan: |
| 25 | |
| 26 | 1. Print: `"About to deploy Durable Object: <name>. Proceed?"`. Wait for `yes`. |
| 27 | 2. Invoke `butterbase-skills:durable-objects` via the Skill tool with the DO spec and `app_id`. The wrapped skill calls `manage_durable_objects action: deploy`, sets env via `set_env` if needed. |
| 28 | 3. Verify with `manage_durable_objects action: list` and `action: get`. |
| 29 | 4. Append one line per DO to `docs/butterbase/04-build-log.md`: |
| 30 | `<ISO timestamp> durable manage_durable_objects <do-name> ok` |
| 31 | 5. After all DOs are done, tick `- [x] durable` in `00-state.md`, set `current_stage:` to the next unchecked stage. |
| 32 | 6. Return to `journey` orchestrator (or ask `"Continue to the next stage? (yes/no)"`). |
| 33 | |
| 34 | ## Outputs |
| 35 | |
| 36 | - Deployed Durable Object classes. |
| 37 | - One line per DO in `04-build-log.md`. |
| 38 | |
| 39 | ## Anti-patterns |
| 40 | |
| 41 | - ❌ Sharing state across users via a single DO key — keys should be naturally per-room / per-user / per-resource. |