Skills
Skill 5 of 43
Creates GitHub pull requests with properly formatted titles that pass the check-pr-title CI validation.
3 minutes · 700 words · 21 sections
Install
npx skills add n8n-io/n8n --skill n8n:create-prnpx skills add n8n-io/n8n/plugin marketplace add n8n-io/n8nThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Creates GitHub PRs with titles that pass n8n’s check-pr-title CI validation.
<type>(<scope>): <summary>| Type | Description | Changelog |
|---|---|---|
feat | New feature | Yes |
fix | Bug fix | Yes |
perf | Performance improvement | Yes |
test | Adding/correcting tests | No |
docs | Documentation only | No |
refactor | Code change (no bug fix or feature) | No |
build | Build system or dependencies | No |
ci | CI configuration | No |
chore | Routine tasks, maintenance | No |
API - Public API changesbenchmark - Benchmark CLI changescore - Core/backend/private APIeditor - Editor UI changesengine - New workflow execution engine v2 (@n8n/engine package)* Node - Specific node (e.g., Slack Node, GitHub Node)(no-changelog) suffix to exclude from changelogCheck current state:
git status
git diff --stat
git log origin/master..HEAD --onelineCheck for implementation plan: Look for a plan file in the repository plan directories (.claude/plans/ or .agents/plans/ when present)
that matches the current branch’s ticket ID (e.g. if branch is
scdekov/PAY-1234-some-feature, check for PAY-1234.md).
If a plan file exists, ask the user whether they want to include it in the
PR description as a collapsible <details> section (see Plan Section below).
Only include the plan if the user explicitly approves.
If this is a security fix, audit every public-facing artifact before proceeding (see Security Fixes below).
Analyze changes to determine:
Push branch if needed:
git push -u origin HEADCreate PR using gh CLI. Read .github/pull_request_template.md as the
body structure, then populate each section with actual content before
creating the PR:
Based on .github/pull_request_template.md:
Write the PR body in ASD-STE100 Simplified Technical English: use short sentences, the active voice, and one instruction for each sentence.
N8N_ENABLED_MODULES, an enterprise license, a feature flag, or
similar), note which env vars/license are needed so the tester can deploy a
correctly configured instancehttps://linear.app/n8n/issue/[TICKET-ID]closes #123 / fixes #123 / resolves #123All items should be addressed before merging:
release/backport label added if urgent fix needs backportingfeat(editor): Add workflow performance metrics displayfix(core): Resolve memory leak in execution enginefix(Slack Node): Handle rate limiting in message sendfeat(API)!: Remove deprecated v1 endpointsrefactor(core): Simplify error handling (no-changelog)chore: Update dependencies to latest versionsThe PR title must match this pattern:
^(feat|fix|perf|test|docs|refactor|build|ci|chore|revert)(\([a-zA-Z0-9 ]+( Node)?\))?!?: [A-Z].+[^.]$Key validation rules:
If a matching plan file was found in a repository plan directory and the user has approved
including it, add a collapsible section at the end of the PR body (after the
checklist, before EOF):
<details>
<summary>Implementation plan</summary>
<!-- paste plan file contents here -->
</details>This repo is public. Never expose the attack vector in any public artifact. Describe what the code does, not what threat it prevents.
| Artifact | BAD | GOOD |
|---|---|---|
| Branch | fix-sql-injection-in-webhook | fix-webhook-input-validation |
| PR title | fix(core): Prevent SSRF | fix(core): Validate outgoing URLs |
| Commit msg | fix: prevent denial of service | fix: add payload size validation |
| PR body | “attacker could trigger SSRF…” | “validates URL protocol and host” |
| Linear ref | URL with slug (leaks title) | URL without slug or ticket ID only |
| Test name | 'should prevent SQL injection' | 'should sanitize query parameters' |
Before pushing a security fix, verify: no branch name, commit, PR title, PR body, Linear URL, test name, or code comment hints at the vulnerability.
When in doubt, check the Linear issue for possible extra precautions
Creates GitHub pull requests with properly formatted titles that pass the check-pr-title CI validation. Use when creating PRs, submitting changes for review, or when the user says /pr or asks to create a pull request.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
Bash(git:*)Bash(gh:*)ReadGrepGlob.agents/skills/create-pr/SKILL.mdmaster, last pushed 24 September 2026.SKILL.md, not by matching a directory convention. 5 distinct layouts observed: .agents/skills/*/SKILL.md, .claude/plugins/n8n/skills/*/SKILL.md, .opencode/skills/*/SKILL.md, packages/@n8n/cli/skills/*/SKILL.md, packages/@n8n/instance-ai/skills/*/SKILL.md.h1 and no skipped levels:.claude/plugins/n8n/.claude-plugin/marketplace.json by n8n, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./n8n-io/n8n.md, and each skill at its own .md URL.https://linear.app/n8n/issue/[TICKET-ID]) and any GitHub issue linksgh pr create --draft --title "<type>(<scope>): <summary>" --body "$(cat <<'EOF'
<populated body based on pull_request_template.md>
EOF
)"