1password
Skill0 starsChanged 2 months agoMITView on GitHub
Injects 1Password secret references into a trusted child process with `op run`. Use when a command needs an API key, token, or other secret stored in 1Password. The child receives plaintext; stdout/stderr masking is exact-string only.
43 other projects use a version of this.
Adopted by
Most recently taken up by
- lucas-saldanha-werneck/Claude-1Passwordtheir own version, first seen Nov 8, 2026
- QVerisAI/QVerisBottheir own version, first seen Nov 1, 2026
- EtanHey/golemstheir own version, first seen Oct 28, 2026
- OpenClawAndroid/openclaw-android-assistanttheir own version, first seen Oct 17, 2026
- HybridAIOne/hybridclawtheir own version, first seen Oct 13, 2026
- bighamx/openclaw-android-node-apktheir own version, first seen Oct 9, 2026
Used with
Projects with it also use openclaw-performance, plugin-sdk-impact and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
clawdbotSkillopenclaw-performance
Performance work in OpenClaw: a slow or heavy flow (latency, CPU, memory, SQL, RPC, renders), writing or reviewing a perf PR, or adding a cache. Count the work, delete waste first, cache last.
Also in 7 projects that use this
clawdbotSkillplugin-sdk-impact
Count Plugin SDK consumers across live ClawHub releases and bundled OpenClaw plugins before deprecation, removal, or behavior changes; supports public release-date filters.
Also in 7 projects that use this
hkyutongSkillnode-connect
Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale, or plugins.entries.device-pair.config.publicUrl.
Also in 18 projects that use this
molt-botSkilldiscord-e2e
Test Discord with Convex-leased QA bots: check credentials without a Gateway, exercise owned messages, or prove OpenClaw replies, files, threads, reactions, streaming, and typing. Distinguish API and Gateway evidence from manual user interactions.
Also in 10 projects that use this
molt-botSkillopenclaw-repair-sweep
Run scoped OpenClaw issue/PR repair campaigns: coordinate workers, prove root causes, and land or close verified work under the requested authority.
Also in 10 projects that use this
AtomicBot-aiSkilltaskflow-inbox-triage
Also in 6 projects that use this
- +2 more from molt-bot
Other versions43 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 43
- moltbot/clawdbot★ 394ksame name
- steipete/warelay★ 394ksame name
- steipete/clawdis★ 394ksame name
- moltbot/moltbot★ 394ksame name
- clawdbot/clawdbot★ 394ksame name
- openclaw/openclaw★ 394ksame name
- molt-bot/clawdbot★ 391ksame name
- spinabot/brigade★ 11ksame name
- the-open-agent/openagent★ 5.7ksame name
- casibase/casibase★ 5.7ksame name
33 more not listed
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 repository4 other files it gives its agents.
- code-styleSkill
- siteSkill
- teach-meSkill
- tldrSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 5 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 43 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 15
Never ask the user to paste a token into chat.
- Very specific: line 68
When one task genuinely needs several commands to share the injected environment, op run -- bash -s with a single-quoted heredoc is allowed:
- Very specific: line 83
Prefer an exact item or secret reference over vault enumeration.
- Distinctive: line 85
If the vault is unknown and its name is necessary:
- Very specific: line 100
If the exact item name is known, inspect it without --reveal:
- Distinctive: line 117
If a tag or category is known, filter at the source:
- Distinctive: line 167
Never print, log, echo, or commit the token or a resolved secret.
- Very specific: line 168
Never use op read alone, --reveal, --no-masking, or OP_RUN_NO_MASKING.
- Distinctive: line 169
Do not create, modify, delete, move, or share items.
- Very specific: line 170
If the keychain item is missing or authentication fails, stop.
“Common” is measured: kept by at least 6 in 10 of the 43 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
1Password
Authentication uses a 1Password service-account token in the macOS login keychain. The agent reads that token into a shell variable, then into op's environment. The real security boundary is a dedicated, read-only, vault-limited service account — not this skill's rules.
Never ask the user to paste a token into chat. Never run setup for them.
Each op snippet below is one complete script. Run it in a single shell. Do not reuse $token in a later tool call.
One-time setup
The user runs this in their own Terminal and pastes the ops_... token at the prompt. The subshell exits on a failed or empty read so security never runs; EOF or a blank paste cannot overwrite an existing item.
(
printf 'Token: '
stty -echo
trap 'stty echo; unset T' EXIT
if ! IFS= read -r T || [ -z "$T" ]; then
echo "No token entered; keychain unchanged." >&2
exit 1
fi
printf '\n'
security add-generic-password -U -a "$USER" -s op-agent -w "$T"
rc=$?
unset T
exit "$rc"
)The interactive security add-generic-password -w prompt (no value) truncates at 128 characters and stores a broken token. Passing -w "$T" stores the full token but exposes it in process arguments while security runs. History records the literal $T, not the value. The login keychain is readable by other processes as this user while logged in.
Use a secret
Load, validate, invoke, capture status, and unset in this one block. If the keychain read fails or is empty, exit 1 before op. Do not fall back to op signin, an environment token, or the desktop app.
The exit status is held in rc, not status: status is a read-only special variable in zsh, and assigning to it aborts the block with read-only variable: status after the real work has already run.
if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
API_TOKEN='op://Vault/Item/password' \
op run -- trusted-command
rc=$?
unset token
exit "$rc"OP_BIOMETRIC_UNLOCK_ENABLED=false disables desktop-app integration. A failed keychain read otherwise becomes an empty OP_SERVICE_ACCOUNT_TOKEN, which op treats as "no service account" and may sign in as the human user with every vault.
Field names: password for Login/Password items, credential for API Credential items. Use the field the user named. Do not guess by retrying fields.
trusted-command is the smallest executable that must read the secret from its environment. Do not wrap package-manager scripts (npm test, yarn, pnpm), bash -c, sh -c, env, a script file on disk, or other untrusted code. Do not put the resolved secret on the command line.
When one task genuinely needs several commands to share the injected environment, op run -- bash -s with a single-quoted heredoc is allowed:
op run -- bash -s <<'SCRIPT'
set -euo pipefail
# commands, written inline, never saved to disk
SCRIPTThe quoted delimiter stops the parent shell expanding anything, and stdin keeps the script out of process arguments — which is why bash -c "$script" stays forbidden. The script must be written inline in that same block and must be your own; this is not permission to pipe in code from elsewhere.
op run sets plaintext in the child environment. It masks the exact secret string on the child's stdout and stderr only. A value written to a file, sent over the network, encoded, or printed in part is not masked.
Find the narrowest match
Prefer an exact item or secret reference over vault enumeration. Use the same load / validate / unset / exit shape; only the op command changes.
If the vault is unknown and its name is necessary:
if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
op vault list
rc=$?
unset token
exit "$rc"If the exact item name is known, inspect it without --reveal:
if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
op item get "Item" --vault "Vault"
rc=$?
unset token
exit "$rc"This may display metadata and non-concealed fields (usernames, URLs, notes). Use it only when that output is needed.
If a tag or category is known, filter at the source:
if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
op item list --vault "Vault" --tags "project-name"
rc=$?
unset token
exit "$rc"if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
op item list --vault "Vault" --categories "API Credential"
rc=$?
unset token
exit "$rc"The CLI has no free-text title-search flag. When the user asks to search a known vault, filter locally and return only IDs and titles:
if ! token="$(security find-generic-password -a "$USER" -s op-agent -w)" || [ -z "$token" ]; then
echo "1Password keychain item missing. Ask the user to redo setup." >&2
exit 1
fi
set -o pipefail
OP_SERVICE_ACCOUNT_TOKEN="$token" \
OP_BIOMETRIC_UNLOCK_ENABLED=false \
op item list --vault "Vault" --format=json |
jq -r --arg q "search-term" \
'.[] | select(.title | ascii_downcase | contains($q | ascii_downcase)) | [.id, .title] | @tsv'
rc=$?
unset token
exit "$rc"This narrows agent output, but op still retrieves all item metadata for that vault. It is not an access-control boundary. If nothing matches, ask the user instead of falling back to an unfiltered list.
Rules
- Never print, log, echo, or commit the token or a resolved secret.
- Never use
op readalone,--reveal,--no-masking, orOP_RUN_NO_MASKING. - Do not create, modify, delete, move, or share items. The skill cannot enforce this; use a read-only service account limited to the agent vault.
- If the keychain item is missing or authentication fails, stop. Do not fall back to
op signin, an environment token, or asking for a token in chat.
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.

