skills/golem-powers/1password/SKILL.md
Manage secrets, credentials, API keys, vault items, and op:// references with the 1Password op CLI. Use for storing/rotating secrets, migrating plaintext .env files, wiring MCP configs to 1Password, and troubleshooting op auth. NOT for non-secret config or ordinary runtime shell exports.
npx skillsauth add etanhey/golems 1passwordInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Secret management skill using 1Password CLI (
op). Routes to workflows for specific operations.
Run first:
op account list
If "not signed in" or error: See workflows/troubleshoot.md
For .env file management, use 1Password Environments instead of manual CLI migration.
Official Docs → | Full Workflow →
Environments are created in the 1Password desktop app UI - not via CLI. However, once created, CLI tools can still interact with secrets via op run and op inject.
┌─────────────────────────────────────────────────────────────┐
│ ENVIRONMENTS WORKFLOW │
├─────────────────────────────────────────────────────────────┤
│ │
│ CREATION (UI Only) ACCESS (Multiple Options) │
│ ───────────────── ───────────────────────── │
│ 1Password Desktop App ──► • Mounted .env (named pipe) │
│ • Developer > Environments • op run (env vars) │
│ • NOT automatable • op inject (config files) │
│ │
└─────────────────────────────────────────────────────────────┘
| Scenario | Use Environments | Use CLI (op run/op inject) |
|----------|-----------------|-------------------------------|
| Local development | ✅ Best choice | Works but more setup |
| CI/CD pipelines | ❌ Can't automate creation | ✅ Service accounts |
| Team secrets | ✅ Built-in sharing | Manual sync needed |
| One-time scripts | Overkill | ✅ Quick and easy |
| Template configs | N/A | ✅ op inject with .tpl |
Mounted .env (Environments):
# App reads .env.local directly (named pipe, no real file)
npm run dev
# Variables available automatically via dotenv
op inject (CLI):
# Template file with secret references (.env.template)
DATABASE_URL=op://prod/db/url
API_KEY=op://prod/api/key
# Inject at runtime
op inject -i .env.template -o .env && npm run build
# Remember to delete .env after!
op run (CLI):
# Pass secrets as environment variables
op run --env-file .env.template -- npm run build
# No temp file created, secrets in process env only
The songscript project uses Environments with 9 variables mounted to .env.local:
CONVEX_DEPLOY_KEY, ANTHROPIC_API_KEY, etc..env.local (named pipe, not actual file)bun dev, npm run dev, etc.Problem: Each MCP with op:// refs triggers separate auth prompts.
Solution: Centralize all secrets in one file, launch with op run.
~/.config/mcp-secrets/
├── secrets.env # All op:// refs (one auth loads all)
└── secrets.env.example # Template (safe to share)
Wrapper scripts:
cursor-secure # op run --env-file secrets.env -- cursor
claude-secure # op run --env-file secrets.env -- claude
with-secrets # op run --env-file secrets.env -- <any command>
MCP configs use empty env:
{ "env": {} } // Inherits from parent process
The golems ecosystem uses Environments for sensitive settings:
golemsNTFY_TOPIC, ANTHROPIC_API_KEY, LINEAR_API_KEY~/.config/golems/.envop run# Option 1: Source mounted .env
source ~/.config/golems/.env
# Option 2: Use op run with template
op run --env-file ~/.config/golems/.env.template -- bun run start
| Limitation | Details | |------------|---------| | UI-only creation | Cannot create/edit environments via CLI | | Platform support | Mac and Linux only (no Windows) | | Max mounts | 10 enabled .env files per device | | Concurrent reads | May have conflicts with multiple processes | | Edits in UI only | Changes to mounted file are lost - edit in 1Password UI | | Beta status | Feature may change |
Use op run or op inject (workflows/migrate-env.md) when:
.yml.tpl or .json.tpl files with secret refs| What you want to do | Workflow | |---------------------|----------| | Use 1Password Environments | workflows/use-environment.md | | List secrets in vault | workflows/list-secrets.md | | Add a new secret | workflows/add-secret.md | | Migrate .env to 1Password | workflows/migrate-env.md | | Migrate MCP config secrets | workflows/migrate-mcp.md | | Fix auth/biometric issues | workflows/troubleshoot.md |
Execute directly - they handle errors and edge cases:
| Script | Purpose | Usage |
|--------|---------|-------|
| scripts/migrate-env.sh | Migrate .env with project/service nesting | bash ~/.claude/commands/1password/scripts/migrate-env.sh .env [--dry-run] |
| scripts/scan-mcp-secrets.sh | Find API keys in MCP configs | bash ~/.claude/commands/1password/scripts/scan-mcp-secrets.sh |
Setting up secrets for a project?
Need to find a secret?
Adding credentials for a service?
Have a .env file to secure?
scripts/migrate-env.shMCP configs have hardcoded keys?
Biometric timeout or auth problems?
When migrating secrets, keys are auto-categorized:
| Key prefix | Service folder |
|------------|----------------|
| ANTHROPIC_* | anthropic/ |
| OPENAI_* | openai/ |
| SUPABASE_* | supabase/ |
| DATABASE_*, DB_* | db/ |
| STRIPE_* | stripe/ |
| AWS_* | aws/ |
| GITHUB_* | github/ |
| Other | misc/ |
Item path format: {project}/{service}/{key}
| Vault | Purpose | Example Items |
|-------|---------|---------------|
| development | Global dev tools | context7, github CLI tokens |
| Private | Personal secrets | SSH keys, personal accounts |
| {project} | Project-specific | linear API key, deploy keys |
| Shared | Team secrets | Shared service accounts |
# Create project vault
op vault create "myproject" --description "MyProject secrets" --icon buildings
# Create tools vault
op vault create "development" --description "Global dev tools" --icon gears
Global dev tools → development vault:
Project-specific → {project} vault:
Personal → Private vault:
Use tags for cross-vault searching and organization:
# Add tags when creating
op item create --vault development --category "API Credential" \
--title "context7" 'API_KEY[password]=xxx' \
--tags "dev-tools,mcp,documentation"
# Search by tag across all vaults
op item list --tags "mcp"
op item list --tags "dev-tools"
Recommended tags:
| Tag | Use for |
|-----|---------|
| dev-tools | Development utilities |
| mcp | MCP server credentials |
| ci-cd | CI/CD pipeline secrets |
| api-key | Third-party API keys |
| deploy | Deployment credentials |
| {project} | Project name for filtering |
# Vault/Item/Field
op://development/context7/API_KEY
op://myproject/linear/API_KEY
op://Private/github/token
--dry-run before actual migrationop vault list before operationstools
The human-eval UX contract for Phoenix views: turn-by-turn scrollable replay (not a scorecard), hide-but-copyable IDs, collapsed thinking, identity chips, tool filters, tiny frozen starter datasets, mark-wrong-in-thread, mobile-first. Use when: building or reviewing ANY Phoenix/eval view, annotation UI, session replay, or human-grading surface. Triggers: phoenix view, eval UI, annotation view, session replay, human eval UX, grading interface. NOT for: Phoenix data pipelines/ingest (capture scripts have their own specs).
tools
macOS systems specialist — AppKit NSPanel architecture, launchd services, socket activation, MCP bridge resilience, syspolicyd, and high-frequency SwiftUI dashboards. Use when building menu-bar apps, LaunchAgents, debugging syspolicyd/Gatekeeper/TCC, resilient UDS/MCP bridges, or SwiftUI dashboards at 10Hz+.
development
Bulk LLM-judging protocol for fleet-dispatched verdict runs (KG cluster, eval harness). Use when: dispatching or running judge workers (J1/J2/RT), planning bulk-apply from verdict JSONL, or triaging evidence_degraded outputs. Triggers: judge fleet, bulk judge, R3 verdicts, kg-judge, RT gate, evidence_degraded. NOT for: single-item code review, Phoenix view UX (use phoenix-human-view), or non-judge eval pipelines.
development
Quiet-down protocol for sprint close: when the fleet wraps, delete ALL polling crons and monitors, send ONE final dashboard + ONE message, then go SILENT. Use when: fleet wraps, all workers done, overnight queue exhausted, sprint close, Etan asleep/away with nothing approved left. Triggers: fleet wrap, wrap the fleet, stand down, going quiet, sprint close. NOT for: mid-sprint monitoring (keep your loops), spawning a successor (use /session-handoff first).