[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWMX59ZAC75M7MBM6M22P6":3,"skill-same:01M6CWMX59ZAC75M7MBM6M22P6":52},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":32,"commitSha":33,"skillDirectory":5,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6CWMX59ZAC75M7MBM6M22P6","cicd",null,"Continuous integration and delivery pipelines","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\u002Fcicd\u002FSKILL.md",[],[5,18,19,20,21,22,23,24],"integration","developer","devops","opencode","engineer","pipelines","delivery","2026-11-10 10:12:30",false,"---\nname: cicd\ndescription: Continuous integration and delivery pipelines\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: developer, devops-engineer\n  category: devops\n---\n\n## What I do\n\n- Design and implement CI\u002FCD pipelines\n- Automate build, test, and deployment processes\n- Integrate security scanning into pipelines\n- Configure deployment strategies (blue-green, canary, rolling)\n- Set up artifact management and version control\n- Build monitoring and feedback loops for deployments\n\n## When to use me\n\n- When establishing DevOps practices\n- When automating software delivery\n- When implementing GitOps workflows\n- When integrating automated testing\n- When setting up release automation\n- When building deployment infrastructure\n\n## Key Concepts\n\n### GitHub Actions Pipeline\n\n```yaml\nname: CI\u002FCD Pipeline\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      \n      - name: Setup Node.js\n        uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: '20'\n          cache: 'npm'\n      \n      - name: Install dependencies\n        run: npm ci\n      \n      - name: Run linter\n        run: npm run lint\n      \n      - name: Run tests\n        run: npm test\n      \n      - name: Build\n        run: npm run build\n      \n      - name: Build Docker image\n        run: |\n          docker build -t myapp:${{ github.sha }} .\n          docker push myapp:${{ github.sha }}\n\n  deploy:\n    needs: build\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy to production\n        run: |\n          kubectl set image deployment\u002Fmyapp \\\n            myapp=myapp:${{ github.sha }}\n```\n\n### GitLab CI Pipeline\n\n```yaml\nstages:\n  - build\n  - test\n  - security\n  - deploy\n\nbuild:\n  stage: build\n  script:\n    - npm ci\n    - npm run build\n  artifacts:\n    paths:\n      - dist\u002F\n\ntest:\n  stage: test\n  script:\n    - npm test\n  coverage: \u002FCoverage: \\d+\\.\\d+%\u002F\n\nsecurity:\n  stage: security\n  script:\n    - npm audit\n    - trivy image myapp:latest\n\ndeploy:\n  stage: deploy\n  script:\n    - kubectl apply -f k8s\u002F\n  only:\n    - main\n```\n\n### Pipeline Best Practices\n\n- **Fast feedback**: Run fastest tests first\n- **Parallel execution**: Distribute tests across runners\n- **Caching**: Cache dependencies and build artifacts\n- **Infrastructure as Code**: Version control pipeline configs\n- **Secret management**: Use secure vaults for credentials\n- **Idempotency**: Pipelines should be re-runnable\n- **Monitoring**: Track pipeline health and duration\n\n### Security Integration (DevSecOps)\n\n```yaml\nsecurity-scan:\n  stage: security\n  script:\n    - trivy fs --severity HIGH,CRITICAL .\n    - snyk test\n    - checkov -d .\n    - semgrep --config=auto .\n  allow_failure: false\n```\n\n### Deployment Strategies\n\n- **Blue-Green**: Two identical environments, instant switch\n- **Canary**: Gradually shift traffic, metric-based rollout\n- **Rolling**: Update instances incrementally\n- **Feature Flags**: Toggle features without deployment\n- **GitOps**: Declarative infrastructure with Git\n","## What I do\n\n- Design and implement CI\u002FCD pipelines\n- Automate build, test, and deployment processes\n- Integrate security scanning into pipelines\n- Configure deployment strategies (blue-green, canary, rolling)\n- Set up artifact management and version control\n- Build monitoring and feedback loops for deployments\n\n## When to use me\n\n- When establishing DevOps practices\n- When automating software delivery\n- When implementing GitOps workflows\n- When integrating automated testing\n- When setting up release automation\n- When building deployment infrastructure\n\n## Key Concepts\n\n### GitHub Actions Pipeline\n\n```yaml\nname: CI\u002FCD Pipeline\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      \n      - name: Setup Node.js\n        uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: '20'\n          cache: 'npm'\n      \n      - name: Install dependencies\n        run: npm ci\n      \n      - name: Run linter\n        run: npm run lint\n      \n      - name: Run tests\n        run: npm test\n      \n      - name: Build\n        run: npm run build\n      \n      - name: Build Docker image\n        run: |\n          docker build -t myapp:${{ github.sha }} .\n          docker push myapp:${{ github.sha }}\n\n  deploy:\n    needs: build\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - name: Deploy to production\n        run: |\n          kubectl set image deployment\u002Fmyapp \\\n            myapp=myapp:${{ github.sha }}\n```\n\n### GitLab CI Pipeline\n\n```yaml\nstages:\n  - build\n  - test\n  - security\n  - deploy\n\nbuild:\n  stage: build\n  script:\n    - npm ci\n    - npm run build\n  artifacts:\n    paths:\n      - dist\u002F\n\ntest:\n  stage: test\n  script:\n    - npm test\n  coverage: \u002FCoverage: \\d+\\.\\d+%\u002F\n\nsecurity:\n  stage: security\n  script:\n    - npm audit\n    - trivy image myapp:latest\n\ndeploy:\n  stage: deploy\n  script:\n    - kubectl apply -f k8s\u002F\n  only:\n    - main\n```\n\n### Pipeline Best Practices\n\n- **Fast feedback**: Run fastest tests first\n- **Parallel execution**: Distribute tests across runners\n- **Caching**: Cache dependencies and build artifacts\n- **Infrastructure as Code**: Version control pipeline configs\n- **Secret management**: Use secure vaults for credentials\n- **Idempotency**: Pipelines should be re-runnable\n- **Monitoring**: Track pipeline health and duration\n\n### Security Integration (DevSecOps)\n\n```yaml\nsecurity-scan:\n  stage: security\n  script:\n    - trivy fs --severity HIGH,CRITICAL .\n    - snyk test\n    - checkov -d .\n    - semgrep --config=auto .\n  allow_failure: false\n```\n\n### Deployment Strategies\n\n- **Blue-Green**: Two identical environments, instant switch\n- **Canary**: Gradually shift traffic, metric-based rollout\n- **Rolling**: Update instances incrementally\n- **Feature Flags**: Toggle features without deployment\n- **GitOps**: Declarative infrastructure with Git\n",{"name":5,"license":14,"metadata":30,"description":7,"compatibility":21},{"audience":31,"category":20},"developer, devops-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":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill cicd",{"tool":44,"command":45},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill cicd",{"tool":47,"command":48},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill cicd","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcicd\u002FSKILL.md",true,[],[53,64,74,83,93,102],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":25},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[55,60,61,62,21,63],"platform","cross-platform","mobile","development",{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":25},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[66,71,21,72,73],"data wrangling","science","data",{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":25},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[76,81,21,82],"system","scripting",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":25},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[90,91,21,92,73],"wide column","databases","model",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":25},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[100,91,21,101],"wide column stores","database",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":25},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[104,109,110,111,21,112,113],"websocket","real-time","time","best practices","implementation"]