{"id":"c56d4150-2c30-40b8-a3e5-6b90840f9140","shortId":"bFFJfE","kind":"skill","title":"gitops-workflow","tagline":"Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.","description":"<!-- security-allowlist: curl-pipe-bash -->\n\n# GitOps Workflow\n\nComplete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.\n\n## Purpose\n\nImplement declarative, Git-based continuous delivery for Kubernetes using ArgoCD or Flux CD, following OpenGitOps principles.\n\n## Use this skill when\n\n- Set up GitOps for Kubernetes clusters\n- Automate application deployments from Git\n- Implement progressive delivery strategies\n- Manage multi-cluster deployments\n- Configure automated sync policies\n- Set up secret management in GitOps\n\n## Do not use this skill when\n\n- You need a one-off manual deployment\n- You cannot manage cluster access or repo permissions\n- You are not deploying to Kubernetes\n\n## Instructions\n\n1. Define repo layout and desired-state conventions.\n2. Install ArgoCD or Flux and connect clusters.\n3. Configure sync policies, environments, and promotion flow.\n4. Validate rollbacks and secret handling.\n\n## Safety\n\n- Avoid auto-sync to production without approvals.\n- Keep secrets out of Git and use sealed or external secret managers.\n\n## OpenGitOps Principles\n\n1. **Declarative** - Entire system described declaratively\n2. **Versioned and Immutable** - Desired state stored in Git\n3. **Pulled Automatically** - Software agents pull desired state\n4. **Continuously Reconciled** - Agents reconcile actual vs desired state\n\n## ArgoCD Setup\n\n### 1. Installation\n\n```bash\n# Create namespace\nkubectl create namespace argocd\n\n# Install ArgoCD\nkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml\n\n# Get admin password\nkubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath=\"{.data.password}\" | base64 -d\n```\n\n**Reference:** See `references/argocd-setup.md` for detailed setup\n\n### 2. Repository Structure\n\n```\ngitops-repo/\n├── apps/\n│   ├── production/\n│   │   ├── app1/\n│   │   │   ├── kustomization.yaml\n│   │   │   └── deployment.yaml\n│   │   └── app2/\n│   └── staging/\n├── infrastructure/\n│   ├── ingress-nginx/\n│   ├── cert-manager/\n│   └── monitoring/\n└── argocd/\n    ├── applications/\n    └── projects/\n```\n\n### 3. Create Application\n\n```yaml\n# argocd/applications/my-app.yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: my-app\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https://github.com/org/gitops-repo\n    targetRevision: main\n    path: apps/production/my-app\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: production\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n    syncOptions:\n    - CreateNamespace=true\n```\n\n### 4. App of Apps Pattern\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: applications\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https://github.com/org/gitops-repo\n    targetRevision: main\n    path: argocd/applications\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: argocd\n  syncPolicy:\n    automated: {}\n```\n\n## Flux CD Setup\n\n### 1. Installation\n\n```bash\n# Install Flux CLI\ncurl -s https://fluxcd.io/install.sh | sudo bash\n\n# Bootstrap Flux\nflux bootstrap github \\\n  --owner=org \\\n  --repository=gitops-repo \\\n  --branch=main \\\n  --path=clusters/production \\\n  --personal\n```\n\n### 2. Create GitRepository\n\n```yaml\napiVersion: source.toolkit.fluxcd.io/v1\nkind: GitRepository\nmetadata:\n  name: my-app\n  namespace: flux-system\nspec:\n  interval: 1m\n  url: https://github.com/org/my-app\n  ref:\n    branch: main\n```\n\n### 3. Create Kustomization\n\n```yaml\napiVersion: kustomize.toolkit.fluxcd.io/v1\nkind: Kustomization\nmetadata:\n  name: my-app\n  namespace: flux-system\nspec:\n  interval: 5m\n  path: ./deploy\n  prune: true\n  sourceRef:\n    kind: GitRepository\n    name: my-app\n```\n\n## Sync Policies\n\n### Auto-Sync Configuration\n\n**ArgoCD:**\n```yaml\nsyncPolicy:\n  automated:\n    prune: true      # Delete resources not in Git\n    selfHeal: true   # Reconcile manual changes\n    allowEmpty: false\n  retry:\n    limit: 5\n    backoff:\n      duration: 5s\n      factor: 2\n      maxDuration: 3m\n```\n\n**Flux:**\n```yaml\nspec:\n  interval: 1m\n  prune: true\n  wait: true\n  timeout: 5m\n```\n\n**Reference:** See `references/sync-policies.md`\n\n## Progressive Delivery\n\n### Canary Deployment with ArgoCD Rollouts\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Rollout\nmetadata:\n  name: my-app\nspec:\n  replicas: 5\n  strategy:\n    canary:\n      steps:\n      - setWeight: 20\n      - pause: {duration: 1m}\n      - setWeight: 50\n      - pause: {duration: 2m}\n      - setWeight: 100\n```\n\n### Blue-Green Deployment\n\n```yaml\nstrategy:\n  blueGreen:\n    activeService: my-app\n    previewService: my-app-preview\n    autoPromotionEnabled: false\n```\n\n## Secret Management\n\n### External Secrets Operator\n\n```yaml\napiVersion: external-secrets.io/v1beta1\nkind: ExternalSecret\nmetadata:\n  name: db-credentials\nspec:\n  refreshInterval: 1h\n  secretStoreRef:\n    name: aws-secrets-manager\n    kind: SecretStore\n  target:\n    name: db-credentials\n  data:\n  - secretKey: password\n    remoteRef:\n      key: prod/db/password\n```\n\n### Sealed Secrets\n\n```bash\n# Encrypt secret\nkubeseal --format yaml < secret.yaml > sealed-secret.yaml\n\n# Commit sealed-secret.yaml to Git\n```\n\n## Best Practices\n\n1. **Use separate repos or branches** for different environments\n2. **Implement RBAC** for Git repositories\n3. **Enable notifications** for sync failures\n4. **Use health checks** for custom resources\n5. **Implement approval gates** for production\n6. **Keep secrets out of Git** (use External Secrets)\n7. **Use App of Apps pattern** for organization\n8. **Tag releases** for easy rollback\n9. **Monitor sync status** with alerts\n10. **Test changes** in staging first\n\n## Troubleshooting\n\n**Sync failures:**\n```bash\nargocd app get my-app\nargocd app sync my-app --prune\n```\n\n**Out of sync status:**\n```bash\nargocd app diff my-app\nargocd app sync my-app --force\n```\n\n## Related Skills\n\n- `k8s-manifest-generator` - For creating manifests\n- `helm-chart-scaffolding` - For packaging applications\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":["gitops","workflow","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-gitops-workflow","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/gitops-workflow","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 · 34768 github stars · SKILL.md body (6,375 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-23T18:51:23.577Z","embedding":null,"createdAt":"2026-04-18T21:38:02.898Z","updatedAt":"2026-04-23T18:51:23.577Z","lastSeenAt":"2026-04-23T18:51:23.577Z","tsv":"'/argoproj/argo-cd/stable/manifests/install.yaml':221 '/deploy':434 '/install.sh':363 '/org/gitops-repo':295,338 '/org/my-app':407 '/v1':389,418 '/v1alpha1':278,323,503 '/v1beta1':556 '1':115,169,203,353,602 '10':665 '100':528 '1h':566 '1m':403,482,521 '2':124,175,246,382,475,611 '20':518 '2m':526 '3':132,184,270,411,617 '3m':477 '4':140,192,314,623 '5':470,513,630 '50':523 '5m':432,488 '5s':473 '6':636 '7':645 '8':653 '9':659 'access':104 'activeservic':536 'actual':197 'admin':223,233 'agent':188,195 'alert':664 'allowempti':466 'apivers':275,320,386,415,500,553 'app':252,285,315,317,396,425,443,510,539,543,647,649,676,680,682,686,694,698,700,704 'app1':254 'app2':257 'appli':215 'applic':63,268,272,280,325,328,721 'approv':154,632 'apps/production/my-app':299 'argocd':11,27,45,126,201,211,213,217,227,231,267,287,330,347,450,497,675,681,693,699 'argocd-initial-admin-secret':230 'argocd/applications':342 'argocd/applications/my-app.yaml':274 'argoproj.io':277,322,502 'argoproj.io/v1alpha1':276,321,501 'ask':755 'auto':149,447 'auto-sync':148,446 'autom':15,31,62,77,306,349,453 'automat':186 'autopromotionen':545 'avoid':147 'aw':570 'aws-secrets-manag':569 'backoff':471 'base':39 'base64':238 'bash':205,355,365,588,674,692 'best':600 'blue':530 'blue-green':529 'bluegreen':535 'bootstrap':366,369 'boundari':763 'branch':377,409,607 'canari':494,515 'cannot':101 'cd':48,351 'cert':264 'cert-manag':263 'chang':465,667 'chart':717 'check':626 'clarif':757 'clear':730 'cli':358 'cluster':61,74,103,131 'clusters/production':380 'commit':596 'complet':4,20 'configur':76,133,449 'connect':130 'continu':40,193 'convent':123 'creat':206,209,271,383,412,713 'createnamespac':312 'credenti':563,579 'criteria':766 'curl':359 'custom':628 'd':239 'data':580 'data.password':237 'db':562,578 'db-credenti':561,577 'declar':36,170,174 'default':290,333 'defin':116 'delet':456 'deliveri':41,69,493 'deploy':17,33,64,75,99,111,495,532 'deployment.yaml':256 'describ':173,734 'desir':121,179,190,199 'desired-st':120 'destin':300,343 'detail':244 'diff':695 'differ':609 'durat':472,520,525 'easi':657 'enabl':618 'encrypt':589 'entir':171 'environ':136,610,746 'environment-specif':745 'expert':751 'extern':164,549,643 'external-secrets.io':555 'external-secrets.io/v1beta1':554 'externalsecret':558 'f':218 'factor':474 'failur':622,673 'fals':467,546 'first':670 'flow':139 'flux':13,29,47,128,350,357,367,368,399,428,478 'flux-system':398,427 'fluxcd.io':362 'fluxcd.io/install.sh':361 'follow':49 'forc':705 'format':592 'gate':633 'generat':711 'get':222,228,677 'git':38,66,159,183,460,599,615,641 'git-bas':37 'github':370 'github.com':294,337,406 'github.com/org/gitops-repo':293,336 'github.com/org/my-app':405 'gitop':2,8,18,24,58,85,250,375 'gitops-repo':249,374 'gitops-workflow':1 'gitrepositori':384,391,439 'green':531 'guid':5,21 'handl':145 'health':625 'helm':716 'helm-chart-scaffold':715 'immut':178 'implement':7,23,35,67,612,631 'infrastructur':259 'ingress':261 'ingress-nginx':260 'initi':232 'input':760 'instal':125,204,212,354,356 'instruct':114 'interv':402,431,481 'jsonpath':236 'k8s':709 'k8s-manifest-generator':708 'keep':155,637 'key':584 'kind':279,324,390,419,438,504,557,573 'kubectl':208,214,225 'kubernet':16,32,43,60,113 'kubernetes.default.svc':302,345 'kubes':591 'kustom':413,420 'kustomization.yaml':255 'kustomize.toolkit.fluxcd.io':417 'kustomize.toolkit.fluxcd.io/v1':416 'layout':118 'limit':469,722 'main':297,340,378,410 'manag':71,83,102,166,265,548,572 'manifest':710,714 'manual':98,464 'match':731 'maxdur':476 'metadata':281,326,392,421,506,559 'miss':768 'monitor':266,660 'multi':73 'multi-clust':72 'my-app':283,394,423,441,508,537,678,684,696,702 'my-app-preview':541 'n':216,226 'name':282,327,393,422,440,507,560,568,576 'namespac':207,210,286,303,329,346,397,426 'need':93 'nginx':262 'notif':619 'o':235 'one':96 'one-off':95 'opengitop':50,167 'oper':551 'org':372 'organ':652 'output':740 'owner':371 'packag':720 'password':224,582 'path':298,341,379,433 'pattern':318,650 'paus':519,524 'permiss':107,761 'person':381 'polici':79,135,445 'practic':601 'preview':544 'previewservic':540 'principl':51,168 'prod/db/password':585 'product':152,253,304,635 'progress':68,492 'project':269,289,332 'promot':138 'prune':307,435,454,483,687 'pull':185,189 'purpos':34 'raw.githubusercontent.com':220 'raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml':219 'rbac':613 'reconcil':194,196,463 'ref':408 'refer':240,489 'references/argocd-setup.md':242 'references/sync-policies.md':491 'refreshinterv':565 'relat':706 'releas':655 'remoteref':583 'replica':512 'repo':106,117,251,376,605 'repositori':247,373,616 'repourl':292,335 'requir':759 'resourc':457,629 'retri':468 'review':752 'rollback':142,658 'rollout':498,505 'safeti':146,762 'scaffold':718 'scope':733 'seal':162,586 'sealed-secret.yaml':595,597 'secret':82,144,156,165,229,234,547,550,571,587,590,638,644 'secret.yaml':594 'secretkey':581 'secretstor':574 'secretstoreref':567 'see':241,490 'selfheal':309,461 'separ':604 'server':301,344 'set':56,80 'setup':202,245,352 'setweight':517,522,527 'skill':54,90,707,725 'skill-gitops-workflow' 'softwar':187 'sourc':291,334 'source-sickn33' 'source.toolkit.fluxcd.io':388 'source.toolkit.fluxcd.io/v1':387 'sourceref':437 'spec':288,331,401,430,480,511,564 'specif':747 'stage':258,669 'state':122,180,191,200 'status':662,691 'step':516 'stop':753 'store':181 'strategi':70,514,534 'structur':248 'substitut':743 'success':765 'sudo':364 'sync':78,134,150,444,448,621,661,672,683,690,701 'syncopt':311 'syncpolici':305,348,452 'system':172,400,429 'tag':654 'target':575 'targetrevis':296,339 'task':729 'test':666,749 'timeout':487 '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' 'treat':738 'troubleshoot':671 'true':308,310,313,436,455,462,484,486 'url':404 'use':44,52,88,161,603,624,642,646,723 'valid':141,748 'version':176 'vs':198 'wait':485 'without':153 'workflow':3,9,19,25 'yaml':273,319,385,414,451,479,499,533,552,593","prices":[{"id":"86fd62f9-c3ec-4b46-ba79-b14c43ddae9f","listingId":"c56d4150-2c30-40b8-a3e5-6b90840f9140","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:38:02.898Z"}],"sources":[{"listingId":"c56d4150-2c30-40b8-a3e5-6b90840f9140","source":"github","sourceId":"sickn33/antigravity-awesome-skills/gitops-workflow","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/gitops-workflow","isPrimary":false,"firstSeenAt":"2026-04-18T21:38:02.898Z","lastSeenAt":"2026-04-23T18:51:23.577Z"}],"details":{"listingId":"c56d4150-2c30-40b8-a3e5-6b90840f9140","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"gitops-workflow","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34768,"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-23T06:41:03Z","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":"d67458949dfac9eaa2822c66c922956b3d1d1e20","skill_md_path":"skills/gitops-workflow/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/gitops-workflow"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"gitops-workflow","description":"Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/gitops-workflow"},"updatedAt":"2026-04-23T18:51:23.577Z"}}