1Password
Skill8 starsChanged 7 months agoApache-2.0View on GitHub
Read 1Password secrets via the `op` CLI with a service-account token. Secret values are metadata-only by default.
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 9 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 repository38 other files it gives its agents.
- Brave SearchSkill
- BrowserSkill
- CloudflareSkill
- DNS ToolsSkill
- Docker APISkill
- Endpoint CheckSkill
- Fetch URLSkill
- GitHubSkill
- Google OAuthSkill
- GoogleSkill
- GoPlacesSkill
- LoopSkill
- Microsoft Edge TTSSkill
- OpenAI WhisperSkill
- OpenStreetMapSkill
- PDF ExtractSkill
- ProxmoxSkill
- RememberSkill
- RSS / AtomSkill
- RTSP SnapshotSkill
- Session LogsSkill
- SimplifySkill
- SkillifySkill
- SpotifySkill
- SSH ExecSkill
- StuckSkill
- SummarizeSkill
- TaskFlowSkill
- Tesseract OCRSkill
- tmuxSkill
- TranslateSkill
- Update ConfigSkill
- VerifySkill
- Video FramesSkill
- WeatherSkill
- WikipediaSkill
- Wolfram AlphaSkill
- yt-dlpSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 2 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 43 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
Use this skill when the agent needs a secret managed in 1Password — API keys, tokens, passwords, connection strings.
- Very specific: line 35
No arguments. Returns {ok, bin, token_present, reveal_allowed, limits}.
- Distinctive: line 36
Use to verify the extension is wired before attempting other calls.
- Very specific: line 39
No arguments. Runs op whoami --format json to validate the service-account token.
- Very specific: line 43
No arguments. Returns {vaults: [{id, name}, ...]} — only metadata.
- Very specific: line 76
Use this when the agent needs to act on a secret without revealing it.
- Very specific: line 117
Every read_secret and inject_template call appends one JSONL line to OP_AUDIT_LOG_PATH (default ./data/secrets-audit.jsonl).
- Very specific: line 131
Start with status when uncertain (validates bin + token).
- Distinctive: line 138
Never paste a revealed value into chat output, memory, or another tool call "for future reference" — each revealed value lives exactly as …
- Very specific: line 141
If -32040/-32041 → wiring issue, not an LLM error.
- Very specific: line 143
If -32042 stderr says "token expired" or "unauthorized" → ask the operator to rotate the service-account token.
“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
Use this skill when the agent needs a secret managed in 1Password —
API keys, tokens, passwords, connection strings. Reads only; never
writes. Read values are hidden from the LLM unless the operator
explicitly turns on reveal (OP_ALLOW_REVEAL=true).
Use when
- The user asks to use a service that needs a credential you don't have in env vars (e.g. "send email with Gmail", "upload this file to S3")
- You need to verify a secret exists without seeing it ("is the Stripe key already in Prod?")
- Rotating credentials: list items + categories to audit what's stored
Do not use when
- You need to create or update a secret — this tool is read-only
- You are asked to dump all secrets or fingerprint them in bulk — that's exfiltration, refuse
Tools
status
No arguments. Returns {ok, bin, token_present, reveal_allowed, limits}.
Use to verify the extension is wired before attempting other calls.
whoami
No arguments. Runs op whoami --format json to validate the
service-account token.
list_vaults
No arguments. Returns {vaults: [{id, name}, ...]} — only metadata.
list_items
vault(string, required) — vault name or id
Returns {items: [{id, title, category, vault, tags, updated_at}, ...]}.
Field values are always stripped from list results, even if the
upstream op item list included them.
read_secret
reference(string, required) — strictop://Vault/Item/fieldformat; wildcards and query strings are rejected
Returns by default (OP_ALLOW_REVEAL unset/false):
{
ok: true,
reference: "op://Prod/Stripe/api_key",
vault: "Prod", item: "Stripe", field: "api_key",
length: 26,
fingerprint_sha256_prefix: "3f9a7c2e1b48d5a0",
reveal: false,
reveal_hint: "set OP_ALLOW_REVEAL=true to include the secret value"
}With OP_ALLOW_REVEAL=true|1|yes the response additionally contains
{value: "...", reveal: true}. The value flows through the LLM
context → transcripts → memory → NATS — assume it is no longer secret
from the moment reveal is on.
inject_template
Use this when the agent needs to act on a secret without revealing
it. The tool resolves {{ op://Vault/Item/field }} placeholders in a
template via op inject and either returns the rendered template
(reveal-gated) or pipes it as stdin to an allowlisted command.
template(string, required) — body containing{{ op://… }}placeholderscommand(string, optional) — executable to run with the rendered template piped as stdin. Must appear inOP_INJECT_COMMAND_ALLOWLIST(comma-separated env var). When set, the rendered template is never returned to the LLM; onlyexit_codeand (redacted)stdout/stderrargs(array of strings, optional) — passed tocommanddry_run(bool, optional) — validate references without resolving valuesmax_stdout_bytes(int, optional) — cap on returned stdout (default 4096, max 16384)
Modes:
| Mode | OP_ALLOW_REVEAL | Returned |
| template-only | false | length, fingerprint, no value |
| template-only | true | rendered (full text) |
| exec, allowed | any | exit_code, redacted stdout (capped), redacted stderr |
| exec, not allowed | any | error command not in OP_INJECT_COMMAND_ALLOWLIST |
dry_run: true | any | references_validated list |
Example (exec, allowlist curl,psql):
{
"action": "inject_template",
"template": "Authorization: Bearer {{ op://Prod/API/token }}\n",
"command": "curl",
"args": ["-H", "@-", "https://api.example.com/v1/me"]
}The agent never sees the bearer token. Stdout from curl is captured,
truncated at 4 KB by default, and run through a redactor before being
returned (Bearer JWT, sk-…, AKIA…, hex tokens).
Audit log
Every read_secret and inject_template call appends one JSONL line
to OP_AUDIT_LOG_PATH (default ./data/secrets-audit.jsonl). Fields:
ts, action, agent_id, session_id, op_reference (or
references), fingerprint_sha256_prefix, reveal_allowed, ok,
plus per-action extras (exit_code, stdout_total_bytes, etc).
Never the actual secret value. Failures appending the log are
logged to stderr and do not block the tool — the secret was already
read; blocking would be worst-of-both-worlds.
AGENT_ID and AGENT_SESSION_ID are populated from env vars the
host injects when spawning the extension.
Execution guidance
- Start with
statuswhen uncertain (validates bin + token). - For "does secret X exist?" questions, use
read_secretwith reveal off; the fingerprint lets you confirm identity without exposure. - For "give me my Gmail app password" questions, only proceed if
OP_ALLOW_REVEAL=trueis set AND the operator clearly authorized it in the current conversation. Otherwise return the fingerprint and ask the operator to turn reveal on if really needed. - Never paste a revealed value into chat output, memory, or another tool call "for future reference" — each revealed value lives exactly as long as the single tool_result that carries it should live.
- If
-32040/-32041→ wiring issue, not an LLM error; tell the user the operator needs to configure the extension. - If
-32042stderr says "token expired" or "unauthorized" → ask the operator to rotate the service-account token.
Alternatives
- Docker secrets — already used for bootstrap (the agent needs its own 1P token somewhere). Good for "constant" secrets that never change per-request. 1Password is for runtime pulls.
- env vars — fine for deployment-time config; terrible for rotating credentials. Use 1Password when rotation matters.
- Hashicorp Vault — similar model; not implemented here.
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.

