关于 credentials
credentials 定义了供其他 skill 使用的安全凭据验证与请求规范,面向需要 API 密钥或其他凭据的 Agent。它通过静默检查和隐藏输入,避免凭据进入对话记录。
主要功能
- 01静默检查 .env 中是否有凭据
- 02不读取或显示凭据值
- 03缺少凭据时生成终端录入命令
- 04使用隐藏输入保存凭据
适用场景
- 01运行依赖 API 密钥的 skill 前检查凭据
- 02凭据缺失时引导用户在终端安全录入
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google-deepmind/ science-skills --skill credentials安装后在 Claude Code 中输入/credentials确认已加载。
详细介绍
安全凭据协议
许多技能需要 API 密钥或其他凭据才能正常运行或获得更高的速率限制。本技能定义了安全凭据协议的标准,用于验证并提示用户提供这些凭据,同时避免将敏感密钥泄露到 Agent 上下文或对话历史中。
安全验证(不泄露)
一旦发现需要凭据或 API 密钥的技能与用户的请求相关,必须立即验证 .env 文件中是否存在该凭据(通常位于主目录 ~/.env 或项目根目录),并且必须在为该技能开展任何其他工作之前完成验证。
重要:验证凭据是否存在时,绝不能将其值打印到终端或读入上下文。
验证方法:
使用静默且抑制错误的模式(-sq)调用 grep,检查 ~/.env 中是否定义了该变量。-s 标志可确保即使 ~/.env 尚不存在,命令也能正常执行。
grep -sq "^CREDENTIAL_NAME=" ~/.env
将 CREDENTIAL_NAME 替换为调用技能所需的实际凭据名称(例如 ALPHAGENOME_API_KEY 或 USER_EMAIL)。
- 如果命令成功(退出代码为 0),则表示凭据存在。可以继续操作。
- 如果命令失败(任何非零退出代码——无论是缺少凭据,还是
.env文件尚不存在),则表示凭据缺失。尝试运行任何脚本或工具之前,必须立即停止,并按照提示用户添加凭据中的说明提示用户。不要仅仅告知密钥缺失后就结束本轮对话。
[!CRITICAL] 如果验证失败(任何非零退出代码),不得尝试执行调用技能中的任何工具或脚本,也不得仅仅报告密钥缺失后就结束本轮对话。必须立即根据下方模板生成相应的终端命令,并提示用户运行。该模板命令会在
.env文件尚不存在时创建该文件。
绝不要运行 cat ~/.env、grep "VAR" ~/.env(不带 -q)、echo $VAR 或 printenv 来检查凭据。
提示用户添加凭据
如果凭据缺失,不要让用户将其粘贴到聊天中。这样会导致该值泄露到 Agent 上下文和对话历史中。
相反,必须将下方模板中的占位符替换为具体内容,生成一条供用户在终端中运行的命令。
重要:向用户提供命令之前,必须替换:
- 将
CREDENTIAL_NAME替换为所需的实际变量名(例如ALPHAGENOME_API_KEY、USER_EMAIL)。 - 将
ENV_FILE替换为解析后的.env文件实际路径(通常为~/.env)。
模板
所有凭据均视为敏感信息。read -s 标志会隐藏用户的输入。必须告知用户,其输入内容将被隐藏。
重要:请求用户提供凭据时,必须同时提供调用技能给出的相应注册链接或说明,以便用户在尚未拥有该凭据时知道如何获取。
printf "Enter CREDENTIAL_NAME (typing hidden): " && read -s val && echo && echo "CREDENTIAL_NAME=$val" >> "ENV_FILE" && echo "Saved."
运行需要凭据的脚本
调用技能中的所有辅助脚本都会使用 dotenv 自动从 .env 文件加载这些凭据。
调用需要凭据的辅助脚本时,无需手动读取密钥、将其导出到 shell 环境中,或将其作为 CLI 参数传入。只要已按照上述安全协议确认密钥存在于 .env 中,直接运行脚本即可——脚本会自动加载凭据。