{"id":"a4984ee9-5fdc-496d-b234-d47ad77ba209","shortId":"b8GFVN","kind":"skill","title":"deployment-pipeline-design","tagline":"Architecture patterns for multi-stage CI/CD pipelines with approval gates and deployment strategies.","description":"# Deployment Pipeline Design\n\nArchitecture patterns for multi-stage CI/CD pipelines with approval gates and deployment strategies.\n\n## Do not use this skill when\n\n- The task is unrelated to deployment pipeline design\n- You need a different domain or tool outside this scope\n\n## Instructions\n\n- Clarify goals, constraints, and required inputs.\n- Apply relevant best practices and validate outcomes.\n- Provide actionable steps and verification.\n- If detailed examples are required, open `resources/implementation-playbook.md`.\n\n## Purpose\n\nDesign robust, secure deployment pipelines that balance speed with safety through proper stage organization and approval workflows.\n\n## Use this skill when\n\n- Design CI/CD architecture\n- Implement deployment gates\n- Configure multi-environment pipelines\n- Establish deployment best practices\n- Implement progressive delivery\n\n## Pipeline Stages\n\n### Standard Pipeline Flow\n\n```\n┌─────────┐   ┌──────┐   ┌─────────┐   ┌────────┐   ┌──────────┐\n│  Build  │ → │ Test │ → │ Staging │ → │ Approve│ → │Production│\n└─────────┘   └──────┘   └─────────┘   └────────┘   └──────────┘\n```\n\n### Detailed Stage Breakdown\n\n1. **Source** - Code checkout\n2. **Build** - Compile, package, containerize\n3. **Test** - Unit, integration, security scans\n4. **Staging Deploy** - Deploy to staging environment\n5. **Integration Tests** - E2E, smoke tests\n6. **Approval Gate** - Manual approval required\n7. **Production Deploy** - Canary, blue-green, rolling\n8. **Verification** - Health checks, monitoring\n9. **Rollback** - Automated rollback on failure\n\n## Approval Gate Patterns\n\n### Pattern 1: Manual Approval\n\n```yaml\n# GitHub Actions\nproduction-deploy:\n  needs: staging-deploy\n  environment:\n    name: production\n    url: https://app.example.com\n  runs-on: ubuntu-latest\n  steps:\n    - name: Deploy to production\n      run: |\n        # Deployment commands\n```\n\n### Pattern 2: Time-Based Approval\n\n```yaml\n# GitLab CI\ndeploy:production:\n  stage: deploy\n  script:\n    - deploy.sh production\n  environment:\n    name: production\n  when: delayed\n  start_in: 30 minutes\n  only:\n    - main\n```\n\n### Pattern 3: Multi-Approver\n\n```yaml\n# Azure Pipelines\nstages:\n- stage: Production\n  dependsOn: Staging\n  jobs:\n  - deployment: Deploy\n    environment:\n      name: production\n      resourceType: Kubernetes\n    strategy:\n      runOnce:\n        preDeploy:\n          steps:\n          - task: ManualValidation@0\n            inputs:\n              notifyUsers: 'team-leads@example.com'\n              instructions: 'Review staging metrics before approving'\n```\n\n**Reference:** See `assets/approval-gate-template.yml`\n\n## Deployment Strategies\n\n### 1. Rolling Deployment\n\n```yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-app\nspec:\n  replicas: 10\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 2\n      maxUnavailable: 1\n```\n\n**Characteristics:**\n- Gradual rollout\n- Zero downtime\n- Easy rollback\n- Best for most applications\n\n### 2. Blue-Green Deployment\n\n```yaml\n# Blue (current)\nkubectl apply -f blue-deployment.yaml\nkubectl label service my-app version=blue\n\n# Green (new)\nkubectl apply -f green-deployment.yaml\n# Test green environment\nkubectl label service my-app version=green\n\n# Rollback if needed\nkubectl label service my-app version=blue\n```\n\n**Characteristics:**\n- Instant switchover\n- Easy rollback\n- Doubles infrastructure cost temporarily\n- Good for high-risk deployments\n\n### 3. Canary Deployment\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Rollout\nmetadata:\n  name: my-app\nspec:\n  replicas: 10\n  strategy:\n    canary:\n      steps:\n      - setWeight: 10\n      - pause: {duration: 5m}\n      - setWeight: 25\n      - pause: {duration: 5m}\n      - setWeight: 50\n      - pause: {duration: 5m}\n      - setWeight: 100\n```\n\n**Characteristics:**\n- Gradual traffic shift\n- Risk mitigation\n- Real user testing\n- Requires service mesh or similar\n\n### 4. Feature Flags\n\n```python\nfrom flagsmith import Flagsmith\n\nflagsmith = Flagsmith(environment_key=\"API_KEY\")\n\nif flagsmith.has_feature(\"new_checkout_flow\"):\n    # New code path\n    process_checkout_v2()\nelse:\n    # Existing code path\n    process_checkout_v1()\n```\n\n**Characteristics:**\n- Deploy without releasing\n- A/B testing\n- Instant rollback\n- Granular control\n\n## Pipeline Orchestration\n\n### Multi-Stage Pipeline Example\n\n```yaml\nname: Production Pipeline\n\non:\n  push:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Build application\n        run: make build\n      - name: Build Docker image\n        run: docker build -t myapp:${{ github.sha }} .\n      - name: Push to registry\n        run: docker push myapp:${{ github.sha }}\n\n  test:\n    needs: build\n    runs-on: ubuntu-latest\n    steps:\n      - name: Unit tests\n        run: make test\n      - name: Security scan\n        run: trivy image myapp:${{ github.sha }}\n\n  deploy-staging:\n    needs: test\n    runs-on: ubuntu-latest\n    environment:\n      name: staging\n    steps:\n      - name: Deploy to staging\n        run: kubectl apply -f k8s/staging/\n\n  integration-test:\n    needs: deploy-staging\n    runs-on: ubuntu-latest\n    steps:\n      - name: Run E2E tests\n        run: npm run test:e2e\n\n  deploy-production:\n    needs: integration-test\n    runs-on: ubuntu-latest\n    environment:\n      name: production\n    steps:\n      - name: Canary deployment\n        run: |\n          kubectl apply -f k8s/production/\n          kubectl argo rollouts promote my-app\n\n  verify:\n    needs: deploy-production\n    runs-on: ubuntu-latest\n    steps:\n      - name: Health check\n        run: curl -f https://app.example.com/health\n      - name: Notify team\n        run: |\n          curl -X POST ${{ secrets.SLACK_WEBHOOK }} \\\n            -d '{\"text\":\"Production deployment successful!\"}'\n```\n\n## Pipeline Best Practices\n\n1. **Fail fast** - Run quick tests first\n2. **Parallel execution** - Run independent jobs concurrently\n3. **Caching** - Cache dependencies between runs\n4. **Artifact management** - Store build artifacts\n5. **Environment parity** - Keep environments consistent\n6. **Secrets management** - Use secret stores (Vault, etc.)\n7. **Deployment windows** - Schedule deployments appropriately\n8. **Monitoring integration** - Track deployment metrics\n9. **Rollback automation** - Auto-rollback on failures\n10. **Documentation** - Document pipeline stages\n\n## Rollback Strategies\n\n### Automated Rollback\n\n```yaml\ndeploy-and-verify:\n  steps:\n    - name: Deploy new version\n      run: kubectl apply -f k8s/\n\n    - name: Wait for rollout\n      run: kubectl rollout status deployment/my-app\n\n    - name: Health check\n      id: health\n      run: |\n        for i in {1..10}; do\n          if curl -sf https://app.example.com/health; then\n            exit 0\n          fi\n          sleep 10\n        done\n        exit 1\n\n    - name: Rollback on failure\n      if: failure()\n      run: kubectl rollout undo deployment/my-app\n```\n\n### Manual Rollback\n\n```bash\n# List revision history\nkubectl rollout history deployment/my-app\n\n# Rollback to previous version\nkubectl rollout undo deployment/my-app\n\n# Rollback to specific revision\nkubectl rollout undo deployment/my-app --to-revision=3\n```\n\n## Monitoring and Metrics\n\n### Key Pipeline Metrics\n\n- **Deployment Frequency** - How often deployments occur\n- **Lead Time** - Time from commit to production\n- **Change Failure Rate** - Percentage of failed deployments\n- **Mean Time to Recovery (MTTR)** - Time to recover from failure\n- **Pipeline Success Rate** - Percentage of successful runs\n- **Average Pipeline Duration** - Time to complete pipeline\n\n### Integration with Monitoring\n\n```yaml\n- name: Post-deployment verification\n  run: |\n    # Wait for metrics stabilization\n    sleep 60\n\n    # Check error rate\n    ERROR_RATE=$(curl -s \"$PROMETHEUS_URL/api/v1/query?query=rate(http_errors_total[5m])\" | jq '.data.result[0].value[1]')\n\n    if (( $(echo \"$ERROR_RATE > 0.01\" | bc -l) )); then\n      echo \"Error rate too high: $ERROR_RATE\"\n      exit 1\n    fi\n```\n\n## Reference Files\n\n- `references/pipeline-orchestration.md` - Complex pipeline patterns\n- `assets/approval-gate-template.yml` - Approval workflow templates\n\n## Related Skills\n\n- `github-actions-templates` - For GitHub Actions implementation\n- `gitlab-ci-patterns` - For GitLab CI implementation\n- `secrets-management` - For secrets handling\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["deployment","pipeline","design","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-deployment-pipeline-design","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/deployment-pipeline-design","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34831 github stars · SKILL.md body (8,680 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T06:51:03.141Z","embedding":null,"createdAt":"2026-04-18T21:35:57.511Z","updatedAt":"2026-04-24T06:51:03.141Z","lastSeenAt":"2026-04-24T06:51:03.141Z","tsv":"'/health':665 '/health;':793 '/v1alpha1':402 '0':282,796,927 '0.01':934 '1':139,196,297,320,683,785,802,929,946 '10':312,412,417,743,786,799 '100':432 '2':143,229,318,332,690 '25':422 '3':148,256,395,697,843 '30':251 '4':154,447,703 '5':161,709 '50':427 '5m':420,425,430,924 '6':167,715 '60':909 '7':173,723 '8':181,729 '9':186,735 'a/b':484 'action':75,201,962,966 'actions/checkout':515 'api':459 'apivers':301,399 'app':309,349,366,377,409,644 'app.example.com':213,664,792 'app.example.com/health':663 'app.example.com/health;':791 'appli':67,341,355,587,635,764 'applic':331,519 'appropri':728 'approv':14,31,102,134,168,171,192,198,233,259,291,955 'apps/v1':302 'architectur':5,22,110 'argo':639 'argoproj.io':401 'argoproj.io/v1alpha1':400 'artifact':704,708 'ask':1015 'assets/approval-gate-template.yml':294,954 'auto':739 'auto-rollback':738 'autom':188,737,750 'averag':887 'azur':261 'balanc':93 'base':232 'bash':816 'bc':935 'best':69,121,328,681 'blue':178,334,338,351,379 'blue-deployment.yaml':343 'blue-green':177,333 'boundari':1023 'branch':503 'breakdown':138 'build':131,144,506,518,522,524,529,544,707 'cach':698,699 'canari':176,396,414,631 'chang':863 'characterist':321,380,433,480 'check':184,659,778,910 'checkout':142,465,471,478 'ci':236,970,974 'ci/cd':11,28,109 'clarif':1017 'clarifi':61 'clear':990 'code':141,468,475 'command':227 'commit':860 'compil':145 'complet':892 'complex':951 'concurr':696 'configur':114 'consist':714 'constraint':63 'container':147 'control':489 'cost':387 'criteria':1026 'curl':661,670,789,915 'current':339 'd':675 'data.result':926 'delay':248 'deliveri':125 'depend':700 'dependson':266 'deploy':2,17,19,34,47,90,112,120,156,157,175,204,208,222,226,237,240,269,270,295,299,304,336,394,397,481,567,582,595,614,632,648,678,724,727,733,754,759,850,854,869,901 'deploy-and-verifi':753 'deploy-product':613,647 'deploy-stag':566,594 'deploy.sh':242 'deployment-pipeline-design':1 'deployment/my-app':775,813,823,831,839 'describ':994 'design':4,21,49,87,108 'detail':80,136 'differ':53 'docker':525,528,538 'document':744,745 'domain':54 'done':800 'doubl':385 'downtim':325 'durat':419,424,429,889 'e2e':164,606,612 'easi':326,383 'echo':931,938 'els':473 'environ':117,160,209,244,271,360,457,577,626,710,713,1006 'environment-specif':1005 'error':911,913,922,932,939,943 'establish':119 'etc':722 'exampl':81,496 'execut':692 'exist':474 'exit':795,801,945 'expert':1011 'f':342,356,588,636,662,765 'fail':684,868 'failur':191,742,806,808,864,879 'fast':685 'featur':448,463 'fi':797,947 'file':949 'first':689 'flag':449 'flagsmith':452,454,455,456 'flagsmith.has':462 'flow':130,466 'frequenc':851 'gate':15,32,113,169,193 'github':200,961,965 'github-actions-templ':960 'github.sha':532,541,565 'gitlab':235,969,973 'gitlab-ci-pattern':968 'goal':62 'good':389 'gradual':322,434 'granular':488 'green':179,335,352,359,368 'green-deployment.yaml':357 'handl':981 'health':183,658,777,780 'high':392,942 'high-risk':391 'histori':819,822 'http':921 'id':779 'imag':526,563 'implement':111,123,967,975 'import':453 'independ':694 'infrastructur':386 'input':66,283,1020 'instant':381,486 'instruct':60,286 'integr':151,162,591,618,731,894 'integration-test':590,617 'job':268,505,695 'jq':925 'k8s':766 'k8s/production':637 'k8s/staging':589 'keep':712 'key':458,460,847 'kind':303,403 'kubectl':340,344,354,361,372,586,634,638,763,772,810,820,828,836 'kubernet':275 'l':936 'label':345,362,373 'latest':219,512,550,576,602,625,655 'lead':856 'limit':982 'list':817 'main':254,504 'make':521,556 'manag':705,717,978 'manual':170,197,814 'manualvalid':281 'match':991 'maxsurg':317 'maxunavail':319 'mean':870 'mesh':444 'metadata':305,405 'metric':289,734,846,849,906 'minut':252 'miss':1028 'mitig':438 'monitor':185,730,844,896 'mttr':874 'multi':9,26,116,258,493 'multi-approv':257 'multi-environ':115 'multi-stag':8,25,492 'my-app':307,347,364,375,407,642 'myapp':531,540,564 'name':210,221,245,272,306,406,498,517,523,533,552,558,578,581,604,627,630,657,666,758,767,776,803,898 'need':51,205,371,543,569,593,616,646 'new':353,464,467,760 'notifi':667 'notifyus':284 'npm':609 'occur':855 'often':853 'open':84 'orchestr':491 'organ':100 'outcom':73 'output':1000 'outsid':57 'packag':146 'parallel':691 'pariti':711 'path':469,476 'pattern':6,23,194,195,228,255,953,971 'paus':418,423,428 'percentag':866,883 'permiss':1021 'pipelin':3,12,20,29,48,91,118,126,129,262,490,495,500,680,746,848,880,888,893,952 'post':672,900 'post-deploy':899 'practic':70,122,682 'predeploy':278 'previous':826 'process':470,477 'product':135,174,203,211,224,238,243,246,265,273,499,615,628,649,677,862 'production-deploy':202 'progress':124 'prometheus':917 'promot':641 'proper':98 'provid':74 'purpos':86 'push':502,534,539 'python':450 'queri':919 'quick':687 'rate':865,882,912,914,920,933,940,944 'real':439 'recov':877 'recoveri':873 'refer':292,948 'references/pipeline-orchestration.md':950 'registri':536 'relat':958 'releas':483 'relev':68 'replica':311,411 'requir':65,83,172,442,1019 'resources/implementation-playbook.md':85 'resourcetyp':274 'review':287,1012 'revis':818,835,842 'risk':393,437 'robust':88 'roll':180,298 'rollback':187,189,327,369,384,487,736,740,748,751,804,815,824,832 'rollingupd':315,316 'rollout':323,404,640,770,773,811,821,829,837 'run':215,225,508,520,527,537,546,555,561,572,585,598,605,608,610,621,633,651,660,669,686,693,702,762,771,781,809,886,903 'runonc':277 'runs-on':214,507,545,571,597,620,650 'safeti':96,1022 'scan':153,560 'schedul':726 'scope':59,993 'script':241 'secret':716,719,977,980 'secrets-manag':976 'secrets.slack':673 'secur':89,152,559 'see':293 'servic':346,363,374,443 'setweight':416,421,426,431 'sf':790 'shift':436 'similar':446 'skill':40,106,959,985 'skill-deployment-pipeline-design' 'sleep':798,908 'smoke':165 'sourc':140 'source-sickn33' 'spec':310,410 'specif':834,1007 'speed':94 'stabil':907 'stage':10,27,99,127,133,137,155,159,207,239,263,264,267,288,494,568,579,584,596,747 'staging-deploy':206 'standard':128 'start':249 'status':774 'step':76,220,279,415,513,551,580,603,629,656,757 'stop':1013 'store':706,720 'strategi':18,35,276,296,313,413,749 'substitut':1003 'success':679,881,885,1025 'switchov':382 'task':43,280,989 'team':668 'team-leads@example.com':285 'templat':957,963 'temporarili':388 'test':132,149,163,166,358,441,485,542,554,557,570,592,607,611,619,688,1009 'text':676 'time':231,857,858,871,875,890 'time-bas':230 'to-revis':840 'tool':56 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'total':923 'track':732 'traffic':435 'treat':998 'trivi':562 'type':314 'ubuntu':218,511,549,575,601,624,654 'ubuntu-latest':217,510,548,574,600,623,653 'undo':812,830,838 'unit':150,553 'unrel':45 'url':212 'url/api/v1/query':918 'use':38,104,514,718,983 'user':440 'v1':479 'v2':472 'v4':516 'valid':72,1008 'valu':928 'vault':721 'verif':78,182,902 'verifi':645,756 'version':350,367,378,761,827 'wait':768,904 'webhook':674 'window':725 'without':482 'workflow':103,956 'x':671 'yaml':199,234,260,300,337,398,497,752,897 'zero':324","prices":[{"id":"6dc1ca9b-bdda-4caf-a1ab-c43509211129","listingId":"a4984ee9-5fdc-496d-b234-d47ad77ba209","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:35:57.511Z"}],"sources":[{"listingId":"a4984ee9-5fdc-496d-b234-d47ad77ba209","source":"github","sourceId":"sickn33/antigravity-awesome-skills/deployment-pipeline-design","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/deployment-pipeline-design","isPrimary":false,"firstSeenAt":"2026-04-18T21:35:57.511Z","lastSeenAt":"2026-04-24T06:51:03.141Z"}],"details":{"listingId":"a4984ee9-5fdc-496d-b234-d47ad77ba209","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"deployment-pipeline-design","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34831,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"220e979eecb89f17cf56372a89ca1684000ea536","skill_md_path":"skills/deployment-pipeline-design/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/deployment-pipeline-design"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"deployment-pipeline-design","description":"Architecture patterns for multi-stage CI/CD pipelines with approval gates and deployment strategies."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/deployment-pipeline-design"},"updatedAt":"2026-04-24T06:51:03.141Z"}}