deploy-staging
Deploys specified app(s) to Vercel staging environment with build verification, smoke tests, and multi-channel notifications. This skill should be used when the user wants to deploy to staging, test a staging deployment, or push changes to the v2 branch staging environment.
SKILL.md
| Name | deploy-staging |
| Description | Deploys specified app(s) to Vercel staging environment with build verification, smoke tests, and multi-channel notifications. This skill should be used when the user wants to deploy to staging, test a staging deployment, or push changes to the v2 branch staging environment. |
name: deploy-staging description: Deploys specified app(s) to Vercel staging environment with build verification, smoke tests, and multi-channel notifications. This skill should be used when the user wants to deploy to staging, test a staging deployment, or push changes to the v2 branch staging environment.
Deploy Staging
This skill automates the deployment of KStoryBridge apps to Vercel staging environments with comprehensive validation and notifications.
When to Use This Skill
- Deploying apps to staging for testing
- Testing changes before production PR
- Verifying builds work in staging environment
- Running smoke tests on staging URLs
Supported Apps
| App | Staging URL | Vercel Project |
|---|---|---|
| dashboard | dashboard-staging.kstorybridge.com | dashboard-staging |
| creator | creator-staging.kstorybridge.com | creator-staging |
| website | kstorybridge.com (staging) | kstorybridge-website |
Commands
/deploy-staging dashboard # Deploy dashboard only
/deploy-staging creator # Deploy creator only
/deploy-staging all # Deploy all apps
/deploy-staging dashboard --skip-tests # Skip smoke tests
Deployment Workflow
When triggered, execute the following steps:
Step 1: Pre-flight Checks
Verify the environment is ready for deployment:
# Verify on v2 branch
git branch --show-current
# Check for uncommitted changes
git status --porcelain
# Ensure latest changes are pulled
git pull origin v2
If not on v2 branch, warn the user and ask to confirm before proceeding.
Step 2: Build Verification
Run a local build to catch errors before deploying:
# For single app
npm run build:[app] # e.g., npm run build:dashboard
# For all apps
npm run build
If build fails, stop and report the error. Do not proceed to deployment.
Step 3: Deploy to Vercel
Deploy using Vercel CLI:
# Change to app directory and deploy
cd apps/[app]
vercel --yes
# Capture the deployment URL from output
# Example: https://dashboard-staging-xxx.vercel.app
For deploying all apps, run deployments in sequence:
- dashboard
- creator
- website
Step 4: Smoke Tests (unless --skip-tests)
After deployment, verify the app is working:
# Wait for deployment to be ready (poll status)
# Then run basic health checks
# For dashboard
curl -s -o /dev/null -w "%{http_code}" https://[deployment-url]/
# For creator
curl -s -o /dev/null -w "%{http_code}" https://[deployment-url]/
Basic checks:
- HTTP 200 response from root
- Page loads without JavaScript errors
- Auth routes accessible (redirect to signin expected)
Step 5: Report Results
Generate a deployment summary:
## Staging Deployment Summary
**App**: dashboard
**Branch**: v2
**Commit**: abc1234 - feat: Add new feature
**Deploy URL**: https://dashboard-staging-xxx.vercel.app
**Production URL**: https://dashboard-staging.kstorybridge.com
**Status**: SUCCESS
**Build Time**: 45s
**Deploy Time**: 1m 23s
### Smoke Tests
- Root page: PASS (200)
- Auth redirect: PASS (302 → /signin)
- Static assets: PASS
### Next Steps
1. Test your changes at the staging URL
2. When ready, run /pr-production to create a PR to main
Notification Channels
Console Output
Always show progress and results in terminal with clear formatting:
Deploying to staging...
[1/4] Pre-flight checks
Branch: v2
Clean: Yes
[2/4] Building dashboard...
Build time: 23s
[3/4] Deploying to Vercel...
URL: https://dashboard-staging-xxx.vercel.app
[4/4] Running smoke tests...
Root: PASS
Auth: PASS
Deployment successful!
Slack Notification (if SLACK_WEBHOOK_URL set)
Post to Slack with deployment summary:
# Check if Slack webhook is configured
if [ -n "$SLACK_WEBHOOK_URL" ]; then
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"Staging deployed: dashboard\nURL: https://...\nStatus: SUCCESS"}' \
"$SLACK_WEBHOOK_URL"
fi
GitHub PR Comment (if PR exists)
If there's an open PR for the current branch, add a comment:
# Find open PR for current branch
PR_NUMBER=$(gh pr list --head v2 --json number --jq '.[0].number')
if [ -n "$PR_NUMBER" ]; then
gh pr comment $PR_NUMBER --body "## Staging Deployment\n\n..."
fi
Error Handling
Build Failures
If build fails:
- Show the error message clearly
- Suggest checking the specific file/line causing the issue
- Do NOT proceed to deployment
Deployment Failures
If Vercel deployment fails:
- Check Vercel logs:
vercel logs [deployment-url] - Report the failure with log excerpt
- Suggest checking Vercel dashboard for more details
Smoke Test Failures
If smoke tests fail:
- Report which tests failed
- The deployment is still live (user can investigate)
- Suggest checking browser console for errors
Environment Variables
Required for full functionality:
| Variable | Purpose | Required |
|---|---|---|
| VERCEL_TOKEN | Vercel CLI authentication | Yes (or logged in) |
| SLACK_WEBHOOK_URL | Slack notifications | No |
| GITHUB_TOKEN | GitHub PR comments | No (uses gh CLI) |
Tips
- Run
/deploy-staging dashboard --skip-testsfor faster iteration when testing minor changes - Use
/deploy-staging allbefore creating a production PR to verify all apps work together - Check Vercel dashboard if deployment seems stuck
- If you get rate-limited, wait a few minutes and try again
Related Skills
/pr-production- Create a PR from v2 to main after staging testing/deploy-functions- Deploy Supabase edge functions/test-e2e- Run comprehensive E2E tests