mcpField
A
action-remediate

action-remediate

github.com/bitwarden云与 DevOps16264 次安装今天更新
代码仓库

关于 action-remediate

action-remediate 是根据 action-audit 结果修复 GitHub Actions 问题的审慎操作手册,面向负责维护工作流的团队。它将修改限制在 `.github/`,并要求变更获批、先审查差异,再创建草稿 PR。

主要功能

  1. 01变更 API 调用前须确认
  2. 02仅修改 `.github/` 下的文件
  3. 03支持固定版本或替换 Action
  4. 04交接前须审查差异
  5. 05创建草稿 PR

适用场景

  1. 01审计后更新 Action 引用
  2. 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,并附上行内版本注释
    • 替换 — 完全换用其他操作
  • 目标 SHA、替代操作,或确认使用 @main 即可修复

如果有任何不清楚的地方,请先询问用户再继续。

步骤 2:逐个仓库应用修复

对于每个选定的仓库:

  1. 如果尚不清楚,请询问用户本地仓库克隆所在的基目录。检查 <base-dir>/<repo> 下是否存在本地克隆。如果不存在,请告知用户并跳过该仓库。

  2. 创建修复分支:

    git checkout -b fix/action-remediation-<action-name-slug>
    
  3. 根据修复方式,对每个受影响的文件应用修复:

    • 固定到 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>
  4. 展示此仓库中变更的 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