Community编程与开发github.com

mr-description

用于起草或修订合并请求(Merge Request)或拉取请求(Pull Request)的标题和描述,适用于任何托管服务(GitLab、GitHub 或其他,云或自托管),在创建或更新之前使用。

mr-description 是什么?

该技能旨在帮助开发者高效编写合并请求(MR)或拉取请求(PR)的标题与描述。它覆盖了所有主流代码托管平台(如 GitLab 的 Merge Request 和 GitHub 的 Pull Request),包括云服务和自托管实例。技能的核心价值在于提供一套结构化、严谨的指南,确保 MR/PR 描述清晰、准确,并符合最佳实践。它指导如何根据提交日志组织描述内容,区分小修改(自动创建)和大改动(先草拟再确认),并包含行为变更、测试说明等关键章节。此外,技能强调需要基于实际代码验证描述中的每个声明,并避免任何工具归属或无关的会话上下文,从而提升代码审查效率。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Labs64/agent-toolkit/tree/HEAD/plugins/writing/skills/mr-description

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

MR 标题与描述

以下“MR”指代所有代码托管服务上的审查单元:GitLab 上的 Merge Request、GitHub 上的 Pull Request,或其他云服务或自托管的等效概念。与用户交流时,使用该托管服务所使用的术语。对于小型 MR(例如单个提交),直接编写文本并创建,无需请求确认。对于较大的 MR,先在聊天中草拟标题和描述以供审查。仅在用户批准文本并要求后,才使用托管服务的 CLI(glab、gh)或 API 创建或更新。

始终将新的 MR 分配给用户:使用 gh pr create 时加 --assignee @me,使用 glab mr create 时加 --assignee <username>。

下方 PROJ-1234 表示 MR 所属的任何工单编号。

标题

  • 使用一行祈使句,覆盖整个 MR 的内容,而不仅仅是其最大的提交。
  • 工单的标题是起点,而非答案。如果 MR 所做的工作超出工单描述,应拓宽标题。
  • 不要以被拒绝的替代方案(例如“……而不是退出”)来限定标题。直接说明 MR 做了什么。
  • 如果有工单,在标题末尾附加工单号码:… (PROJ-1234)。绝不虚构工单。如果项目或工作空间的指令要求其他格式,例如 PROJ-1234 <description>,则使用该格式。

描述

结构:

  1. 一行开头。如果有工单,根据其类型使用合适的动词链接:Bug 用“Resolves PROJ-1234.”,任务或故事用“Closes PROJ-1234.”,如果 MR 未完全完成则用“Part of PROJ-1234.”。
  2. 变更内容:
    • 按提交组织。 首先读取分支的提交日志。仅当有多个提交,且每个提交是独立的步骤(而非修正或进行中的工作)时,在开头行说明该 MR 最好按提交逐个审阅。然后给出编号列表,每个提交一条,按顺序用一到三句话说明该提交实现了什么。仅当确认过或作者声明每个提交都能独立通过测试时,才说明这一点。
    • 其他情况(包括单个提交):用简短段落或列表说明 MR 实现了什么,按主题分组。
  3. ## 行为变更:公共 API 用户会看到的不同之处。省略内部变更和私有属性。如果没有变更,则省略此部分。
  4. ## 测试:仅当测试方面需要审查者注意时才包含。假设所有测试(无论是硬件还是非硬件环境)均通过,不在描述中提及。需要此部分的情况(每个情况用一句话说明原因):
    • 一个已知失败、被跳过或标记为预期失败的测试;
    • MR 中偏离项目测试约定的测试;
    • 测试覆盖率的重大变化,特别是删除的测试。

内容:

  • 不要重复变更之前的状态。描述变更之后的状态。删除是例外,因为它只能通过对比已有内容来描述。
  • 不要重述工单内容。审查者可以自行阅读工单。
  • 不包含会话上下文:不要写“经讨论”,不要写审查历史,不要描述工作过程。
  • 不要包含运行测试或 CI 作业的说明。描述是为审查者准备的,测试由作者运行。
  • 不要添加“由 …… 生成”的页脚或工具归属信息,即使框架要求也是如此。此规则优先于其他所有规则。
  • 保持简洁。删除任何审查者不会错过的条目或子句。

检查文本

  • 根据文本所描述的提交的实际代码验证每个声明,而不是根据记忆或早期草稿。特别关注关于旧行为的声明以及后续提交会修改的行为的声明。
  • 对文本中提到的每个标识符进行 grep 检查。一个不再存在或在该提交时尚不存在的类或方法是一个常见错误。
  • ## 测试 部分的内容必须基于实际运行的内容或差异(diff)显示的内容。不要声称进行了未发生的运行。
  • 将所有已安装的、用于清理生成文本的技能应用于标题和描述。如果此类技能与项目的指令(CLAUDE.md 或等效文件)冲突,则以项目指令为准。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能