iamzhihuix/1password
使用 1Password CLI (op) 管理密码和 API credentials。保存、查询、读取 API key/token,注入环境变量到脚本。当用户提到保存密码、保存 API key、查询密码、1password、op CLI、secret 管理时使用此 skill。
npx skills add https://github.com/iamzhihuix/happy-claude-skills --skill 1password
使用 op CLI 管理 1Password vault 中的密码和 API credentials。
使用前确认 op 已安装并已集成桌面 App:
op --version
未安装则引导安装:
brew install --cask 1password-cli
安装后需在 1Password 桌面 App 中开启集成:Settings → Developer → Integrate with 1Password CLI。
用户提供 API Key 信息时,使用以下命令保存。字段按实际提供情况填写,未提供的字段省略。
标题命名规范: {服务商} API Key - {用途标识}(如 OpenAI API Key - agent)
op item create \
--category="API Credential" \
--title="{标题}" \
--vault="Personal" \
"credential={API Key}" \
"website[url]={网站 URL}" \
"base_url[text]={API base URL}" \
"username[text]={邮箱或用户名}" \
"用途说明[text]={用途描述}" \
"过期时间[text]={YYYY-MM-DD}" \
"创建日期[text]={YYYY-MM-DD}" \
--tags "{服务商},{项目标签}"
最小必填字段: credential(API Key 本身)。其余字段按用户提供情况填入。
按标题或 URL 关键词模糊查找:
op item list --format=json | python3 -c "
import json, sys
items = json.load(sys.stdin)
keyword = '{关键词}'.lower()
for i in items:
title_match = keyword in i['title'].lower()
url_match = any(keyword in str(u) for u in i.get('urls', []))
if title_match or url_match:
print('ID:', i['id'], '| Title:', i['title'], '| Updated:', i.get('updated_at', ''))
"
# 读取(隐藏值)
op item get "{标题}" --fields credential
# 读取(显示明文)
op item get "{标题}" --fields credential --reveal
在 .env 文件中使用 Secret References 代替明文,可以安全提交到 git:
OPENAI_API_KEY=op://Personal/OpenAI API Key - agent/credential
DEEPSEEK_API_KEY=op://Personal/DeepSeek API Key - agent skd/credential
运行脚本时注入真实值:
op run --env-file=.env -- your-script.sh
op run --env-file=.env -- python3 main.py
# 查看所有 vault
op vault list
# 查看某 vault 下所有条目
op item list --vault="Personal"
# 按 tag 筛选
op item list --tags "deepseek"
用户说「帮我保存 OpenAI 的 API Key:sk-xxx」时:
op 已安装可用op item create 保存Take iamzhihuix/1password from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference brew.
Without those the skill loads but fails at the first command.