[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FACWSF156WT1JA2MW3AZ93":3,"skill-same:01M6FACWSF156WT1JA2MW3AZ93":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":61,"commitSha":62,"skillDirectory":63,"forksCount":64,"repositoryHtmlUrl":65,"repositoryHomepageUrl":66,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M6FACWSF156WT1JA2MW3AZ93","exa-prod-checklist",null,"Execute Exa production deployment checklist with pre-flight, deploy, and rollback.\nUse when deploying Exa integrations to production, preparing for launch,\nor verifying production readiness.\nTrigger with phrases like \"exa production\", \"deploy exa to prod\",\n\"exa go-live\", \"exa launch checklist\", \"exa production ready\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-prod-checklist\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"exa prod checklist","exa","checklist","ready","with","trigger","io","live","production ready","production readiness","openclaw","use","read","node","integrations","Bash","saas","code","deployment","go","2026-11-10 10:12:30",false,"---\nname: exa-prod-checklist\ndescription: |\n  Execute Exa production deployment checklist with pre-flight, deploy, and rollback.\n  Use when deploying Exa integrations to production, preparing for launch,\n  or verifying production readiness.\n  Trigger with phrases like \"exa production\", \"deploy exa to prod\",\n  \"exa go-live\", \"exa launch checklist\", \"exa production ready\".\nallowed-tools: Read, Bash(curl:*), Bash(node:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\ntags: [saas, exa, deployment, production]\n\n---\n# Exa Production Checklist\n\n## Overview\nComplete checklist for deploying Exa search integrations to production. Covers API key management, error handling verification, performance baselines, monitoring, and rollback procedures.\n\n## Pre-Deployment Checklist\n\n### Security\n- [ ] Production API key stored in secret manager (not env file)\n- [ ] Different API keys for dev\u002Fstaging\u002Fproduction\n- [ ] `.env` files in `.gitignore`\n- [ ] Git history scanned for accidentally committed keys\n- [ ] API key has minimal scopes needed\n\n### Code Quality\n- [ ] All tests passing (unit + integration)\n- [ ] No hardcoded API keys or URLs\n- [ ] Error handling covers all Exa HTTP codes (400, 401, 402, 403, 429, 5xx)\n- [ ] `requestId` captured from error responses\n- [ ] Rate limiting\u002Fexponential backoff implemented\n- [ ] Content moderation enabled (`moderation: true`) for user-facing search\n\n### Performance\n- [ ] Search type appropriate for latency SLO (`fast`\u002F`auto`\u002F`neural`)\n- [ ] `numResults` minimized per use case (3-5 for most)\n- [ ] `maxCharacters` set on text and highlights\n- [ ] Result caching enabled (LRU or Redis)\n- [ ] Request queue with concurrency limit (respect 10 QPS default)\n\n### Monitoring\n- [ ] Search latency histogram instrumented\n- [ ] Error rate counter by status code\n- [ ] Cache hit\u002Fmiss rate tracked\n- [ ] Daily search volume tracked (for budget)\n- [ ] Alerts configured for latency > 3s, error rate > 5%\n\n## Deploy Procedure\n\n### Step 1: Pre-Flight Verification\n```bash\nset -euo pipefail\necho \"=== Exa Pre-Flight ===\"\n\n# 1. Verify production API key works\nHTTP_CODE=$(curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\" \\\n  -X POST https:\u002F\u002Fapi.exa.ai\u002Fsearch \\\n  -H \"x-api-key: $EXA_API_KEY_PROD\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"query\":\"pre-flight check\",\"numResults\":1}')\necho \"API Status: $HTTP_CODE\"\n[ \"$HTTP_CODE\" = \"200\" ] || { echo \"FAIL: API key invalid\"; exit 1; }\n\n# 2. Verify tests pass\nnpm test || { echo \"FAIL: Tests failing\"; exit 1; }\n\necho \"Pre-flight PASSED\"\n```\n\n### Step 2: Health Check Endpoint\n```typescript\nimport Exa from \"exa-js\";\n\nconst exa = new Exa(process.env.EXA_API_KEY);\n\napp.get(\"\u002Fhealth\u002Fexa\", async (_req, res) => {\n  const start = performance.now();\n  try {\n    const result = await exa.search(\"health check\", { numResults: 1 });\n    const latencyMs = Math.round(performance.now() - start);\n    res.json({\n      status: \"healthy\",\n      latencyMs,\n      resultCount: result.results.length,\n      timestamp: new Date().toISOString(),\n    });\n  } catch (err: any) {\n    res.status(503).json({\n      status: \"unhealthy\",\n      error: err.message,\n      errorCode: err.status,\n      latencyMs: Math.round(performance.now() - start),\n    });\n  }\n});\n```\n\n### Step 3: Gradual Rollout\n```bash\nset -euo pipefail\n# Deploy canary (10% traffic)\nkubectl apply -f k8s\u002Fproduction.yaml\nkubectl rollout pause deployment\u002Fexa-service\n\necho \"Canary deployed. Monitor for 10 minutes...\"\necho \"Check: \u002Fhealth\u002Fexa endpoint, error rates, latency\"\n\n# After monitoring, resume to full rollout\n# kubectl rollout resume deployment\u002Fexa-service\n```\n\n## Post-Deployment Verification\n```bash\nset -euo pipefail\n# Verify production endpoint\ncurl -sf https:\u002F\u002Fyour-app.com\u002Fhealth\u002Fexa | python3 -m json.tool\n\n# Check error rates (if Prometheus available)\ncurl -s \"localhost:9090\u002Fapi\u002Fv1\u002Fquery?query=rate(exa_search_error[5m])\" 2>\u002Fdev\u002Fnull\n```\n\n## Rollback Procedure\n```bash\nset -euo pipefail\n# Immediate rollback\nkubectl rollout undo deployment\u002Fexa-service\nkubectl rollout status deployment\u002Fexa-service\necho \"Rollback complete. Verify \u002Fhealth\u002Fexa endpoint.\"\n```\n\n## Alert Thresholds\n\n| Alert | Condition | Severity |\n|-------|-----------|----------|\n| API Down | 5xx errors > 10\u002Fmin | P1 |\n| Auth Failure | 401\u002F403 errors > 0 | P1 |\n| Rate Limited | 429 errors > 5\u002Fmin | P2 |\n| High Latency | P95 > 5000ms | P2 |\n| Budget Warning | Daily searches > 80% of limit | P3 |\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Health check fails | API key not set in prod | Verify secret injection |\n| Latency spike after deploy | Missing cache warm-up | Pre-populate cache |\n| Rate limit on launch | Traffic spike | Enable request queue |\n| Rollback needed | Error rate spike | `kubectl rollout undo` |\n\n## Resources\n- [Exa API Documentation](https:\u002F\u002Fdocs.exa.ai)\n- [Exa Error Codes](https:\u002F\u002Fdocs.exa.ai\u002Freference\u002Ferror-codes)\n\n## Next Steps\nFor version upgrades, see `exa-upgrade-migration`. For incident response, see `exa-incident-runbook`.\n\n","# Exa Production Checklist\n\n## Overview\nComplete checklist for deploying Exa search integrations to production. Covers API key management, error handling verification, performance baselines, monitoring, and rollback procedures.\n\n## Pre-Deployment Checklist\n\n### Security\n- [ ] Production API key stored in secret manager (not env file)\n- [ ] Different API keys for dev\u002Fstaging\u002Fproduction\n- [ ] `.env` files in `.gitignore`\n- [ ] Git history scanned for accidentally committed keys\n- [ ] API key has minimal scopes needed\n\n### Code Quality\n- [ ] All tests passing (unit + integration)\n- [ ] No hardcoded API keys or URLs\n- [ ] Error handling covers all Exa HTTP codes (400, 401, 402, 403, 429, 5xx)\n- [ ] `requestId` captured from error responses\n- [ ] Rate limiting\u002Fexponential backoff implemented\n- [ ] Content moderation enabled (`moderation: true`) for user-facing search\n\n### Performance\n- [ ] Search type appropriate for latency SLO (`fast`\u002F`auto`\u002F`neural`)\n- [ ] `numResults` minimized per use case (3-5 for most)\n- [ ] `maxCharacters` set on text and highlights\n- [ ] Result caching enabled (LRU or Redis)\n- [ ] Request queue with concurrency limit (respect 10 QPS default)\n\n### Monitoring\n- [ ] Search latency histogram instrumented\n- [ ] Error rate counter by status code\n- [ ] Cache hit\u002Fmiss rate tracked\n- [ ] Daily search volume tracked (for budget)\n- [ ] Alerts configured for latency > 3s, error rate > 5%\n\n## Deploy Procedure\n\n### Step 1: Pre-Flight Verification\n```bash\nset -euo pipefail\necho \"=== Exa Pre-Flight ===\"\n\n# 1. Verify production API key works\nHTTP_CODE=$(curl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\" \\\n  -X POST https:\u002F\u002Fapi.exa.ai\u002Fsearch \\\n  -H \"x-api-key: $EXA_API_KEY_PROD\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"query\":\"pre-flight check\",\"numResults\":1}')\necho \"API Status: $HTTP_CODE\"\n[ \"$HTTP_CODE\" = \"200\" ] || { echo \"FAIL: API key invalid\"; exit 1; }\n\n# 2. Verify tests pass\nnpm test || { echo \"FAIL: Tests failing\"; exit 1; }\n\necho \"Pre-flight PASSED\"\n```\n\n### Step 2: Health Check Endpoint\n```typescript\nimport Exa from \"exa-js\";\n\nconst exa = new Exa(process.env.EXA_API_KEY);\n\napp.get(\"\u002Fhealth\u002Fexa\", async (_req, res) => {\n  const start = performance.now();\n  try {\n    const result = await exa.search(\"health check\", { numResults: 1 });\n    const latencyMs = Math.round(performance.now() - start);\n    res.json({\n      status: \"healthy\",\n      latencyMs,\n      resultCount: result.results.length,\n      timestamp: new Date().toISOString(),\n    });\n  } catch (err: any) {\n    res.status(503).json({\n      status: \"unhealthy\",\n      error: err.message,\n      errorCode: err.status,\n      latencyMs: Math.round(performance.now() - start),\n    });\n  }\n});\n```\n\n### Step 3: Gradual Rollout\n```bash\nset -euo pipefail\n# Deploy canary (10% traffic)\nkubectl apply -f k8s\u002Fproduction.yaml\nkubectl rollout pause deployment\u002Fexa-service\n\necho \"Canary deployed. Monitor for 10 minutes...\"\necho \"Check: \u002Fhealth\u002Fexa endpoint, error rates, latency\"\n\n# After monitoring, resume to full rollout\n# kubectl rollout resume deployment\u002Fexa-service\n```\n\n## Post-Deployment Verification\n```bash\nset -euo pipefail\n# Verify production endpoint\ncurl -sf https:\u002F\u002Fyour-app.com\u002Fhealth\u002Fexa | python3 -m json.tool\n\n# Check error rates (if Prometheus available)\ncurl -s \"localhost:9090\u002Fapi\u002Fv1\u002Fquery?query=rate(exa_search_error[5m])\" 2>\u002Fdev\u002Fnull\n```\n\n## Rollback Procedure\n```bash\nset -euo pipefail\n# Immediate rollback\nkubectl rollout undo deployment\u002Fexa-service\nkubectl rollout status deployment\u002Fexa-service\necho \"Rollback complete. Verify \u002Fhealth\u002Fexa endpoint.\"\n```\n\n## Alert Thresholds\n\n| Alert | Condition | Severity |\n|-------|-----------|----------|\n| API Down | 5xx errors > 10\u002Fmin | P1 |\n| Auth Failure | 401\u002F403 errors > 0 | P1 |\n| Rate Limited | 429 errors > 5\u002Fmin | P2 |\n| High Latency | P95 > 5000ms | P2 |\n| Budget Warning | Daily searches > 80% of limit | P3 |\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Health check fails | API key not set in prod | Verify secret injection |\n| Latency spike after deploy | Missing cache warm-up | Pre-populate cache |\n| Rate limit on launch | Traffic spike | Enable request queue |\n| Rollback needed | Error rate spike | `kubectl rollout undo` |\n\n## Resources\n- [Exa API Documentation](https:\u002F\u002Fdocs.exa.ai)\n- [Exa Error Codes](https:\u002F\u002Fdocs.exa.ai\u002Freference\u002Ferror-codes)\n\n## Next Steps\nFor version upgrades, see `exa-upgrade-migration`. For incident response, see `exa-incident-runbook`.\n\n",{"name":5,"tags":54,"author":56,"license":15,"version":57,"description":58,"allowed-tools":59,"compatible-with":60},[45,30,47,55],"production","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Execute Exa production deployment checklist with pre-flight, deploy, and rollback.\nUse when deploying Exa integrations to production, preparing for launch,\nor verifying production readiness.\nTrigger with phrases like \"exa production\", \"deploy exa to prod\",\n\"exa go-live\", \"exa launch checklist\", \"exa production ready\".\n","Read, Bash(curl:*), Bash(node:*), Grep","claude-code, codex, openclaw","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-prod-checklist",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill exa-prod-checklist",{"tool":76,"command":77},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill exa-prod-checklist",{"tool":79,"command":80},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill exa-prod-checklist","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fexa-prod-checklist\u002FSKILL.md",true,[],[85,97,107,116,122,129],{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":93,"publishedAt":49},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[90],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[94,95,96],"model","model hierarchy","model hierarchy skill",{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[102],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106],"MCP","zoom","zoom mcp",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[113,114,115,105],"sdk","zoom apps sdk","apps",{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[118],{"skillNo":123,"name":124,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[127],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},[124],{"skillNo":130,"name":131,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[131]]