Install any skill in seconds. Free to start, no credit card required.
Get Started Free →butterbase-ai/migrations
Use when moving a Butterbase app between regions, checking migration progress, aborting a stuck move, reverse-rolling a completed move, or tearing down retained source replicas after a move is stable
Passed 15 of 18 test cases with the skill, and 7 of 18 without it.
and 6 more in the full report
9 fixed9 passed either way4 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
We need an inventory of all retained source storage replicas across our Butterbase account. What tool action returns this list?
| Checked | Without skill | With skill |
|---|---|---|
| Calls manage_migrations with action set to list_source_replicas | Missed | Passed |
The instructions your model reads when the skill loads.
Moving an app between regions is an orchestrated migration: data dumped from source, restored in dest, blobs copied, runtime brought up, then traffic flipped. Source replica is retained for safe rollback until you tear it down.
Four small tools wrap the orchestration:
| Tool | Purpose |
|---|---|
list_regions | Discover what regions exist before suggesting one. |
move_app | Start a migration. Returns a migration_id. |
move_app_status | Read the current step + replica state of a specific migration. |
manage_migrations | Operational ops: get_active, abort, reverse, list_source_replicas. |
teardown_source_replica | Decommission the retained source replica once you're confident. |
A successful move walks through 11 steps in order:
requested → reserving_dest → blocking_writes → dumping_data →
restoring_data → copying_blobs → copying_runtime → flipping_routing →
setting_up_reverse_replication → unblocking_writes → completed
The cutover happens at flipping_routing. Before that, the app is still served from the source. After that, traffic is on the destination.
Terminal states: completed, aborted, failed.
list_regions → confirm dest region is supported
move_app(app_id, dest_region) → { migration_id, status: "queued" }
Then poll with move_app_status({ app_id, migration_id }) every few seconds (or call manage_migrations({ action: "get_active", app_id }) if you've forgotten the id).
test cases passed, vs 7 / 18 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.