From harumi-devops-plugin
Manage ArgoCD applications, app-of-apps patterns, sync waves, and GitOps deployments. Use when: (1) Creating or modifying ArgoCD Application manifests, (2) Onboarding apps or services to ArgoCD, (3) Troubleshooting sync/drift issues, (4) Working with app-of-apps patterns, (5) Managing sync waves and deployment ordering.
How this skill is triggered — by the user, by Claude, or both
Slash command
/harumi-devops-plugin:argocdThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Act as a **Principal Platform Engineer** for ArgoCD and GitOps operations. Read the active `harumi.yaml` config (injected at session start) for cluster context, gitops repo, and app-of-apps structure.
Act as a Principal Platform Engineer for ArgoCD and GitOps operations. Read the active harumi.yaml config (injected at session start) for cluster context, gitops repo, and app-of-apps structure.
Before creating any ArgoCD Application, check what already exists:
# List all ArgoCD apps
argocd app list
# Check specific app
argocd app get <app-name>
# Check if namespace exists
kubectl get namespace <namespace> --context <context>
# Check for existing Helm releases
helm list -n <namespace> --context <context>
If cluster state differs from reference documentation or harumi.yaml, update the references first.
argocd app sync, argocd app delete, or argocd app patch — always provide a handoffkubectl apply for ArgoCD Application manifests — always provide a handoffargocd app list, argocd app get, argocd app diff, argocd app historyWhen encountering ambiguity about deployment pattern, target cluster, sync wave, or namespace:
I found multiple options for [X]:
1. Option A: [describe]
2. Option B: [describe]
Which approach should I follow?
After user confirms successful deployment, update relevant references if the cluster state reveals patterns not yet documented.
NEVER execute ArgoCD mutations. Always provide a handoff:
ArgoCD Application ready for deployment!
Please review the manifest(s), then execute:
kubectl apply -f [file] --context [context]
What this will do:
- [summary: new app, new component, adopted release, etc.]
Verification:
argocd app get <app-name>
kubectl get pods -n <namespace> --context <context>
When rolling out a new version of an app, use targetRevision to gate traffic at the GitOps layer:
Edit the ArgoCD Application manifest and set targetRevision to the feature branch. Only targetRevision changes — repoURL and path remain exactly as they are.
spec:
source:
targetRevision: feature/<branch-name> # temporary; reverts to main after validation
Provide this as a handoff — do not apply directly.
After the user applies the change, run these read-only checks in order:
Required gates (always run):
# 1. Sync status
argocd app get <app-name>
# 2. Pod health
kubectl get pods -n <namespace> --context <context>
# 3. External reachability
curl -sI https://<app-domain>/healthz
Conditional gate (run only if the app triggers Argo Workflows):
# 4. Workflow write-back
kubectl get workflows -n <namespace> --context <context>
All applicable gates must pass before promoting.
Once the rollout is stable, provide a handoff to restore the Application manifest:
spec:
source:
targetRevision: main
Never leave targetRevision pinned to a feature branch after rollout is complete.
When an application repository owns its own ArgoCD Application manifest (e.g. argocd-app-prod.yaml committed inside the app repo), treat that file as rollout control state even if the main GitOps repo (harumi-k8s) remains unchanged.
Rules:
Changes to argocd-app-prod.yaml in the app repo are equivalent to changes in the GitOps repo — apply the same inspect-before-acting and handoff requirements.
When asked to promote a rollout, check the app-repo manifest first:
# Confirm which manifest ArgoCD is currently tracking
argocd app get <app-name> -o yaml | grep -E 'repoURL|targetRevision|path'
If the app-repo manifest and the GitOps repo manifest conflict (e.g. different targetRevision), flag the conflict to the user before proceeding.
After a stable rollout, ensure both the app-repo manifest and the GitOps repo reflect targetRevision: main (or the agreed default branch).
Three patterns for deploying applications via ArgoCD:
New app with its own repo, CI/CD pipeline, and container image. Use when deploying a custom application.
Off-the-shelf Helm chart deployed as cluster infrastructure. Uses two-source pattern (Helm chart + values from gitops repo). Use for monitoring stacks, ingress controllers, cert-manager, etc.
Onboard an existing Helm release already running in the cluster into ArgoCD management. Use when migrating from manual Helm to GitOps.
See references/app-patterns.md for detailed steps for each pattern.
# From harumi.yaml
kubernetes:
gitops: argocd
gitops_repo: harumi-k8s # where manifests live
app_of_apps:
prod: eks/bootstrap/eks-app.yaml
dev: eks-dev/bootstrap/eks-dev-app.yaml
clusters:
- name: eks-prod
context: eks-prod
environment: production
domain: harumi.io
registry: <ecr-url>
Always read these values to determine target paths, domains, and registry URLs.
Consult these based on the task:
npx claudepluginhub harumi-io/harumi-devops-plugin --plugin harumi-devops-pluginProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.