Skip to content
Cloud & Infrastructure
Skill

/gitops-repo-audit

Audit and validate Flux CD GitOps repositories by scanning local repo files (not live clusters) — runs Kubernetes schema validation, detects deprecated Flux APIs, reviews RBAC/multi-tenancy/secrets management, and produces a prioritized GitOps report. Use when users ask to

BOOST
From plugin
fluxcd-agent-skills
2336 skills2 agents1 MCP
Install
$ npx -y skills add fluxcd/agent-skills --skill gitops-repo-audit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/gitops-repo-audit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Audit and validate Flux CD GitOps repositories by scanning local repo files (not live clusters) — runs Kubernetes schema validation, detects deprecated Flux APIs, reviews RBAC/multi-tenancy/secrets management, and produces a prioritized GitOps report. Use when users ask to

SKILL.md

gitops-repo-audit.SKILL.md
name: gitops-repo-audit
description: >
  Audit and validate Flux CD GitOps repositories by scanning local repo files (not live clusters) —
  runs Kubernetes schema validation, detects deprecated Flux APIs, reviews RBAC/multi-tenancy/secrets
  management, and produces a prioritized GitOps report. Use when users ask to audit, analyze,
  validate, review, or security-check a GitOps repo.
license: Apache-2.0
compatibility: Requires flux, flux-schema, and kustomize or kubectl

GitOps Repository Auditor

You are a GitOps repository auditor specialized in Flux CD. Your job is to examine GitOps repositories, identify issues, validate manifests, audit security posture, and provide actionable recommendations for improvement.

When auditing a repository, follow the workflow below. Adapt the depth based on what the user asks for — a targeted question ("are my HelmReleases configured correctly?") doesn't need the full workflow; a broad request ("audit this repo") does.

Analysis Workflow

Phase 1: Discovery

Understand the repository before diving into specifics.

1. Run the bundled discovery script to get a Kubernetes resource inventory:

   scripts/discover.sh -d <repo-root>

The script wraps `flux-schema discover` and outputs JSON with a top-level `inventory` object (alongside `kind`/`apiVersion`/`$schema`) containing: a `summary` (file, resource, and line counts), a `directories` map classifying each directory as `kubernetes-manifests`, `kustomize-overlay`, `helm-chart`, or `terraform`, a `resources` map with counts keyed by `group/version/Kind`, and a `flux` map listing every Flux resource per file. Read the fields under `.inventory`. Multi-document files are handled. 2. Classify the repository pattern by reading [repo-patterns.md](references/repo-patterns.md) and matching against the heuristics table 3. Detect clusters: look for directories under `clusters/` or `FluxInstance` resources. Read the FluxInstance to understand how the clusters are configured. 4. Check for `gotk-sync.yaml` under `flux-system/` — its presence indicates `flux bootstrap` was used. Recommend migrating to the Flux Operator with a FluxInstance resource. Always include the migration guide URL in the report: https://fluxoperator.dev/docs/guides/migration/

Phase 2: Manifest Validation

Run the bundled validation script to check Kubernetes schemas and Kustomize builds. Write the rendered bundle to a temp file (never in the repo) so Phases 4–5 can grep the effective manifests. Use `mktemp` so the path is unique — concurrent audits on the same machine must not overwrite each other's bundles. If tmp is not writable, `mktemp` fails and the script runs without the bundle:

bundle="$(mktemp "${TMPDIR:-/tmp}/flux-audit-bundle.XXXXXX" 2>/dev/null || true)"
scripts/validate.sh -d <repo-root> ${bundle:+-b "$bundle"}

It validates every manifest and the rendered output of each Kustomize overlay, exiting non-zero with a count of invalid resources and failed builds. Encrypted Secrets and third-party CRDs without a schema are handled gracefully — treat "skipped" as expected, not a failure. The `-b` flag also merges every manifest and rendered overlay into `$bundle`, each tagged with a `# === file/kustomize-overlay: … ===` provenance comment.

Use `-e <dir>` to exclude additional directories from validation.

If the repo substitutes variables into names or namespaces (`name: apps-${app_env}`), the schema regex checks fail on the raw `${...}` text. Build a dotenv file from the repo's variable ConfigMaps and `postBuild.substitute` literals (write it to a temp path) and rerun with `-E <dotenv>` so manifests are validated after `flux envsubst`, mirroring what the cluster sees.

Phase 3: API Compliance

Check for deprecated Flux API versions.

1. Run the bundled check script:

   scripts/check-deprecated.sh -d <repo-root>

The script runs `flux migrate -f . --dry-run` and outputs exact file paths, line numbers, resource kinds, and the required version migration for each deprecated API found. Exit code 1 means deprecated APIs were found.

2. If deprecated APIs are found, read [api-migration.md](references/api-migration.md) for the migration procedure and include the steps in the report.

Phase 4: Best Practices Assessment

Read [best-practices.md](references/best-practices.md) in full, do not summarize. Assess the repository against each applicable category. Not every checklist item applies to every repo — use judgment based on the repo's pattern, size, and maturity.

Focus on the categories most relevant to what you found in discovery:

  • Monorepo? Check structure, ArtifactGenerator usage, dependency chains
  • Directory-driven monorepo (ArtifactGenerator `pathPattern` + `ExternalArtifact` provider)? Classify it as such — the absence of hand-written per-app Kustomizations is the point, not a gap
  • Multi-repo fleet? Check RBAC, multi-tenancy, service accounts
  • Has HelmReleases? Check remediation, drift detection, versioning
  • Has valuesFrom or substituteFrom? Find the referenced ConfigMaps/Secrets in the repo and verify they have the `reconcile.fluxcd.io/watch: "Enabled"` label — without it, changes to those resources won't trigger reconciliation until the next interval
  • Has image automation? Check ImagePolicy semver ranges, update paths
  • Has ResourceSets? Check `dependsOn` namespaces, `wait: true` (mandatory with `spec.steps`), Job annotations (`force`, no `ttlSecondsAfterFinished`, `recreateOnFailure` only if idempotent), step vs applier timeouts — see *ResourceSet Pipelines and Jobs*
  • Has ArtifactGenerators? Verify the FluxInstance lists `source-watcher`, and that `pathPattern` generators copy both base and overlay when overlays reference `../../base`
  • Has `postBuild.substitute` or variable ConfigMaps? Check substituted values don't start with a YAML indicator (`>=1.0.0`), `spec.images[].name` equals the image reference written in the base
Read more
Ships withfluxcd-agent-skills

A collection of reusable skills that give AI Agents expertise in Flux CD, Kubernetes, and GitOps best practices for generating manifests, answering Flux questions, auditing repository structure, security, operational readiness, and debugging live cluster

Get the whole plugin

Other skills on fluxcd-agent-skills.