journey-schema
Use as the schema build stage of the Butterbase journey, after journey-plan and journey-preflight. Implements the Tables section of 02-plan.md by delegating to schema-design, previewing the diff (manage_schema dry_run) and applying it (manage_schema apply). In hackathon_mode, also folds in the RLS stage by invoking journey-rls inline before returning.
SKILL.md
Full skill instructions
Journey: Schema
Stage 3a of the guided journey. Apply the declarative table definitions from the plan.
When to use
- Dispatched by
journeywhencurrent_stage: schema. - Directly via
/butterbase-skills:journey-schema.
Preflight
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.
Inputs
docs/butterbase/02-plan.md— the Tables section.docs/butterbase/00-state.md— forapp_id,hackathon_mode.
Procedure
-
Refresh docs. Call
butterbase_docswithtopic: "schema". If the plan calls for advanced schema features (vectors, partial indexes, generated columns), also WebFetchhttps://docs.butterbase.ai/schema. Skip this step ifdocs/butterbase/03b-docs-cache.mdwas written less than 30 minutes ago and already coversschema. -
Read the Tables section of
02-plan.md. Print it back:"About to apply schema: <N tables>. Proceed?". Wait foryes. -
Invoke
butterbase-skills:schema-designvia the Skill tool, passing the Tables section andapp_id. The wrapped skill will build the declarative schema, dry-run it withmanage_schema action: dry_run, then apply withaction: applyafter user approval of the diff. -
After it returns, optionally run a sanity
manage_schema action: getand show the user the live shape. -
Hackathon mode only: if
00-state.mdhashackathon_mode: true, also invokebutterbase-skills:journey-rlsinline now. After it returns, mark the rls checkbox as(folded)in00-state.mdrather than leaving it unchecked. -
Append one line to
docs/butterbase/04-build-log.md(create if absent):<ISO timestamp> schema manage_schema ok -
Tick
- [x] schemain00-state.md, setcurrent_stage:to the next unchecked stage (typicallyrlsoutside hackathon mode, otherwise the stage after rls), bumplast_updated. -
Return to
journeyorchestrator (or, if invoked directly, ask:"Continue to the next stage? (yes/no)").
Outputs
- Live schema in the Butterbase app.
- One line in
04-build-log.md. - Updated
00-state.md.
Anti-patterns
- ❌ Calling
manage_schema action: applywithout showing the user the dry-run diff. - ❌ Forgetting
_drop:/_dropColumns:are needed for destructive changes — never set them without explicit user confirmation. - ❌ Forgetting the hackathon-mode RLS fold.
