关于 create-pr
面向 n8n 贡献者的技能,指导创建 GitHub 拉取请求,涵盖标题校验、正文撰写和安全修复审查。
主要功能
- 01PR 标题格式规则
- 02变更类型与范围指引
- 03PR 正文和清单指引
- 04安全修复信息审查
适用场景
- 01为 n8n 准备 GitHub PR
- 02按 CI 规则检查标题
- 03撰写 PR 说明和清单
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ n8n-io/ n8n --skill create-pr安装后在 Claude Code 中输入/create-pr确认已加载。
详细介绍
创建 Pull Request
创建标题符合 n8n check-pr-title CI 验证要求的 GitHub PR。
PR 标题格式
<type>(<scope>): <summary>
类型(必填)
| 类型 | 描述 | 更新日志 |
|---|---|---|
feat | 新功能 | 是 |
fix | 修复 Bug | 是 |
perf | 性能改进 | 是 |
test | 添加或修正测试 | 否 |
docs | 仅文档 | 否 |
refactor | 代码变更(不涉及 Bug 修复或新功能) | 否 |
build | 构建系统或依赖项 | 否 |
ci | CI 配置 | 否 |
chore | 常规任务、维护 | 否 |
范围(可选,但建议填写)
API- 公共 API 变更benchmark- 基准测试 CLI 变更core- 核心/后端/私有 APIeditor- 编辑器 UI 变更* Node- 特定节点(例如,Slack Node、GitHub Node)
摘要规则
- 使用祈使语气的现在时:“Add”,而不是“Added”
- 首字母大写
- 末尾不加句号
- 不包含工单 ID(例如,N8N-1234)
- 添加
(no-changelog)后缀,以排除在更新日志之外
步骤
-
检查当前状态:
git status git diff --stat git log origin/master..HEAD --oneline -
检查是否有实现计划:在
.claude/plans/中查找与当前分支工单 ID 匹配的计划文件(例如,如果分支为scdekov/PAY-1234-some-feature,则检查是否存在.claude/plans/PAY-1234.md)。 如果存在计划文件,询问用户是否要将其作为可折叠的<details>部分加入 PR 描述(见下文“计划部分”)。 仅当用户明确同意时才加入计划。 -
如果这是安全修复,继续之前先审查所有面向公众的内容(见下文“安全修复”)。
-
分析变更,确定:
- 类型:这是什么类型的变更?
- 范围:影响哪个软件包/区域?
- 摘要:这项变更做了什么?
-
如有需要,推送分支:
git push -u origin HEAD -
使用 gh CLI 和
.github/pull_request_template.md中的模板创建 PR:gh pr create --draft --title "<type>(<scope>): <summary>" --body "$(cat <<'EOF' ## Summary <Describe what the PR does and how to test. Photos and videos are recommended.> ## Related Linear tickets, Github issues, and Community forum posts ## Review / Merge checklist - [ ] PR title and summary are descriptive. ([conventions](../blob/master/.github/pull_request_title_conventions.md)) - [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up ticket created. - [ ] Tests included. - [ ] PR Labeled with `release/backport` (if the PR is an urgent fix that needs to be backported) EOF )"
PR 正文指南
参照 .github/pull_request_template.md:
摘要部分
- 描述 PR 的作用
- 说明如何测试这些变更
- 对于 UI 变更,附上截图/视频
相关链接部分
- 链接到 Linear 工单:
https://linear.app/n8n/issue/[TICKET-ID] - 使用可自动关闭问题的关键词链接到 GitHub 问题:
closes #123/fixes #123/resolves #123
- 如适用,链接到社区论坛帖子
检查清单
合并前应完成所有项目:
- PR 标题符合规范
- 文档已更新,或已创建后续工单
- 已包含测试(Bug 修复需要回归测试,新功能需要测试覆盖)
- 如紧急修复需要回移植,添加
release/backport标签
示例
编辑器中的新功能
feat(editor): Add workflow performance metrics display
核心功能的 Bug 修复
fix(core): Resolve memory leak in execution engine
特定节点的变更
fix(Slack Node): Handle rate limiting in message send
破坏性变更(在冒号前添加感叹号)
feat(API)!: Remove deprecated v1 endpoints
不生成更新日志条目
refactor(core): Simplify error handling (no-changelog)
不指定范围(影响多个区域)
chore: Update dependencies to latest versions
验证
PR 标题必须符合以下模式:
^(feat|fix|perf|test|docs|refactor|build|ci|chore|revert)(\([a-zA-Z0-9 ]+( Node)?\))?!?: [A-Z].+[^.]$
主要验证规则:
- 类型必须是允许的类型之一
- 范围为可选项;如果填写,必须放在括号内
- 破坏性变更的感叹号应放在冒号之前
- 摘要必须以大写字母开头
- 摘要末尾不得有句号
计划部分
如果在 .claude/plans/ 中找到匹配的计划文件,且用户已同意将其加入 PR 正文,则在 PR 正文末尾(检查清单之后、EOF 之前)添加一个可折叠部分:
<details>
<summary>Implementation plan</summary>
</details>
安全修复
此仓库是公开的。切勿在任何公开内容中暴露攻击途径。 描述代码的作用,而不是它防范的威胁。
| 内容 | 不当示例 | 合适示例 |
|---|---|---|
| 分支 | fix-sql-injection-in-webhook | fix-webhook-input-validation |
| PR 标题 | fix(core): Prevent SSRF | fix(core): Validate outgoing URLs |
| 提交信息 | fix: prevent denial of service | fix: add payload size validation |
| PR 正文 | “攻击者可能触发 SSRF……” | “验证 URL 协议和主机” |
| Linear 引用 | 带有 slug 的 URL(会泄露标题) | 不带 slug 的 URL,或仅使用工单 ID |
| 测试名称 | 'should prevent SQL injection' | 'should sanitize query parameters' |
**推送安全修复前,请确认:**分支名称、提交、PR 标题、PR 正文、Linear URL、测试名称或代码注释均未暗示该漏洞。
评论
支持 Markdown