用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/BenjaminG/ai-skills --skill pr-create命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | pr-create |
| description | Publish a pull request with automated type detection, Linear/Jira linking, PR templates, and Slack review message. |
| argument-hint | [type] [ISSUE-ID] |
!IMPORTANT: Follow this process, no matter what. Do not deviate from it.
Publish a pull request by following this automated workflow.
Arguments: $0 = [type] [ISSUE-ID] (both optional)
/pr-create — auto-detect type, no issue/pr-create fix — fix PR, no issue/pr-create fix ENG-1234 — fix PR with a Linear issue/pr-create fix MITB-565 — fix PR with a Jira issue/pr-create ENG-1234 — auto-detect type with an issue ID ([A-Z]+-\d+ matches both Linear and Jira; tracker is resolved in Step 1.6)git --no-pager diff develop # Inspect everything that changed vs. develop
First ensure you're in the right directory:
pwd
If not in the project directory:
cd <project-directory>
Then inspect the diff:
git --no-pager diff master # Inspect everything that changed vs. master
or
git --no-pager diff main # Inspect everything that changed vs. main
If anything looks off, pause and ask for confirmation. Use AskUserQuestion tool to ask the user for confirmation.
Skip this step only if:
/pr-create [type] argument.Analysis Approach:
*.test.*, docs/, configuration files)Type Detection Rules:
Mandatory Action Items:
Detect an issue ID (Linear or Jira) to include in branch name, PR title, and PR body. IDs from both trackers share the [A-Z]+-\d+ shape, so the tracker is resolved after the ID is found.
Detection Order (find the ID):
[A-Z]+-\d+)git rev-parse --abbrev-ref HEAD | grep -oE '[A-Z]+-[0-9]+'git log --oneline -5 | grep -oE '[A-Z]+-[0-9]+' | head -1Resolve the tracker (if an ID was found):
Try Linear first, fall back to Jira:
if linear issue view <ID> >/dev/null 2>&1; then
TRACKER=Linear
ISSUE_URL=$(linear issue url <ID>)
else
TRACKER=Jira
ISSUE_URL="https://hgdata.atlassian.net/browse/<ID>"
fi
ID, TRACKER, and ISSUE_URL for use in branch naming (Step 2), PR title (Step 5), and PR body (Step 5).Requires the linear CLI on PATH (provided by the linear-cli skill). If linear is unavailable, treat the ID as Jira.
If no ID found:
git rev-parse --abbrev-ref HEAD
git checkout -b <branch-name>
Branch naming format:
{type}/{ID}-{description} → feat/ENG-1234-add-auth or feat/MITB-565-add-auth{type}/{description} → feat/add-authgit add .
git commit -m "<concise-imperative-summary (≤ 50 chars)>"
!IMPORTANT: NEVER commit changes to the main, master, or develop branch. Always create a new branch and commit your changes to that branch.
git push -u origin HEAD
Configuration:
gh pr create --draft). The PR is born draft whatever the path afterwards; it goes ready later, by hand or via /ci-watch.develop for mk-copilot projects, master for all other repos{type}({scope}): description [{ID}] — the scope is the primary package or domain modified (inferred from the diff, e.g. api, web, backoffice), and the issue ID goes in trailing square brackets, not in the scope.
feat(api): add user auth [ENG-1234] or feat(web): add user auth [MITB-565]{type}({scope}): description → feat(api): add user auth, or {type}: description when no scope stands out → feat: add user auth! suffix, no BREAKING CHANGE: footer, no combined prefixes; keep it concise (under ~60 chars before the trailing [ID])..github/PULL_REQUEST_TEMPLATE.md if present; otherwise fall back to the per-type template below (see the PR body section).After creating, apply the merge-queue label (skips silently in repos that don't define it — this skill is multi-repo):
gh pr edit <pr-url> --add-label merge-queue-validation-gate 2>/dev/null || true
Choose the structure before writing:
.github/PULL_REQUEST_TEMPLATE.md, fill that template in full — every section gets real content drawn from the diff, no placeholders left behind. This takes precedence over the per-type templates below.Tracker link: when an issue ID was detected in Step 1.6, append Closes [{ID}]({ISSUE_URL}) at the bottom of the body — in both cases (repo template or per-type fallback). The per-type templates already carry a **{TRACKER} issue**: line; keep it, and add the Closes … line at the end.
The Description Writing Principles below apply to whichever structure you picked.
fix and feature)The description exists to make the point understandable — not to recite the code. Always open with the functional story, in plain language: what a user saw going wrong (fix) or what they can now do (feature). Write for someone unfamiliar with the code and with this part of the product.
Then judge the nature of the change and calibrate technical detail to it:
Both cases:
For the other types (chore, refactor, docs, test, perf, style), fill the templates as-is — these principles do not apply.
See references/pr-description-style.md for a worked before/after example.
### What this fixes
<In plain terms, what someone using the product saw going wrong. Name the
feature/screen and who hits it. Use the real example if there is one.>
### Why it happened
<The cause in everyday language — an analogy is welcome. No symbol names, file
paths, or data-flow walkthroughs.>
### How it's fixed
<What now behaves differently, at the behaviour level — not which
, >
: {ISSUE
### What this adds
<In plain terms, what the feature lets someone do and why it matters to them. Lead
with the user-facing outcome, not the architecture.>
### How to see it
<Where it shows up in the product / how to try it. Screenshots, a short GIF, or an
API example.>
### Related Issues
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Description
<brief description of maintenance work or updates>
### Details
<what was updated and why>
### Related Dependencies
<any related updates or breaking changes>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Overview
<summary of code structure improvements>
### Changes
<what was reorganized or restructured>
### Impact
<any performance or maintainability improvements>
### Testing
<confirm no behavior changes>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Documentation Updated
<which docs were updated>
### Changes
<summary of content changes>
### Reason
<why these docs needed updating>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Test Coverage Added
<description of tests added>
### Coverage Improvement
<what scenarios are now tested>
### Related Code
<link to the code being tested>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Performance Improvement
<what was optimized>
### Metrics
<performance gains (before/after benchmarks)>
### Changes
<technical details of optimization>
### Impact
<affected components or users>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
### Style Updates
<what was changed (formatting, linting, etc.)>
### Tool/Config
<which linting or formatting tool was applied>
### Scope
<which files were affected>
**{TRACKER} issue**: {ISSUE_URL} <!-- Include only if an issue ID was detected in Step 1.6. {TRACKER} is "Linear" or "Jira". -->
The PR is draft, so this message is held, not sent now — soliciting review on a draft is premature. Generate it, prefix it with ⏸ Send when you mark the PR ready:, and output it for the user to keep. The user solicits the team once the PR goes ready; this skill never posts to Slack itself.
Generate a brief, friendly message that includes the PR link using the template below based on the PR type:
Message Templates by Type:
| PR Type | Template |
|---|---|
| fix | :wrench: Fixed [issue summary] — would appreciate a review: [PR-URL] |
| feature | :rocket: New feature: [feature name] ready for review! [PR-URL] |
| chore | :broom: Maintenance update: [what was updated] needs review: [PR-URL] |
| refactor | :recycle: Code refactor for [area/component] — feedback welcome: [PR-URL] |
| docs | :books: Documentation updated: [what changed] [PR-URL] |
| test | :test_tube: Added test coverage for [feature/area]: [PR-URL] |
| perf | :zap: Performance improvement in [area] ready for review: [PR-URL] |
| style | :art: Code style/formatting updates applied: [PR-URL] |
Action:
⏸ Send when you mark the PR ready:, for the user to keep and send once the PR is no longer draftCritical Rules:
Type Argument Behavior:
Standard Workflow:
Optional Arguments: /pr-create [type] [ISSUE-ID]
/pr-create — Auto-detect PR type, no issue/pr-create feature — Create feature PR, no issue/pr-create fix — Create fix PR, no issue/pr-create fix ENG-1234 — Create fix PR with a Linear ID/pr-create fix MITB-565 — Create fix PR with a Jira ID/pr-create ENG-1234 — Auto-detect type with an issue ID (tracker resolved in Step 1.6)