Borrowing it
Nothing to install: this file belongs to Aviator-Coding/home-ops. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Aviator-Coding/home-ops/main/.agents/skills/flux-gitops/SKILL.mdgit clone --depth 1 https://github.com/Aviator-Coding/home-opsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/aviator-coding/home-ops/flux-gitops)<a href="https://agentmods.dev/skills/aviator-coding/home-ops/flux-gitops"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/flux-gitops/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/aviator-coding/home-ops/flux-gitops"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/flux-gitops.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00095 | $0.01562 |
| Opus 5.5 | $0.00038 | $0.00625 |
| Sonnet 5.5 | $0.00019 | $0.00312 |
| Haiku 4.5 | $0.00010 | $0.00156 |
Grade A, and why
flux-gitops scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Flux GitOps: apps, overlays, health checks and live testing
Flux reconciles from kubernetes/clusters/main only. cluster-meta builds
kubernetes/apps/base/flux-system/meta; cluster-apps builds
kubernetes/apps/main. There is no separate FluxInstance manifest: the
flux-instance HelmRelease sets values.instance.sync.path.
Tripwires
healthCheckstarget the workload, and a Kustomization that owns a kopiur or VolSync claim keepswaitfalse. AHelmRelease-kind check staysReadythrough a crashloop. Point the list at the Deployment, StatefulSet, DaemonSet, CronJob, or the CR whose status is the real signal. Flux ignoresspec.healthCheckswhenspec.wait: trueand assesses the whole inventory instead (usually just the HelmRelease).healthCheckExprsrun only for objects already in that assessment set.wait: trueis correct for a pure dependency gate that othersdependsOn(checked 2026-09-30, 20 live): CRDs (agentgateway-crds,toolhive-crds), operators and clusters (cloudnative-pg,postgres-cluster-17,dragonfly-operator,emqx-*,surrealdb,keda), secret stores (external-secrets,onepassword-store,database-secrets),cluster-meta,multus-networks,certificates-import,cloudflare-dns,coder. None of them includescomponents/kopiurorcomponents/volsync, which deadlockswait: true. Recount withkubectl get ks -A -o json | jq '[.items[]|select(.spec.wait==true)]|length'.- Suspend the Kustomization before a live HelmRelease edit. Its interval
(or any
flux reconcile ks) reappliesmainand drops the experiment.flux resumeitself reconciles back tomain. kubectl applycannot remove a values key on a Flux-managed HelmRelease. There is nolast-applied-configuration, so apply merges and keeps keys you deleted. Usekubectl replace, or delete the key, and re-read.spec.values.- Helm cannot unset a field it never rendered. A hand-added
securityContext, or a newvolumes/volumeMountsentry, survivesflux reconcile --force. Undo with a strategic-merge$patch: delete. Namespace/flux-systemis exempt fromcluster-apps. The live object carrieskustomize.toolkit.fluxcd.io/ssa: Ignoreand emptymanagedFields. A label thatkustomize buildrenders for it still needs a live check after merge. Do not add abase/flux-system/namespace.yamlto chase it.flate -nis a false green.-nfilters the result and the exit code. A broken Kustomization in another namespace still exits 0.task flux:test:all(unscoped) is the gate. It also does not catch a literal${...}collision: skillflux-substitution.- A stale
Ready=Falsecan hide a fix already applied. controller-runtime backs off. ComparelastTransitionTimeto now and check operator logs before changing anything else. Restarting a stateless reconciler clears the backoff; do not restart cloudnative-pg mid-switchover or rook-ceph mid-OSD update. - A new app is done when it renders.
task flux:test:allis the pre-merge bar. Live confirmation is a post-merge follow-up. An out-of-bandkubectl applyof a brand-new app is the drift GitOps exists to prevent. - Never seed a Secret with client-side
kubectl apply. The value is copied intokubectl.kubernetes.io/last-applied-configuration. Usekubectl create, or server-side apply. Skillsecrets-1password. FluxResourceSuspendedTooLongkeysexported_namespace.flux_resource_infois the only live suspended signal. kube-state-metrics has no Flux CRD state. The metric'snamespacelabel is alwaysflux-system, because it is a metric on the operator.FluxResourceNotReadyTooLongis the state alert for a stuck release. A HelmRelease that fails its first install goesStalled(MissingRollbackTarget) and emits no further events, so the one-shot Flux Alert event is the only other signal. The rule fires when a HelmRelease or Kustomization is notReady=Truefor 30m, aggregated over kind, namespace and name so retries flipping False/Unknown and changingreasondo not reset the timer; fix the cause, thenflux reconcile hr <name> -n <ns> --reset.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · -1 lines f9488abf4d3a
- 22d ago Changed · +10 lines acb814a6032f
- 23d ago Changed · +8 lines 9e398bb0bd84
- 25d ago First seen · 82 lines · 95 tokens per session scan A e2f1503321e0
flux-gitops is a skill published in the GitHub repository Aviator-Coding/home-ops (3 stars, last pushed today), licensed MIT. It adds 95 tokens to every session and 1,562 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-29.
Other skills, from other repositories
land-and-deploy
Land and deploy workflow. (gstack).
publish-site
Versioned site deploys to GitHub/Cloudflare/Netlify Pages.
release-publish
Publish an approved Orchard release.
release-review
Review Orchard deployment manifests.
orchard-release
Check deployment evidence and recovery conditions.
orchard-review
Review a release proposal.