shepherdjerred/monorepo/packages/dotfiles/dot_agents/skills/op-helper/SKILL.md
op-helper
Helps with 1Password CLI (op) for secure secret retrieval and management When user mentions 1Password, secrets, op command, or asks about credential management
- Source repository stars
- 125
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-08-25
- Source checked
- 2026-08-25
Decision brief
What it does: where it fits
Helps with 1Password CLI (op) for secure secret retrieval and management When user mentions 1Password, secrets, op command, or asks about credential management
Not for
- Don't commit op:// references to public repositories without proper access controls
- Don't use op item get --reveal in scripts that might log output
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/shepherdjerred/monorepo --skill "packages/dotfiles/dot_agents/skills/op-helper"Inspect the Agent Skill "op-helper" from https://github.com/shepherdjerred/monorepo/blob/d1ae0a6d2f19838bb4df49402cb8ac4dc7113df8/packages/dotfiles/dot_agents/skills/op-helper/SKILL.md at commit d1ae0a6d2f19838bb4df49402cb8ac4dc7113df8. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Service Account Setup
For CI/CD environments, use service accounts with minimal permissions:
For CI/CD environments, use service accounts with minimal permissions: - 02
What's New in 2025 (v4+)
Concealed Output by Default: Sensitive fields now require --reveal flag to display
Concealed Output by Default: Sensitive fields now require --reveal flag to displayPerformance: Item ID references are faster than name-based lookupsCaching: Enabled by default on macOS/Linux for faster responses - 03
IMPORTANT: Minimize op Invocations
Every op CLI invocation requires the human operator to authenticate (biometric/password). This is expensive in terms of user friction. Use as few op calls as possible:
Retrieve multiple fields in one call using --format json instead of separate calls per fieldCombine lookups when possible (e.g. get the full item once, then extract fields from the JSON)Never loop over items with individual op calls when a single op item list --format json can get everything - 04
IMPORTANT: Do NOT gate work on op whoami or op signin
On a local machine, op typically uses the 1Password desktop-app integration with biometric unlock. Auth then happens per command (a Touch ID / system prompt on each call) — there is no long-lived CLI session token in the shell. Two behaviors routinely mislead agents into wrongly…
op whoami reports a false negative. It frequently printsop signin is effectively a no-op here. Non-interactively it printsOn a local machine, op typically uses the 1Password desktop-app integration with biometric unlock. Auth then happens per command (a Touch ID / system prompt on each call) — there is no long-lived CLI session token in th… - 05
Readiness == a real read succeeds (triggers the biometric prompt if needed).
op vault list auto-approved; returns vaults when op is usable
op vault list auto-approved; returns vaults when op is usable
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
# ...or just run the command you actually need and check its exit code:Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 125 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- shepherdjerred/monorepo
- Skill path
- packages/dotfiles/dot_agents/skills/op-helper/SKILL.md
- Commit
- d1ae0a6d2f19838bb4df49402cb8ac4dc7113df8
- License
- GPL-3.0
- Collected
- 2026-08-25
- Default branch
- main
View the original SKILL.md
1Password Helper Agent
What's New in 2025 (v4+)
- Concealed Output by Default: Sensitive fields now require
--revealflag to display - Performance: Item ID references are faster than name-based lookups
- Caching: Enabled by default on macOS/Linux for faster responses
- 1Password Environments: New integration for local .env file access
- JSON Templates: Create items securely with
op item template
Overview
This agent helps you work with the 1Password CLI (op) for secure secret retrieval, credential management, and secret injection into your applications and scripts.
IMPORTANT: Minimize op Invocations
Every op CLI invocation requires the human operator to authenticate (biometric/password). This is expensive in terms of user friction. Use as few op calls as possible:
- Retrieve multiple fields in one call using
--format jsoninstead of separate calls per field - Combine lookups when possible (e.g. get the full item once, then extract fields from the JSON)
- Never loop over items with individual
opcalls when a singleop item list --format jsoncan get everything
IMPORTANT: Do NOT gate work on op whoami or op signin
On a local machine, op typically uses the 1Password desktop-app integration
with biometric unlock. Auth then happens per command (a Touch ID / system
prompt on each call) — there is no long-lived CLI session token in the shell.
Two behaviors routinely mislead agents into wrongly concluding 1Password is
unavailable:
op whoamireports a false negative. It frequently prints[ERROR] account is not signed inand exits1even though the very next real operation (op vault list,op item get,op read) succeeds.whoamiis looking for a shell session token that the desktop-app integration never populates — it is not a reliable readiness check in this setup.op signinis effectively a no-op here. Non-interactively it prints nothing and establishes no session; and even if it emitted anexport OP_SESSION_…, each Bash tool call is a fresh subprocess, so the variable cannot persist to the next call. Do not run it as a "make sure we're signed in" step, and do not chainop signin && op whoami.
Do this instead — probe with the real command you need:
# Readiness == a real read succeeds (triggers the biometric prompt if needed).
op vault list # auto-approved; returns vaults when op is usable
# ...or just run the command you actually need and check its exit code:
op item get "<item>" --vault "<vault>" --format json
- If any real
opcall returns data,opis working — regardless of whatop whoamisaid. Proceed. - Only conclude 1Password is unavailable when the actual read you need fails
(non-zero exit and no data). Never ask the user to sign in based on
op whoami/op signinoutput alone. op account listconfirms an account is configured (handy for discovering vault/account names) but is not proof of an active session — it can succeed whilewhoamifails. Use it for discovery, not gating.- Exception — service accounts (
OP_SERVICE_ACCOUNT_TOKEN, e.g. CI): there is a real token, soop whoamiis meaningful there. This caveat is about the local desktop-app + biometric setup, not service-account contexts.
Cloudflare environment-token integration
On the local macOS setup, the shell already exposes the Cloudflare credential as
CF_API_TOKEN; the tracked ~/.local/bin/cf wrapper maps it to
CLOUDFLARE_API_TOKEN for that process only. Never print, paste, or persist the
value. The wrapper deliberately keeps CLOUDFLARE_API_TOKEN out of the ambient
shell so a bare OpenTofu apply still fails closed.
cf auth list is not an authentication probe here. It lists named profiles
stored by the cf CLI and may correctly return an empty list when the command
is authenticated from the environment. Use cf auth whoami, which reports the
environment-token source and validity, or the exact read-only operation needed:
cf auth whoami
cf accounts list
cf zones list
Treat a successful cf auth whoami or API read as proof that Cloudflare
authentication works, regardless of op whoami. Treat a Cloudflare 403 on a
write as an authorization/scope problem, not a 1Password session problem. For
example, creating an API token requires the current credential to have the
account-level Account API Tokens Write permission. Report that missing scope
and do not ask the operator to paste or recreate a token in chat.
CLI Commands
Auto-Approved Commands
The following op commands are auto-approved and can be used safely:
op item list- List items in vaultsop item get- Retrieve item detailsop vault list- List available vaults (best readiness probe — see caveat above)op whoami- Show current user information (⚠️ unreliable as a sign-in check under the desktop-app + biometric setup — see "Do NOT gate work onop whoami" above)
Common Operations
Retrieve a secret:
op item get "Database Password" --fields password
List items in a vault:
op item list --vault "Production"
Get a field from an item:
op item get "API Keys" --fields "stripe_key"
Reveal sensitive fields (v4+):
# Sensitive values concealed by default in v4
op item get "API Keys" --fields password
# Output: ********
# Use --reveal to display actual value
op item get "API Keys" --fields password --reveal
# Output: actual_password_here
Use item IDs for performance:
# Slower (searches by name)
op item get "Production Database"
# Faster (direct ID lookup)
op item get abc123xyz
# Get ID from item list
op item list --format json | jq -r '.[] | select(.title=="Production Database") | .id'
Performance and Caching
1Password CLI v4+ includes automatic caching on macOS and Linux:
# Caching enabled by default (faster repeat queries)
op item get "API Keys" --fields key
# Disable caching if needed
op item get "API Keys" --fields key --cache=false
# Cache persists between commands for faster workflows
Creating Items Securely
Use JSON templates to create items without exposing sensitive values in command history:
# Generate template for login item
op item template get Login > login.json
# Edit template securely
# Add your values, then create:
op item create --template login.json --vault Production
# For server items
op item template get Server | jq '.fields += [{"id":"password","value":"secret"}]' | op item create
Secret Reference Syntax
1Password CLI supports secret references that can be injected into environment variables:
op://vault/item/field
Examples:
# Database URL
export DATABASE_URL="op://Production/PostgreSQL/connection_url"
# API Key
export API_KEY="op://Production/Stripe/api_key"
# SSH Key
ssh-add <(op item get "GitHub SSH" --fields private_key)
Running Commands with Secrets
Inject secrets into command execution:
# Secrets automatically injected, masked in output
op run -- npm start
op run -- docker-compose up
# Disable masking if you need to see secrets in stdout (use carefully!)
op run --no-masking -- env | grep API_KEY
# For scripts that need to capture secret output
SECRET=$(op run --no-masking -- sh -c 'echo $DATABASE_PASSWORD')
Key behaviors:
op runautomatically loads allop://references from environment- Secrets are masked in stdout by default (v4+)
- Use
--no-maskingonly when necessary (logs may expose secrets) - Command runs in a subprocess with secrets injected
Service Account Setup
For CI/CD environments, use service accounts with minimal permissions:
# Set service account token
export OP_SERVICE_ACCOUNT_TOKEN="ops_..."
# Verify authentication
op whoami
Service Account Best Practices:
-
Principle of Least Privilege: Grant only the vaults and permissions needed
# Create service account with read-only access to specific vaults # (Done via 1Password web interface) # Scope: Production vault (read-only), no write access -
Separate Service Accounts per Environment:
- Production deployments: Read-only access to Production vault
- CI/CD testing: Read-only access to Staging vault
- Local development: Use personal accounts, not service accounts
-
Rotate Tokens Regularly: Set up automated rotation policies
-
Monitor Usage: Review service account activity logs regularly
-
Secure Storage: Store tokens in CI/CD secrets, never in code
# GitHub Actions example env: OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
Best Practices
-
Use Item IDs Over Names: ID-based lookups are faster and more stable
# Good: Direct ID reference op item get xyz789abc --fields password # Slower: Name-based search op item get "Production DB" --fields password -
Never Log Secrets: Use
--revealcarefully, avoid in scripts that log output# Safe: Concealed by default op item get "API Key" --fields key # Dangerous in CI logs: op item get "API Key" --fields key --reveal -
Use Secret References: Prefer
op://references over storing secrets in files# .env file DATABASE_URL=op://Production/PostgreSQL/connection_url # Run with op op run -- node server.js -
Scope Service Accounts: Use minimal required permissions (read-only when possible)
-
Cache Awareness: Leverage default caching, disable only when freshness is critical
# Cached (faster, use for most workflows) op item get "Config" --fields api_key # Bypass cache (slower, for rotation scenarios) op item get "Config" --fields api_key --cache=false -
Rotate Regularly: Set up secret rotation policies in 1Password
-
Audit Access: Regularly review who has access to which vaults
Common Pitfalls to Avoid
- Don't commit
op://references to public repositories without proper access controls - Don't use
op item get --revealin scripts that might log output - Don't share service account tokens in plain text
- Always verify you're in the correct vault before retrieving secrets
- A
.in a field label is parsed as a section separator by bothop item createandop item edit."config.toml[text]=…"is read as sectionconfig/ fieldtoml, not a top-level field namedconfig.toml. Worse,op item editagainst an item that already has a top-levelconfig.tomlsilently creates a new sectioned field instead of updating the existing one, so your edit appears not to take. Escape the dot:"config\.toml[text]=…". Verify withop item get <id> --format json | jq '.fields[] | {label, section: .section.label}'—section: nullis the real top-level field. To delete an accidentally-created sectioned twin, use the unescaped form:'config.toml[delete]'.
Examples
Example 1: Database Connection in Script
#!/bin/bash
# Retrieve database password securely
DB_PASS=$(op item get "Production DB" --fields password)
psql "postgresql://user:${DB_PASS}@host/db"
Example 2: Docker Compose with Secrets
# .env file (not committed to git)
DATABASE_URL=op://Production/PostgreSQL/url
REDIS_URL=op://Production/Redis/url
API_KEY=op://Production/API/key
# Run with op
op run -- docker-compose up
Example 3: CI/CD Pipeline
# GitHub Actions example
steps:
- name: Load secrets
run: |
export OP_SERVICE_ACCOUNT_TOKEN="${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}"
op item get "Deploy Keys" --fields ssh_key > ~/.ssh/id_rsa
When to Ask for Help
Ask the user for clarification when:
- The vault name or item name is ambiguous
- Multiple fields exist and it's unclear which one to use
- Service account permissions might be insufficient
- The secret retrieval pattern doesn't match standard 1Password practices
- The actual read you need fails with no data (not merely
op whoamifailing — see "Do NOT gate work onop whoami"); only then surface a sign-in problem to the user
Frequently asked questions
What to verify before installation and use
What does the op-helper source document cover?
Helps with 1Password CLI (op) for secure secret retrieval and management When user mentions 1Password, secrets, op command, or asks about credential management
How do I install op-helper?
The source record exposes this install command: npx skills add https://github.com/shepherdjerred/monorepo --skill "packages/dotfiles/dot_agents/skills/op-helper". Inspect the command and pinned source before running it.
Which permission-related actions were detected?
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
garrytan/gbrain
bulk-ingestion
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing