Keepkeys
Store named secrets outside the conversation and use them through KeepKeys without returning plaintext to the agent. Use when a user asks to add, list, remove, or use a secret with KeepKeys.From its SKILL.md
npx -y skills add barnlabs/keepkeys --skill keepkeysAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 23 days oldThe repository was created 23 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 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.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.0 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
KeepKeys
KeepKeys gives the agent use of a local secret, not its plaintext value.
Non-negotiable boundary
- Never ask the user to paste, type, dictate, attach, or expose a secret in chat.
- Never request a plaintext secret from KeepKeys; no such tool exists.
- Never read or inspect the clipboard. The native KeepKeys helper may read it only after the user explicitly presses Paste & Store.
- Never fall back to an environment file, shell profile, command argument, plugin configuration, log, or transcript.
- Treat friendly names and variable names as sensitive metadata. Mention only what the current task needs.
Store
- If the provider and intended use are unclear, ask only for that non-secret context. Never ask for the credential value.
- Research the credential before opening KeepKeys. Prefer AI-readable official
documentation such as
llms.txt, OpenAPI specifications, plain-text API references, or official SDK documentation. If none is available, use the provider's official human-readable credential or API documentation. Use one to three official HTTPS links and do not invent URLs. - Choose the short friendly name, uppercase environment-variable name, useful one-line description, provider, and documentation links. These are agent-owned metadata; never ask the user to type or edit them.
- Call
keepkeys_storewith only those non-secret metadata fields. - KeepKeys shows the metadata as read-only context. The user copies the credential elsewhere, then presses Paste & Store. The native helper reads the clipboard only on that click, clears the current clipboard immediately, and stores the value without returning it through the agent protocol. The system clipboard is shared with same-user software, so tell the user to copy only when the native Store window is ready and click immediately.
- Report only the success or cancellation result. Never ask for the value before or after the tool call.
Use
- Identify the friendly name, purpose, absolute executable path, fixed argument list, and working directory.
- Prefer a direct executable. Do not use a shell, interpreter command string,
env,printenv, debugging dump, or another target likely to reveal environment variables. - Call
keepkeys_run. KeepKeys shows the exact request in a native confirmation window and retrieves the credential only after the user approves it. - Treat output marked
[REDACTED BY KEEPKEYS]as intentionally unavailable. Never try to reconstruct or encode the secret. - A target program and its descendants receive the secret. Use only a target the user intends to trust for this task.
List and remove
keepkeys_listreturns friendly names, variable names, descriptions, providers, and official documentation links so a future task can select and use the right credential without reading its value. Call it only when the user asks to list KeepKeys metadata or that metadata is necessary to complete the user's current authorized task.keepkeys_removeopens a native destructive-action confirmation. Use it only when the user asks to delete that named secret.keepkeys_statuschecks plugin/helper availability.keepkeys_doctorperforms a temporary native-vault round trip with a generated test value and removes it; it never uses a user secret.
If KeepKeys is unavailable or unsupported, report the exact setup problem. Do not substitute a less safe storage path.
Skills-only distribution fallback
A skills-only distribution may omit local MCP configuration. On macOS, Windows, or Linux, if the keepkeys_* tools are not present:
- Resolve this installed skill's own directory. Use the first existing Node launcher
from these two exact distribution-relative paths:
- bundled plugin:
../../scripts/keepkeys-cli.mjs - repository Agent Skill:
../../plugins/keepkeys/scripts/keepkeys-cli.mjsDo not searchPATH, the home directory, or any other location for akeepkeysexecutable.
- bundled plugin:
- Execute
node ABSOLUTE_LAUNCHERwith an argument array:- store:
store --name NAME --variable VARIABLE --description DESCRIPTION --provider PROVIDER --documentation-url URL [--documentation-url URL ...] - list:
list - remove:
remove --name NAME - status:
status - doctor:
doctor - run:
run --name NAME --purpose PURPOSE [--cwd ABSOLUTE_DIR] -- ABSOLUTE_PROGRAM ARG...
- store:
- Quote each argument as data. Do not compose a command string, use
eval, or pass through a shell executable.
If the surface cannot execute the bundled local launcher, KeepKeys is unsupported there and must fail closed.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.