基于 Yunxiao MCP 审核阿里云云效 Codeup 合并请求/MR,拉取 MR 详情、patch set、diff、提交、文件内容、项目 AGENT 指南、specs 规格文件和已有评论,输出按严重程度排序的代码审核发现,并可主动在 MR 上发布行内问题评论和最终总结评论;用于用户要求审查云效 MR、Codeup 合并请求、变更 diff、待合并代码风险、规格实现一致性,或处理 MR 评论时。
How this skill is triggered — by the user, by Claude, or both
Slash command
/yunxiao-work-assistant:yunxiao-mr-reviewerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- 所有自然语言输出使用简体中文;工具名、字段名、文件路径、代码片段保持原文。
sequenceDiagram 代码理解图。https://raw.githubusercontent.com/aliyun/alibabacloud-devops-mcp-server/refs/heads/master/README.md;MR 审核至少需要启用 code-management,按关联工作项核对需求时还需要 project-management。list_change_request、get_compare 等历史名称,当前优先使用 list_change_requests、compare。organizationId、repositoryId、localId、分支名、patch set ID、文件路径或行号。缺关键参数时先查询,仍无法确认时再向用户要。NEEDS_CONTEXT。organizationId:优先使用用户给出的值;否则用历史上下文、环境变量 YUNXIAO_ORGANIZATION_ID / YUNXIAO_ORG_ID,或调用 get_current_organization_info。repositoryId:优先使用用户给出的仓库 ID、URL 编码全路径或 MR 链接解析结果;否则用 list_repositories 按仓库名搜索并让用户在候选中确认。localId:云效 Codeup 仓库内的 MR 局部 ID。用户只给标题或关键词时,用 list_change_requests 搜索 opened MR 并确认唯一结果。get_current_organization_info 获取默认组织。get_repository 或 list_repositories 确认仓库。get_change_request 获取 MR 标题、状态、作者、源分支、目标分支、关联工作项和描述。list_change_requests,优先筛选 state="opened"。list_change_request_patch_sets 获取版本列表,识别最新 patch set,以及行内评论需要的 from_patchset_biz_id / to_patchset_biz_id。list_change_request_comments 获取已发布和未解决评论,避免重复提出同一问题。compare 比较目标分支到源分支;分支比较时使用 from=<目标分支>、to=<源分支>、sourceType="branch"、targetType="branch",默认使用 merge-base。get_file_blobs 分别读取源分支和目标分支文件内容;需要目录结构时用 list_files。AGENT.md,再读取源分支同路径版本。源分支修改了指南文件时,把指南变更本身作为 MR 变更审查,不要直接用新规则覆盖基线规则。specs/ 目录下与 MR 标题、分支名、工作项 ID、提交信息或改动模块相关的规格文件;没有提交或找不到对应规格文件时忽略,并在最终总结评论里标注“未发现对应 specs 规格文件”。list_commits 和 get_commit 查看源分支提交。get_work_item、list_work_item_comments、list_workitem_attachments、get_workitem_file 补需求、验收说明和附件证据。实现内容:基于 MR 描述、提交和 diff 概括,不照抄作者描述。规格/验收场景:来自 specs/、关联工作项或 MR 描述;没有就写 None provided。目标基线:目标分支名和用于比较的基线版本或 patch set。源分支头部:源分支名、最新提交或最新 patch set。测试证据:只记录测试文件变更、MR 描述里的测试结果、已有流水线结果或人工验证说明;没有就写“未发现测试证据”,不要为了补证据而运行测试。已知风险/缺失上下文:权限不足、文件过大未读、specs 规格缺失、评论写入失败等。AGENT.md 理解项目架构、目录职责、命名约定、测试策略和禁用做法;如果源分支修改了该文件,单独说明规则变化及其影响。审核风格和架构一致性时要引用基线约定。references/review-guidelines.md。审核发现,按 P0、P1、P2、P3 排序。审核摘要:MR 状态、源分支到目标分支、Review Package 摘要、已有未解决评论、主要风险面、评论写入结果和结论。测试与验证缺口,只列和风险直接相关的缺口。P0:会导致生产事故、数据破坏、严重安全漏洞、无法启动或无法合并的阻塞问题。P1:高概率功能回归、权限绕过、数据不一致、兼容性破坏或关键流程失败。P2:边界条件错误、可恢复但真实的行为缺陷、重要测试缺口或可观测性缺口。P3:低风险问题,例如误导性文案、非阻塞清理项。不要把纯风格偏好写成 P3。NEEDS_CHANGES:存在 P0 或 P1,或存在必须修复的规格偏离、关键测试缺口、数据/安全/兼容性风险。NEEDS_CONTEXT:无法取得关键 diff、文件内容、基线规则、规格/验收材料、patch set 或评论写入验证结果,导致无法公平判断。APPROVED:未发现阻塞合并的问题,且 Review Package 中没有会影响判断的关键证据缺口;可带非阻塞备注。云效评论区按朴素 Markdown 渲染。为了保持工整,所有写入云效的评论都必须遵守这些格式约束:
评审意见 分为 代码实现建议 和 架构设计建议,审查详情 记录文件清单和证据范围。sequenceDiagram。[path/to/file.go](<repository webUrl>/blob/<latest source commit>/<url-encoded path>);没有 commit 时用源分支名;无法可靠拼出链接时才退回反引号路径。- **字段**:内容,字段名保持短且稳定;内容过长时拆成多条并列列表。INLINE_COMMENT 只写当前行相关的问题,目标长度控制在 1200 字符内。必须使用这个结构:
**`P1` 问题标题**
- **触发条件**:说明什么输入、状态或调用路径会触发。
- **问题原因**:说明当前 diff 中哪段逻辑导致问题。
- **影响范围**:说明会影响哪些用户、数据、权限或流程。
- **修复建议**:给出最小修复方向。
- **验证建议**:说明应补充或复核的关键场景;没有测试缺口时写“复用现有验证即可”。
无法可靠定位到单行、跨多个文件或属于总体风险的问题,使用问题类 GLOBAL_COMMENT。不得包含最终总结标记。必须使用这个结构:
### `P1` 问题标题
- **位置**:`path/to/file.ts:42`、`path/to/other.ts`;跨模块问题写主要相关文件。
- **触发条件**:说明什么输入、状态或调用路径会触发。
- **问题原因**:说明涉及的代码路径、状态变化或模块协作问题。
- **影响范围**:说明会影响哪些用户、数据、权限或流程。
- **修复建议**:给出最小修复方向;需要产品或架构确认时写清确认点。
- **验证建议**:说明需要补充或复核的关键场景。
最终总结评论必须单独发布为 GLOBAL_COMMENT,并使用这个结构。章节为空时保留章节,用“未发现”“未提供”或“无需补充”说明,不删除章节。
<!-- yunxiao-mr-reviewer:final-summary -->
## AI Review 最终总结
### 1. 变更概览
- **结论**:一句话说明这个分支解决什么问题。
- **主要模块**:列出模块或能力分组。
- **关键文件**:按职责分组列出 3 到 8 个最值得人工 review 的文件链接;文件较多时按模块概括,不要堆成长列表。
### 2. 项目约定依据
- **已读取**:列出 `AGENT.md` 路径;没有则写“未发现项目 AGENT 指南”。
- **影响本次审核的约定**:列出和本 MR 直接相关的约定。
### 3. 规格对应关系
- **已读取**:列出 `specs/` 文件、工作项或 MR 描述来源。
- **覆盖情况**:说明已覆盖的需求点。
- **未覆盖/未确认**:说明缺失的 specs 规格文件、验收点或业务确认项。
### 4. 评审意见
- **代码实现建议**:列出明确的代码实现问题或写“未发现需要特别关注的代码实现问题”。
- **架构设计建议**:列出跨文件交互、系统一致性、边界抽象、配置契约或扩展性风险;没有则写“未发现需要特别关注的架构设计问题”。
- **关键代码**:列出 0 到 5 个最需要人工看的文件行号链接;已在问题评论中覆盖时写“见问题评论”。
- **潜在风险**:只写由 diff、specs 规格文件或现有证据支持的风险;没有则写“未发现明显潜在风险”。
### 5. 实现流程
1. **入口**:说明请求、任务、命令或事件从哪里进入。
2. **处理**:说明主要判断、转换、调用或状态流转。
3. **输出**:说明最终响应、持久化、消息投递或外部副作用。
4. **异常路径**:说明失败、空数据、权限不足或兼容分支;没有则写“未发现特殊异常路径”。
### 6. 代码理解图
```mermaid
sequenceDiagram
participant U as 用户/调用方
participant E as 入口模块
participant S as 核心服务
participant D as 数据/外部依赖
U->>E: 发起请求或触发事件
E->>S: 校验并转交处理
alt 失败或不满足条件
S->>E: 返回错误或跳过原因
E->>U: 返回失败结果
else 正常处理
S->>D: 读取或写入数据
D->>S: 返回依赖结果
S->>E: 返回处理结果
E->>U: 返回成功结果
end
```
### 7. 核心实现说明
- **模块/文件**:说明新增或修改的职责、关键分支和边界处理。
- **模块/文件**:继续按模块列出,不逐行复述 diff。
### 8. 测试与验证
- **已有证据**:列出 MR 描述、测试文件、流水线结果或人工验证说明。
- **缺口**:列出和风险直接相关的缺口;没有则写“未发现明显测试缺口”。
- **AI 执行情况**:固定写“AI 未执行本地测试、云效流水线或测试计划,仅基于已有证据审核。”
### 9. 人工 review 重点
- **重点 1**:说明文件或流程,以及人工需要确认的原因。
- **重点 2**:继续列出风险点、业务确认项或回滚关注点。
### 10. 审查详情
- **变更文件**:列出文件总数和主要路径;文件很多时按目录或模块归类。
- **已审查材料**:列出 MR 描述、diff、提交、`AGENT.md`、`specs/`、工作项、已有评论等实际读取的材料。
- **未审查/受限**:列出权限不足、文件过大、未取得 specs 规格文件、无法读取旧版本等限制;没有则写“未发现受限材料”。
### 11. AI 审核结论
- **结论**:`APPROVED` / `NEEDS_CHANGES` / `NEEDS_CONTEXT`
- **问题评论**:已写入 `P0/P1/P2/P3` 评论数量;没有则写“未写入问题评论”。
- **残余风险**:一句话说明剩余风险或上下文缺口;没有则写“未发现需要阻塞合并的残余风险”。
repositoryIdentity、commentType、filePath、patchSetBizId 等字段名直接传给 MCP。
content 长度保持在 1 到 65535 之间。总结评论仍按本 skill 的长度目标压缩,避免接近上限。parent_comment_biz_id 只在回复已有评论时传;创建根评论时不传。resolved=false:行内问题评论、全局问题评论和最终总结评论都不要标记为已解决;回复评论按上下文决定是否设置。create_change_request_comment:
comment_type="GLOBAL_COMMENT",patchset_biz_id 使用最新合并源版本 ID,并显式设置 resolved=false。comment_type="INLINE_COMMENT",必须提供 file_path、line_number、from_patchset_biz_id、to_patchset_biz_id 和 patchset_biz_id,并显式设置 resolved=false。comment_type="GLOBAL_COMMENT",在内容里写明文件路径和代码位置,并显式设置 resolved=false。GLOBAL_COMMENT 不能使用最终总结标记 <!-- yunxiao-mr-reviewer:final-summary -->,最终总结 GLOBAL_COMMENT 不能承载未解决问题详情。sequenceDiagram 代码理解图。draft=true。list_change_request_comments 验证评论存在,并输出成功项、失败项和未写项。最终总结评论是单独的 GLOBAL_COMMENT,不替代 INLINE_COMMENT 文件行内问题评论,也不替代问题类 GLOBAL_COMMENT。每次完整审核 MR 后都发布一条,除非用户明确要求只本地输出不写云效。
comment_type="GLOBAL_COMMENT" 调用 create_change_request_comment,patchset_biz_id 使用最新合并源版本 ID,并显式设置 resolved=false,让最终总结保留为未解决评论,方便人工 review 跟进。<!-- yunxiao-mr-reviewer:final-summary -->。只有已有评论同时包含该标记和标题 ## AI Review 最终总结 时,才允许用 update_change_request_comment 更新同一条;更新时也必须显式传 resolved=false,避免沿用已有评论的已解决状态;否则新建,避免误改人工评论。## AI Review 最终总结,内容包含:
变更概览:一句话说明分支解决什么问题,列出主要模块和关键文件。项目约定依据:列出读取到的 AGENT.md 路径和影响本次审核的约定;没有则写“未发现项目 AGENT 指南”。规格对应关系:列出读取到的 specs/ 文件、覆盖的需求点、未覆盖或未找到 specs 规格文件的说明。评审意见:分 代码实现建议 和 架构设计建议;没有明确问题时直接写“未发现需要特别关注的问题”,不要为了填满栏目编造建议。实现流程:按“入口、处理、输出、异常路径”使用有序列表描述关键调用链、状态流转或数据流;流程未知时用模块级流程,不编造运行时细节。代码理解图:使用 Mermaid sequenceDiagram 代码块帮助人工理解代码意图,格式必须和已验证可显示的样例一致:
```mermaid,下一行必须是 sequenceDiagram。participant X as 名称 声明参与者,别名使用 ASCII 字母,名称使用中文或模块名。A->>B: 动作说明 表达调用或状态推进,用 B->>A: 返回结果 表达返回。alt / else / end,每个分支写关键触发条件。graph TD、flowchart TD、HTML、表格、样式类、子图、复杂转义或其他无法确认云效可渲染的 Mermaid 语法。sequenceDiagram 表达关键步骤和分支;除非用户提供云效可显示的流程图样例,否则不要输出流程图。核心实现说明:按模块说明新增/修改的职责、入口、关键分支和边界处理。测试与验证:列出已有测试证据、缺口和建议人工验证路径,并说明 AI 未执行测试用例。人工 review 重点:列出需要人工重点看的文件、风险点和业务确认项。审查详情:列出变更文件清单、实际读取的审查材料和未审查/受限材料,帮助人工判断覆盖范围。AI 审核结论:使用 APPROVED / NEEDS_CHANGES / NEEDS_CONTEXT,总结是否发现阻塞问题、已写入的问题评论数量、残余风险。变更概览、评审意见、实现流程、人工 review 重点、AI 审核结论,把逐文件说明压缩成模块级摘要,避免超过云效评论长度上限导致写入失败。list_appstack_change_requests、close_appstack_change_request、cancel_appstack_change_request 来处理 Codeup MR;它们是另一类变更请求。go test、npm test、pnpm test、yarn test、pytest、mvn test、gradle test,也不通过云效测试管理工具创建、执行或更新测试结果。**审核发现**
- **`P1` `path/to/file.ts:42` 问题标题**
- **触发条件**:说明什么输入、状态或调用路径会触发。
- **问题原因**:说明 diff 中哪段逻辑会触发问题。
- **影响范围**:说明用户、数据、权限或流程会怎样受影响。
- **修复建议**:给出最小修复方向。
**审核摘要**
- 结论:`APPROVED` / `NEEDS_CHANGES` / `NEEDS_CONTEXT`
- MR:标题,`source` -> `target`,状态
- Review Package:实现内容、规格/验收场景、基线、头部、测试证据、已知风险摘要
- 已有评论:未解决评论数量和主题
- 最终总结评论:已创建/已更新/失败及原因
- 主要风险:一句话总结
**评审意见详情**
- 代码实现建议:明确问题或“未发现需要特别关注的代码实现问题”。
- 架构设计建议:跨文件交互、系统一致性、配置契约或扩展性风险;没有则写“未发现需要特别关注的架构设计问题”。
- 关键代码:最需要人工查看的文件行号链接;没有则写“未发现需要单独标注的关键代码”。
**测试与验证缺口**
- 缺口及其对应风险;没有缺口时写“未发现明显测试缺口”。
**审查详情**
- 变更文件:文件总数和主要路径。
- 已审查材料:MR 描述、diff、提交、指南、spec、工作项或已有评论。
- 未审查/受限:缺失或受限材料;没有则写“未发现受限材料”。
npx claudepluginhub nsobjects/yunxiao-work-assistant --plugin yunxiao-work-assistantProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.