mcpField
C
credentials

credentials

github.com/google-deepmind安全3.4k1.4k 次安装5 天前更新
代码仓库

关于 credentials

credentials 定义了供其他 skill 使用的安全凭据验证与请求规范,面向需要 API 密钥或其他凭据的 Agent。它通过静默检查和隐藏输入,避免凭据进入对话记录。

主要功能

  1. 01静默检查 .env 中是否有凭据
  2. 02不读取或显示凭据值
  3. 03缺少凭据时生成终端录入命令
  4. 04使用隐藏输入保存凭据

适用场景

  1. 01运行依赖 API 密钥的 skill 前检查凭据
  2. 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 中,直接运行脚本即可——脚本会自动加载凭据。

评论

支持 Markdown