用途:扫描仓库的 workflow 文件,实时查询每个 GitHub Action 的最新版本并输出对比,避免凭记忆或搜索判断版本(模型知识与搜索结果常滞后一两个主版本)。
主要能力:脚本做只读发现,扫描工作流、调用 GitHub API 获取各 Action 最新版本并打印对比;不自动改文件、不判断破坏性变更、不提交。
使用方式:在技能目录运行 ./scripts/check-actions.sh --dir <repo-root> 输出可读表格,加 --json 输出机器可读结果。先向用户展示哪些 Action 过期、当前与最新版本、涉及文件;全部最新则停止。修改前需用户确认。升级时使用主版本标签(如 @v5)而非完整版本(如 @v5.1.0),同一 Action 在各文件中版本保持一致;升主版本前查看 release notes(gh api repos/<owner>/<repo>/releases/latest --jq .body)并向用户提示破坏性变更;用 actionlint 校验,否则仔细检查 diff;经用户同意后以 chore: bump github actions (<brief list>) 提交推送,并提示 dependabot/renovate 的重复 PR。
状态含义:outdated 有更新主版本;up-to-date 已最新;sha-pinned 固定到提交 SHA,通常为安全选择,不要静默替换为可变标签,应询问用户;unknown 无法比较(分支引用或 API 失败),需手动排查。本地 Action(./path)与 Docker 镜像(docker://...)不参与比较。
版本查询:对每个唯一 Action 仓库请求 repos/{owner}/{repo}/releases/latest 读取 tag_name,仅打标签不发 release 的仓库回退到 tags 列表(JSON 中标记 latest_source: tag)。优先用已认证的 gh CLI,否则用 curl,未认证限每小时 60 次调用,引用较多 Action 时可设 GITHUB_TOKEN。
退出码:0 扫描与查询完成;1 用法或运行时错误(含 API 限流);2 前置条件失败(无 .github/workflows/ 目录,或 gh 与 curl 均不可用)。