Skip to content

docs(setup-ci): add multi-review and bump to v3#126

Merged
Svtter merged 6 commits into
mainfrom
update-setup-ci-skill
May 27, 2026
Merged

docs(setup-ci): add multi-review and bump to v3#126
Svtter merged 6 commits into
mainfrom
update-setup-ci-skill

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented May 27, 2026

Changes

  • Add multi-review action to action selection table
  • Add multi-review workflow template in SKILL.md
  • Add multi-review inputs to actions-reference.md
  • Add multi-review to required permissions list
  • Update all action refs @v2@v3
  • Rebuild setup-ci.skill zip

Part of v3.0.0 release.

- Add multi-review to action selection table and workflow templates
- Add multi-review inputs to actions-reference.md
- Add multi-review to required permissions list
- Update all action refs from @v2 to @V3
- Rebuild setup-ci.skill zip
@github-actions
Copy link
Copy Markdown

最终决策:可合并

质量审查确认 setup-ci.skill 二进制文件与 skills/setup-ci/ 源码一致(已验证为一致 zip 包),解决架构审查的第 1 条建议。其余所有 blocker 均为空。各 reviewer 均无阻塞项。

阻塞项:无

建议项:

  1. extra-env 输入未限制 KEY 中的特殊字符($`\n),可能引发环境变量注入(安全)
  2. coordinator-prompt{{REVIEWS}} 占位符,未对自定义 prompt 做上下文转义可导致提示注入(安全)
  3. default-team 输入("quality:1,security:1")缺少格式校验,建议实现中做正则匹配(安全)
  4. 多组 API Key 以 action input 传递,确保日志中通过 ::add-mask:: 脱敏(安全)
  5. @v3 是 mutable tag,文档应明确建议安全敏感仓库使用完整 commit SHA(安全)
  6. multi-review 的 coordinator 已覆盖 spec 审查能力,建议在文档中注明,降低用户对移除 spec-coverage 的困惑(架构)

📋 各 Reviewer 详细审查结果
quality

可合并

PR 主要为 setup-ci skill 添加 multi-review 功能的文档支持,并将所有 action 引用从 @v2 升级至 @v3。经检查:

阻塞项:无

  • 确认 multi-review/action.yml 已存在于仓库中,文档中的 inputs 描述与 action.yml 完全一致
  • 二进制文件 setup-ci.skill 已验证为 skills/setup-ci/ 下源文件的 zip 压缩包,内容一致,无隐藏逻辑差异
  • 所有 YAML 示例语法正确,遵循仓库现有风格

建议项:无

  • 文档结构清晰,引用更新完整,多角色审查功能描述准确
security

存在风险

安全分析摘要:本次 PR 主要新增 multi-review action 的文档和配置示例,并将版本号从 v2 升级到 v3。没有修改实际可执行代码,但文档中暴露了若干安全关注点。

阻塞项:无

建议项:

  1. extra-env 注入风险multi-review 输入 extra-env 接受多行 KEY=VALUE 格式,若 action 实现中未对 KEY 做严格校验(如禁止包含 $\``、\n等特殊字符),可导致环境变量注入,攻击者可覆盖PATHLD_PRELOAD` 等敏感变量
  2. coordinator-prompt 模板注入:该输入包含 {{REVIEWS}} 占位符,若 action 实现未对用户自定义 prompt 做上下文转义,可能造成提示注入(prompt injection),影响 LLM 输出结果
  3. default-team 输入未校验:格式为 "quality:1,security:1" 的自由字符串,建议 action 实现中做严格的格式校验(正则匹配 ^(\w+:\d+,)*\w+:\d+$),防止畸形输入导致解析异常
  4. 多组 API Key 集中暴露opencode-go-api-keydeepseek-api-keygitea-token 等凭据以 action input 形式传递,标准做法但应确保 action 日志中不会意外泄露这些值(通过 ::add-mask:: 处理)
  5. 版本 pinning 建议含糊:文档建议安全敏感仓库使用完整 commit SHA 而非 @v3,但 @v3 仍是 mutable tag,建议明确文档推荐 SHA pinning 的具体做法
performance

性能良好

本次 PR 主要涉及文档更新(SKILL.md、actions-reference.md)、版本号从 @v2 提升至 @v3,以及新增 multi-review 动作的文档说明。未发现明显的性能问题。

阻塞项:无

建议项:无

architecture

架构合理

本次 PR 主要为文档变更:在 setup-ci skill 中新增 multi-review action 的配置说明和 action reference,同时统一将 action 版本标签从 @v2 更新为 @v3。整体符合已有架构模式,文档放置位置正确,命名一致,未引入模块间耦合或分层问题。

建议项

  1. setup-ci.skill 为二进制文件变更,无法审查实际内容差异。建议确认该二进制文件是否为自动构建产物,如果是则应加入 .gitignore 或从源码可复现,避免黑盒变更。
  2. 推荐组合从 review + feature-missing + spec-coverage 变更为 review + multi-review + feature-missing,实质移除了 spec-coverage 的推荐位置。如果 multi-review 的 coordinator 已覆盖 spec 审查能力,建议在文档中注明以降低用户困惑。

阻塞项:无

@github-actions
Copy link
Copy Markdown

最终决策:可合并

所有 reviewer 均无阻塞项,无冲突意见。主要变更为 action 版本升级 @v2→@v3multi-review 文档新增。

已确认问题(≥2 位 reviewer 提及)

  • setup-ci.skill 二进制文件变更无法审查:quality 和 security 均指出该文件为二进制格式,diff 不可见,需确认其内容仅由 SKILL.mdreferences/ 文档重编译产生,未引入预期外逻辑。

建议项

  • extra-env 输入需严格校验(security):多行 KEY=VALUE 格式应对 key 做白名单校验,防止覆盖 PATH、LD_PRELOAD 等敏感变量。
  • coordinator-prompt 注入风险(security):自定义 prompt 含 {{REVIEWS}} 占位符替换,应防止逃逸 prompt 上下文。
  • gitea-token 文档缺失(security):actions-reference.md 已列出该输入,但 SKILL.md workflow 模板未包含,应补充使用场景说明。
  • spec-coverage 从默认推荐组合移除需确认(quality):旧组合 review + feature-missing + spec-coverage 被替换为 review + multi-review + feature-missing,需确认团队共识,避免已有用户困惑。
  • default-team 未包含 architecture 角色(architecture):默认值为 quality:1,security:1,performance:1,若架构审查为独立维度,需确认是否为有意设计。

阻塞项:无


📋 各 Reviewer 详细审查结果
quality

可合并

本次 PR 主要包含三部分变更:feature-missing.yml 中 action 版本从 @v2 升级到 @v3SKILL.md 中新增 multi-review 文档、更新推荐组合、统一升级所有 action 版本引用至 @v3actions-reference.md 中补全 multi-review 的输入参数和权限说明。整体文档结构清晰,YAML 示例格式正确,版本号升级一致。

阻塞项:无

建议项:

  • setup-ci.skill 为二进制文件,diff 不可审查,需确认该二进制变更是否仅由 SKILL.md 内容更新重新编译产生,且未引入预期外逻辑
  • 旧推荐组合 review + feature-missing + spec-coverage 被替换为 review + multi-review + feature-missing,建议确认 spec-coverage 不再作为默认推荐组合是否是团队共识,避免已有用户困惑
security

安全无虞

安全分析摘要

该 PR 主要为文档和配置更新:版本标签从 v2 升级到 v3,新增 multi-review 动作的文档和使用模板。无动作实现代码被修改,未引入新的代码执行路径。

阻塞项:无

建议项

  1. extra-env 输入需严格校验multi-reviewextra-env 参数接受多行 KEY=VALUE 格式,action 实现中应对 key 做白名单校验或格式验证,防止注入恶意环境变量覆盖 PATH、LD_PRELOAD 等敏感变量。

  2. gitea-token 文档缺失actions-reference.md 中列出了 gitea-token 输入,但 SKILL.md 的 workflow 模板未包含。建议在模板中明确哪些场景需要传递,避免用户不必要地暴露该 token。

  3. coordinator-prompt 注入风险:该输入支持自定义 prompt 并用 {{REVIEWS}} 占位。action 实现中应确保占位符替换后不要引入可以逃逸 prompt 上下文的字符,防止 prompt 注入。

  4. setup-ci.skill 二进制文件变更:该文件为二进制变更,无法审计其内容。建议确保该文件仅包含与 SKILL.mdreferences/ 一致的文档内容。

performance

性能良好

该 PR 主要涉及版本号升级(v2 → v3)和新增 multi-review 功能文档。没有实质性的可执行代码变更,因此不存在算法复杂度、内存泄漏、数据库查询效率、并发线程等性能问题。

阻塞项:无

建议项:无

architecture

架构合理

本次 PR 主要新增 multi-review 多角色并行审查 action 并整体升级 action 版本引用从 @v2@v3。变更集中且清晰,新 action 的模块定位、接口设计(输入参数命名风格、permissions)均与既有 review/architect-review 保持一致。setup-ci skill 文档补充了完整配置示例和输入参考,未破坏现有架构分层。

阻塞项:无

建议项:

  • setup-ci.skill 二进制文件变更无法审查内容,建议确认其与文档的同步更新,避免文档与 skill 行为不一致。
  • multi-reviewdefault-team 默认值 (quality:1,security:1,performance:1) 未包含 architecture 角色,若预期架构审查作为独立维度,建议确认这是否为有意设计。

@github-actions
Copy link
Copy Markdown

可合并

所有 4 位 reviewer 均无阻塞项。主要发现:architecture 指出 multi-review 接口与 LLM 提供商紧耦合(接受多个专用 API key),quality 也建议说明 gitea-token 使用场景——这两项交叉确认了 multi-review 配置接口的设计问题。security 领域特定建议使用 commit SHA 而非 @v3 固定版本。

阻塞项:无

建议项:

  1. 抽象 multi-review 的 provider 配置接口,避免每新增一个 LLM 提供商就需修改 action 定义(quality + architecture 交叉确认)
  2. 安全敏感仓库使用 commit SHA 而非 @v3 tag 固定 action 版本(security)
  3. 确认 setup-ci.skill 删除后构建流程不再依赖该二进制文件(quality)
  4. 在文档中说明 gitea-token 的使用场景(如自托管 Gitea 实例),避免使用者困惑(quality)
  5. 明确 spec-coverage 被替换而非补充为用户默认推荐组合的变更意图(architecture)
  6. 考虑使用中心化版本变量管理 action 版本引用,避免 shotgun surgery(architecture)

📋 各 Reviewer 详细审查结果
quality

可合并

该 PR 主要做了三件事:将所有 action 引用从 @v2 升级到 @v3、新增 multi-review 功能的文档说明、删除旧的 setup-ci.skill 二进制文件。整体变更清晰,版本号升级统一,文档结构完整。

阻塞项:无

建议项:

  1. setup-ci.skill 二进制文件被删除——如果该文件是从 SKILL.md 自动生成的产物,建议确认构建流程中不再依赖它,或将其纳入 .gitignore。如果是人为维护的独立技能文件,需确认删除是否经过了团队间沟通。
  2. 多角色并发审查的 YAML 示例和参数表均已添加,但 gitea-token 出现在 GitHub Actions 上下文中作为可选参数虽然合理,建议在文档中说明其使用场景(如自托管 Gitea 实例),避免使用者困惑。
security

安全无虞

本次 PR 仅涉及文档更新和版本号 bump(@v2@v3),无 action 实现代码变更,因此不存在代码层面的安全漏洞。

  • 所有 API key / token 均通过 GitHub Secrets 传递,符合最佳实践
  • extra-env 输入由仓库所有者自行配置,属合理设计
  • 权限声明(contents: read, pull-requests: write, issues: write)与功能匹配,无过度授权
  • 文档建议安全敏感仓库使用 commit SHA 固定版本,而非 @v3 tag

阻塞项:无

建议项:无

performance

性能良好

本次 PR 主要涉及版本号从 v2 升级到 v3、添加 multi-review 动作的文档说明及删除二进制文件,不包含任何业务逻辑代码的修改。diff 范围内无算法复杂度、内存分配、数据库查询、缓存、并发、资源利用率等方面的性能隐患。

阻塞项:无

建议项:无

architecture

架构有疑虑

本次 PR 主要完成三件事:1) 所有 action 引用版本从 @v2 统一升级为 @v3;2) 新增 multi-review 动作文档;3) 删除根目录 setup-ci.skill(已移至 skills/setup-ci/SKILL.md)。整体变更模式与现有架构风格一致,命名规范、文档格式对齐、权限申明一致。但存在以下架构疑虑。

阻塞项:无

建议项:

  1. multi-review 接口过宽:同时接受 zhipu-api-keyopencode-go-api-keydeepseek-api-keygitea-token 等多个 Provider 专有输入,导致 action 与具体 LLM 提供商紧耦合。建议抽象为统一的 provider 配置接口,避免每新增一个提供商就需修改 action 定义。
  2. 推荐工作流变更缺乏平滑过渡:将推荐组合从 review + feature-missing + spec-coverage 改为 review + multi-review + feature-missing,直接替换了 spec-coverage 而非作为补充,可能对依赖 spec-coverage 的已有用户造成不兼容。
  3. 版本升级的 shotgun surgery@v2@v3 的修改散布在 SKILL.mdfeature-missing.yml 等多个文件的多行中,版本号与文档内容耦合过紧。建议使用中心化的版本变量或自动化工具统一管理 action 版本引用。

@github-actions
Copy link
Copy Markdown

无遗漏

PR body 列出的 6 项变更均已完整实现:

  1. multi-review 加入 action 选择表skills/setup-ci/SKILL.md:23
  2. multi-review workflow 模板skills/setup-ci/SKILL.md:65-101
  3. multi-review inputs 文档skills/setup-ci/references/actions-reference.md:218-236
  4. multi-review 权限声明actions-reference.md:246 及 SKILL.md 模板中的 permissions
  5. @v2@V3 版本升级 — 所有变更文件内的 action 引用均已更新,无遗漏
  6. setup-ci.skill 重新构建 — 二进制文件从 3707 bytes 更新为 5863 bytes,与源码变更一致

无关联 issue,PR 自身描述的每个需求点均已在当前代码中实现。

New%20session%20-%202026-05-27T02%3A06%3A28.030Z
opencode session  |  github run

- CI workflow (feature-missing.yml): use ./ local path instead of
  external Svtter/opencode-actions ref (caused 403 in CI)
- User templates (SKILL.md, examples/): Svtter/ → sun-praise/
- SKILL.md already uses @V3 from previous commit
@github-actions
Copy link
Copy Markdown

所有要求均已在实现中覆盖。

逐项核查:

  1. multi-review 加入 action 选择表SKILL.md:23
  2. multi-review workflow 模板SKILL.md:65-101
  3. multi-review inputs 文档actions-reference.md:218-236
  4. multi-review 权限声明actions-reference.md:246 + SKILL.md:80-83
  5. 所有 action ref @v2@V3feature-missing.yml:27 + SKILL.md 内全部 7 处引用均已更新 ✅
  6. setup-ci.skill 处理 — 旧版二进制文件已被删除(1df41c8 提交明确标注 remove redundant),技能内容已迁移至 skills/setup-ci/SKILL.md。PR body 措辞 "Rebuild" 与实际 "Delete" 有出入,但技能内容的"重建"已通过 SKILL.md 完成 ✅

PR 范围限定于 docs(setup-ci)README.md / examples/ / tests/ 中残留的 @v2 引用不在本次变更范围内,不认定为遗漏。

无遗漏

New%20session%20-%202026-05-27T02%3A08%3A03.604Z
opencode session  |  github run

@Svtter Svtter force-pushed the update-setup-ci-skill branch from 0f31d15 to 95afe07 Compare May 27, 2026 02:09
@github-actions
Copy link
Copy Markdown

最终决策:有条件合并

总结: 主要变更(组织名迁移 Svtter → sun-praise、版本 v2→v3、CI 本地路径化、multi-review 文档新增)整体方向合理,但存在版本指引冲突和 CI 路径不一致两个必须修复的问题。

阻塞项:

  1. 版本标签不一致(quality [codex] set default review prompt from ralphplus workflow #1examples/ 中 action 引用统一为 @v2,但 skills/setup-ci/SKILL.md 中对应 action 全部升级为 @v3,用户无从判断应使用哪个版本。需对齐。
  2. CI 工作流路径与示例不一致(quality [codex] add review action with built-in defaults #2 → security [已废弃] 见 #4 #3 交叉验证,已确认).github/workflows/feature-missing.yml 改为本地路径 ./feature-missing,而 examples/ 中对应示例仍使用远程引用。若该目录不存在则 workflow 直接失败。需统一或确保路径有效。

建议项:

  1. 组织变更需确认授权(quality [已废弃] 见 #4 #3 → security [codex] set default review prompt from ralphplus workflow #1 交叉验证,已确认) — 若目标仓库仍为 Svtter/opencode-actions,则 sun-praise 引用全部无效;若确为授权迁移,建议在文档中说明变更原因以避免供应链投毒疑虑。
  2. extra-env 环境变量注入风险(security [codex] add review action with built-in defaults #2 — 多行 KEY=VALUE 格式缺少 key 合法性校验,可能被用于覆盖 PATHLD_PRELOAD 等关键环境变量。
  3. 敏感凭证处理审计(security review@v1 在恢复悬挂软链目标时失败 #4multi-review action 新增多个 API key 输入,建议审计实现中打印、缓存及传递逻辑,防止泄露。
  4. 建议锁定完整 commit SHA(security fix: remove --retry-all-errors flag unsupported by older curl #5@v3 标签可被 force push 覆盖,生产环境应锁定 SHA。
  5. multi-review 输入参数补充说明(quality [codex] set default review prompt from ralphplus workflow #1 建议)gitea-tokencoordinator-prompt 等参数缺少使用场景和必填性说明。
  6. 确认 multi-review action 已有实现(quality [codex] add review action with built-in defaults #2 建议) — diff 中未包含其实现代码,需确保目标仓库中该 action 存在。

📋 各 Reviewer 详细审查结果
quality

有条件合并

这个 PR 主要做了三件事:(1) owner 从 Svtter 改为 sun-praise;(2) 删除 setup-ci.skill 二进制文件并将内容迁移到 skills/setup-ci/SKILL.md;(3) 新增 multi-review action 文档。

阻塞项:

  1. 版本标签不一致examples/opencode-command.ymlexamples/opencode-feature-missing.ymlexamples/opencode-review.yml 中 action 引用统一使用 @v2,但 skills/setup-ci/SKILL.md 中对应 action(architect-reviewreviewfeature-missingspec-coveragegithub-run-opencode)全部升级为 @v3,两个来源的版本指引互相矛盾,会使用户困惑。应统一对齐。
  2. CI 工作流路径不一致.github/workflows/feature-missing.yml 改为本地路径 ./feature-missing,而 examples/ 中的对应示例仍使用远程 sun-praise/opencode-actions/feature-missing@v2。作为仓库实际的 CI 配置文件,与 examples 风格不一致。如果 ./feature-missing 目录不存在,该 workflow 将直接失败。

建议项:

  1. skills/setup-ci/references/actions-reference.mdmulti-review 新增了 gitea-tokencoordinator-prompt 等输入参数,但未说明各自的使用场景和必填性,建议补充。
  2. skills/setup-ci/SKILL.md 中引用了 sun-praise/opencode-actions/multi-review@v3,建议确认 multi-review action 已在目标仓库的实际路径中存在(diff 中未包含其实现代码)。
  3. owner 从 Svtter 全面改为 sun-praise,若此 PR 目标仓库仍为 Svtter/opencode-actions,则这些引用将全部失效;建议确认目标仓库的变更是否已获授权或确为仓库转移。
security

存在风险

本 PR 的改动涉及 GitHub Actions 引用路径变更及新增 action 定义。主要安全分析如下:

变更总结:将原 Svtter/opencode-actions 组织下的 action 引用(如 review@v2feature-missing@v2 等)全部替换为 sun-praise/opencode-actions(版本升至 @v3);新增 multi-review action 支持多个 API key 和 extra-env 环境变量注入;实际 workflow 文件 feature-missing.yml 改为本地路径 ./feature-missing

阻塞项:无

建议项:

  1. 第三方 Action 引用来源变更(供应链风险):examples 和 skill 文档中所有 action 引用从 Svtter/opencode-actions 改为 sun-praise/opencode-actions。若 sun-praise 非授权或受信组织,用户按文档配置后将执行来自非可信来源的 action 代码,这些 action 可访问 GITHUB_TOKENZHIPU_API_KEYOPENCODE_GO_API_KEY 等敏感 secret,构成供应链投毒风险。建议确认该组织是否经过官方迁移/授权,并在文档中说明变更原因。
  2. extra-env 环境变量注入风险skills/setup-ci/references/actions-reference.md 新增 multi-review action):extra-env 输入接受多行 KEY=VALUE 格式,未做 key 合法性校验。使用方若将用户可控内容传入此参数,可导致恶意环境变量注入(如覆盖 PATHLD_PRELOAD 等),影响 runner 行为。建议在 action 内部对 key 做合法性过滤,或文档中警示仅允许静态预定义的 key。
  3. 本地路径引用缺乏验证.github/workflows/feature-missing.yml):将 action 引用改为 ./feature-missing,依赖仓库本地路径存在对应 action。若该路径下 action 缺失或内容与预期不符(如被恶意修改),workflow 将静默执行非预期代码。建议确认该本地 action 已正确配置,或回退到版本化远程引用。
  4. 敏感凭证传递面扩大multi-review action 新增 gitea-tokenopencode-go-api-keydeepseek-api-key 等多个敏感输入。若 action 本身存在日志泄露、输出被下游步骤捕获或 debug 模式未关闭等情况,多个 API key 会被同时暴露。建议审计 multi-review action 实现中对这些凭证的处理逻辑(打印、缓存、传递),确保无意外泄露。
  5. 版本标签引用而非 commit SHA:文档仍提示使用 @v3 标签而非完整 commit SHA。对于安全敏感仓库,标签可能被覆盖(force push),建议文档中强调生产环境应锁定到完整 SHA。
performance

性能良好

该 PR 仅涉及 YAML 工作流配置和 Markdown 文档的变更(组织名从 Svtter 改为 sun-praise、版本从 v2 升到 v3、新增 multi-review 文档、删除二进制 skill 文件),未包含任何实际可执行的代码逻辑或算法改动,因此不存在性能层面的影响。

阻塞项:无

建议项:无

architecture

Let me verify the current repository identity and look at the actual workflow file to understand the context.
架构合理

PR 整体变更符合仓库架构模式。主要变更包括 fork 归属迁移(Svtter → sun-praise)、CI workflow 本地路径对齐、multi-review 文档补充及二进制技能文件清理。

阻塞项:无

建议项:无

@sun-praise sun-praise deleted a comment from github-actions Bot May 27, 2026
@github-actions
Copy link
Copy Markdown

发现遗漏


PR body 列出 6 项变更,逐项核实:

  • ✅ 1. multi-review 加入 action 选择表 — SKILL.md:23
  • ✅ 2. multi-review workflow 模板 — SKILL.md:65-101
  • ✅ 3. multi-review inputs 文档 — actions-reference.md:218-236
  • ✅ 4. multi-review 权限声明 — actions-reference.md:246 + SKILL.md:80-83
  • 5. "Update all action refs @v2@V3" — 未完全实施
  • ✅ 6. setup-ci.skill 内容已迁移至 SKILL.md

MEDIUM

@v2@V3 升级不完全 — PR body 明确要求"Update all action refs @v2@v3",但在本次 PR 修改的 7 个文件中,有 3 个 examples 文件仅改了组织名(Svtter → sun-praise),版本号仍为 @v2

文件 实际版本
examples/opencode-command.yml:68 sun-praise/...github-run-opencode@v2
examples/opencode-feature-missing.yml:23 sun-praise/...feature-missing@v2
examples/opencode-review.yml:23 sun-praise/...review@v2

同一批修改中,SKILL.md 内的 7 处引用和 .github/workflows/feature-missing.yml 均已正确升级为 @v3,但这 3 个 examples 文件被遗漏。用户参考 examples 目录中的模板时会复制到 @v2 版本,与 skill 文档中的 @v3 指引矛盾。

建议在对应的 examples 文件中将 @v2 统一升级为 @v3

New%20session%20-%202026-05-27T02%3A10%3A22.498Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

最终决策:不可合并

PR 将 actions 所有者从 Svtter 改为 sun-praise 并新增 multi-review action。quality reviewer 给出不可合并评级,存在必须修复的阻塞问题。

阻塞项:

  1. feature-missing.yml 使用了外部引用 sun-praise/opencode-actions/feature-missing@v3 而非 ./ 本地路径,与 commit message 声明及仓库内其他 workflow 不一致,将导致 CI 继续因外部仓库认证失败。(quality)
  2. @v3 标签在仓库中不存在,workflow 运行时解析失败。(quality)
  3. 版本号不一致(已确认 — quality/security/architecture):feature-missing.yml 等使用 @v3examples/ 下文件使用 @v2SKILL.md 部分改为 @v3,用户参考 examples 将获得与 CI 不同的版本行为。(quality 阻塞;security、architecture 均提及)

建议项:

  1. 供应链风险确认Svtter → sun-praise 变更未说明背景。如非官方 fork/重命名,透传给 action 的 GITHUB_TOKENZHIPU_API_KEY 等 secrets 面临未授权访问风险。(security)
  2. setup-ci.skill 二进制文件删除:需确认其中无残留 secret 后安全删除。(security、architecture)
  3. extra-env 注入风险:可被用于覆盖 PATHLD_PRELOAD 等危险环境变量,建议限制或过滤。(security)
  4. timeout-seconds: "0" 可禁用超时,存在 CI runner 资源被长时间占用的风险。(security)
  5. feature-missing.yml 权限可收紧id-token: write 非必需,contents: readpull-requests: writeissues: read 已足够。(quality)
  6. Owner 硬编码分散多处:建议使用 GitHub 变量或 reusable workflow 集中管理,减少后续迁移成本。(architecture)

📋 各 Reviewer 详细审查结果
quality

不可合并

总结

PR 做了两件事:将 actions 所有者从 Svtter 改为 sun-praise,以及新增 multi-review action。存在以下问题:

阻塞项

  1. feature-missing.yml 使用了错误的外部引用feature-missing.yml:27):commit message 明确表示要改为 ./ 本地路径以修复 CI 中的 403 错误,但实际改成了 sun-praise/opencode-actions/feature-missing@v3。同一仓库的 ci.ymlsmoke-test.ymlmulti-review.yml 均使用 ./ 本地路径,此处不一致将导致 CI 继续因外部仓库认证问题而失败。

  2. @V3 标签不存在:仓库中没有 v2v3 标签。sun-praise/opencode-actions/feature-missing@v3 引用了一个不存在的 Git 标签,workflow 在运行时将解析失败。

  3. 版本号不一致

    • CI workflow feature-missing.yml 使用 feature-missing@v3
    • examples/opencode-feature-missing.yml 使用 feature-missing@v2
    • examples/opencode-review.yml 使用 review@v2
    • examples/opencode-command.yml 使用 github-run-opencode@v2

    用户参考 examples 会得到 @v2,但 CI 自身用 @v3。SKILL.md 模板也统一用 @v3,与 examples 产生矛盾。

建议项

  • 历史文档 docs/releases/v1.0.0.md 仍保留 Svtter/opencode-actions@v1 引用(作为历史记录可接受,但建议标注为旧版本)
  • feature-missing.ymlpermissions 设为 id-token: write,但 feature-missing action 实际只需要 contents: readpull-requests: writeissues: read,可收紧权限
security

存在风险

安全分析摘要:本次 PR 主要将 GitHub Actions 引用从 Svtter/opencode-actions 变更为 sun-praise/opencode-actions,新增 multi-review 动作并引入 opencode-go-api-keygitea-tokendeepseek-api-key 等多个新密钥输入。同时删除了 setup-ci.skill 二进制文件。

阻塞项:无
(本次 PR 仅修改文档、示例工作流和技能描述文件,未修改实际执行逻辑或 action 源码。但需注意:如果 sun-praise 非原仓库 Svtter 的授权继承者或别名,则所有透传给该 action 的 secrets 将面临供应链风险。建议在合并前确认 sun-praise/opencode-actions 是否由原团队维护,以及 v2/v3 tag 是否对应可信代码。)

建议项:

  1. 供应链风险确认Svtter → sun-praise 的 owner 变更未附带说明或迁移上下文。如果 sun-praise 不是受信的官方 fork/重命名,则 CI 中透传的 GITHUB_TOKENZHIPU_API_KEYOPENCODE_GO_API_KEY 等 secrets 可能被未授权的第三方 action 获取。
  2. 版本号不一致:部分引用从 @v2 升级到 @v3(如 reviewfeature-missing),部分保持 @v2(如 github-run-opencode、opencode-command.yml 中)。建议统一版本或在 changelog 中说明差异原因。
  3. 新增密钥暴露面multi-review 动作新增 opencode-go-api-keygitea-tokendeepseek-api-key 等多个密钥输入。这些密钥会以环境变量形式透传给 action 进程,增加了密钥泄露的攻击面。建议对非必要密钥使用条件传递。
  4. extra-env 环境注入风险multi-reviewextra-env 参数允许传入多行 KEY=VALUE,可被用于覆盖 PATHLD_PRELOAD 等危险环境变量。建议限制或过滤该参数。
  5. 超时可禁用timeout-seconds: "0" 可禁用超时,可能导致 CI runner 资源被长时间占用。建议在文档中增加安全提示。
  6. 二进制文件删除setup-ci.skill 被删除但未展示 diff 内容,无法确认其中是否包含敏感信息(如 hardcoded tokens)。建议确认该文件无遗留 secret 后安全删除。
performance

性能良好

该 PR 为纯配置/文档变更(YAML workflow 引用、Markdown 文档),不涉及任何应用代码改动,不存在算法复杂度、内存分配、数据库查询、缓存、并发、资源利用等性能问题。multi-review 仅是文档中新增的 action 说明,其实现代码不在本次 diff 范围内,无法评估。

阻塞项:无

建议项:无

architecture

架构有疑虑

该 PR 主要做了两件事:将 action 引用从 Svtter/opencode-actions 批量改为 sun-praise/opencode-actions,以及新增 multi-review action 的文档说明。

架构分析摘要

  • 整个 PR 本质上是 action 仓库的 owner 迁移(Svttersun-praise),所有工作流和文档中的 owner 字符串被整体替换
  • 新增的 multi-review 模块文档放在正确的位置(skills/setup-ci/ 下),与现有 reviewarchitect-review 等文档结构一致

阻塞项:无

建议项:

  1. 版本标签不一致.github/workflows/feature-missing.yml 升级到 @v3,但 examples/ 下的文件仍停留在 @v2skills/setup-ci/SKILL.md 中部分改为 @v3。同一 PR 内对同一套 action 使用不同版本标签会造成用户困惑,建议统一。
  2. Owner 硬编码散落多处Svttersun-praise 的替换在 5+ 个文件中重复出现,说明 owner 信息与工作流文件紧耦合。如果未来再次迁移 owner,又会是一次 shotgun surgery。建议考虑使用 GitHub 变量或 reusable workflow 集中管理。
  3. setup-ci.skill 二进制文件被删除:根目录下 setup-ci.skill 被删除,diff 中未说明原因。如果该文件已被 skills/setup-ci/SKILL.md 替代,则清理合理;但应确保没有外部引用指向该文件。

@github-actions
Copy link
Copy Markdown

发现遗漏


PR 的 body 列出 6 项变更,无关联 issue。逐项核查如下:

# 要求 状态 说明
1 multi-review 加入 action 选择表 SKILL.md:23
2 multi-review workflow 模板 SKILL.md:65-101
3 multi-review inputs 添加到 actions-reference.md actions-reference.md:218-236
4 multi-review 权限声明 actions-reference.md:246 + SKILL.md:80-83
5 Update all action refs @v2@V3 见下方分析
6 Rebuild setup-ci.skill zip ⚠️ 实际删除了 zip(content 已迁移至 SKILL.md),非重建,但功能未丢失

MEDIUM

@v2@V3 升级不完整 — PR body 明确要求 "Update all action refs @v2@v3",但在 PR 修改的 7 个文件中,3 个 examples 文件仅做了 owner 替换(Svtter → sun-praise),版本号仍停留在 @v2

  • examples/opencode-command.yml:68sun-praise/opencode-actions/github-run-opencode@v2
  • examples/opencode-feature-missing.yml:23sun-praise/opencode-actions/feature-missing@v2
  • examples/opencode-review.yml:23sun-praise/opencode-actions/review@v2

同一 PR 内,SKILL.md 的 7 处引用和 .github/workflows/feature-missing.yml 均已正确升级为 @v3,但这 3 个 examples 被遗漏。用户参考 examples 模板时会复制到 @v2,与 skill 文档中的 @v3 指引产生矛盾。

建议修复:在这 3 个 examples 文件中将 @v2 统一升级为 @v3

New%20session%20-%202026-05-27T02%3A12%3A12.001Z
opencode session  |  github run

- examples/: upgrade @v2@V3 to match SKILL.md
- feature-missing.yml: remove unnecessary id-token: write,
  change issues: write → issues: read (matches action reference)
@github-actions
Copy link
Copy Markdown

最终决策:有条件合并

综合 4 位 reviewer 意见:quality 报告 1 个阻塞项,security 虽给出"存在风险"结论但实际未提出阻塞项。架构和性能无阻塞。当前代码中需修复一个版本对齐问题后方可合并。

阻塞项

  1. examples 与 SKILL.md 版本标签不一致(quality,已确认¹)
    examples/opencode-*.yml 中 action 引用仍用 @v2,而 skills/setup-ci/SKILL.md 模板已全为 @v3,用户参考不同文档会得到矛盾的版本推荐。应统一对齐为 @v3.github/workflows/feature-missing.yml 已使用 @v3 可作为参考)。

建议项

  1. tests/test_all.py:687 测试断言过期(quality)— 测试 test_uses_review_v2 仍在检查已不存在的文件和过时的 org/version。建议清理或更新。

  2. 组织迁移的供应链安全确认(security)— Svttersun-praise 变更若并非官方合法转移,则构成供应链投毒风险。建议:确认新组织所有权;对关键 action 固定到 commit SHA 而非 @v3 标签。

  3. extra-env 参数环境变量注入风险(security)— 该参数接受任意 KEY=VALUE,可覆盖 PATHLD_PRELOAD 等关键变量。建议设置白名单限制或改用常规 inputs 传递配置。

  4. 多 API key 集中暴露与凭据管理(security + architecture)— multi-review 同时接收 5 种凭据,且各 action 各自独立定义 API key 输入。建议:审查内部实现是否对所有 key 做了 ::add-mask::;后续考虑统一凭据管理策略。

  5. gitea-token 用途与权限不明确(security)— 建议在文档中说明 token 权限范围和用途,防止跨平台凭据泄露。

  6. setup-ci.skill 二进制文件删除后确认无残余引用(architecture + quality)— 建议检查代码库中是否还存在对该文件的引用。

  7. LICENSE 和 docs/releases/v1.0.0.md 仍保留 Svtter(quality)— 历史记录可保留,但建议确认无遗漏。

¹ 该阻塞项仅由 quality 单独提出,security 虽认同版本标签问题但将其列为建议项(第 5 条),且未定性为阻塞。根据规则 5(保留最严重发现),采纳 quality 的阻塞定性。


📋 各 Reviewer 详细审查结果
quality

有条件合并

该 PR 将 GitHub Actions 引用从 Svtter/opencode-actions 重命名为 sun-praise/opencode-actions,并在 skills/setup-ci/SKILL.md 中添加了 multi-review 文档,同时删除了重复的 setup-ci.skill 二进制文件。整体变更方向正确,代码无功能错误。

阻塞项:

  1. examples 与 SKILL.md 版本标签不一致examples/opencode-*.yml 中所有 action 引用仍使用 @v2(如 review@v2feature-missing@v2),但 skills/setup-ci/SKILL.md 中的模板已全部升级为 @v3(如 review@v3feature-missing@v3)。用户参考不同文档会得到不一致的版本推荐,应统一对齐。(注意:.github/workflows/feature-missing.yml 自身使用 feature-missing@v3,进一步印证 @v3 是当前正确版本。)

建议项:

  1. tests/test_all.py:687 测试断言已过期test_uses_review_v2 检查 Svtter/opencode-actions/review@v2,但所测试的文件 .github/workflows/review.yml 已不存在,且断言中的 org/version 均已过时。建议清理或更新该测试。

  2. LICENSE 和 docs/releases/v1.0.0.md 仍保留 Svtter 引用(Copyright 和发版记录),这些属于历史记录可不修改,但建议确认无遗漏。

security

存在风险

安全分析摘要

本次 PR 主要将全部 GitHub Actions 引用从 Svtter/opencode-actions 变更为 sun-praise/opencode-actions,并新增了 multi-review action(含多个 API key 输入及 extra-env 参数),版本号从 @v2 升至 @v3。存在以下安全关切:

阻塞项

建议项

  1. 组织名称变更存在供应链投毒风险 — 所有 actions 的引用从 Svtter/opencode-actions 改为 sun-praise/opencode-actions(如 feature-missing.yml:27opencode-command.yml:68 等)。若 sun-praise 并非 Svtter 的合法重命名或官方转移,则属于典型的供应链攻击模式——将 CI 流水线指向不可控的第三方仓库。建议确认:

    • sun-praise 是否为该项目的官方新组织名;
    • 新组织的 actions 代码是否经过审计;
    • 在正式使用前,将关键 action 固定到 commit SHA 而非 tag(如 @v3)。
  2. extra-env 参数存在环境变量注入风险multi-review action 新增的 extra-env 输入接受多行 KEY=VALUE 格式,允许使用者传入任意环境变量。恶意或误用可覆盖 PATHLD_PRELOADHOME 等关键变量,导致 runner 行为异常或权限提升。建议:

    • 限制允许设置的环境变量白名单;
    • 或移除该参数,使用常规 action inputs 传递配置。
  3. 多 API key 集中暴露面增大multi-review action 同时接收 github-tokenzhipu-api-keyopencode-go-api-keydeepseek-api-keygitea-token 共 5 种凭据。如果 action 代码中任一环节对这些 key 的处理存在日志泄露、错误输出或 HTTP header 泄露,攻击面较大。建议审查 action 内部实现中是否对所有 key 做了 ::add-mask:: 处理。

  4. gitea-token 语义不明确 — 新增的 Gitea token 输入未说明该 token 的权限范围及用途。若该 token 在 runner 中被不当传递或持久化,可能造成跨平台凭据泄露。

  5. 版本标签仍为可变引用 — SKILL.md:304 等处仍建议用户固定到 @v3 而非 commit SHA。对于安全敏感仓库,应改用不可变 commit SHA 引用。

performance

性能良好

本次 PR 仅涉及以下变更,均不包含任何可执行代码或运行时逻辑:

  1. Owner 重命名:将 Svtter 替换为 sun-praise(YAML 和文档中的字符串替换)
  2. 版本号递增@v2@v3(仅版本引用更新)
  3. 文档新增:在 SKILL.mdactions-reference.md 中增加了 multi-review action 的配置说明和输入参数文档
  4. 二进制文件删除:移除了 setup-ci.skill(已无相关二进制文件)

没有任何算法、内存分配、数据库查询、缓存策略、并发或资源利用方面的代码变更,因此不存在任何性能问题。

阻塞项:无
建议项:无

architecture

架构合理

整体架构评价:该 PR 主要执行了两项变更——将 GitHub Actions 引用从 Svtter/opencode-actions 迁移至 sun-praise/opencode-actions,以及新增 multi-review 动作的文档说明。两项变更均严格遵循了现有架构模式,没有引入新的耦合、分层不当或接口设计问题。

阻塞项:无

建议项:

  1. setup-ci.skill 根目录文件的删除是否同时清理了所有对该文件的引用,建议确认无残余引用
  2. multi-review 新增了多个 API key 输入(opencode-go-api-keydeepseek-api-keygitea-token 等),这些凭据的使用场景与其他 action 略有重复,后续可考虑统一凭据管理策略,避免各 action 各自定义 API key 输入导致维护负担

@github-actions
Copy link
Copy Markdown

分析

无关联 issue,需求来自 PR body 的 6 项变更列表。

逐项核查:

# 要求 状态 说明
1 multi-review 加入 action 选择表 SKILL.md:23
2 multi-review workflow 模板 SKILL.md:65-101
3 multi-review inputs 添加到 actions-reference.md actions-reference.md:218-236
4 multi-review 权限声明 actions-reference.md:246 + SKILL.md:80-83
5 Update all action refs @v2@V3 部分未更新
6 Rebuild setup-ci.skill zip ⚠️ 实际为删除,非重建

发现遗漏


MEDIUM

@v2@V3 升级不完整 — PR body 明确要求 "Update all action refs @v2@v3",但本 PR 修改的 3 个 examples 文件仅做了 owner 替换(Svtter → sun-praise),版本号仍为 @v2,与 SKILL.md 和 feature-missing.yml 中统一升级为 @v3 的行为不一致:

文件 行号 当前版本
examples/opencode-command.yml 68 github-run-opencode@v2
examples/opencode-feature-missing.yml 23 feature-missing@v2
examples/opencode-review.yml 23 review@v2

这些文件在本 PR 中已被修改(owner 变更),说明作者有意更新但遗漏了版本号升级。用户在参考 examples 目录模板时将复制到 @v2,与 SKILL.md 中的 @v3 指引产生矛盾。

建议在对应 examples 文件中将 @v2 统一升级为 @v3

LOW

setup-ci.skill 描述与实际操作不符 — PR body 称为 "Rebuild setup-ci.skill zip",实际操作为删除该二进制文件(setup-ci.skill DELETED +0/-0)。内容已迁移至 skills/setup-ci/SKILL.md,功能未丢失,但操作描述不准确。

New%20session%20-%202026-05-27T02%3A14%3A35.464Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无关联 issue。PR body 列出 6 项需求,逐项对照 diff 核实:

  1. multi-review 加入 action 选择表SKILL.md:23
  2. multi-review workflow 模板SKILL.md:65-101
  3. multi-review inputs 文档actions-reference.md:218-236 + 描述段落 ✅
  4. multi-review 权限声明actions-reference.md:246 + SKILL.md:80-83
  5. @v2@V3 升级 — 所有 9 处引用已全部更新(含 examples/ 3 个文件、SKILL.md 6 处,均由 @v2 升为 @v3feature-missing.yml 原为 @v3 未降级)✅
  6. setup-ci.skill — 文件被删除,内容已迁移至 skills/setup-ci/SKILL.md,功能无损 ✅

无遗漏

New%20session%20-%202026-05-27T02%3A15%3A56.829Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

最终决策:有条件合并

总结:PR 核心为组织名迁移、版本升级、新增 multi-review 文档及权限收紧。整体变更清晰,但存在需合并前确认的安全阻塞项。

阻塞项

  1. 组织名迁移需审计确认(安全·质量·已确认):全局替换 actions 引用至 sun-praise/opencode-actions,需核实 sun-praiseSvtter 的合法迁移目标且代码经过安全审计;同时确认 @v3 tag 已在目标仓库发布。
  2. extra-env 缺少变量白名单(安全):multi-reviewextra-env 支持任意 KEY=VALUE,可覆盖 PATHLD_PRELOAD 等敏感变量,应增加可修改变量白名单。

建议项

  1. 将 actions 引用统一提取为集中配置(架构),避免每次变更散弹式修改
  2. 生产环境建议锁定至具体 commit SHA 而非 tag(安全),防范 tag 被恶意覆盖
  3. timeout-seconds 设置合理上限,防止 0 禁用超时导致 DoS(安全)
  4. 启用仓库级 Secret scanning 防范 API Key 泄露(安全)
  5. 清理 skills/setup-ci/SKILL.md:31 多余空行(质量)
  6. 后续同类 action 增多时,认证参数宜统一抽象避免重复声明(架构)

📋 各 Reviewer 详细审查结果
quality

可合并

这是一个干净利落的 PR,核心变更包括:(1) 将 Svtter/opencode-actions 统一更新为当前远程仓库 sun-praise/opencode-actions;(2) 示例文件从 @v2 对齐至 @v3;(3) 收紧 feature-missing 工作流的权限(移除未使用的 id-token: writeissues: write 降为 read);(4) 删除已迁移至 skills/setup-ci/SKILL.md 的旧格式二进制 skill 文件;(5) 新增 multi-review 动作的完整文档。

阻塞项:无

建议项:

  • skills/setup-ci/SKILL.md:31 存在多余空行,建议清理
  • 确认 sun-praise/opencode-actions 仓库中 @v3 的 major tag 已发布,否则示例中的引用会解析失败(鉴于原 feature-missing.yml 已使用 @v3,该 tag 应已存在)
security

高危漏洞

安全分析总结:本 PR 存在严重的供应链安全风险。所有 GitHub Actions 的引用从 Svtter/opencode-actions 变更为 sun-praise/opencode-actions,且无任何说明或审计记录表明此次变更已获授权。Actions 在运行时拥有访问仓库 Secrets(GITHUB_TOKENZHIPU_API_KEY 等)的权限,若 sun-praise 非原组织合法迁移目标,则构成典型的依赖混淆/供应链投毒攻击

阻塞项

  1. 供应链投毒风险(严重):Svtter/opencode-actionssun-praise/opencode-actions 的全局替换。GitHub Actions 可以读取所有仓库 Secrets,变更后的 Action 代码若包含恶意逻辑,可直接窃取 GITHUB_TOKENZHIPU_API_KEYOPENCODE_GO_API_KEY 等凭证。需确认 sun-praise 是否为原组织的合法重命名或迁移目标,且 Actions 代码已经过安全审计。
  2. extra-env 环境变量注入(高危):multi-review 新增 extra-env 输入项,允许传入任意 KEY=VALUE。攻击者可通过此参数覆盖 PATHLD_PRELOADHOME 等敏感环境变量,导致恶意代码执行或权限逃逸。应当限制可覆盖的变量白名单。
  3. gitea-token 新增凭据暴露面:新引入的 gitea-token 输入项将另一平台的 API 凭据传入 Action,若 sun-praise/opencode-actions 存在恶意行为,该凭据同样面临泄露风险。
  4. 二进制文件 setup-ci.skill 被删除:原二进制文件被直接删除,无替换。若此文件包含已签名的技能逻辑或加密凭证,删除可能导致下游用户出现意外行为,需确认删除意图。

建议项

  1. feature-missing.yml 中移除 id-token: writeissues: writeissues: read 的权限收缩是好的安全实践,值得肯定。
  2. 版本号从 @v2 提升至 @v3 时,建议文档中同时强调生产环境应锁定到具体 commit SHA 而非 tag,以避免 tag 被恶意覆盖。
  3. 文档中新增了 deepseek-api-key 等多个 API Key,建议在仓库级别启用 Secret scanning 以防范意外泄露。
  4. multi-reviewtimeout-seconds 参数允许设 0 禁用超时,建议在代码层面增加合理的上限值防止 DoS。
performance

性能良好

本次 PR 仅涉及 YAML 工作流配置和 Markdown 文档变更,没有修改任何可执行代码、算法逻辑、数据库查询、内存分配或并发处理逻辑。

变更内容:

  • 将 GitHub Actions 引用从 Svtter/opencode-actions 改为 sun-praise/opencode-actions
  • 版本标签从 @v2 升级到 @v3
  • 在文档中添加了 multi-review 新 action 的说明
  • 删除了二进制文件 setup-ci.skill
  • 调整了 feature-missing.yml 的权限声明(移除 id-token: writeissues: write 降为 issues: read

由于不涉及任何运行时代码,不存在算法效率、内存泄漏、N+1 查询、缓存缺失、冗余计算、并发问题或资源利用率方面的性能风险。

阻塞项:无

建议项:无

architecture

架构合理

总体来看,这个 PR 的核心变化是组织名从 Svtter 迁移到 sun-praise 的机械性替换,以及新增 multi-review action 的文档接入。未引入架构层问题。

阻塞项:无

建议项:

  1. 组织名迁移+版本号升级导致 7 个文件被修改,属于轻度的 shotgunsurgery。虽然对纯文档/配置类文件影响可控,但建议后续将 action 引用提取为集中配置(如变量或 action.yml 中的默认值),避免每次 org/version 变更都需要全量替换。
  2. multi-review 新增了 opencode-go-api-keygitea-tokendeepseek-api-key 等多个独立 API key 输入。这些 key 有共性,后续若同类 action 增多,建议统一到基类或共享的认证抽象层,避免每新增一个 review action 都重复声明相同的一组认证参数。

@Svtter Svtter merged commit 71cdd05 into main May 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant