关于 doppler-workflows
doppler-workflows 是使用 Doppler CLI 注入和管理多种服务凭据的技能,涵盖 Python 包发布、AWS 密钥轮换、多账户模式和身份验证故障排查。
主要功能
- 01通过 Doppler CLI 注入凭据
- 02向 PyPI 发布 Python 包
- 03轮换 AWS 访问密钥
- 04管理多种服务的凭据
- 05排查身份验证故障
适用场景
- 01使用注入的凭据运行 PyPI 发布命令
- 02轮换 AWS 密钥并更新 Doppler
- 03诊断 403 或无效 AWS 令牌
- 04将项目目录绑定到 Doppler 配置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill doppler-workflows安装后在 Claude Code 中输入/doppler-workflows确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AWS_SPECIFICATION.yamlAWS_WORKFLOW.mdPYPI_REFERENCE.yamlreferences/aws-credentials.mdevolution-log.mdmulti-service-patterns.mdpypi-publishing.md详细介绍
Doppler 凭据工作流
自我演进的技能:此技能会在使用过程中不断改进。如果说明有误、参数发生变化,或需要采用变通方案,请立即修复此文件,不要拖延。仅在遇到真实、可复现的问题时更新。
使用时机
在以下情况下使用此技能:
- 将 Python 包发布到 PyPI
- 轮换 AWS 访问密钥
- 管理多个服务的凭据
- 排查身份验证失败(403、InvalidClientTokenId)
- 设置 Doppler 凭据注入模式
- 多令牌/多账户策略
快速参考
核心模式:Doppler CLI
标准用法:
doppler run --project <project> --config <config> --command='<command>'
为什么要使用 --command 标志:
- Doppler 官方模式(自动检测 shell)
- 确保变量在 Doppler 注入后再展开
- 不使用该标志时:shell 会在 Doppler 运行前展开
$VAR→ 得到空字符串
快速入门示例
PyPI 发布
doppler run --project private-config --config dev \
--command='uv publish --token "$PYPI_TOKEN"'
AWS 操作
doppler run --project aws-credentials --config dev \
--command='aws s3 ls --region $AWS_DEFAULT_REGION'
最佳实践
- 注入凭据时始终使用 --command 标志
- 使用项目范围的令牌(PyPI),以提高安全性
- 定期轮换凭据(建议每 90 天一次)
- 使用 Doppler 备注记录信息:
doppler secrets notes set <SECRET> "<note>" - 使用标准输入存储密钥:
echo -n 'secret' | doppler secrets set - 使用前测试注入:通过
echo ${#VAR}验证长度 - 多令牌命名:使用
SERVICE_TOKEN_{ABBREV},以便于识别
参考文档
详细信息请参阅:
随附规范:
PYPI_REFERENCE.yaml- 完整的 PyPI 规范AWS_SPECIFICATION.yaml- AWS 凭据架构
本地开发:按目录指定 Doppler 配置
进行本地开发时,先将项目目录绑定到对应的 Doppler 项目/配置,然后使用 doppler run 为每条命令指定作用范围:
cd ~/project && doppler setup --project private-config --config prd --no-interactive
doppler run -- COMMAND # secrets such as PYPI_TOKEN exist for this command only
如果某个值需要在同一个 shell 中用于多条命令,请显式导出:export PYPI_TOKEN="$(doppler secrets get PYPI_TOKEN --plain)"。
切勿通过这种方式注入 GitHub 令牌(ADR 2026-06-21)。 GitHub 多账户身份验证由仓库的
origin主机别名([email protected]<account>:…)驱动。每个仓库都会通过~/.claude/tools/bin/gh-token-for-repo即时解析令牌;环境中的GH_TOKEN优先级高于隔离的 gh 配置文件,轮换后会导致 401。.secrets/gh-token-*文件已删除。
PyPI 发布政策
有关 PyPI 发布的信息,请参阅 pypi-doppler skill,了解仅限本地的工作区政策。
切勿在 GitHub Actions 或 CI/CD 流水线中配置 PyPI 发布。
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 发布到 PyPI 时出现 403 | 令牌已过期或权限范围错误 | 重新生成项目范围的令牌,并在 Doppler 中更新 |
| InvalidClientTokenId (AWS) | 访问密钥已轮换或删除 | 运行 AWS 密钥轮换工作流,并更新 Doppler |
| 变量展开为空 | 使用 $VAR 时未加 --command | 始终使用 --command='...$VAR...' 模式 |
| 未找到 Doppler CLI | 未安装 | brew install dopplerhq/cli/doppler |
| 选择了错误的配置 | 项目/配置不明确 | 显式指定 --project 和 --config |
| 选中了错误的项目 | 目录未绑定或绑定错误 | 使用 doppler configure 检查;重新运行 doppler setup |
| 获取密钥较慢 | 每次调用都运行一次 doppler secrets get | 每个 shell 中只获取一次:export VAR="$(doppler secrets get VAR --plain)" |
| 令牌长度不匹配 | 复制时带入了多余空格 | 修剪令牌:echo -n 'secret' | doppler secrets set |
执行后回顾
此技能完成后,结束前请检查:
- 命令是否成功? — 如果没有,请修复导致失败的指令或错误表。
- 参数或输出是否发生变化? — 如果底层工具的接口发生变化,请更新用法示例和参数表,使其保持一致。
- 是否需要变通处理? — 如果你不得不临时变通(使用不同标志、增加额外步骤),请更新此 SKILL.md,以便下次调用时无需重复同样的变通处理。
仅当问题真实存在且可复现时才进行更新,不要基于推测更新。