This source did not publish a separate summary. Review SKILL.md before using the skill.
SKILL.md
Deploy Pipeline (Stripe / Supabase / Vercel)
Coordinate staged releases across Stripe, Supabase, and Vercel from the shell using the Composio CLI. One script kicks off the whole "ship it" sequence: product/price updates, DB migrations, frontend deploy, smoke checks, changelog post.
When to Use
Full-stack product launch that touches billing, database, and frontend together.
Promoting a preview Vercel build to production with a Stripe price flip and a Supabase migration.
Weekly release trains where the same sequence repeats and you want it reliable.
Prereqs
curl -fsSL https://composio.dev/install | bash
composio login
composio link stripe
composio link supabase
composio link vercel
composio link slack # for release announcements
Discover Tools
composio search "create price" --toolkits stripe
composio search "apply migration" --toolkits supabase
composio search "create deployment" --toolkits vercel
composio tools list stripe
composio tools list supabase
composio tools list vercel
Common slugs (verify with --get-schema):
Stripe
STRIPE_CREATE_PRODUCT
STRIPE_CREATE_PRICE
STRIPE_UPDATE_PRODUCT
STRIPE_LIST_PRICES
Supabase
SUPABASE_LIST_PROJECTS
SUPABASE_RUN_SQL_QUERY
SUPABASE_LIST_MIGRATIONS
SUPABASE_APPLY_MIGRATION
Vercel
VERCEL_CREATE_A_NEW_DEPLOYMENT
VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL
VERCEL_LIST_DEPLOYMENTS
VERCEL_PROMOTE_DEPLOYMENT
The Pipeline
The order matters: Stripe → Supabase → Vercel → Verify → Announce. Billing changes before DB, DB before frontend.
composio execute SUPABASE_APPLY_MIGRATION -d '{
"project_id":"abcxyz",
"name":"add_team_tier_column",
"query":"alter table teams add column tier text default '\''free'\'';"
}'
Sanity-check the schema after:
composio execute SUPABASE_RUN_SQL_QUERY -d '{
"project_id":"abcxyz",
"query":"select column_name from information_schema.columns where table_name='\''teams'\'' and column_name='\''tier'\'';"
}'
3. Vercel: Deploy + Promote
# Trigger a production deployment from a git ref
composio execute VERCEL_CREATE_A_NEW_DEPLOYMENT -d '{
"name":"web",
"target":"production",
"gitSource":{"type":"github","ref":"main","repoId":123456}
}'
curl -fsS https://app.acme.com/api/health
composio execute SUPABASE_RUN_SQL_QUERY -d '{
"project_id":"abcxyz","query":"select count(*) from teams where tier is null;"
}'
5. Announce
composio execute SLACK_SEND_MESSAGE -d '{
"channel":"releases",
"text":"✅ Team Plan v2 shipped. Stripe price `team-plan-v2` live, Supabase migration applied, Vercel production promoted."
}'
Pipeline as a Workflow File
scripts/ship.ts, run with composio run --file scripts/ship.ts -- --ref main:
Vercel: VERCEL_PROMOTE_DEPLOYMENT to the previous deployment ID.
Supabase: apply the down migration (always write the paired down.sql before shipping).
Stripe: STRIPE_UPDATE_PRODUCT to hide the new price (active:false); do not delete — Stripe objects are immutable in practice and affect historical invoices.
Slack: announce the rollback.
Troubleshooting
Stripe price visible but checkout still shows old one → cache on your app side; confirm lookup_key is what checkout fetches.
Supabase migration hangs → another connection holds a lock; run select pid, state, query from pg_stat_activity where state <> 'idle';.
Vercel deploy stuck in QUEUED → check build logs via VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL with ?logs=1.
Ordering bug (frontend reads a column before migration applies) → always serialize the pipeline; never --parallel across Stripe/Supabase/Vercel.