Kdbx
Read/write KeePassXC .kdbx vaults to manage per-project/per-env credentials (init/get/set/list/delete/run/export/import/check/envs/mv/rekey). Replaces .env as the source of truth; injects secrets into commands without printing them. Use when a project needs to store, retrieve, or run commands with secrets/API keys/tokens.From its SKILL.md
npx -y skills add yarrasys/extensions --skill kdbxAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `kdbx --version` and 1 more.
- fetches URLsInstructs the agent to fetch 1 URL, including https://raw.githubusercontent.com/yarrasys/kdbx/main/install.sh.
SKILL.md
5.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
kdbx — KeePassXC credentials skill
Manage a project's secrets in per-project, per-env KeePassXC vaults
(<keepassxc-dir>/<project>/<env>.kdbx, key-file-only, KDBX4+Argon2) and get them
into tools without printing them into the transcript, logs, or shell history.
When to use
- A project needs to store / retrieve / rotate secrets, API keys, or tokens.
- You need to run a command that requires secrets in its env (
kdbx run -- …). - You're replacing a
.envfile with a managed source of truth.
Discovery is automatic: kdbx walks up from the cwd to a committed .keepassxc.json
(see references/schema.md). Active env = --env › $KDBX_ENV › the pointer's defaultEnv.
Invocation
kdbx is a standalone binary. Check it is present, and install it if not:
kdbx --version # if this fails, install:
curl -LsSf https://raw.githubusercontent.com/yarrasys/kdbx/main/install.sh | sh
Then invoke operations directly from the project directory:
kdbx <op> [args]
Discovery is automatic: kdbx walks up from the cwd to a committed .keepassxc.json.
Active env = --env › $KDBX_ENV › the pointer's defaultEnv.
Other install methods: brew install yarrasys/tap/kdbx, go install github.com/yarrasys/kdbx@latest (Go 1.25+), or the ghcr.io/yarrasys/kdbx container image.
Legacy (uv) fallback. The original Python implementation still lives at
skills/kdbx/kdbx.py and is invoked as uv run --locked <SKILL_DIR>/kdbx.py <op>. It is
frozen as the reference implementation, receives bug fixes only, and will be archived at
kdbx v1.0. Prefer the binary.
Operations
--json is a global flag: it renders machine-readable output for the read operations
(get / list / check / envs).
| Op | Use |
|---|---|
init [--env E] | create the vault + keyfile for an env (refuses to overwrite; 0600) |
set PATH [--var NAME] [--from-env VAR] [--raw] | store a secret (value via stdin/--from-env, never argv); optionally register a var mapping |
get PATH [--reveal|--clip] | masked by default; --reveal prints; --clip copies (auto-clears) |
list [GROUP] | list entry paths (never values; excludes Recycle Bin) |
delete PATH [--purge] | soft-delete to Recycle Bin; --purge removes permanently |
mv OLD NEW | rename/move an entry; rewrites affected var mappings |
run [--env E] -- CMD… | inject the env's mapped vars into a child process and exec it |
export [--out F] | render mapped vars as a 0600 dotenv (for tools that need a file) |
import FILE | read an existing .env into the vault + var map |
check | verify every mapped var resolves (non-zero exit on drift) |
envs | list configured envs; mark the active one |
rekey [--env E] | rotate the keyfile |
mcp | run a read-only MCP server over stdio (kdbx_list/envs/check/get-masked/run) |
guard --hook pretooluse | evaluate a PreToolUse hook payload on stdin; deny agent-issued human-only ops |
Exit codes: 0 ok · 2 not-found · 3 locked/keyfile-missing · 4 destructive op not confirmed
(delete --purge / rekey without an interactive y) · 5 drift · 6 vault-changed · 7 runtime.
Roles — who runs what
🔑 The agent reads and uses secrets; the human performs writes.
- Agent (you, in this session):
run,get(masked),list,check,envs,init. For anything that mutates the vault (set/delete/mv/import/rekey) or exposes a value (get --reveal/--clip,export), emit the exact command for the human to run in their own terminal (or via!kdbx …in this prompt) — do not run it yourself. - Human: runs those write/expose commands; irreversible ones (
delete --purge,rekey) ask for an interactivey/N. - The kdbx plugin enforces this with a
PreToolUsehook (your write commands are blocked; the human's!commands pass through untouched). The bare skill states it as a contract. - The real prod boundary is key-file possession, not a name match — you can only reach an env's secrets if its key file exists on this machine.
Security — do / don't (read before using)
- 🔑 Never author or observe a secret value. Your job is the entry PATH / var-name only.
To store a value, the human runs
setand pipes the secret on their terminal (kdbx set api/openai < secret.txt, or types it at thegetpassprompt). - ❌ Never do
echo SECRET | kdbx set …orexport SECRET=…; kdbx set --from-env SECRETinside this session — that puts the plaintext in the transcript. Both are forbidden. - Prefer
kdbx run -- <cmd>(inject, never print) overexport/get --reveal. - The keyfile is the sole secret; losing it makes the vault unrecoverable. Back it up out-of-band.
References
references/schema.md— the full.keepassxc.jsonschema + path grammar.references/fallback.md— read-onlykeepassxc-clicommands (per-OS binary locations).references/security.md— threat model, trust boundary, rotation / leak runbook.
What ships with it: 37 files
530.9 KB alongside SKILL.md, 25 of them executable
docs/
- demo.gif283.8 KB
- demo-setup.shruns1.1 KB
- demo.tape1.8 KB
- superpowers/plans/2026-06-27-kdbx-skill.md55.5 KB
- superpowers/specs/2026-06-27-kdbx-skill-design.md25.0 KB
kdbx_core/
- context.pyruns1.3 KB
- __init__.pyruns22 B
- launcher.pyruns2.9 KB
- locking.pyruns674 B
- ops_extra.pyruns4.8 KB
- ops.pyruns5.5 KB
- paths.pyruns1.3 KB
- pointer.pyruns2.7 KB
- secretio.pyruns4.4 KB
- vault.pyruns6.4 KB
references/
- fallback.md1.3 KB
- schema.md2.1 KB
- security.md2.3 KB
tests/
- conftest.pyruns400 B
- test_confirm.pyruns2.7 KB
- test_context.pyruns1.5 KB
- test_integration.pyruns4.5 KB
- test_launcher.pyruns4.8 KB
- test_locking.pyruns513 B
- test_ops_crud.pyruns4.4 KB
- test_ops_extra.pyruns2.7 KB
- test_paths.pyruns1.2 KB
- test_pointer.pyruns1.9 KB
- test_secretio.pyruns2.1 KB
- test_vault_create.pyruns1.2 KB
- test_vault_crud.pyruns2.0 KB
- AGENTS.md2.5 KB
- CHANGELOG.md3.6 KB
- kdbx.pyruns996 B
- kdbx.py.lock80.8 KB
- NOTICE1.3 KB
- README.md9.0 KB