Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install antd-create-prgit clone https://github.com/ant-design/ant-design.gitcp ant-design/.agents/skills/create-pr/SKILL.md ~/.claude/skills/antd-create-pr/SKILL.md--- name: antd-create-pr description: Create pull requests for ant-design using the repository's official PR templates. Use this skill when the user asks to create/open a PR, draft PR title/body, summarize branch changes for a PR, or otherwise prepare PR content. Judge by intent rather than fixed phrases; short colloquial requests still count if they are about creating a PR rather than discussing PR concepts. --- # Ant Design PR 创建规范 ## 目标 一、基于当前分支相对基线分支的全部改动生成 PR,不只看最后一个 commit。 二、严格使用 `ant-design` 仓库自带模板,不自行发明 PR 结构。 三、根据用户语言习惯选择中文或英文模板,但 PR 标题始终使用英文,并遵循本文档约定的命名格式。 四、真正执行 `gh pr create` 之前,必须先把 `base`、`title`、`body` 给用户确认,确认后才能创建 PR。 ## 基本规则 ### 一、按意图触发,不按短语触发 只要能判断用户是在请求创建 PR,或为创建 PR 做准备,就应使用本 skill。 不要把触发限制成固定说法。即使用户表达很短、很口语,或要求不完整,只要不是在单纯讨论 PR 概念,也应进入本 skill 的工作流。 ### 二、必须以仓库模板为准 始终使用以下模板之一: - 中文:`.github/PULL_REQUEST_TEMPLATE_CN.md` - 英文:`.github/PULL_REQUEST_TEMPLATE.md` 不要自己改 section 名称,不要删掉模板里已有的主结构。可以删掉模板中的注释和说明性占位文本,但保留最终要提交的 section。 ### 三、模板语言由用户习惯决定,但标题固定英文 按以下顺序判断: 1. 用户当前请求主要是中文 -> 使用中文模板 2. 用户当前请求主要是英文 -> 使用英文模板 3. 若当前请求混合,但历史上下文明显偏中文 -> 使用中文模板 4. 若无法判断,再询问用户,不要猜 不要因为代码、分支名、commit message 或 issue 链接是英文,就强行改用英文模板。 但无论模板选中文还是英文: - `PR title` 都必须是英文 - `PR title` 要符合本文档的标题规范 - `PR body` 才跟随模板语言 ### 四、先分析分支,再写 PR 创建 PR 前,必须先看: - 当前分支名 - 基线分支 - 当前分支相对基线分支的 commit 列表 - `base...HEAD` 的完整 diff 不要只根据工作区未提交内容写 PR,也不要只根据最近一个 commit 写 PR。 ### 五、先给草稿,后创建 PR 无论用户是否说“直接帮我创建 PR”,都要先完成以下步骤: 1. 生成 `base`、`title`、`body` 草稿 2. 明确告诉用户:这是准备提交的 PR 内容 3. 让用户确认是否继续创建,或先修改 4. 只有用户明确确认后,才能真正执行 `gh pr create` 若用户中途要求修改标题、类型、changelog、目标分支等,应先更新草稿,再次确认。 ### 六、标题和正文要分工明确 - PR 标题:用英文一句话概括本分支最主要的变动 - PR 正文:说明背景、改法、关联 issue、更新日志影响 正文不是逐文件流水账。要归纳“为什么改”和“改完后对开发者/用户有什么影响”。 ### 七、信息不足时不要硬写 若以下内容缺失且无法从分支改动中可靠推断: - 基线分支 - 关联 issue - 变动性质 - 测试或验证方式 可以先给出草稿,并把无法确认的地方保留为待补充项;若用户要求直接创建 PR,也必须先说明缺失项并等待确认。 ## 执行步骤 ### 1. 检查仓库和 PR 环境 建议先确认: ```bash git status --short git branch --show-current git remote -v gh auth status ``` 若 `gh` 不可用、未登录、当前不在 git 仓库、或当前分支不适合提 PR,应先说明问题,不要继续伪造结果。 ### 2. 确定基线分支 不要默认就用 `master`。按以下顺序判断: 1. 用户明确指定了 `base branch` -> 直接使用 2. 若当前分支存在可用的“来源线索”,优先根据真实 Git 信息推断: - `git branch -vv` 查看 tracking / upstream - `git reflog show <current-branch>` 查看是否能看出“从哪条分支 checkout 出来” - 必要时结合 `git merge-base HEAD <candidate-branch>` 比较分叉点 3. 若能较可靠判断“当前分支是从某条分支切出来的”,优先使用该分支作为 `base` 4. 若无法可靠推断,再退回远端默认分支或仓库默认分支 建议查看: ```bash git branch --show-current git branch -vv git reflog show --date=local $(git branch --show-current) git remote show origin ``` 注意: - tracking / upstream 只能作为线索,不等于绝对正确的“父分支” - `reflog` 若已清理,可能无法得到结果 - 若推断结果不够确定,要在草稿中明确标注为“推断值” #### 新功能分支的额外提醒 如果改动性质判断为 `feat` / 新功能,且当前基线不是明显的功能分支(如 `feature/*`),应额外提醒用户: - 这个改动看起来像新功能 - 请确认是否应该提交到对应的 `feature` 分支,而不是默认开发主分支 此提醒只用于确认工作流,不要擅自改 base。 ### 3. 收集本分支全部改动 至少查看: ```bash git log --oneline <base>..HEAD git diff --stat <base>...HEAD git diff <base>...HEAD ``` 必要时再看: ```bash git diff --name-only <base>...HEAD ``` 归纳时要覆盖该分支会进入 PR 的全部提交,而不是只写最后一次改动。 ### 4. 判断模板语言 根据“语言由用户习惯决定”的规则,二选一: - 中文模板:`.github/PULL_REQUEST_TEMPLATE_CN.md` - 英文模板:`.github/PULL_REQUEST_TEMPLATE.md` 读取对应模板后再填写,避免凭记忆手写 section。 ### 5. 判断 PR 类型 必须根据“主目的”判断,不要仅因为改动里包含逻辑变更就默认写成 `fix`。 优先判断顺序: 1. 是否主要是站点、文档、示例、演示、说明文本、主题页、官网交互等改动 - 是:优先考虑 `site` / `docs` / `demo` 2. 是否主要是 CI、workflow、脚本、发布流程、校验流程等改动 - 是:优先考虑 `ci` / `chore` 3. 是否主要是组件缺陷修复、行为异常修复、样式问题修复 - 是:考虑 `fix` 4. 是否主要是公开能力新增 - 是:考虑 `feat` 5. 是否主要是重构、测试、类型、性能等专项改动 - 是:使用 `refactor` / `test` / `type` / `perf` 判断时以“用户感知的主结果”为准,不要被单个文件或单个 commit 干扰。 例如: - 官网主题页按钮异常 -> 更偏 `site`,不是组件 `fix` - 文档说明修正 -> `docs` - demo 行为调整但不影响组件实现 -> `demo` - workflow / action 调整 -> `ci` - 组件真实行为 bug -> `fix` ### 6. 归纳 PR 的核心信息 至少整理出: - 变动性质:勾选最贴近的一项,必要时可勾选多项,但不要滥选 - Related Issues:填 issue 链接或 `close #xxxx` / `fix #xxxx` - Background and Solution:说明问题背景、处理方式、是否有 UI/API 变化 - Change Log:写“影响”,不要写实现流水账 ### 7. 处理 Change Log 对于以下场景,通常无需写实质 changelog: - `site` - `docs` - `demo` - `ci` - 纯测试 - 仅内部维护、无用户可感知变化的调整 这类场景: - 不要硬编 changelog 文案 - 保留模板 section - 使用简洁占位即可,例如: - `N/A` - `No changelog required` - `无需更新日志` 只有当改动确实会影响组件使用者、公开 API、交互行为、视觉表现或发布内容时,才写实质 changelog。 ### 8. 生成 PR 标题 标题要求: - 按下方“写法要求 -> 标题”生成 - 覆盖整条分支的主要目标 - 不要照搬单个 commit message - `type` 要与第 5 步判断一致 ### 9. 按模板产出 PR 正文草稿 填写时遵守: - 删除模板注释和说明性文字 - 保留 section 标题 - 勾选最合适的类型 - 内容尽量具体,但不要写成长篇说明 - 若涉及 UI 变化,提醒可补截图或 GIF - 若某信息尚未确认,要显式标出来,不要假装确定 ### 10. 先给用户确认 输出时至少包含: - `Base branch` - `PR title` - `PR body` - 需要用户补充或确认的点 明确询问用户是否: - 直接创建 PR - 先修改后再创建 没有明确确认前,不得执行 `gh pr create`。 ### 11. 创建 PR 只有在用户明确确认后,才执行。 执行前再次检查: ```bash git branch -vv git remote -v gh repo view --json nameWithOwner ``` 要求: 1. 确认当前分支的 tracking remote 和远端分支正确 2. 确认 PR 的目标仓库是 `ant-design/ant-design`,不要依赖 `gh` 默认推断 3. 若 tracking remote 缺失、指向不明确、或不是预期 fork,先向用户确认,不要默认推送 4. 只有在推送目标 remote 明确无误时,才推送当前分支 5. 使用已确认过的标题和正文执行 `gh pr create` 若需要推送,优先使用明确的远端与分支名,例如: ```bash git push -u <remote> HEAD ``` 建议形式: ```bash gh pr create --repo ant-design/ant-design --base <base> --title "<title>" --body "$(cat <<'EOF' <body> EOF )" ``` 创建成功后,返回 PR 链接。 ## 写法要求 ### 标题 - 必须是英文 - 默认先判断 `type`,再决定是否需要 `scope` - 优先使用 `type: subject` 或 `type(scope): subject` - 优先写结果,不写过程 - 避免 `update`, `fix issues`, `misc changes` 这类空话 - 若分支包含多类小改动,提炼一个更高层概括 常用 `type` 参考: - `feat`:新增能力 - `fix`:修复问题 - `docs`:文档或说明 - `refactor`:重构 - `type`:类型修正 - `site`:站点相关改动 - `demo`:示例相关改动 - `test`:测试改动 - `ci`:CI 或 workflow - `chore`:杂项维护 - `perf`:性能优化 `scope` 使用规则: - 改动集中在单个组件或模块时再加,如 `refactor(Image): ...` - 若没有明显聚焦对象,就不要硬加 `scope` - 不要把目录名机械塞进 `scope` ### Background and Solution - 先写要解决的问题 - 再写采用了什么方案 - 若涉及 API、交互或视觉变化,点明外部可感知差异 ### Change Log - 有真实用户影响时再写 - `site` / `docs` / `demo` / `ci` / 纯测试等无须强写 - 无需 changelog 时保留 section,但使用简洁占位 ## 参考 更多类型判断、基线分支建议、确认话术与标题示例见 `references/template-notes-and-examples.md`。