Claude-skill-registry deployment-checklist-generator
Creates comprehensive deployment checklists with pre-deployment checks, smoke tests, verification steps, and sign-off workflows. Use for "deployment checklist", "release verification", "deployment runbook", or "production readiness".
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/deployment-checklist-generator" ~/.claude/skills/majiayu000-claude-skill-registry-deployment-checklist-generator && rm -rf "$T"
manifest:
skills/data/deployment-checklist-generator/SKILL.mdsource content
Deployment Checklist Generator
Ensure safe, reliable deployments with comprehensive checklists.
Pre-Deployment Checklist
# Pre-Deployment Checklist ## Code Quality - [ ] All CI checks passing - [ ] Code review approved (2+ reviewers) - [ ] No known critical bugs - [ ] Security scan passed - [ ] Performance tests passed ## Dependencies - [ ] All dependencies up to date - [ ] No high/critical vulnerabilities - [ ] Bundle size within budget - [ ] Third-party services operational ## Database - [ ] Migrations tested in staging - [ ] Backup completed - [ ] Rollback plan documented - [ ] Data migration scripts reviewed ## Infrastructure - [ ] Servers have capacity - [ ] CDN cache invalidation plan - [ ] Load balancer configured - [ ] SSL certificates valid ## Documentation - [ ] Changelog updated - [ ] API docs updated (if changed) - [ ] Deployment notes prepared - [ ] Rollback instructions ready ## Communication - [ ] Stakeholders notified - [ ] Maintenance window scheduled (if needed) - [ ] Support team briefed - [ ] Status page prepared ## Deployment Window - [ ] Off-peak hours selected - [ ] Team available for monitoring - [ ] Emergency contacts confirmed
Deployment Workflow with Checks
# .github/workflows/deploy.yml name: Deploy to Production on: workflow_dispatch: jobs: pre-deploy-checks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check branch run: | if [ "${{ github.ref }}" != "refs/heads/main" ]; then echo "❌ Can only deploy from main branch" exit 1 fi - name: Verify CI passed uses: actions/github-script@v7 with: script: | const checks = await github.rest.checks.listForRef({ owner: context.repo.owner, repo: context.repo.repo, ref: context.sha, }); const failed = checks.data.check_runs.filter( check => check.conclusion === 'failure' ); if (failed.length > 0) { throw new Error(`CI checks failed: ${failed.map(c => c.name).join(', ')}`); } - name: Check deployment window run: | HOUR=$(date +%H) if [ $HOUR -ge 9 ] && [ $HOUR -le 17 ]; then echo "⚠️ Deploying during business hours" else echo "✅ Deploying outside business hours" fi - name: Verify staging deployment run: | if ! curl -f https://staging.myapp.com/health; then echo "❌ Staging is not healthy" exit 1 fi deploy: needs: pre-deploy-checks runs-on: ubuntu-latest environment: name: production url: https://myapp.com steps: - uses: actions/checkout@v4 - name: Backup database run: ./scripts/backup-db.sh - name: Deploy run: ./scripts/deploy.sh production - name: Run smoke tests run: ./scripts/smoke-tests.sh production - name: Update status page run: | curl -X POST https://statuspage.io/api/v1/incidents \ -H "Authorization: Bearer ${{ secrets.STATUSPAGE_TOKEN }}" \ -d '{"name":"Deployment Complete","status":"resolved"}' - name: Create deployment record uses: actions/github-script@v7 with: script: | github.rest.repos.createDeployment({ owner: context.repo.owner, repo: context.repo.repo, ref: context.sha, environment: 'production', description: 'Production deployment', });
Smoke Test Script
#!/bin/bash # scripts/smoke-tests.sh ENVIRONMENT=$1 BASE_URL="https://${ENVIRONMENT}.myapp.com" echo "🔍 Running smoke tests for $ENVIRONMENT..." FAILED=0 # Test 1: Health endpoint echo "Test 1: Health check" if curl -f "$BASE_URL/health" | grep -q "ok"; then echo "✅ Health check passed" else echo "❌ Health check failed" FAILED=1 fi # Test 2: User authentication echo "Test 2: User login" TOKEN=$(curl -s -X POST "$BASE_URL/api/auth/login" \ -H "Content-Type: application/json" \ -d '{"email":"test@example.com","password":"test123"}' \ | jq -r '.token') if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ]; then echo "✅ Login passed" else echo "❌ Login failed" FAILED=1 fi # Test 3: Critical API endpoints echo "Test 3: API endpoints" ENDPOINTS=("/api/users" "/api/products" "/api/orders") for endpoint in "${ENDPOINTS[@]}"; do STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer $TOKEN" \ "$BASE_URL$endpoint") if [ "$STATUS" == "200" ]; then echo "✅ $endpoint: $STATUS" else echo "❌ $endpoint: $STATUS" FAILED=1 fi done # Test 4: Database connectivity echo "Test 4: Database check" if curl -f "$BASE_URL/api/health/db" | grep -q "connected"; then echo "✅ Database connected" else echo "❌ Database connection failed" FAILED=1 fi # Test 5: External services echo "Test 5: External services" SERVICES=("stripe" "sendgrid" "aws") for service in "${SERVICES[@]}"; do if curl -f "$BASE_URL/api/health/$service" | grep -q "ok"; then echo "✅ $service: connected" else echo "❌ $service: connection failed" FAILED=1 fi done if [ $FAILED -eq 1 ]; then echo "❌ Smoke tests failed" exit 1 fi echo "✅ All smoke tests passed" exit 0
Post-Deployment Verification
# Post-Deployment Verification ## Immediate Checks (0-5 minutes) - [ ] Deployment completed successfully - [ ] All smoke tests passed - [ ] Health checks returning 200 - [ ] No 5xx errors in logs - [ ] Application responding ## Short-term Monitoring (5-30 minutes) - [ ] Error rate <1% - [ ] Response time p95 <500ms - [ ] CPU usage normal (<70%) - [ ] Memory usage stable - [ ] Database queries performing well ## Feature Verification - [ ] Login/authentication working - [ ] Checkout flow functional - [ ] Search returning results - [ ] Email notifications sending - [ ] Payment processing working ## Metrics Dashboard - [ ] Request volume normal - [ ] Success rate >99% - [ ] Latency within SLA - [ ] No spike in errors - [ ] User engagement stable ## Long-term Monitoring (1-24 hours) - [ ] No user complaints - [ ] Support tickets normal - [ ] Revenue tracking normal - [ ] All scheduled jobs running - [ ] No memory leaks detected
Sign-off Template
- name: Request deployment approval uses: trstringer/manual-approval@v1 with: secret: ${{ secrets.GITHUB_TOKEN }} approvers: tech-lead,ops-manager minimum-approvals: 2 issue-title: "Approve Production Deployment" issue-body: | ## Deployment Details **Version:** ${{ github.ref_name }} **Commit:** ${{ github.sha }} **Changes:** See [changelog](CHANGELOG.md) ## Pre-deployment Checklist - ✅ All CI checks passed - ✅ Code review completed - ✅ Security scan passed - ✅ Staging verified ## Approval Required This deployment requires approval from tech lead and ops manager. **Approve:** Comment "approve" or "lgtm" **Reject:** Comment "reject" or "block"
Monitoring Dashboard
# Deployment Monitoring Dashboard ## Key Metrics ### Health - API Health: ✅ UP - Database: ✅ Connected - Cache: ✅ Connected ### Performance - Requests/min: 1,234 - Error rate: 0.2% - p50 latency: 120ms - p95 latency: 450ms - p99 latency: 1,200ms ### Infrastructure - CPU: 45% - Memory: 62% - Disk: 38% ### Business Metrics - Active users: 523 - Successful checkouts: 89/hour - Revenue: $15,234/hour ## Alerts No active alerts ## Recent Deployments - v1.3.0: Deployed 5 minutes ago ✅ - v1.2.9: Deployed 2 days ago ✅ - v1.2.8: Rolled back 3 days ago ⚠️
Best Practices
- Automated checks: Enforce via CI/CD
- Manual review: Critical deployments need approval
- Smoke tests: Verify key functionality
- Gradual rollout: Canary or blue-green
- Monitoring: Watch metrics for 30 minutes
- Communication: Keep stakeholders informed
- Rollback ready: One-click rollback available
Output Checklist
- Pre-deployment checklist
- Deployment workflow with gates
- Smoke test script
- Post-deployment verification
- Sign-off workflow
- Monitoring dashboard
- Communication templates
- Rollback instructions