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/kopiur-backups/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/kopiur-backups)<a href="https://agentmods.dev/skills/aviator-coding/home-ops/kopiur-backups"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/kopiur-backups/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/kopiur-backups"><img src="https://agentmods.dev/badge/skills/aviator-coding/home-ops/kopiur-backups.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.00070 | $0.02070 |
| Opus 5.5 | $0.00028 | $0.00828 |
| Sonnet 5.5 | $0.00014 | $0.00414 |
| Haiku 4.5 | $0.00007 | $0.00207 |
Grade A, and why
kopiur-backups 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 24d 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 — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
kopiur backups
kopiur is the backup engine. VolSync remains only on three carve-outs
(selfhosted/paperless-ngx, paperless-ngx-media, syncthing-data); skill
volsync-carveouts. Born-kopiur claims (database/falkordb,
database/surrealdb) never had VolSync. Assume kopiur-only unless the overlay
includes components/volsync. A kopiur overlay never dependsOn the VolSync
operator; it depends on kopiur-repository in system.
The chart tag lives in
kubernetes/apps/base/system/kopiur/app/ocirepository.yaml. Read that file.
Comments that name an older tag are stale.
Tripwires
- A
SnapshotCR owns its kopia snapshot. Deleting the CR deletes backup data. Fluxprune: trueis that shape.onPolicyDelete/onScheduleDelete: Retainkeeps the data, not the CRs: prune drops the CR count to zero and the catalog rediscovers snapshots asorigin: discovered. Creating aSnapshotcan also evict one. r2 policies have nokeepHourly, so an on-demand r2 snapshot evicts that day's newest. retirement-and-removal.md - Retirement is a PVC-ownership swap.
components/kopiur/pvcmust carryssa: IfNotPresentand must never carryforce: enabled.forcedeletes the volume.KOPIUR_CAPACITYis create-time-only on a bound claim; grow withkubectl patch, and keep Git equal to the live size because a rebuild provisions the Git value. - Mover identity is measured from the files, not from
runAsUser.KOPIUR_PUID/KOPIUR_PGIDdefault to 1000. A mismatch fails the backup closed (read-only staging, nofsGroupfixup). Authoritative table:EXPECTED_IDENTITYinscripts/ci/kopiur-stage3-test.py. onboarding.md - Restore cache is a cliff. Required capacity is
min(snapshot sizeBytes, ~6.2 GiB)plus headroom. Under the plateau any value works; the first crossing fails terminally and never retries. A standingRestoreisssa: IfNotPresent, so a raisedKOPIUR_*does not reach it until that object is deleted and Flux recreates it. restore-and-cache.md - Deleting a
Restoreis safe. Deleting aSnapshotis not. Four independent legs (no data-lifecycle field, read-only data flow, zero finalizers, none attached mid-run) are in restore-and-cache.md. - Drills use a new scratch
Restorewithtarget.pvcandcredentialProjection.enabled: true. The standing populator staysonMissingSnapshot: Fail. Never setContinue: after a cluster loss it provisions empty volumes and then backs that emptiness up to r2. The r2ClusterRepositorystayscreate.enabled: false. - Credential projection has three legs, and all three are required. Miss one and the CRs stay green while the mover fails at run time. credentials.md
ClusterRepository.spec.parametersis write-only from Git. Removing the block stops asserting the value; it does not roll the live repository back. repository-maintenance.mdIndexBlobHealth=Falseis epoch tuning, not a broken maintenance run. Do not committakeoverPolicy: Force. Do not interpolateminDuration(headroom steps).cephis pinned at4h;r2is deliberately untuned.- One component include protects one volume. A second PVC needs a second
Flux Kustomization with
APPset to the claim name. - Never put this component in a Kustomization with
wait: true. The standingRestoreisReady=False(AwaitingPvcDataSourceRef) for its whole life on an already-bound claim.pgadminandcalibre-web-automatedkeep a split shape: the backup Kustomization must notdependsOnthe claim Kustomization (greenfield deadlock). - Cron accepts bare
Honly. Namespace r2 hours are fixed. Both schedules pintimezone: America/New_Yorkso the VolSync stagger survives DST. schedules-timezone.md - A
Succeededsnapshot proves nothing until.status.statscovers the volume.SecurityContextCompatibleis positive-only; its absence is not a failure. proof-ledger.md - Both engines snapshot crash-consistently, with no application hook. A
database that does not fsync at the durability you want restores a healthy
stale copy. FalkorDB on one snapshot: AOF
everysecrecovered 2174 of 2199 nodes; stock RDB-only recovered 200 of 2199. Both startups looked healthy. - CloudNativePG has one live barman destination per
Cluster. A secondScheduledBackupwith its ownbarmanObjectNamereports completed and writes to the original store (cloudnative-pg#7778). The off-site copy is a suspendedrclone copymirror, neversync.kubernetes/apps/base/database/cloudnative-pg/offsite-mirror/README.md. - Full-cluster restore from r2 is full-cluster-restore-r2.md. Do not invent a second procedure. Five claims have no populator path and are hand-restored; that runbook names them.
What ships with it
11 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.
- references/alerts.md 2.5 KB
- references/credentials.md 2.9 KB
- references/full-cluster-restore-r2.md 15 KB
- references/kopiur-scratch-drill.md 6.2 KB
- references/onboarding.md 8.1 KB
- references/proof-ledger.md 9.7 KB
- references/repository-maintenance.md 3.4 KB
- references/restore-and-cache.md 9.9 KB
- references/retirement-and-removal.md 4.2 KB
- references/schedules-timezone.md 2.6 KB
- references/stage0-operator.md 3.1 KB
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.
- 24d ago Changed · +2 lines b209fb47a30b
- 26d ago Changed · -45 lines · -42 tokens per session 58d9d2d3c95c
- 28d ago Changed d3a8b5b9986c
- 1mo ago Changed cba3e43e0aa1
- 1mo ago Changed ae4e71a114f5
- 1mo ago Changed a9c312609fee
- 1mo ago First seen · 167 lines · 112 tokens per session scan A 4ff6f740e9ec
kopiur-backups is a skill published in the GitHub repository Aviator-Coding/home-ops (3 stars, last pushed yesterday), licensed MIT. It adds 70 tokens to every session and 2,070 once invoked, about $0.0003 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-04.
Other skills, from other repositories
gke-compute-classes
Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do not use for cluster-level Node Auto…
gke-reliability
Improves GKE workload reliability, using PDBs, health probes, and topology spread constraints. Use when configuring GKE workload reliability, setting up PDBs, or configuring GKE health probes (liveness, readiness, startup). Don't use for generating K8s YAML manifests (use gke-manifest-generation) or disaster recovery…
gke-workload-security
Audits, configures, and hardens workload-level security controls for Google Kubernetes Engine (GKE) applications and namespaces. Covers running security audits (auditcluster.sh), enforcing Network Policies (default-deny and Dataplane V2 logging), isolating high-risk pods inside GKE Sandbox (gVisor), enforcing Pod…
cloud-architect
Designs cloud architectures, creates migration plans, generates cost optimization recommendations, and produces disaster recovery strategies across AWS, Azure, and GCP. Use when designing cloud architectures, planning migrations, or optimizing multi-cloud deployments. Invoke for Well-Architected Framework, cost…
nemo-automodel-launcher-config
Configure NeMo AutoModel job launches for interactive runs, Slurm clusters, and SkyPilot cloud execution.
azure-mgmt-botservice-dotnet
Azure Resource Manager SDK for Bot Service in .NET. Management plane operations for creating and managing Azure Bot resources, channels (Teams, DirectLine, Slack), and connection settings. Triggers: "Bot Service", "BotResource", "Azure Bot", "DirectLine channel", "Teams channel", "bot management .NET", "create bot".