๐Ÿ“… let's chat! explore the endless possibilities creating industries that don't exist. click here

speak-prod-checklist

Execute Speak production deployment checklist and rollback procedures. Use when deploying Speak integrations to production, preparing for launch, or implementing go-live procedures for language learning features. Trigger with phrases like "speak production", "deploy speak", "speak go-live", "speak launch checklist". allowed-tools: Read, Bash(kubectl:*), Bash(curl:*), Grep version: 1.0.0 license: MIT author: Jeremy Longshore <jeremy@intentsolutions.io>

Allowed Tools

No tools specified

Provided by Plugin

speak-pack

Claude Code skill pack for Speak AI Language Learning Platform (24 skills)

saas packs v1.0.0
View Plugin

Installation

This skill is included in the speak-pack plugin:

/plugin install speak-pack@claude-code-plugins-plus

Click to copy

Instructions

# Speak Production Checklist ## Overview Complete checklist for deploying Speak language learning integrations to production. ## Prerequisites - Staging environment tested and verified - Production API keys available - Deployment pipeline configured - Monitoring and alerting ready - Audio infrastructure tested ## Instructions ### Step 1: Pre-Deployment Configuration - [ ] Production API keys in secure vault - [ ] Environment variables set in deployment platform - [ ] API key scopes are minimal (least privilege) - [ ] Webhook endpoints configured with HTTPS - [ ] Webhook secrets stored securely - [ ] Audio storage configured with encryption ### Step 2: Code Quality Verification - [ ] All tests passing (`npm test`) - [ ] No hardcoded credentials - [ ] Error handling covers all Speak error types - [ ] Rate limiting/backoff implemented - [ ] Logging is production-appropriate (no PII) - [ ] Audio handling follows privacy guidelines ### Step 3: Language Learning Feature Checklist - [ ] All target languages tested - [ ] Speech recognition works in all browsers - [ ] Pronunciation scoring accurate - [ ] AI tutor responses appropriate - [ ] Session timeouts handled gracefully - [ ] Progress tracking persists correctly ### Step 4: Infrastructure Setup - [ ] Health check endpoint includes Speak connectivity - [ ] Monitoring/alerting configured for: - [ ] API latency - [ ] Speech recognition success rate - [ ] Session completion rate - [ ] Error rates by type - [ ] Circuit breaker pattern implemented - [ ] Graceful degradation configured - [ ] CDN configured for audio assets ### Step 5: Documentation Requirements - [ ] Incident runbook created - [ ] Key rotation procedure documented - [ ] Rollback procedure documented - [ ] On-call escalation path defined - [ ] User support FAQ for common issues ### Step 6: Deploy with Gradual Rollout ```bash # Pre-flight checks echo "=== Speak Production Pre-flight ===" # Check staging health curl -f https://staging.example.com/health | jq '.services.speak' # Check Speak service status curl -s https://status.speak.com/api/status | jq '.status' # Verify production credentials work curl -X POST https://api.speak.com/v1/health \ -H "Authorization: Bearer ${SPEAK_API_KEY_PROD}" \ -H "X-App-ID: ${SPEAK_APP_ID_PROD}" | jq echo "=== Starting Deployment ===" # Gradual rollout - start with canary (10%) kubectl apply -f k8s/production.yaml kubectl set image deployment/speak-integration app=image:new --record kubectl rollout pause deployment/speak-integration echo "Canary deployed. Monitoring for 10 minutes..." sleep 600 # Check canary metrics echo "Checking error rates..." curl -s "localhost:9090/api/v1/query?query=rate(speak_errors_total[5m])" | jq # Check lesson completion rate curl -s "localhost:9090/api/v1/query?query=speak_lesson_completion_rate[5m]" | jq # If healthy, continue rollout to 50% echo "Canary healthy. Continuing to 50%..." kubectl rollout resume deployment/speak-integration kubectl rollout pause deployment/speak-integration sleep 300 # Complete rollout to 100% echo "50% healthy. Completing rollout..." kubectl rollout resume deployment/speak-integration kubectl rollout status deployment/speak-integration echo "=== Deployment Complete ===" ``` ## Health Check Implementation ```typescript // api/health.ts interface SpeakHealthStatus { connected: boolean; latencyMs: number; speechRecognition: boolean; tutorAvailable: boolean; } async function checkSpeakHealth(): Promise { const start = Date.now(); try { // Test basic connectivity await speakClient.health.check(); // Test speech recognition (with sample audio) const speechOk = await testSpeechRecognition(); // Test tutor availability const tutorOk = await testTutorConnection(); return { connected: true, latencyMs: Date.now() - start, speechRecognition: speechOk, tutorAvailable: tutorOk, }; } catch (error) { return { connected: false, latencyMs: Date.now() - start, speechRecognition: false, tutorAvailable: false, }; } } app.get('/health', async (req, res) => { const speakStatus = await checkSpeakHealth(); const isHealthy = speakStatus.connected && speakStatus.speechRecognition && speakStatus.tutorAvailable; res.status(isHealthy ? 200 : 503).json({ status: isHealthy ? 'healthy' : 'degraded', services: { speak: speakStatus, }, timestamp: new Date().toISOString(), }); }); ``` ## Rollback Procedure ```bash #!/bin/bash # rollback-speak.sh echo "=== Emergency Rollback ===" # Immediate rollback kubectl rollout undo deployment/speak-integration kubectl rollout status deployment/speak-integration # Verify rollback curl -f https://api.yourapp.com/health | jq # If Speak completely down, enable fallback mode if [ "$1" == "--fallback" ]; then kubectl set env deployment/speak-integration SPEAK_FALLBACK_MODE=true echo "Fallback mode enabled - offline lessons available" fi echo "=== Rollback Complete ===" ``` ## Alert Configuration | Alert | Condition | Severity | |-------|-----------|----------| | Speak API Down | Health check fails 3x | P1 | | High Error Rate | Error rate > 5% | P2 | | Speech Recognition Failing | Success rate < 90% | P2 | | High Latency | p95 > 3000ms | P2 | | Auth Failures | 401/403 errors > 0 | P1 | | Session Abandonment | Abandon rate > 20% | P3 | ## Production Monitoring Dashboard ```yaml # grafana-speak-dashboard.yaml panels: - title: "Lesson Sessions" query: "sum(speak_sessions_active)" - title: "Speech Recognition Success Rate" query: "rate(speak_speech_success_total[5m]) / rate(speak_speech_total[5m]) * 100" - title: "Average Pronunciation Score" query: "avg(speak_pronunciation_score)" - title: "API Latency (p95)" query: "histogram_quantile(0.95, rate(speak_api_latency_bucket[5m]))" - title: "Error Rate by Type" query: "sum by (error_type) (rate(speak_errors_total[5m]))" - title: "Lesson Completion Rate" query: "rate(speak_lessons_completed[5m]) / rate(speak_lessons_started[5m]) * 100" ``` ## Output - Deployed Speak integration - Health checks passing - Monitoring active - Rollback procedure documented and tested - Alerting configured ## Error Handling | Issue | Cause | Solution | |-------|-------|----------| | Health check fails | Speak service down | Enable fallback mode | | High latency | Audio processing slow | Scale audio workers | | Session failures | API key issues | Verify credentials | | Low completion rate | UX issues | Review user feedback | ## Examples ### Smoke Test Suite ```typescript async function productionSmokeTest(): Promise { const tests = [ { name: 'API Health', fn: testApiHealth }, { name: 'Speech Recognition', fn: testSpeechRecognition }, { name: 'AI Tutor', fn: testTutorResponse }, { name: 'Session Lifecycle', fn: testSessionLifecycle }, { name: 'Pronunciation Scoring', fn: testPronunciationScoring }, ]; const results = []; for (const test of tests) { try { await test.fn(); results.push({ name: test.name, passed: true }); } catch (error) { results.push({ name: test.name, passed: false, error }); } } return results; } ``` ## Resources - [Speak Status](https://status.speak.com) - [Speak Support](https://support.speak.com) - [Speak Production Guide](https://developer.speak.com/docs/production) ## Next Steps For version upgrades, see `speak-upgrade-migration`.

Skill file: plugins/saas-packs/speak-pack/skills/speak-prod-checklist/SKILL.md