Back up a Supabase project to your own S3, R2 or B2 bucket with the open-source backupdrill CLI, run a restore drill to prove the snapshot restores, and restore into a new project. Includes plain pg_dump and pg_restore notes for Supabase and what the Free plan does and doesn't back up.
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Back up a Supabase project to a bucket you own and prove the backup restores, by asking your coding agent. The plugin is one skill that teaches the agent to use backupdrill, the open-source (MIT) CLI behind backupdrill.com:
estimate measures the database and Storage files and projects the Supabase egress cost of backing them up.backup dumps the Postgres database with pg_dump, plus Storage files once you add their S3 keys, into your S3, R2 or B2 bucket, with a checksummed manifest.json and a RECOVERY.md in every snapshot.drill restores a snapshot into a throwaway Postgres in Docker, checks that the tables and their data came back, and checksums a sample of the Storage files.restore puts a snapshot into a new, empty Supabase project, after a dry run and only once you confirm the target.The agent runs every command as npx -y backupdrill@2.10.0, so the CLI version stays fixed.
pg_dump and pg_restore version 17, which handle Supabase's Postgres 15 to 17. On macOS: brew install libpq@17 (plain libpq is now 18, whose dumps can contain SQL that Postgres 17 rejects).drill.In Claude Code:
/plugin marketplace add backupdrill/cli
/plugin install backupdrill@backupdrillOr from a terminal:
claude plugin install backupdrill --marketplace backupdrill/cliIn Pi, the same skill comes with the npm package:
pi install npm:backupdrillThe skill keeps your connection string and bucket keys in .env.backupdrill in your project root and adds that file to .gitignore. It creates the file with placeholders and asks you to fill it in your editor. The agent is told never to open or print the file, never to ask for keys in the chat, and to load the file only for the command that needs it.
Everything runs on your machine:
npx downloads the backupdrill package from the npm registry the first time.restore also connects to the target project you name.drill starts a temporary Postgres container in Docker. The first time, Docker downloads the Postgres image from Docker Hub.What the agent reads while it works, such as command output with table names, row counts and file names, goes to your model provider like the rest of your conversation. The CLI itself never deletes objects in your bucket.
Missing required config: the message names the missing setting. Fill that line in .env.backupdrill.pg_dump version error: install the version 17 PostgreSQL client and set BACKUPDRILL_PG_DUMP to its pg_dump.drill can't start a container: start Docker.The CLI's README covers every option, and backupdrill.com/docs/cli walks through the same steps.
Open an issue at github.com/backupdrill/cli/issues or email support@backupdrill.com. Privacy policy: backupdrill.com/privacy.
MIT