Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.
.claude/skills/lingxling-gitops-workflow/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 70% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 205% | 0% |
| case-11 | ✓→✗ | ▼ Worse | 110% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 31% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 157% | 0% |
Complete guide to implementing GitOps workflows with ArgoCD and Flux for automated Kubernetes deployments.
Implement declarative, Git-based continuous delivery for Kubernetes using ArgoCD or Flux CD, following OpenGitOps principles.
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
gitops-repo/
├── apps/
│ ├── production/
│ │ ├── app1/
│ │ │ ├── kustomization.yaml
│ │ │ └── deployment.yaml
│ │ └── app2/
│ └── staging/
├── infrastructure/
│ ├── ingress-nginx/
│ ├── cert-manager/
│ └── monitoring/
└── argocd/
├── applications/
└── projects/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
yamlapiVersion: 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: {}
bash# Install Flux CLI brew install fluxcd/tap/flux # Alternative: download the official installer, inspect it, then execute it tmpdir="$(mktemp -d)" trap 'rm -rf "$tmpdir"' EXIT curl -fsSLo "$tmpdir/flux-install.sh" https://fluxcd.io/install.sh sed -n '1,160p' "$tmpdir/flux-install.sh" sudo bash "$tmpdir/flux-install.sh" # Bootstrap Flux flux bootstrap github \ --owner=org \ --repository=gitops-repo \ --branch=main \ --path=clusters/production \ --personal
yamlapiVersion: 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
yamlapiVersion: 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
ArgoCD:
yamlsyncPolicy: 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:
yamlspec: interval: 1m prune: true wait: true timeout: 5m
Reference: See references/sync-policies.md
yamlapiVersion: 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
yamlstrategy: blueGreen: activeService: my-app previewService: my-app-preview autoPromotionEnabled: false
yamlapiVersion: 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
bash# Encrypt secret kubeseal --format yaml < secret.yaml > sealed-secret.yaml # Commit sealed-secret.yaml to Git
Sync failures:
bashargocd app get my-app argocd app sync my-app --prune
Out of sync status:
bashargocd app diff my-app argocd app sync my-app --force
k8s-manifest-generator - For creating manifestshelm-chart-scaffolding - For packaging applications| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 20,130 | 14,175 | -30% | 1 | 1 | 0% | 2,543 | 4,313 | +70% | 0 | 0 | — |
case-02 | fail→pass | 6,428 | 7,644 | +19% | 1 | 1 | 0% | 1,049 | 3,202 | +205% | 0 | 0 | — |
case-03 | fail→fail | 26,960 | 22,295 | -17% | 1 | 1 | 0% | 3,712 | 5,239 | +41% | 0 | 0 | — |
case-04 | pass→pass | 19,945 | 14,380 | -28% | 1 | 1 | 0% | 3,230 | 4,224 | +31% | 0 | 0 | — |
case-05 | pass→pass | 6,929 | 3,371 | -51% | 1 | 1 | 0% | 941 | 2,417 | +157% | 0 | 0 | — |
case-06 | pass→pass | 6,843 | 6,866 | +0% | 1 | 1 | 0% | 1,051 | 2,968 | +182% | 0 | 0 | — |
case-07 | pass→pass | 7,531 | 4,303 | -43% | 1 | 1 | 0% | 1,249 | 2,489 | +99% | 0 | 0 | — |
case-08 | pass→pass | 5,655 | 5,402 | -4% | 1 | 1 | 0% | 988 | 2,471 | +150% | 0 | 0 | — |
case-09 | pass→pass | 15,586 | 6,649 | -57% | 1 | 1 | 0% | 2,103 | 2,819 | +34% | 0 | 0 | — |
case-10 | pass→pass | 5,753 | 5,216 | -9% | 1 | 1 | 0% | 926 | 2,447 | +164% | 0 | 0 | — |
case-11 | pass→fail | 11,743 | 10,125 | -14% | 1 | 1 | 0% | 1,690 | 3,544 | +110% | 0 | 0 | — |
case-12 | pass→pass | 7,163 | 5,931 | -17% | 1 | 1 | 0% | 1,063 | 2,626 | +147% | 0 | 0 | — |
case-13 | pass→pass | 9,376 | 7,441 | -21% | 1 | 1 | 0% | 1,433 | 3,284 | +129% | 0 | 0 | — |
case-14 | pass→pass | 15,569 | 13,455 | -14% | 1 | 1 | 0% | 2,616 | 4,101 | +57% | 0 | 0 | — |
case-15 | pass→pass | 3,230 | 4,264 | +32% | 1 | 1 | 0% | 496 | 2,627 | +430% | 0 | 0 | — |
case-16 | pass→pass | 3,474 | 3,303 | -5% | 1 | 1 | 0% | 569 | 2,423 | +326% | 0 | 0 | — |
case-17 | pass→pass | 16,524 | 11,643 | -30% | 1 | 1 | 0% | 2,531 | 3,682 | +45% | 0 | 0 | — |
case-18 | pass→pass | 12,483 | 9,745 | -22% | 1 | 1 | 0% | 1,766 | 3,587 | +103% | 0 | 0 | — |
case-19 | pass→pass | 5,406 | 4,579 | -15% | 1 | 1 | 0% | 691 | 2,431 | +252% | 0 | 0 | — |
case-20 | pass→pass | 4,006 | 4,193 | +5% | 1 | 1 | 0% | 645 | 2,442 | +279% | 0 | 0 | — |
case-21 | pass→pass | 11,132 | 10,668 | -4% | 1 | 1 | 0% | 1,444 | 3,664 | +154% | 0 | 0 | — |
case-22 | pass→pass | 3,337 | 3,524 | +6% | 1 | 1 | 0% | 536 | 2,284 | +326% | 0 | 0 | — |
case-23 | pass→pass | 16,864 | 10,078 | -40% | 1 | 1 | 0% | 2,277 | 3,497 | +54% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +4 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.