secrets-vault
Skill1 starsChanged 55 days agoMITView on GitHub
Encrypted-in-repo secret vault (SOPS + age) so a lost laptop never means lost keys: every project's secrets are committed to git as age CIPHERTEXT and a fresh `git clone` + ONE master key restores everything (`sops -d`). A repo leak yields only ciphertext. Implements the R-SECRETS-VAULT doctrine. Use when the user says "vault", "encrypt my secrets", "secret backup", "recover my keys", "commit my API keys", "sops", "age", "never lose a key", or in French "coffre-fort", "chiffrer mes secrets", "sauvegarder mes cles", "recuperer mes cles". NOT for live secret INJECTION into a running app (that stays a plaintext .env in ~/.omega); NOT for public repos (they NEVER carry ciphertext).
- Reads credentials
1 other project uses a version of this.
Adopted by
Most recently taken up by
- ghively/infra-opstheir own version, first seen Jun 9, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- ghively/infra-ops★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository45 other files it gives its agents.
- ad-creativeSkill
- agent-ecosystem-watchSkill
- ai-logic-osSkill
- album-masteringSkill
- alexandriaSkill
- alignment-osSkill
- analyzing-financial-statementsSkill
- applying-brand-guidelinesSkill
- blueprint-osSkill
- brainstorm-osSkill
- builder-osSkill
- changelog-adoptSkill
- cleanupSkill
- cold-emailSkill
- content-strategySkill
- creating-financial-modelsSkill
- design-osSkill
- diagramSkill
- duoSkill
- execution-osSkill
- growth-engineSkill
- habit-tracker-osSkill
- higgsfield-generateSkill
- higgsfield-soul-idSkill
- identity-shift-osSkill
- intuitive-osSkill
- journal-osSkill
- launch-strategySkill
- marketing-strategistSkill
- market-research-osSkill
- market-researchSkill
- mindset-osSkill
- monitorSkill
- nuclear-cleanupSkill
- omg-auditsSkill
- pixelragSkill
- product-marketing-contextSkill
- project-tidySkill
- ramflushSkill
- seductive-osSkill
- social-contentSkill
- staxSkill
- stepper-osSkill
- storyteller-osSkill
- watchSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
Only age ciphertext whose plaintext is machine-verified absent is committable, and only to a PRIVATE repo.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
secrets-vault — encrypted-in-repo secret recovery (SOPS + age)
The operator's hard goal: lose the laptop, clone the GitHub repo, recover ALL API keys. This skill delivers exactly that, safely, under R-SECRETS-VAULT — a narrowing of L0/R-ENV, never an exception:
- Plaintext secret values + the master private key never touch a repo.
~/.omegastays the plaintext source of truth; the vault is its encrypted recovery mirror. - Only age ciphertext whose plaintext is machine-verified absent is committable, and only to a PRIVATE repo. Public repos (OmegaOS, rmux) carry ciphertext never (harvest-now-decrypt- later + readable key names are a permanent leak).
- One master age keypair at
~/.omega/secrets/age/master.txt(chmod 600). Its public recipient is committed in.sops.yaml.
The two stores
| Store | What | Why |
agentik-os/omega-vault (PRIVATE) | SSOT superset: projects/<name>/vault/ + core/vault/ | ONE clone recovers EVERYTHING. Holds partner-owned / no-remote / orphan / central ~/.omega secrets. |
in-repo vault/ (operator-owned PRIVATE repos) | that project's own secrets, mirrored | a project clone is self-sufficient |
Tools (bin/, pure bash + sops + age — no node/bun/python on the recovery path)
vault-add.sh <src> <vault_dir> <restore_path> [name]— encrypt one file in, append MANIFEST, prove the roundtrip (KV map for dotenv/json, byte for binary), gate onsops filestatus.vault-verify.sh <vault_dir>— adversarial re-check: every file encrypted + decrypts + no leak.vault-restore.sh [--dry-run] [vault_dir]— the recovery button. ReadsMANIFEST.tsv,sops -devery entry back to its real path, chmod 600.vault-lib.sh— shared helpers (format routing, filestatus gate, KV metric).
Format routing (council-verified at runtime — do NOT assume dotenv everywhere)
- plain
KEY=VALUE.env→ sops dotenv - multiline / PEM / JWT / inline-JSON value → binary (sops dotenv HARD-FAILS on multiline:
invalid dotenv input line) .json→ json (note: encrypts ALL string values, incl. non-secret names).toml/*.git-credentials/npmrc/.sh/.pem→ binary (no native TOML/INI type)
Proof is runtime, not vibes (L1)
- A dotenv roundtrip is NOT byte-identical (comments become encrypted blobs, blank lines drop,
empty values stay plaintext) — verify the parsed KEY=VALUE map, never
cmp/sha the file. gitleaksscans SOPS ciphertext CLEAN — it is NOT the encryption proof. The proof issops filestatus <f>=={"encrypted":true}.sops -dinherits umask (0644) — restore chmods 0600 (git-credentials, npmrc especially).
Custody (the one thing to guard)
The single master key honors the "one key" goal but is a total-compromise single point. Its backup
is MANDATORY and TEST-verified: operator password manager + an OFFLINE copy (paper/steel/
USB in a safe), stored beside the GitHub 2FA recovery codes and a bootstrap clone token that
lives OUTSIDE omega-vault (else recovery cannot bootstrap). NEVER put the master key in GitHub
Actions (that recouples key + ciphertext) — mint a scoped CI recipient if CI ever needs decrypt,
never the master. See RECOVERY.md.
Incident policy (a plaintext secret already pushed)
Rotation is the default remediation: rotate the live credential → untrack + placeholder-scrub → history-rewrite only on operator sign-off (force-push is R-COUNCIL). Ciphertext-in-history and pushed-plaintext-in-history are both readable forever; master-key rotation does not remediate a leaked value — only rotating the value does. Keep the vault in sync on every rotation (a stale vault silently restores a dead key).
v2 hardening (recorded, council dissent)
Passphrase-wrap (age -p) or yubikey-back the at-rest identity; split a recovery key (PM/offline
only) from per-project operational recipients for real cryptographic R-PROJ blast-radius containment.
vault-lib.sh already supports multiple recipients via VAULT_RECIPIENT.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

