CtrlK
BlogDocsLog inGet started
Tessl Logo

exa-prod-checklist

Execute Exa production deployment checklist with pre-flight, deploy, and rollback. Use when deploying Exa integrations to production, preparing for launch, or verifying production readiness. Trigger with phrases like "exa production", "deploy exa to prod", "exa go-live", "exa launch checklist", "exa production ready".

89

Quality

88%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

SKILL.md
Quality
Evals
Security

Exa Production Checklist

Overview

Complete checklist for deploying Exa search integrations to production. Covers API key management, error handling verification, performance baselines, monitoring, and rollback procedures.

Pre-Deployment Checklist

Security

  • Production API key stored in secret manager (not env file)
  • Different API keys for dev/staging/production
  • .env files in .gitignore
  • Git history scanned for accidentally committed keys
  • API key has minimal scopes needed

Code Quality

  • All tests passing (unit + integration)
  • No hardcoded API keys or URLs
  • Error handling covers all Exa HTTP codes (400, 401, 402, 403, 429, 5xx)
  • requestId captured from error responses
  • Rate limiting/exponential backoff implemented
  • Content moderation enabled (moderation: true) for user-facing search

Performance

  • Search type appropriate for latency SLO (fast/auto/neural)
  • numResults minimized per use case (3-5 for most)
  • maxCharacters set on text and highlights
  • Result caching enabled (LRU or Redis)
  • Request queue with concurrency limit (respect 10 QPS default)

Monitoring

  • Search latency histogram instrumented
  • Error rate counter by status code
  • Cache hit/miss rate tracked
  • Daily search volume tracked (for budget)
  • Alerts configured for latency > 3s, error rate > 5%

Deploy Procedure

Step 1: Pre-Flight Verification

set -euo pipefail
echo "=== Exa Pre-Flight ==="

# 1. Verify production API key works
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
  -X POST https://api.exa.ai/search \
  -H "x-api-key: $EXA_API_KEY_PROD" \
  -H "Content-Type: application/json" \
  -d '{"query":"pre-flight check","numResults":1}')
echo "API Status: $HTTP_CODE"
[ "$HTTP_CODE" = "200" ] || { echo "FAIL: API key invalid"; exit 1; }

# 2. Verify tests pass
npm test || { echo "FAIL: Tests failing"; exit 1; }

echo "Pre-flight PASSED"

Step 2: Health Check Endpoint

import Exa from "exa-js";

const exa = new Exa(process.env.EXA_API_KEY);

app.get("/health/exa", async (_req, res) => {
  const start = performance.now();
  try {
    const result = await exa.search("health check", { numResults: 1 });
    const latencyMs = Math.round(performance.now() - start);
    res.json({
      status: "healthy",
      latencyMs,
      resultCount: result.results.length,
      timestamp: new Date().toISOString(),
    });
  } catch (err: any) {
    res.status(503).json({
      status: "unhealthy",
      error: err.message,
      errorCode: err.status,
      latencyMs: Math.round(performance.now() - start),
    });
  }
});

Step 3: Gradual Rollout

set -euo pipefail
# Deploy canary (10% traffic)
kubectl apply -f k8s/production.yaml
kubectl rollout pause deployment/exa-service

echo "Canary deployed. Monitor for 10 minutes..."
echo "Check: /health/exa endpoint, error rates, latency"

# After monitoring, resume to full rollout
# kubectl rollout resume deployment/exa-service

Post-Deployment Verification

set -euo pipefail
# Verify production endpoint
curl -sf https://your-app.com/health/exa | python3 -m json.tool

# Check error rates (if Prometheus available)
curl -s "localhost:9090/api/v1/query?query=rate(exa_search_error[5m])" 2>/dev/null

Rollback Procedure

set -euo pipefail
# Immediate rollback
kubectl rollout undo deployment/exa-service
kubectl rollout status deployment/exa-service
echo "Rollback complete. Verify /health/exa endpoint."

Alert Thresholds

AlertConditionSeverity
API Down5xx errors > 10/minP1
Auth Failure401/403 errors > 0P1
Rate Limited429 errors > 5/minP2
High LatencyP95 > 5000msP2
Budget WarningDaily searches > 80% of limitP3

Error Handling

IssueCauseSolution
Health check failsAPI key not set in prodVerify secret injection
Latency spike after deployMissing cache warm-upPre-populate cache
Rate limit on launchTraffic spikeEnable request queue
Rollback neededError rate spikekubectl rollout undo

Resources

  • Exa API Documentation
  • Exa Error Codes

Next Steps

For version upgrades, see exa-upgrade-migration. For incident response, see exa-incident-runbook.

Repository
jeremylongshore/claude-code-plugins-plus-skills
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.