gitops-workflow — Kubernetes skill: GitOps setup
This skill guides Kubernetes GitOps setup with ArgoCD or Flux. Use it to deploy from Git and keep cluster state aligned with declarative configuration.
/plugin marketplace add wshobson/agents
/plugin install kubernetes-operations@claude-code-workflowsWhat gitops-workflow does
The skill walks through ArgoCD and Flux CD setup, from installation and repository layout to defining ArgoCD Applications, Flux GitRepositories, and Kustomizations. Both systems pull the desired state from Git and reconcile it with the cluster. ArgoCD examples also cover the App of Apps pattern and automated sync policies.
It includes canary and blue-green rollout examples, plus secret workflows with External Secrets Operator and Sealed Secrets. Troubleshooting commands cover sync failures and out-of-sync status. The ArgoCD installation example uses kubectl and a project manifest; the Flux CLI example uses Homebrew. Install this skill when you are setting up GitOps for Kubernetes; it does not address projects outside Kubernetes.
What it helps with
- sync cluster configuration with Git
- configure automated sync and resource pruning
- organize deployments across clusters
- prepare a canary or blue-green rollout
- manage secrets with External Secrets or Sealed Secrets
Example prompts for the agent
- Set up a Kubernetes GitOps workflow with ArgoCD.
- Show me how to configure Flux for the gitops-repo repository and the production cluster.
- Debug why `my-app` is out of sync in ArgoCD.
How to install gitops-workflow
1Plugin marketplace
/plugin marketplace add wshobson/agents/plugin install kubernetes-operations@claude-code-workflowsThis installs the whole kubernetes-operations plugin with all its skills
2Skills CLI (Vercel)
npx skills add wshobson/agents --skill gitops-workflow -a claude-code3Manually: put the files in place
~/.claude/skills/gitops-workflow/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/gitops-workflow/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill gitops-workflow -a codex2Manually: put the files in place
.agents/skills/gitops-workflow/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add wshobson/agents --skill gitops-workflow -a cursor2Manually: put the files in place
.cursor/skills/gitops-workflow/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install wshobson/agents gitops-workflow2Manually: put the files in place
.github/skills/gitops-workflow/SKILL.mdPlatform CLI
gemini skills install https://github.com/wshobson/agents --path plugins/kubernetes-operations/skills/gitops-workflowManually: put the files in place
.devin/skills/gitops-workflow/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set213
The whole set →Similar
Questions about gitops-workflow
How do I install gitops-workflow in Claude Code?
Run npx skills add wshobson/agents --skill gitops-workflow -a claude-code.
What does gitops-workflow do?
It guides GitOps setup for Kubernetes with ArgoCD or Flux, including storing desired state in Git and reconciling it with the cluster.
Which secret management tools does the skill cover?
The examples use External Secrets Operator and Sealed Secrets.
Source text
SKILL.md · MIT
---
name: gitops-workflow
description: Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes deployments with continuous reconciliation. Use when implementing GitOps practices, automating Kubernetes deployments, or setting up declarative infrastructure management.
---
# GitOps Workflow
Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.
## Purpose
Implement declarative, Git-based continuous delivery for Kubernetes using ArgoCD or Flux CD, following OpenGitOps principles.
## When to Use This Skill
- Set up GitOps for Kubernetes clusters
- Automate application deployments from Git
- Implement progressive delivery strategies
- Manage multi-cluster deployments
- Configure automated sync policies
- Set up secret management in GitOps
## OpenGitOps Principles
1. **Declarative** - Entire system described declaratively
2. **Versioned and Immutable** - Desired state stored in Git
3. **Pulled Automatically** - Software agents pull desired state
4. **Continuously Reconciled** - Agents reconcile actual vs desired state
## ArgoCD Setup
### 1. Installation
```bash
# Create namespace
kubectl create namespace argocd
# Install ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Get admin password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
```
**Reference:** See `references/argocd-setup.md` for detailed setup
### 2. Repository Structure
```
gitops-repo/
├── apps/
│ ├── production/
│ │ ├── app1/
│ │ │ ├── kustomization.yaml
│ │ │ └── deployment.yaml
│ │ └── app2/
│ └── staging/
├── infrastructure/
│ ├── ingress-nginx/
│ ├── cert-manager/
│ └── monitoring/
└── argocd/
├── applications/
└── projects/
```
### 3. Create Application
```yaml
# argocd/applications/my-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops-repo
targetRevision: main
path: apps/production/my-app
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
```
### 4. App of Apps Pattern
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: applications
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops-repo
targetRevision: main
path: argocd/applications
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated: {}
```
## Flux CD Setup
### 1. Installation
The example uses Homebrew. For other systems, follow the
[official Flux installation guide](https://fluxcd.io/flux/installation/).
```bash
# Install the Flux CLI with Homebrew
brew install fluxcd/tap/flux
flux check --pre
# Bootstrap Flux
flux bootstrap github \
--owner=org \
--repository=gitops-repo \
--branch=main \
--path=clusters/production \
--personal
```
### 2. Create GitRepository
```yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-app
namespace: flux-system
spec:
interval: 1m
url: https://github.com/org/my-app
ref:
branch: main
```
### 3. Create Kustomization
```yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
path: ./deploy
prune: true
sourceRef:
kind: GitRepository
name: my-app
```
## Sync Policies
### Auto-Sync Configuration
**ArgoCD:**
```yaml
syncPolicy:
automated:
prune: true # Delete resources not in Git
selfHeal: true # Reconcile manual changes
allowEmpty: false
retry:
limit: 5
backoff:
duration: 5s
factor: 2
maxDuration: 3m
```
**Flux:**
```yaml
spec:
interval: 1m
prune: true
wait: true
timeout: 5m
```
**Reference:** See `references/sync-policies.md`
## Progressive Delivery
### Canary Deployment with ArgoCD Rollouts
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: my-app
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: { duration: 1m }
- setWeight: 50
- pause: { duration: 2m }
- setWeight: 100
```
### Blue-Green Deployment
```yaml
strategy:
blueGreen:
activeService: my-app
previewService: my-app-preview
autoPromotionEnabled: false
```
## Secret Management
### External Secrets Operator
```yaml
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-credentials
spec:
refreshInterval: 1h
secretStoreRef:
name: aws-secrets-manager
kind: SecretStore
target:
name: db-credentials
data:
- secretKey: password
remoteRef:
key: prod/db/password
```
### Sealed Secrets
```bash
# Encrypt secret
kubeseal --format yaml < secret.yaml > sealed-secret.yaml
# Commit sealed-secret.yaml to Git
```
## Best Practices
1. **Use separate repos or branches** for different environments
2. **Implement RBAC** for Git repositories
3. **Enable notifications** for sync failures
4. **Use health checks** for custom resources
5. **Implement approval gates** for production
6. **Keep secrets out of Git** (use External Secrets)
7. **Use App of Apps pattern** for organization
8. **Tag releases** for easy rollback
9. **Monitor sync status** with alerts
10. **Test changes** in staging first
## Troubleshooting
**Sync failures:**
```bash
argocd app get my-app
argocd app sync my-app --prune
```
**Out of sync status:**
```bash
argocd app diff my-app
argocd app sync my-app --force
```
## Related Skills
- `k8s-manifest-generator` - For creating manifests
- `helm-chart-scaffolding` - For packaging applications
© Seth Hobson · MIT · wshobson/agents