$npx -y skills add butterbase-ai/butterbase-skills --skill journey-deployUse as the deploy-verification stage of the Butterbase journey, after journey-frontend (or after any build stage if there is no frontend). Smoke-tests the deployed app — hits the live URL, invokes any deployed functions, checks auth round-trip. Writes results to docs/butterbase/0
| 1 | # Journey: Deploy verification |
| 2 | |
| 3 | Stage 4 of the guided journey. Verify the deployed app actually works end-to-end. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | - Dispatched by `journey` when `current_stage: deploy`. |
| 8 | - Directly via `/butterbase-skills:journey-deploy`. |
| 9 | |
| 10 | ## Preflight |
| 11 | |
| 12 | 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. |
| 13 | |
| 14 | ## Inputs |
| 15 | |
| 16 | - `docs/butterbase/00-state.md` — for `app_id`, `deployed_url`. |
| 17 | - `docs/butterbase/02-plan.md` — for the function list to smoke. |
| 18 | - `docs/butterbase/04-build-log.md` — to know what shipped. |
| 19 | |
| 20 | ## Procedure |
| 21 | |
| 22 | 0. **Refresh docs.** Call `butterbase_docs` with `topic: "frontend"`. For end-to-end smoke patterns, also WebFetch `https://docs.butterbase.ai/deploy`. Skip if cache is fresh. |
| 23 | |
| 24 | For each check, log a one-line result to `04-build-log.md`. Halt on the first ✗ and ask the user to fix or skip. |
| 25 | |
| 26 | 1. **Frontend reachable.** If `deployed_url` is set, fetch it via Bash `curl -sS -o /dev/null -w "%{http_code}" <url>`. Expect `200`. Log `<ISO> deploy curl 200 ok` or `... <code> fail`. |
| 27 | |
| 28 | 2. **Functions respond.** For each function in the plan with HTTP trigger, call `mcp__butterbase__invoke_function` with a representative payload. Expect 2xx. Log per function. |
| 29 | |
| 30 | 3. **Auth round-trip (if configured).** If the plan included OAuth, prompt the user: `"Open <deployed_url>, click 'Sign in with <provider>', and confirm you land logged-in. Did it work? (yes/no)"`. Log the answer. |
| 31 | |
| 32 | 4. **Function logs clean.** Call `mcp__butterbase__manage_function action: get_logs` for the most recent invocations. Show the user any error-level lines. Ask: `"Anything concerning here? (no → continue, yes → fix and re-run)"`. |
| 33 | |
| 34 | 5. If all checks pass, tick `- [x] deploy` in `00-state.md`, set `current_stage: submit` (if `hackathon_mode: true`) or `current_stage: done` (otherwise). |
| 35 | |
| 36 | 6. Return to `journey` orchestrator. |
| 37 | |
| 38 | ## Outputs |
| 39 | |
| 40 | - Multiple lines in `04-build-log.md`. |
| 41 | - Updated `00-state.md`. |
| 42 | |
| 43 | ## Anti-patterns |
| 44 | |
| 45 | - ❌ Treating a 200 from the frontend root as proof the app works — actually invoke a function. |
| 46 | - ❌ Skipping the auth round-trip check just because OAuth is configured server-side — judges will try to log in. |