Claude-code-plugins-plus-skills exa-prod-checklist

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/exa-pack/skills/exa-prod-checklist" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-exa-prod-checklist && rm -rf "$T"
manifest: plugins/saas-packs/exa-pack/skills/exa-prod-checklist/SKILL.md
source content

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 spike
kubectl rollout undo

Resources

Next Steps

For version upgrades, see

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