Skills

Github Actions Gen

分析真实项目并生成或修订安全、可验证的 GitHub Actions workflow;当用户要求创建...

Install

npx skills add laolaoshiren/claude-code-skills-zh --skill github-actions-gen -g -a claude-code -y
Category
Git and review
Updated
4d ago
License
MIT
Context cost
Lightabout 1,023 tokens
Runs scripts
No, instructions only

What it does

分析真实项目并生成或修订安全、可验证的 GitHub Actions workflow;当用户要求创建 CI、测试矩阵、构建、Release、部署、缓存、Secrets、OIDC、PR 自动化或排查 workflow 配置时使用

GitHub Actions CI/CD 生成器

核心原则

  • 先读项目,再生成 workflow。不要凭项目名猜测运行时、包管理器、测试命令或部署目标。
  • 默认只生成只读 CI。Release、部署、推送镜像、写回仓库和调用外部 webhook 必须先确认目标、凭据、环境保护与回滚方式。
  • 将不可信 PR 代码与 Secrets、写权限、自托管 Runner 隔离。不要为方便而改用 pull_request_target 执行 PR 代码。
  • 把所有 Action 固定到核验过的完整 40 位 commit SHA,并在旁边保留版本注释。不要使用 @main、@master、@latest 或可移动的 @vN tag。
  • 为每个 job 设置最小 permissions 和 timeout-minutes;不依赖仓库默认权限。
  • 生成后运行真实语法与项目命令验证,不把“配置看起来正确”当作通过。

工作流程

1. 盘点项目证据

  • 读取 manifest、lockfile、wrapper、运行时文件和现有 workflow,例如 package.json、.nvmrc、pyproject.toml、go.mod、Cargo.toml、Dockerfile 与 .github/workflows/。
  • 从项目脚本、贡献文档和现有 CI 确认 lint、test、build、package 命令。命令不存在时先指出缺口。
  • 识别 monorepo 边界、工作目录、矩阵维度、服务容器、缓存路径与产物。
  • 询问必要决策:触发分支、支持的运行时、部署目标、云账号、GitHub Environment、失败处理和发布授权。
  • 检查当前工作树,保留用户已有修改;只编辑本次授权的 workflow 和必要配置。

2. 建立威胁模型

  • pull_request:按不可信代码处理,使用只读 Token,不提供 Secrets,不在高权限自托管 Runner 上执行 fork 代码。
  • pull_request_target:仅处理标签、评论等可信基准分支逻辑;绝不 checkout PR head、运行 PR 脚本或安装 PR 依赖。
  • push / tag / workflow_dispatch:仍需限制分支、输入、Environment 和权限;写操作放入独立 job。
  • 避免把 ${{ github.event.* }} 等不可信表达式直接插进 run:。通过 env: 传值,并在脚本中按数据处理。
  • 不把 Secrets 写入命令行、日志、缓存、Artifact 或 PR 评论;fork PR 缺少 Secrets 是正常安全边界。

3. 设计最小流水线

优先拆分职责:

  • ci.yml:lint、test、build;pull_request 与受控 push 触发,只读权限。
  • release.yml:仅在用户明确要求时生成;使用受保护 tag 或手动触发。
  • deploy.yml:仅在部署目标明确时生成;使用 GitHub Environment、并发控制和最小 OIDC / Secrets 权限。

为耗时 job 设置取消策略和超时。矩阵只覆盖项目真正支持的版本;缓存 key 必须包含 lockfile,不能缓存凭据和构建秘密。

4. 核验并固定 Action

  • 从 Action 官方仓库 release / tag 解析完整 commit SHA,核对仓库所有者、版本说明和运行时要求。
  • 采用 uses: owner/action@<40位SHA> # vX.Y.Z 格式。版本注释用于阅读,SHA 才是执行边界。
  • 对 actions/checkout 默认设置 persist-credentials: false。只有后续步骤确实要执行经过授权的 Git 写入时才保留凭据,并限制 job 权限。
  • 使用 Dependabot 或人工维护流程更新 SHA;更新时重新阅读 release notes,不盲目替换。
  • 本文示例 SHA 核验于 2026-07-22;实际生成时应重新核验官方 release。

5. 生成 workflow

下面示例假设项目已有 .nvmrc、package-lock.json、lint、test 和 build 脚本:

name: CI
Read the whole SKILL.md on GitHub

More in Git and review