
Orchestrates the storage configuration step in the Butterbase app building journey. It reads the Storage section from your plan document, delegates the actual bucket setup to the storage skill (which calls manage_storage to configure visibility and size limits), then runs a quick smoke test by requesting upload and download URLs to confirm presigned URL generation works. Gets skipped entirely if your plan has no file uploads. The main value is keeping you from calling manage_storage directly for each bucket, it batches the config work and keeps the build log in sync. If you're building outside the guided journey or need granular storage control, you'd call the storage skill directly instead.
$ npx -y skills add butterbase-ai/butterbase-skills --skill journey-storage --agent claude-codeInstalls into .claude/skills of the current project.
Stage 3d of the guided journey. Configure storage buckets/ACLs from the plan.
journey when current_stage: storage./butterbase-skills:journey-storage.(n/a)) if the plan has no Storage section.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/02-plan.md — the Storage section.docs/butterbase/00-state.md — for app_id.Refresh docs. Call butterbase_docs with topic: "storage". For presigned URL patterns, also WebFetch https://docs.butterbase.ai/storage. Skip if cache is fresh.
Read the Storage section of 02-plan.md. Print it back: "About to configure storage: <buckets>. Proceed?". Wait for yes.
Invoke butterbase-skills:storage via the Skill tool, passing the Storage plan and app_id. The wrapped skill calls manage_storage action: update_config per bucket (visibility, max object size).
Smoke: request an upload URL via manage_storage action: upload_url and a matching download_url to confirm presigned URL minting works.
Append one line to docs/butterbase/04-build-log.md:
<ISO timestamp> storage manage_storage ok
Tick - [x] storage in 00-state.md, set current_stage: to the next unchecked stage.
Return to journey orchestrator (or ask "Continue to the next stage? (yes/no)").
04-build-log.md.s3_key in app data — always persist object_id. The wrapped skill handles this; do not override it.Sponsors