关于 action-remediate
action-remediate 是根据 action-audit 结果修复 GitHub Actions 问题的审慎操作手册,面向负责维护工作流的团队。它将修改限制在 `.github/`,并要求变更获批、先审查差异,再创建草稿 PR。
主要功能
- 01变更 API 调用前须确认
- 02仅修改 `.github/` 下的文件
- 03支持固定版本或替换 Action
- 04交接前须审查差异
- 05创建草稿 PR
适用场景
- 01审计后更新 Action 引用
- 02为多个仓库准备经审查的工作流修复
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ bitwarden/ ai-plugins --skill action-remediate安装后在 Claude Code 中输入/action-remediate确认已加载。
详细介绍
规则
- 未经确认,不得调用会修改数据的 API。 可自由使用
gh api发起 GET 请求。任何使用-X POST、-X PUT、-X PATCH或-X DELETE的调用,都必须先展示给用户并获得批准。 - 绝不强制推送、删除分支或删除仓库。
- 只能修改
.github/下的文件。 不得改动工作流文件以外的应用代码、脚本或配置。 - 移交提交前,先展示差异并获得确认。
- 所有 PR 都必须以草稿形式创建。
- 标明不确定之处。 如果发现的问题有歧义,或修复可能导致工作流故障,请停下来询问,不要猜测。
步骤 1:确认审计发现
继续之前,先确认用户有待处理的审计发现。这些发现应来自之前运行的 action-audit 技能。确认:
- 要修复哪些仓库(全部、部分或指定仓库)
- 修复方式:
- 固定到 main — 对于内部
bitwarden/操作,将引用改为@main - 更新固定版本 — 对于外部操作,将版本更新为经过验证的 40 位 SHA,并附上行内版本注释
- 替换 — 完全换用其他操作
- 固定到 main — 对于内部
- 目标 SHA、替代操作,或确认使用
@main即可修复
如果有任何不清楚的地方,请先询问用户再继续。
步骤 2:逐个仓库应用修复
对于每个选定的仓库:
-
如果尚不清楚,请询问用户本地仓库克隆所在的基目录。检查
<base-dir>/<repo>下是否存在本地克隆。如果不存在,请告知用户并跳过该仓库。 -
创建修复分支:
git checkout -b fix/action-remediation-<action-name-slug> -
根据修复方式,对每个受影响的文件应用修复:
- 固定到 main(内部
bitwarden/操作): 将引用替换为@main,例如:uses: bitwarden/gh-actions/action@v1→uses: bitwarden/gh-actions/action@main。无需解析 SHA。 - 更新固定版本(外部操作): 将
uses:行替换为uses: <action>@<sha> # <original-ref> - 替换: 应用前,确认替代操作位于 Bitwarden 的已批准操作列表
bitwarden/workflow-linter中。然后将uses: <old-action>@<ref>替换为uses: <new-action>@<sha> # <tag>
- 固定到 main(内部
-
展示此仓库中变更的
git diff,并在继续前获得确认。
步骤 3:提交、推送并创建 PR
不要自行运行暂存、提交或推送命令。对于每个仓库,将以下代码块作为建议提供给用户,由用户手动运行:
git add .github/
git commit -m "Remediate <action-name> action usage"
git push -u origin fix/action-remediation-<action-name-slug>
用户确认已推送后,创建草稿 PR:
gh pr create \
--title "Remediate <action-name> action usage" \
--body "$(cat <<'EOF'
## Summary
Remediates usage of `<action-name>` across this repository.
**Action taken:** <pin updated to `<sha>` / replaced with `<new-action>`>
**Reason:** <compromised action / deprecated action / unpinned reference>
EOF
)" \
--draft
步骤 4:最终总结
输出所有已执行操作的总结:
| 仓库 | 变更文件 | 已创建 PR | 备注 |
|---|---|---|---|
| ... | ... | ... | ... |
提醒用户,代码搜索结果可能存在延迟。如果这是一起安全事件,请用户手动检查,确认没有遗漏仓库。
评论
支持 Markdown