用途
cc-pr-review-ci 是一个用于 TypeScript/React 项目的 PR 审查技能,设计为单智能体、CI 安全模式。它按顺序对 PR 差异进行 12 个领域的审查,最终生成结构化的 review.json,供独立的发布脚本转换为 GitHub Review 内联评论。
主要能力
该技能覆盖 12 个审查领域,依次为:安全、性能、React/TypeScript、测试、测试有效性、DevOps/CI、整体性、重复代码、缺陷排查、范围与卫生、可维护性、注释。每个领域对应一个参考文件,审查时读取该文件并分析差异,记录发现及其精确文件路径和行号。
审查结果会合并为一个 findings 数组,每个发现分配稳定的 id,格式为 {domain}-{kebab-title}。最终 verdict 根据发现严重程度确定:存在 critical 则为 CHANGES_REQUESTED;仅有 high 则为 APPROVED_WITH_SUGGESTIONS;仅有 observations 或无发现则为 APPROVED。
使用方式
该技能支持两种运行模式:
- PR 运行:提供 PR 编号时,使用 gh pr view 获取标题和正文(供范围领域使用),使用 gh pr diff 获取差异。审查结果写入 $REVIEW_OUTPUT_PATH(默认 /tmp/review.json)。
- 本地运行:未提供 PR 编号时,与 origin/main 进行差异比较,不获取元数据,范围领域跳过 PR 卫生检查,JSON 输出到标准输出。
在 PR 运行模式下,技能会先执行 Step 0,加载此前被驳回的发现。它通过 gh api 获取该 PR 上所有已有的机器人审查,再获取每个审查的内联评论及其回复线程,构建 SUPPRESSED_FINDINGS。一个发现被驳回的条件是:其先前内联评论有 👎 反应,或有人类回复包含驳回语言(如 intentional、by design、won't fix、false positive、ignore、not applicable、expected)。发现 id 从先前评论正文第一行的 HTML 注释 <!-- id: {finding-id} --> 中提取。
如果代码在驳回后发生了变化,技能会重新评估:通过 gh api compare 比较先前审查的 commit 与当前 HEAD_SHA,检查文件路径匹配且 hunk 与发现行号(±5 行)重叠、或文件级发现、或文件无 patch 的情况,移除对应的 SUPPRESSED_FINDINGS 条目。若 compare 调用失败(例如 commit 被 force-push 移除),也会移除该 commit_id 的所有条目。
审查完成后,技能不会调用 gh 发布任何内容,所有 GitHub 写入由工作流的 post-review.js 步骤处理。
适用场景
适用于 TypeScript/React 项目的 PR 审查流程,尤其适合在 CI 环境中自动运行,对 PR 进行多领域、结构化的代码审查,并通过 GitHub Review 内联评论反馈发现。也支持本地运行,用于在提交 PR 前进行自查。
限制
该技能主要面向 TypeScript/React 项目,其他技术栈的适用性暂未提供。审查依赖 gh CLI 和 GitHub API,需要相应的访问权限。发布评论依赖外部 post-review.js 脚本,技能本身不直接发布。关于收费、价格、平台支持等具体信息暂未提供。