[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F3F7DW6BD4XYAM5CGQS0TM":3,"skill-same:01M6F3F7DW6BD4XYAM5CGQS0TM":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":34,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":65,"install":66,"resources":79},"01M6F3F7DW6BD4XYAM5CGQS0TM","argocd-gitops",null,"Implement GitOps with ArgoCD for declarative Kubernetes deployments.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-argocd-gitops\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"argocd gitops","argocd","gitops","only","2026","declarative","for","relevant","scripts","critical","platform","main","community","kubernetes","environment","access","devops-security","kubectl","ci","runners","license","git","security","2026-11-10 10:12:30",false,"---\nname: argocd-gitops\ndescription: Implement GitOps with ArgoCD for declarative Kubernetes deployments.\ncategory: devops\nrisk: critical\nsource: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\nsource_repo: BagelHole\u002FDevOps-Security-Agent-Skills\nsource_type: community\ndate_added: '2026-09-20'\nlicense: MIT\nlicense_source: https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE\ncompatibility: Requires the relevant platform CLIs (kubectl, helm, terraform, git,\n  CI runners) and authorized access to the target environment. Docs-only; helper scripts\n  and templates not bundled.\nmetadata:\n  author: devops-skills\n  version: '1.0'\n---\n\n# ArgoCD GitOps\n\nImplement declarative continuous delivery for Kubernetes with ArgoCD.\n\n## When to Use This Skill\n\nUse this skill when:\n- Implementing GitOps workflows for Kubernetes\n- Automating deployments from Git repositories\n- Managing multiple environments declaratively\n- Implementing progressive delivery strategies\n- Synchronizing cluster state with Git\n\n## Prerequisites\n\n- Kubernetes cluster with ArgoCD installed\n- kubectl configured\n- Git repository for manifests\n- ArgoCD CLI (optional)\n\nPin and review an Argo CD release manifest before applying it; the moving stable URL below is illustrative. Confirm cluster context and namespace, retain bootstrap secrets outside assistant output, rotate the admin credential and configure scoped SSO\u002FRBAC. Start with an application diff and manual sync. Automated prune deletes resources and self-heal reverts emergency edits; enable these only after an approved reconciliation\u002Frollback policy. A Git revert is normally the durable rollback for an auto-synced app. Repository Secret examples contain placeholders, not credentials to commit. Narrow AppProject source\u002Fdestination\u002Fresource permissions before production.\n\n## Installation\n\n```bash\n# Create namespace\nkubectl create namespace argocd\n\n# Install ArgoCD\nkubectl apply -n argocd -f https:\u002F\u002Fraw.githubusercontent.com\u002Fargoproj\u002Fargo-cd\u002Fstable\u002Fmanifests\u002Finstall.yaml\n\n# Get admin password\nkubectl -n argocd get secret argocd-initial-admin-secret \\\n  -o jsonpath=\"{.data.password}\" | base64 -d\n\n# Port forward to access UI\nkubectl port-forward svc\u002Fargocd-server -n argocd 8080:443\n\n# Login with CLI\nargocd login localhost:8080\n```\n\n## Application Definition\n\n### Basic Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n    targetRevision: main\n    path: environments\u002Fproduction\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n```\n\n### Helm Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp-helm\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-chart.git\n    targetRevision: main\n    path: charts\u002Fmyapp\n    helm:\n      valueFiles:\n        - values.yaml\n        - values-production.yaml\n      parameters:\n        - name: replicaCount\n          value: \"3\"\n        - name: image.tag\n          value: \"2.0.0\"\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n```\n\n### Kustomize Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp-kustomize\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n    targetRevision: main\n    path: overlays\u002Fproduction\n    kustomize:\n      images:\n        - myapp=myregistry\u002Fmyapp:2.0.0\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n```\n\n## Projects\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: AppProject\nmetadata:\n  name: myproject\n  namespace: argocd\nspec:\n  description: My Project\n  sourceRepos:\n    - https:\u002F\u002Fgithub.com\u002Forg\u002F*\n  destinations:\n    - namespace: myapp-*\n      server: https:\u002F\u002Fkubernetes.default.svc\n  clusterResourceWhitelist:\n    - group: ''\n      kind: Namespace\n  namespaceResourceWhitelist:\n    - group: '*'\n      kind: '*'\n  roles:\n    - name: developer\n      description: Developer role\n      policies:\n        - p, proj:myproject:developer, applications, get, myproject\u002F*, allow\n        - p, proj:myproject:developer, applications, sync, myproject\u002F*, allow\n      groups:\n        - developers\n```\n\n## Application Sets\n\n### Git Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-environments\n  namespace: argocd\nspec:\n  generators:\n    - git:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        revision: main\n        directories:\n          - path: environments\u002F*\n  template:\n    metadata:\n      name: 'myapp-{{path.basename}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: '{{path}}'\n      destination:\n        server: https:\u002F\u002Fkubernetes.default.svc\n        namespace: 'myapp-{{path.basename}}'\n      syncPolicy:\n        automated:\n          prune: true\n          selfHeal: true\n```\n\n### List Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-clusters\n  namespace: argocd\nspec:\n  generators:\n    - list:\n        elements:\n          - cluster: production\n            url: https:\u002F\u002Fprod-cluster.example.com\n          - cluster: staging\n            url: https:\u002F\u002Fstaging-cluster.example.com\n  template:\n    metadata:\n      name: 'myapp-{{cluster}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: 'environments\u002F{{cluster}}'\n      destination:\n        server: '{{url}}'\n        namespace: myapp\n```\n\n### Matrix Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-matrix\n  namespace: argocd\nspec:\n  generators:\n    - matrix:\n        generators:\n          - git:\n              repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n              revision: main\n              directories:\n                - path: apps\u002F*\n          - list:\n              elements:\n                - env: staging\n                - env: production\n  template:\n    metadata:\n      name: '{{path.basename}}-{{env}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: '{{path}}\u002Foverlays\u002F{{env}}'\n      destination:\n        server: https:\u002F\u002Fkubernetes.default.svc\n        namespace: '{{path.basename}}-{{env}}'\n```\n\n## Sync Policies\n\n### Automated Sync\n\n```yaml\nsyncPolicy:\n  automated:\n    prune: true          # Delete resources not in Git\n    selfHeal: true       # Revert manual changes\n    allowEmpty: false    # Don't sync empty directories\n  syncOptions:\n    - CreateNamespace=true\n    - PrunePropagationPolicy=foreground\n    - PruneLast=true\n  retry:\n    limit: 5\n    backoff:\n      duration: 5s\n      factor: 2\n      maxDuration: 3m\n```\n\n### Sync Waves\n\n```yaml\n# In Kubernetes manifests\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: myconfig\n  annotations:\n    argocd.argoproj.io\u002Fsync-wave: \"-1\"  # Sync first\n---\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: myapp\n  annotations:\n    argocd.argoproj.io\u002Fsync-wave: \"0\"   # Sync second\n```\n\n### Sync Hooks\n\n```yaml\napiVersion: batch\u002Fv1\nkind: Job\nmetadata:\n  name: migration\n  annotations:\n    argocd.argoproj.io\u002Fhook: PreSync\n    argocd.argoproj.io\u002Fhook-delete-policy: HookSucceeded\nspec:\n  template:\n    spec:\n      containers:\n        - name: migrate\n          image: myapp:latest\n          command: [\".\u002Fmigrate.sh\"]\n      restartPolicy: Never\n```\n\n## CLI Commands\n\n```bash\n# List applications\nargocd app list\n\n# Get application details\nargocd app get myapp\n\n# Sync application\nargocd app sync myapp\n\n# Force apply (can recreate resources; does not mean ignore differences)\nargocd app sync myapp --force\n\n# View diff\nargocd app diff myapp\n\n# Rollback\nargocd app rollback myapp\n\n# Delete application\nargocd app delete myapp\n\n# View logs\nargocd app logs myapp\n\n# Hard refresh (clear cache)\nargocd app get myapp --hard-refresh\n```\n\n## Repository Configuration\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: private-repo\n  namespace: argocd\n  labels:\n    argocd.argoproj.io\u002Fsecret-type: repository\nstringData:\n  url: https:\u002F\u002Fgithub.com\u002Forg\u002Fprivate-repo.git\n  username: git\n  password: ghp_xxxx\n---\n# SSH key\napiVersion: v1\nkind: Secret\nmetadata:\n  name: private-repo-ssh\n  namespace: argocd\n  labels:\n    argocd.argoproj.io\u002Fsecret-type: repository\nstringData:\n  url: git@github.com:org\u002Fprivate-repo.git\n  sshPrivateKey: |\n    -----BEGIN OPENSSH PRIVATE KEY-----\n    ...\n    -----END OPENSSH PRIVATE KEY-----\n```\n\n## Notifications\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-notifications-cm\n  namespace: argocd\ndata:\n  service.slack: |\n    token: $slack-token\n  template.app-deployed: |\n    message: Application {{.app.metadata.name}} is now {{.app.status.sync.status}}.\n  trigger.on-deployed: |\n    - when: app.status.operationState.phase in ['Succeeded']\n      send: [app-deployed]\n```\n\n## Common Issues\n\n### Issue: Sync Fails with Diff\n**Problem**: Resources show differences but are correct\n**Solution**: Configure ignore differences\n\n```yaml\nspec:\n  ignoreDifferences:\n    - group: apps\n      kind: Deployment\n      jsonPointers:\n        - \u002Fspec\u002Freplicas\n```\n\n### Issue: Repository Not Accessible\n**Problem**: ArgoCD cannot clone repository\n**Solution**: Check repository secret, verify URL and credentials\n\n### Issue: Application Stuck OutOfSync\n**Problem**: Application never becomes synced\n**Solution**: Check resource status, review events, verify manifests\n\n### Issue: Health Check Failing\n**Problem**: Application shows degraded health\n**Solution**: Check custom health checks, verify probe configurations\n\n## Best Practices\n\n- Use ApplicationSets for multi-environment deployments\n- Implement sync waves for ordered deployments\n- Use projects to isolate applications\n- Configure notifications for deployment events\n- Implement proper RBAC with projects\n- Use health checks for deployment verification\n- Enable auto-pruning to remove deleted resources\n- Keep manifests in dedicated repositories\n\n## Related Skills\n\n- kubernetes-ops (`kubernetes-ops`) - K8s fundamentals\n- helm-charts (`helm-charts`) - Helm deployments\n- kustomize (`kustomize`) - Kustomize overlays\n\n## Limitations\n\n- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.\n- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.\n\n### Example\n\n```bash\ngit status && git diff --stat\nkubectl diff -f manifest.yaml\n```\n\n> Adapted from [BagelHole\u002FDevOps-Security-Agent-Skills](https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use\u002FLimitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.\n","# ArgoCD GitOps\n\nImplement declarative continuous delivery for Kubernetes with ArgoCD.\n\n## When to Use This Skill\n\nUse this skill when:\n- Implementing GitOps workflows for Kubernetes\n- Automating deployments from Git repositories\n- Managing multiple environments declaratively\n- Implementing progressive delivery strategies\n- Synchronizing cluster state with Git\n\n## Prerequisites\n\n- Kubernetes cluster with ArgoCD installed\n- kubectl configured\n- Git repository for manifests\n- ArgoCD CLI (optional)\n\nPin and review an Argo CD release manifest before applying it; the moving stable URL below is illustrative. Confirm cluster context and namespace, retain bootstrap secrets outside assistant output, rotate the admin credential and configure scoped SSO\u002FRBAC. Start with an application diff and manual sync. Automated prune deletes resources and self-heal reverts emergency edits; enable these only after an approved reconciliation\u002Frollback policy. A Git revert is normally the durable rollback for an auto-synced app. Repository Secret examples contain placeholders, not credentials to commit. Narrow AppProject source\u002Fdestination\u002Fresource permissions before production.\n\n## Installation\n\n```bash\n# Create namespace\nkubectl create namespace argocd\n\n# Install ArgoCD\nkubectl apply -n argocd -f https:\u002F\u002Fraw.githubusercontent.com\u002Fargoproj\u002Fargo-cd\u002Fstable\u002Fmanifests\u002Finstall.yaml\n\n# Get admin password\nkubectl -n argocd get secret argocd-initial-admin-secret \\\n  -o jsonpath=\"{.data.password}\" | base64 -d\n\n# Port forward to access UI\nkubectl port-forward svc\u002Fargocd-server -n argocd 8080:443\n\n# Login with CLI\nargocd login localhost:8080\n```\n\n## Application Definition\n\n### Basic Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n    targetRevision: main\n    path: environments\u002Fproduction\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n    syncOptions:\n      - CreateNamespace=true\n```\n\n### Helm Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp-helm\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-chart.git\n    targetRevision: main\n    path: charts\u002Fmyapp\n    helm:\n      valueFiles:\n        - values.yaml\n        - values-production.yaml\n      parameters:\n        - name: replicaCount\n          value: \"3\"\n        - name: image.tag\n          value: \"2.0.0\"\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n```\n\n### Kustomize Application\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: Application\nmetadata:\n  name: myapp-kustomize\n  namespace: argocd\nspec:\n  project: default\n  source:\n    repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n    targetRevision: main\n    path: overlays\u002Fproduction\n    kustomize:\n      images:\n        - myapp=myregistry\u002Fmyapp:2.0.0\n  destination:\n    server: https:\u002F\u002Fkubernetes.default.svc\n    namespace: myapp\n```\n\n## Projects\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: AppProject\nmetadata:\n  name: myproject\n  namespace: argocd\nspec:\n  description: My Project\n  sourceRepos:\n    - https:\u002F\u002Fgithub.com\u002Forg\u002F*\n  destinations:\n    - namespace: myapp-*\n      server: https:\u002F\u002Fkubernetes.default.svc\n  clusterResourceWhitelist:\n    - group: ''\n      kind: Namespace\n  namespaceResourceWhitelist:\n    - group: '*'\n      kind: '*'\n  roles:\n    - name: developer\n      description: Developer role\n      policies:\n        - p, proj:myproject:developer, applications, get, myproject\u002F*, allow\n        - p, proj:myproject:developer, applications, sync, myproject\u002F*, allow\n      groups:\n        - developers\n```\n\n## Application Sets\n\n### Git Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-environments\n  namespace: argocd\nspec:\n  generators:\n    - git:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        revision: main\n        directories:\n          - path: environments\u002F*\n  template:\n    metadata:\n      name: 'myapp-{{path.basename}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: '{{path}}'\n      destination:\n        server: https:\u002F\u002Fkubernetes.default.svc\n        namespace: 'myapp-{{path.basename}}'\n      syncPolicy:\n        automated:\n          prune: true\n          selfHeal: true\n```\n\n### List Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-clusters\n  namespace: argocd\nspec:\n  generators:\n    - list:\n        elements:\n          - cluster: production\n            url: https:\u002F\u002Fprod-cluster.example.com\n          - cluster: staging\n            url: https:\u002F\u002Fstaging-cluster.example.com\n  template:\n    metadata:\n      name: 'myapp-{{cluster}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: 'environments\u002F{{cluster}}'\n      destination:\n        server: '{{url}}'\n        namespace: myapp\n```\n\n### Matrix Generator\n\n```yaml\napiVersion: argoproj.io\u002Fv1alpha1\nkind: ApplicationSet\nmetadata:\n  name: myapp-matrix\n  namespace: argocd\nspec:\n  generators:\n    - matrix:\n        generators:\n          - git:\n              repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n              revision: main\n              directories:\n                - path: apps\u002F*\n          - list:\n              elements:\n                - env: staging\n                - env: production\n  template:\n    metadata:\n      name: '{{path.basename}}-{{env}}'\n    spec:\n      project: default\n      source:\n        repoURL: https:\u002F\u002Fgithub.com\u002Forg\u002Fmyapp-manifests.git\n        targetRevision: main\n        path: '{{path}}\u002Foverlays\u002F{{env}}'\n      destination:\n        server: https:\u002F\u002Fkubernetes.default.svc\n        namespace: '{{path.basename}}-{{env}}'\n```\n\n## Sync Policies\n\n### Automated Sync\n\n```yaml\nsyncPolicy:\n  automated:\n    prune: true          # Delete resources not in Git\n    selfHeal: true       # Revert manual changes\n    allowEmpty: false    # Don't sync empty directories\n  syncOptions:\n    - CreateNamespace=true\n    - PrunePropagationPolicy=foreground\n    - PruneLast=true\n  retry:\n    limit: 5\n    backoff:\n      duration: 5s\n      factor: 2\n      maxDuration: 3m\n```\n\n### Sync Waves\n\n```yaml\n# In Kubernetes manifests\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: myconfig\n  annotations:\n    argocd.argoproj.io\u002Fsync-wave: \"-1\"  # Sync first\n---\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: myapp\n  annotations:\n    argocd.argoproj.io\u002Fsync-wave: \"0\"   # Sync second\n```\n\n### Sync Hooks\n\n```yaml\napiVersion: batch\u002Fv1\nkind: Job\nmetadata:\n  name: migration\n  annotations:\n    argocd.argoproj.io\u002Fhook: PreSync\n    argocd.argoproj.io\u002Fhook-delete-policy: HookSucceeded\nspec:\n  template:\n    spec:\n      containers:\n        - name: migrate\n          image: myapp:latest\n          command: [\".\u002Fmigrate.sh\"]\n      restartPolicy: Never\n```\n\n## CLI Commands\n\n```bash\n# List applications\nargocd app list\n\n# Get application details\nargocd app get myapp\n\n# Sync application\nargocd app sync myapp\n\n# Force apply (can recreate resources; does not mean ignore differences)\nargocd app sync myapp --force\n\n# View diff\nargocd app diff myapp\n\n# Rollback\nargocd app rollback myapp\n\n# Delete application\nargocd app delete myapp\n\n# View logs\nargocd app logs myapp\n\n# Hard refresh (clear cache)\nargocd app get myapp --hard-refresh\n```\n\n## Repository Configuration\n\n```yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: private-repo\n  namespace: argocd\n  labels:\n    argocd.argoproj.io\u002Fsecret-type: repository\nstringData:\n  url: https:\u002F\u002Fgithub.com\u002Forg\u002Fprivate-repo.git\n  username: git\n  password: ghp_xxxx\n---\n# SSH key\napiVersion: v1\nkind: Secret\nmetadata:\n  name: private-repo-ssh\n  namespace: argocd\n  labels:\n    argocd.argoproj.io\u002Fsecret-type: repository\nstringData:\n  url: git@github.com:org\u002Fprivate-repo.git\n  sshPrivateKey: |\n    -----BEGIN OPENSSH PRIVATE KEY-----\n    ...\n    -----END OPENSSH PRIVATE KEY-----\n```\n\n## Notifications\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: argocd-notifications-cm\n  namespace: argocd\ndata:\n  service.slack: |\n    token: $slack-token\n  template.app-deployed: |\n    message: Application {{.app.metadata.name}} is now {{.app.status.sync.status}}.\n  trigger.on-deployed: |\n    - when: app.status.operationState.phase in ['Succeeded']\n      send: [app-deployed]\n```\n\n## Common Issues\n\n### Issue: Sync Fails with Diff\n**Problem**: Resources show differences but are correct\n**Solution**: Configure ignore differences\n\n```yaml\nspec:\n  ignoreDifferences:\n    - group: apps\n      kind: Deployment\n      jsonPointers:\n        - \u002Fspec\u002Freplicas\n```\n\n### Issue: Repository Not Accessible\n**Problem**: ArgoCD cannot clone repository\n**Solution**: Check repository secret, verify URL and credentials\n\n### Issue: Application Stuck OutOfSync\n**Problem**: Application never becomes synced\n**Solution**: Check resource status, review events, verify manifests\n\n### Issue: Health Check Failing\n**Problem**: Application shows degraded health\n**Solution**: Check custom health checks, verify probe configurations\n\n## Best Practices\n\n- Use ApplicationSets for multi-environment deployments\n- Implement sync waves for ordered deployments\n- Use projects to isolate applications\n- Configure notifications for deployment events\n- Implement proper RBAC with projects\n- Use health checks for deployment verification\n- Enable auto-pruning to remove deleted resources\n- Keep manifests in dedicated repositories\n\n## Related Skills\n\n- kubernetes-ops (`kubernetes-ops`) - K8s fundamentals\n- helm-charts (`helm-charts`) - Helm deployments\n- kustomize (`kustomize`) - Kustomize overlays\n\n## Limitations\n\n- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.\n- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.\n\n### Example\n\n```bash\ngit status && git diff --stat\nkubectl diff -f manifest.yaml\n```\n\n> Adapted from [BagelHole\u002FDevOps-Security-Agent-Skills](https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use\u002FLimitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.\n",{"name":5,"risk":32,"source":51,"license":14,"category":52,"metadata":53,"date_added":56,"description":7,"source_repo":57,"source_type":35,"compatibility":58,"license_source":59},"https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills","devops",{"author":54,"version":55},"devops-skills","1.0","2026-09-20","BagelHole\u002FDevOps-Security-Agent-Skills","Requires the relevant platform CLIs (kubectl, helm, terraform, git, CI runners) and authorized access to the target environment. Docs-only; helper scripts and templates not bundled.","https:\u002F\u002Fgithub.com\u002FBagelHole\u002FDevOps-Security-Agent-Skills\u002Fblob\u002Fmain\u002FLICENSE","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-argocd-gitops",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-11 14:20:43",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add boisenoise\u002Fskills-collections --skill argocd-gitops",{"tool":72,"command":73},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill argocd-gitops",{"tool":75,"command":76},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill argocd-gitops","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-argocd-gitops\u002FSKILL.md",true,[],[81,106,131,156,175,198],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":86,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":46},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[90,38,91,92,93,94,95,96,97,98,99,26,100,101,33,32,102,103,104,105,27],"web","web access","official","development","browser","search","data","Tools","read","fetch","youtube","free tools","free","cover","normal","when",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":110,"sourceHtmlUrl":111,"categories":112,"keywords":116,"publishedAt":46},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[108,117,118,119,92,93,43,97,120,121,122,123,124,125,126,32,127,128,129,130,27],"MCP","cli","github","Budget","credentials","team","catalog","use","call","discover","external tools","with","scoped","blob",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":135,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":46},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[133,119,92,43,144,145,146,147,148,149,32,150,151,152,128,29,153,154,155,130,108,27],"https","email","enrichment","business","evidence","phone","ranking","post","job description","person","candidate","reason",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":160,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":46},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[164,165,166,119,92,43,167,168,144,169,120,170,171,172,148,32,173,174,130,108,27],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":46},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[183,184,119,185,92,186,43,187,188,189,190,191,32,192,193,194,195,196,197,130],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":85,"licenseFileUrl":202,"sourceHtmlUrl":203,"categories":204,"keywords":205,"publishedAt":46},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[206,207,208,119,92,43,209,210,147,211,212,32,213,214,215,216,217,218,219,130],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]