Community写作与编辑github.com

nicolasroy-fr/mr-description

为 GitLab MR 或 GitHub PR 生成或更新标题与描述,使用法语,固定标题格式,结构化描述(描述、背景、变更、测试)。

mr-description 是什么?

该技能专为需要在 GitLab 或 GitHub 上编写或更新合并请求/拉取请求(MR/PR)标题和描述的开发者设计。它会自动检测平台(从URL或git remote),并使用法语生成内容。标题遵循固定模式(包含卡片号、仓库名大写、主题和简短描述),而描述则采用结构化Markdown格式,包含“描述”、“背景”、“变更”和“测试”四个部分。技能要求始终与用户交互验证每个部分,避免猜测信息,并且在获得明确确认前不会修改任何MR/PR内容。它支持从自托管实例识别,并依赖`glab`或`gh`CLI工具进行实际更新。该技能适用于Claude Code、Cursor等支持AI agent的平台,能够显著减少手动编写MR/PR描述的工作量,确保团队协作中的一致性和翻译质量。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/nicolasroy-fr/claude-code-marketplace/tree/HEAD/plugins/dev/skills/mr-description

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

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

文档

MR / PR 标题与描述

所有写入 MR/PR(标题、描述)的内容以及向用户提出的每个问题均使用法语。对 GitLab 说 « MR »,对 GitHub 说 « PR »。

参数(可选)

接收到的内容:$ARGUMENTS

参数目标
https://github.com/<owner>/<repo>/pull/<n>GitHub PR
https://<host>/<group>/<repo>/-/merge_requests/<iid>GitLab MR
#<n> / 单独的 <n>当前仓库的 MR 或 PR:从 git remote -v 推断平台
空当前分支的 MR 或 PR:从 git remote -v 推断平台

如果无法推断平台(自托管主机、多个远程仓库),则询问用户。

硬性规则

  • 未经明确确认标题和描述,然后单独明确授权发送,切勿修改 MR/PR。
  • 绝不编造事实(卡片号、上下文、测试)。询问或省略。
  • MR/PR 内容中不得提及 Claude。

步骤

1. 识别并获取 MR/PR

从参数(上表)解析目标,然后在运行任何命令之前读取相应的参考文档:

  • references/sources/gitlab.md
  • references/sources/github.md

如果 CLI(glab / gh)缺失或未认证,告知用户(建议 ! glab auth login / ! gh auth login),而不是猜测。

检索:当前标题、当前描述、源/目标分支以及变更(差异和提交列表),按照参考文档进行。阅读差异以理解 MR/PR 的实际内容。

确定:

  • 仓库名称:项目路径的最后一段,使用大写字母。
  • 卡片号:在现有标题、分支名称、提交和描述中查找(例如 ABC-123、#123)。如果未找到,询问一次;如果用户说没有,则完全省略中括号。

2. 标题

模式(两个平台相同):

[<卡片号>] <REPO NAME> - <主题> - 简短描述
  • 仅当存在卡片时才包含括号和卡片号。
  • <REPO NAME>:仓库名称大写。
  • <主题>:始终向用户询问(从差异推断出建议作为默认选项,但不要独自决定)。如果当前标题已包含主题,建议保留它。
  • 简短描述:简洁,法语,小写开头,无结尾句号。
  • 如果现有标题格式正确且仍然符合 MR/PR 内容,则保留它并说明。如果不再符合,提议修改版本并显示修改前后对比。

3. 描述

结构(Markdown,法语):

# 描述

<一句话或两句话概括 MR/PR 的目标。>

## 背景

<如果是修改,描述代码的当前状态;预期结果:约束、目标、架构、策略。>

## 变更

- <高级别变更>
- ...

## 测试

- <已编写的测试,或执行的手动测试>

各部分指导:

  • 描述:1-2 句介绍目标。草稿提议后请用户验证或更正。
  • 背景:描述修改前的状态和预期结果(约束、目标、架构、策略)。逐点进行:每次向用户提交一个点进行验证,当某个点可以澄清时(为什么选择这个、哪个约束、拒绝了哪个替代方案)提出一个问题。不要带着未验证的假设继续。
  • 变更:仅列出高级别内容。仅在变更具体涉及某个细节或对于理解整个 MR/PR 至关重要时才深入细节。
  • 测试:概括已编写的自动测试(覆盖的文件/区域)和已执行的手动测试。如果未知,则询问;绝不声称未执行的测试。

优先使用 AskUserQuestion 批量提出相关问题(主题、卡片号、背景要点),以减少往返次数。

4. 现有描述(更新情况)

如果 MR/PR 已有描述:

  • 按部分显示哪些内容会变化(新增/修改/删除),而不是仅显示新文本。
  • 保留用户编写的有用内容(链接、截图、检查清单、模板部分、关闭关键词如 Closes #12);如果某些内容将被删除,说明。
  • 在继续之前请求确认更改。

5. 确认,然后发送

  1. 呈现最终的标题、目标 MR/PR(URL、分支)和完整的描述,并请求确认所有三项。
  2. 只有在此之后,再单独询问一个问题:授权将修改内容发送到平台。
  3. 批准后,将描述写入临时文件(scratchpad/temp),并使用平台参考文档中的命令更新 MR/PR。这些命令有意未包含在 allowed-tools 中,以便用户获得权限提示。
  4. 报告结果和 MR/PR URL。如果失败,显示错误;不要静默重试。

相关技能