[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWKA7A6GWEP3HHS765VJR3":3,"skill-same:01M6CWKA7A6GWEP3HHS765VJR3":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":35,"commitSha":36,"skillDirectory":5,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6CWKA7A6GWEP3HHS765VJR3","canary-releases",null,"Progressive rollout deployment strategy","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcanary-releases\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"canary","releases","canary releases","deployment","strategy","devops","rollout","opencode","engineer","deployment strategy","2026-11-10 10:12:30",false,"---\nname: canary-releases\ndescription: Progressive rollout deployment strategy\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: devops-engineer, platform-engineer\n  category: devops\n---\n\n## What I do\n\n- Design and implement canary release strategies\n- Gradually shift traffic from stable to new versions\n- Implement automated traffic routing based on metrics\n- Create canary analysis and evaluation frameworks\n- Build rollback triggers based on error rates and latency\n- Monitor and analyze canary performance metrics\n\n## When to use me\n\n- When you want to reduce risk of new deployments\n- When you need to validate changes with real production traffic\n- When deploying to large user bases where failures are costly\n- When you want data-driven deployment decisions\n- When implementing progressive delivery practices\n- When working with microservices architectures\n\n## Key Concepts\n\n### Traffic Splitting\n\n```yaml\n# Kubernetes Istio virtual service for canary routing\napiVersion: networking.istio.io\u002Fv1alpha3\nkind: VirtualService\nmetadata:\n  name: myapp\nspec:\n  hosts:\n    - myapp\n  http:\n    - route:\n        - destination:\n            host: myapp\n            subset: stable\n          weight: 90\n        - destination:\n            host: myapp\n            subset: canary\n          weight: 10\n```\n\n### Metrics-Based Routing\n\n```javascript\n\u002F\u002F Prometheus alert for canary analysis\n- alert: CanaryHighErrorRate\n  expr: |\n    rate(http_requests_total{service=\"canary\"}[5m]) \n    \u002F rate(http_requests_total{service=\"stable\"}[5m]) > 0.1\n  for: 5m\n  labels:\n    severity: critical\n  annotations:\n    summary: \"Canary error rate exceeds 10% of stable\"\n    description: \"Automated rollback recommended\"\n```\n\n### Phased Rollout\n\n1. **Initial**: 1-5% traffic to canary\n2. **Validation**: Monitor error rates and latency\n3. **Expansion**: Increase to 25%, 50%, 75%\n4. **Promotion**: Full 100% traffic\n5. **Cleanup**: Remove old version\n\n### Key Metrics to Monitor\n\n- **Error Rate**: Compare canary vs. stable\n- **Latency**: P50, P95, P99 response times\n- **Success Rate**: Request completion percentage\n- **Resource Usage**: CPU, memory, network\n- **Business Metrics**: Conversion rates, session duration\n- **Custom Metrics**: Domain-specific indicators\n\n### Rollback Triggers\n\n- Error rate exceeds 2x stable environment\n- P99 latency exceeds threshold (e.g., 500ms)\n- CPU or memory usage exceeds 80%\n- Custom business metric degradation\n- Manual override triggered\n","## What I do\n\n- Design and implement canary release strategies\n- Gradually shift traffic from stable to new versions\n- Implement automated traffic routing based on metrics\n- Create canary analysis and evaluation frameworks\n- Build rollback triggers based on error rates and latency\n- Monitor and analyze canary performance metrics\n\n## When to use me\n\n- When you want to reduce risk of new deployments\n- When you need to validate changes with real production traffic\n- When deploying to large user bases where failures are costly\n- When you want data-driven deployment decisions\n- When implementing progressive delivery practices\n- When working with microservices architectures\n\n## Key Concepts\n\n### Traffic Splitting\n\n```yaml\n# Kubernetes Istio virtual service for canary routing\napiVersion: networking.istio.io\u002Fv1alpha3\nkind: VirtualService\nmetadata:\n  name: myapp\nspec:\n  hosts:\n    - myapp\n  http:\n    - route:\n        - destination:\n            host: myapp\n            subset: stable\n          weight: 90\n        - destination:\n            host: myapp\n            subset: canary\n          weight: 10\n```\n\n### Metrics-Based Routing\n\n```javascript\n\u002F\u002F Prometheus alert for canary analysis\n- alert: CanaryHighErrorRate\n  expr: |\n    rate(http_requests_total{service=\"canary\"}[5m]) \n    \u002F rate(http_requests_total{service=\"stable\"}[5m]) > 0.1\n  for: 5m\n  labels:\n    severity: critical\n  annotations:\n    summary: \"Canary error rate exceeds 10% of stable\"\n    description: \"Automated rollback recommended\"\n```\n\n### Phased Rollout\n\n1. **Initial**: 1-5% traffic to canary\n2. **Validation**: Monitor error rates and latency\n3. **Expansion**: Increase to 25%, 50%, 75%\n4. **Promotion**: Full 100% traffic\n5. **Cleanup**: Remove old version\n\n### Key Metrics to Monitor\n\n- **Error Rate**: Compare canary vs. stable\n- **Latency**: P50, P95, P99 response times\n- **Success Rate**: Request completion percentage\n- **Resource Usage**: CPU, memory, network\n- **Business Metrics**: Conversion rates, session duration\n- **Custom Metrics**: Domain-specific indicators\n\n### Rollback Triggers\n\n- Error rate exceeds 2x stable environment\n- P99 latency exceeds threshold (e.g., 500ms)\n- CPU or memory usage exceeds 80%\n- Custom business metric degradation\n- Manual override triggered\n",{"name":5,"license":14,"metadata":33,"description":7,"compatibility":25},{"audience":34,"category":23},"devops-engineer, platform-engineer","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill canary-releases",{"tool":47,"command":48},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill canary-releases",{"tool":50,"command":51},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill canary-releases","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcanary-releases\u002FSKILL.md",true,[],[56,67,77,86,96,105],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":28},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[58,63,64,65,25,66],"platform","cross-platform","mobile","development",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":28},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[69,74,25,75,76],"data wrangling","science","data",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":28},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[79,84,25,85],"system","scripting",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":28},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[93,94,25,95,76],"wide column","databases","model",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":28},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[103,94,25,104],"wide column stores","database",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":28},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[107,112,113,114,25,115,116],"websocket","real-time","time","best practices","implementation"]