[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F8ZC0EYK84W31PDWDXK252":3,"skill-same:01M6F8ZC0EYK84W31PDWDXK252":79},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6F8ZC0EYK84W31PDWDXK252","cohere-prod-checklist",null,"Execute Cohere production deployment checklist and rollback procedures.\nUse when deploying Cohere integrations to production, preparing for launch,\nor implementing go-live procedures for Cohere-powered apps.\nTrigger with phrases like \"cohere production\", \"deploy cohere\",\n\"cohere go-live\", \"cohere launch checklist\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-prod-checklist\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"cohere prod checklist","cohere","checklist","read","with","apps","trigger","io","live","use","go","curl","rollback","integrations","Bash","saas","kubectl","code","deployment","nlp","2026-11-10 10:12:30",false,"---\nname: cohere-prod-checklist\ndescription: |\n  Execute Cohere production deployment checklist and rollback procedures.\n  Use when deploying Cohere integrations to production, preparing for launch,\n  or implementing go-live procedures for Cohere-powered apps.\n  Trigger with phrases like \"cohere production\", \"deploy cohere\",\n  \"cohere go-live\", \"cohere launch checklist\".\nallowed-tools: Read, Bash(kubectl:*), Bash(curl:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, ai, nlp, cohere]\ncompatible-with: claude-code\n---\n\n# Cohere Production Checklist\n\n## Overview\nComplete go-live checklist for deploying Cohere API v2 integrations to production with safety gates, health checks, and rollback procedures.\n\n## Prerequisites\n- Staging environment tested and verified\n- Production API key (not trial) from [dashboard.cohere.com](https:\u002F\u002Fdashboard.cohere.com)\n- Deployment pipeline configured\n- Monitoring and alerting ready\n\n## Checklist\n\n### API & Authentication\n- [ ] Using **production** API key (not trial — trial is rate-limited to 20 calls\u002Fmin)\n- [ ] `CO_API_KEY` stored in secret manager (Vault, AWS Secrets Manager, GCP Secret Manager)\n- [ ] Key rotation procedure documented and tested\n- [ ] Billing alerts configured at dashboard.cohere.com\n- [ ] Using API v2 endpoints (`CohereClientV2`, not `CohereClient`)\n\n### Code Quality\n- [ ] All API calls specify `model` parameter explicitly\n- [ ] `embeddingTypes` set for all Embed calls (required for v3+)\n- [ ] `inputType` set for all Embed calls (required for v3+)\n- [ ] Error handling catches `CohereError` and `CohereTimeoutError`\n- [ ] Retry logic with exponential backoff for 429 and 5xx\n- [ ] No hardcoded API keys in source code\n- [ ] Request\u002Fresponse logging excludes API keys and PII\n\n### Model Selection\n- [ ] Correct model IDs used (not deprecated names):\n\n| Use Case | Recommended Model | Fallback |\n|----------|------------------|----------|\n| Chat\u002Fgeneration | `command-a-03-2025` | `command-r-plus-08-2024` |\n| Lightweight chat | `command-r7b-12-2024` | `command-r-08-2024` |\n| Embeddings | `embed-v4.0` | `embed-english-v3.0` |\n| Reranking | `rerank-v3.5` | `rerank-english-v3.0` |\n\n### Performance\n- [ ] Embed calls batched (up to 96 texts per request)\n- [ ] Rerank calls limited to 1000 documents per request\n- [ ] Streaming enabled for user-facing chat (`chatStream`)\n- [ ] Connection pooling \u002F keep-alive configured\n- [ ] Response caching for repeated embed\u002Frerank queries\n- [ ] `maxTokens` set to prevent runaway generation costs\n\n### Health Check Endpoint\n\n```typescript\n\u002F\u002F \u002Fapi\u002Fhealth\nimport { CohereClientV2, CohereError } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\nexport async function GET() {\n  const start = Date.now();\n  let cohereStatus: 'healthy' | 'degraded' | 'down' = 'down';\n\n  try {\n    \u002F\u002F Cheapest possible health check — minimal chat\n    await cohere.chat({\n      model: 'command-r7b-12-2024',\n      messages: [{ role: 'user', content: 'ping' }],\n      maxTokens: 1,\n    });\n    cohereStatus = 'healthy';\n  } catch (err) {\n    if (err instanceof CohereError && err.statusCode === 429) {\n      cohereStatus = 'degraded'; \u002F\u002F Rate limited but reachable\n    }\n  }\n\n  return Response.json({\n    status: cohereStatus === 'healthy' ? 'ok' : 'degraded',\n    cohere: {\n      status: cohereStatus,\n      latencyMs: Date.now() - start,\n    },\n    timestamp: new Date().toISOString(),\n  });\n}\n```\n\n### Circuit Breaker\n\n```typescript\nclass CohereCircuitBreaker {\n  private failures = 0;\n  private lastFailure = 0;\n  private state: 'closed' | 'open' | 'half-open' = 'closed';\n\n  constructor(\n    private threshold = 5,\n    private resetMs = 60_000\n  ) {}\n\n  async call\u003CT>(fn: () => Promise\u003CT>, fallback?: () => T): Promise\u003CT> {\n    if (this.state === 'open') {\n      if (Date.now() - this.lastFailure > this.resetMs) {\n        this.state = 'half-open';\n      } else if (fallback) {\n        return fallback();\n      } else {\n        throw new Error('Cohere circuit breaker is open');\n      }\n    }\n\n    try {\n      const result = await fn();\n      this.failures = 0;\n      this.state = 'closed';\n      return result;\n    } catch (err) {\n      this.failures++;\n      this.lastFailure = Date.now();\n\n      if (this.failures >= this.threshold) {\n        this.state = 'open';\n        console.error(`Cohere circuit breaker OPEN after ${this.failures} failures`);\n      }\n      throw err;\n    }\n  }\n}\n\nconst breaker = new CohereCircuitBreaker();\n```\n\n### Gradual Rollout\n\n```bash\n# Pre-flight\ncurl -sf https:\u002F\u002Fstaging.example.com\u002Fapi\u002Fhealth | jq '.cohere'\ncurl -s https:\u002F\u002Fstatus.cohere.com\u002Fapi\u002Fv2\u002Fstatus.json | jq '.status'\n\n# Deploy with canary (10% traffic)\nkubectl apply -f k8s\u002Fproduction.yaml\nkubectl rollout pause deployment\u002Fapp\n\n# Monitor for 10 minutes: error rate, latency, 429s\n# Check: No increase in CohereError rate\n# Check: P95 latency \u003C 5s for chat, \u003C 500ms for embed\u002Frerank\n\n# Proceed to 100%\nkubectl rollout resume deployment\u002Fapp\nkubectl rollout status deployment\u002Fapp\n```\n\n### Monitoring Alerts\n\n| Alert | Condition | Severity |\n|-------|-----------|----------|\n| Cohere unreachable | Health check fails 3x | P1 |\n| High error rate | 5xx > 5% of requests\u002F5min | P1 |\n| Rate limited | 429 > 10\u002Fmin | P2 |\n| High latency | Chat P95 > 10s | P2 |\n| Auth failure | Any 401 response | P1 |\n| Budget exceeded | Daily token cost > threshold | P2 |\n\n### Rollback\n\n```bash\n# Immediate rollback\nkubectl rollout undo deployment\u002Fapp\nkubectl rollout status deployment\u002Fapp\n\n# Verify rollback\ncurl -sf https:\u002F\u002Fapi.example.com\u002Fapi\u002Fhealth | jq '.cohere'\n```\n\n## Output\n- Production-ready Cohere integration with health checks\n- Circuit breaker preventing cascade failures\n- Monitoring alerts for Cohere-specific error conditions\n- Documented rollback procedure\n\n## Resources\n- [Cohere Going Live Guide](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fgoing-live)\n- [Cohere Status Page](https:\u002F\u002Fstatus.cohere.com)\n- [Cohere Pricing](https:\u002F\u002Fcohere.com\u002Fpricing)\n\n## Next Steps\nFor version upgrades, see `cohere-upgrade-migration`.\n\n","# Cohere Production Checklist\n\n## Overview\nComplete go-live checklist for deploying Cohere API v2 integrations to production with safety gates, health checks, and rollback procedures.\n\n## Prerequisites\n- Staging environment tested and verified\n- Production API key (not trial) from [dashboard.cohere.com](https:\u002F\u002Fdashboard.cohere.com)\n- Deployment pipeline configured\n- Monitoring and alerting ready\n\n## Checklist\n\n### API & Authentication\n- [ ] Using **production** API key (not trial — trial is rate-limited to 20 calls\u002Fmin)\n- [ ] `CO_API_KEY` stored in secret manager (Vault, AWS Secrets Manager, GCP Secret Manager)\n- [ ] Key rotation procedure documented and tested\n- [ ] Billing alerts configured at dashboard.cohere.com\n- [ ] Using API v2 endpoints (`CohereClientV2`, not `CohereClient`)\n\n### Code Quality\n- [ ] All API calls specify `model` parameter explicitly\n- [ ] `embeddingTypes` set for all Embed calls (required for v3+)\n- [ ] `inputType` set for all Embed calls (required for v3+)\n- [ ] Error handling catches `CohereError` and `CohereTimeoutError`\n- [ ] Retry logic with exponential backoff for 429 and 5xx\n- [ ] No hardcoded API keys in source code\n- [ ] Request\u002Fresponse logging excludes API keys and PII\n\n### Model Selection\n- [ ] Correct model IDs used (not deprecated names):\n\n| Use Case | Recommended Model | Fallback |\n|----------|------------------|----------|\n| Chat\u002Fgeneration | `command-a-03-2025` | `command-r-plus-08-2024` |\n| Lightweight chat | `command-r7b-12-2024` | `command-r-08-2024` |\n| Embeddings | `embed-v4.0` | `embed-english-v3.0` |\n| Reranking | `rerank-v3.5` | `rerank-english-v3.0` |\n\n### Performance\n- [ ] Embed calls batched (up to 96 texts per request)\n- [ ] Rerank calls limited to 1000 documents per request\n- [ ] Streaming enabled for user-facing chat (`chatStream`)\n- [ ] Connection pooling \u002F keep-alive configured\n- [ ] Response caching for repeated embed\u002Frerank queries\n- [ ] `maxTokens` set to prevent runaway generation costs\n\n### Health Check Endpoint\n\n```typescript\n\u002F\u002F \u002Fapi\u002Fhealth\nimport { CohereClientV2, CohereError } from 'cohere-ai';\n\nconst cohere = new CohereClientV2();\n\nexport async function GET() {\n  const start = Date.now();\n  let cohereStatus: 'healthy' | 'degraded' | 'down' = 'down';\n\n  try {\n    \u002F\u002F Cheapest possible health check — minimal chat\n    await cohere.chat({\n      model: 'command-r7b-12-2024',\n      messages: [{ role: 'user', content: 'ping' }],\n      maxTokens: 1,\n    });\n    cohereStatus = 'healthy';\n  } catch (err) {\n    if (err instanceof CohereError && err.statusCode === 429) {\n      cohereStatus = 'degraded'; \u002F\u002F Rate limited but reachable\n    }\n  }\n\n  return Response.json({\n    status: cohereStatus === 'healthy' ? 'ok' : 'degraded',\n    cohere: {\n      status: cohereStatus,\n      latencyMs: Date.now() - start,\n    },\n    timestamp: new Date().toISOString(),\n  });\n}\n```\n\n### Circuit Breaker\n\n```typescript\nclass CohereCircuitBreaker {\n  private failures = 0;\n  private lastFailure = 0;\n  private state: 'closed' | 'open' | 'half-open' = 'closed';\n\n  constructor(\n    private threshold = 5,\n    private resetMs = 60_000\n  ) {}\n\n  async call\u003CT>(fn: () => Promise\u003CT>, fallback?: () => T): Promise\u003CT> {\n    if (this.state === 'open') {\n      if (Date.now() - this.lastFailure > this.resetMs) {\n        this.state = 'half-open';\n      } else if (fallback) {\n        return fallback();\n      } else {\n        throw new Error('Cohere circuit breaker is open');\n      }\n    }\n\n    try {\n      const result = await fn();\n      this.failures = 0;\n      this.state = 'closed';\n      return result;\n    } catch (err) {\n      this.failures++;\n      this.lastFailure = Date.now();\n\n      if (this.failures >= this.threshold) {\n        this.state = 'open';\n        console.error(`Cohere circuit breaker OPEN after ${this.failures} failures`);\n      }\n      throw err;\n    }\n  }\n}\n\nconst breaker = new CohereCircuitBreaker();\n```\n\n### Gradual Rollout\n\n```bash\n# Pre-flight\ncurl -sf https:\u002F\u002Fstaging.example.com\u002Fapi\u002Fhealth | jq '.cohere'\ncurl -s https:\u002F\u002Fstatus.cohere.com\u002Fapi\u002Fv2\u002Fstatus.json | jq '.status'\n\n# Deploy with canary (10% traffic)\nkubectl apply -f k8s\u002Fproduction.yaml\nkubectl rollout pause deployment\u002Fapp\n\n# Monitor for 10 minutes: error rate, latency, 429s\n# Check: No increase in CohereError rate\n# Check: P95 latency \u003C 5s for chat, \u003C 500ms for embed\u002Frerank\n\n# Proceed to 100%\nkubectl rollout resume deployment\u002Fapp\nkubectl rollout status deployment\u002Fapp\n```\n\n### Monitoring Alerts\n\n| Alert | Condition | Severity |\n|-------|-----------|----------|\n| Cohere unreachable | Health check fails 3x | P1 |\n| High error rate | 5xx > 5% of requests\u002F5min | P1 |\n| Rate limited | 429 > 10\u002Fmin | P2 |\n| High latency | Chat P95 > 10s | P2 |\n| Auth failure | Any 401 response | P1 |\n| Budget exceeded | Daily token cost > threshold | P2 |\n\n### Rollback\n\n```bash\n# Immediate rollback\nkubectl rollout undo deployment\u002Fapp\nkubectl rollout status deployment\u002Fapp\n\n# Verify rollback\ncurl -sf https:\u002F\u002Fapi.example.com\u002Fapi\u002Fhealth | jq '.cohere'\n```\n\n## Output\n- Production-ready Cohere integration with health checks\n- Circuit breaker preventing cascade failures\n- Monitoring alerts for Cohere-specific error conditions\n- Documented rollback procedure\n\n## Resources\n- [Cohere Going Live Guide](https:\u002F\u002Fdocs.cohere.com\u002Fdocs\u002Fgoing-live)\n- [Cohere Status Page](https:\u002F\u002Fstatus.cohere.com)\n- [Cohere Pricing](https:\u002F\u002Fcohere.com\u002Fpricing)\n\n## Next Steps\nFor version upgrades, see `cohere-upgrade-migration`.\n\n",{"name":5,"tags":49,"author":51,"license":15,"version":52,"description":53,"allowed-tools":54,"compatible-with":55},[39,50,43,25],"ai","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Execute Cohere production deployment checklist and rollback procedures.\nUse when deploying Cohere integrations to production, preparing for launch,\nor implementing go-live procedures for Cohere-powered apps.\nTrigger with phrases like \"cohere production\", \"deploy cohere\",\n\"cohere go-live\", \"cohere launch checklist\".\n","Read, Bash(kubectl:*), Bash(curl:*), Grep","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cohere-prod-checklist",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cohere-prod-checklist",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cohere-prod-checklist","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fcohere-prod-checklist\u002FSKILL.md",true,[],[80,94,104,112,118,125],{"skillNo":81,"name":82,"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":83,"categories":84,"keywords":90,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92,93],"model","model hierarchy","model hierarchy skill",{"skillNo":95,"name":96,"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":97,"categories":98,"keywords":100,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[99],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[101,102,103],"MCP","zoom","zoom mcp",{"skillNo":105,"name":106,"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":107,"categories":108,"keywords":109,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[110,111,29,102],"sdk","zoom apps sdk",{"skillNo":113,"name":114,"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":115,"categories":116,"keywords":117,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[114],{"skillNo":119,"name":120,"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":121,"categories":122,"keywords":124,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[123],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[120],{"skillNo":126,"name":127,"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":128,"categories":129,"keywords":130,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[127]]