butterbase-ai/journey-deploy
Use 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/04-build-log.md. Blocks journey-submit if smoke fails.
npx skills add https://github.com/butterbase-ai/butterbase-skills --skill journey-deploy
Stage 4 of the guided journey. Verify the deployed app actually works end-to-end.
journey when current_stage: deploy./butterbase-skills:journey-deploy.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.
docs/butterbase/00-state.md — for app_id, deployed_url.docs/butterbase/02-plan.md — for the function list to smoke.docs/butterbase/04-build-log.md — to know what shipped.butterbase_docs with topic: "frontend". For end-to-end smoke patterns, also WebFetch https://docs.butterbase.ai/deploy. Skip if cache is fresh.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.
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.mcp__butterbase__invoke_function with a representative payload. Expect 2xx. Log per function."Open <deployed_url>, click 'Sign in with <provider>', and confirm you land logged-in. Did it work? (yes/no)". Log the answer.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)".- [x] deploy in 00-state.md, set current_stage: submit (if hackathon_mode: true) or current_stage: done (otherwise).journey orchestrator.04-build-log.md.00-state.md.Take butterbase-ai/journey-deploy from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.