home-ops: Skill for Claude Code

.agents/skills/kopiur-backups/SKILL.md

kopiur-backups is a skill for Claude Code, Codex from Aviator-Coding/home-ops. It costs 70 tokens per session (2,070 once invoked), scanned A, original, MIT.

A set of project-specific instructions for Kopia backups and their Kubernetes resources. Kopia is backup software that stores snapshots, which are saved versions of data that can be restored later.

In plain words
What is it for?
Use it when onboarding or retiring storage claims, changing backup settings, creating or reading snapshots, running restore drills, or working with the Kopia and VolSync systems.
Why use it?
It helps avoid deleting backup data accidentally and explains how to investigate, migrate, restore, and retire backup components safely.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents).

This is Aviator-Coding/home-ops's own configuration. It tells Claude Code and Codex how to work on home-ops itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything home-ops configures →

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/Aviator-Coding/home-ops/main/.agents/skills/kopiur-backups/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/Aviator-Coding/home-ops

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for kopiur-backups

README.md
[![agentmods](https://agentmods.dev/badge/skills/aviator-coding/home-ops/kopiur-backups/github.svg)](https://agentmods.dev/skills/aviator-coding/home-ops/kopiur-backups)
Your own site
<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.

agentmods 80×15 button for kopiur-backups

Your own site · 80×15
<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>
Per session 70 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,070 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 24d ago against content hash b209fb47a30b, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

.agents/skills/kopiur-backups/SKILL.md · 124 lines

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

  1. A Snapshot CR owns its kopia snapshot. Deleting the CR deletes backup data. Flux prune: true is that shape. onPolicyDelete / onScheduleDelete: Retain keeps the data, not the CRs: prune drops the CR count to zero and the catalog rediscovers snapshots as origin: discovered. Creating a Snapshot can also evict one. r2 policies have no keepHourly, so an on-demand r2 snapshot evicts that day's newest. retirement-and-removal.md
  2. Retirement is a PVC-ownership swap. components/kopiur/pvc must carry ssa: IfNotPresent and must never carry force: enabled. force deletes the volume. KOPIUR_CAPACITY is create-time-only on a bound claim; grow with kubectl patch, and keep Git equal to the live size because a rebuild provisions the Git value.
  3. Mover identity is measured from the files, not from runAsUser. KOPIUR_PUID / KOPIUR_PGID default to 1000. A mismatch fails the backup closed (read-only staging, no fsGroup fixup). Authoritative table: EXPECTED_IDENTITY in scripts/ci/kopiur-stage3-test.py. onboarding.md
  4. 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 standing Restore is ssa: IfNotPresent, so a raised KOPIUR_* does not reach it until that object is deleted and Flux recreates it. restore-and-cache.md
  5. Deleting a Restore is safe. Deleting a Snapshot is not. Four independent legs (no data-lifecycle field, read-only data flow, zero finalizers, none attached mid-run) are in restore-and-cache.md.
  6. Drills use a new scratch Restore with target.pvc and credentialProjection.enabled: true. The standing populator stays onMissingSnapshot: Fail. Never set Continue: after a cluster loss it provisions empty volumes and then backs that emptiness up to r2. The r2 ClusterRepository stays create.enabled: false.
  7. 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
  8. ClusterRepository.spec.parameters is write-only from Git. Removing the block stops asserting the value; it does not roll the live repository back. repository-maintenance.md
  9. IndexBlobHealth=False is epoch tuning, not a broken maintenance run. Do not commit takeoverPolicy: Force. Do not interpolate minDuration (headroom steps). ceph is pinned at 4h; r2 is deliberately untuned.
  10. One component include protects one volume. A second PVC needs a second Flux Kustomization with APP set to the claim name.
  11. Never put this component in a Kustomization with wait: true. The standing Restore is Ready=False (AwaitingPvcDataSourceRef) for its whole life on an already-bound claim. pgadmin and calibre-web-automated keep a split shape: the backup Kustomization must not dependsOn the claim Kustomization (greenfield deadlock).
  12. Cron accepts bare H only. Namespace r2 hours are fixed. Both schedules pin timezone: America/New_York so the VolSync stagger survives DST. schedules-timezone.md
  13. A Succeeded snapshot proves nothing until .status.stats covers the volume. SecurityContextCompatible is positive-only; its absence is not a failure. proof-ledger.md
  14. 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 everysec recovered 2174 of 2199 nodes; stock RDB-only recovered 200 of 2199. Both startups looked healthy.
  15. CloudNativePG has one live barman destination per Cluster. A second ScheduledBackup with its own barmanObjectName reports completed and writes to the original store (cloudnative-pg#7778). The off-site copy is a suspended rclone copy mirror, never sync. kubernetes/apps/base/database/cloudnative-pg/offsite-mirror/README.md.
  16. 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.

Read the full file on GitHub · 124 lines

Changes

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.

  1. 24d ago Changed · +2 lines b209fb47a30b
  2. 26d ago Changed · -45 lines · -42 tokens per session 58d9d2d3c95c
  3. 28d ago Changed d3a8b5b9986c
  4. 1mo ago Changed cba3e43e0aa1
  5. 1mo ago Changed ae4e71a114f5
  6. 1mo ago Changed a9c312609fee
  7. 1mo ago First seen · 167 lines · 112 tokens per session scan A 4ff6f740e9ec

Subscribe to this mod's changes

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.

Related

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…

google/skills · 83 tokens

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…

google/skills · 85 tokens

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…

google/skills · 171 tokens

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…

Jeffallan/claude-skills · 71 tokens

nemo-automodel-launcher-config

Configure NeMo AutoModel job launches for interactive runs, Slurm clusters, and SkyPilot cloud execution.

NVIDIA/skills · 30 tokens

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".

microsoft/skills · 78 tokens