一键导入
pr-create
Create a pull request with validated title and description following repository conventions. Use when creating PRs, or when invoked from other skills.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create a pull request with validated title and description following repository conventions. Use when creating PRs, or when invoked from other skills.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Perform deep analysis of the codebase, recent changes, and the requested task. Create a validated, expert-reviewed implementation plan
Review a pull request and provide constructive feedback with structured verdict. Used by awinogradov/code-review-action
Plan, implement, commit, create PR, and monitor until approved
Analyze staged changes and create conventional commits with intelligent grouping. Use when creating commits, or when invoked from other skills.
Create a GitHub issue with a structured body (Context, What, Why, Scope, Solution) and curated labels via the gh CLI. Use when filing new issues, or when invoked from other skills.
Create a Linear issue with a structured body (Context, What, Why, Scope, Solution) and wizard-selected status, label, and assignee via the Linear MCP. Use when filing a Linear ticket on a linear-tracked project.
| name | pr:create |
| description | Create a pull request with validated title and description following repository conventions. Use when creating PRs, or when invoked from other skills. |
| argument-hint | [--draft] [--release-notes] [--closes #N,#M] [--related #X,#Y] [--autopilot] |
| allowed-tools | ["Bash(git *)","Bash(gh *)","Read","AskUserQuestion","Skill(autopilot:preflight-check)","Skill(autopilot:commits-create)"] |
Create a pull request with properly formatted title and description following repository conventions. Supports issue linking, release notes, and draft PRs.
Arguments: $ARGUMENTS
Expected flags (all optional, any order):
--draft — create as a draft PR--release-notes — include a release notes section in the body (auto-enabled on breaking changes)--closes #N,#M — additional issue numbers to close on merge (comma-separated, GitHub issue numbers)--related #X,#Y — related issues to link without closing (comma-separated, GitHub issue numbers)--autopilot — non-interactive mode used by /autopilot:run. Skips the Phase 5 confirmation prompt and creates the PR directly with the generated title and body. When meaningful changes are detected (Phase 2), release notes are auto-added.Arguments are optional. Resolve each field in this order:
--draft — $ARGUMENTS → default false. Do NOT prompt.--release-notes — $ARGUMENTS → auto-enable when Phase 2 detects breaking changes → default false. Do NOT prompt (user gets an "Add release notes" option in Phase 5 preview).--closes — $ARGUMENTS → branch-name-derived issue number is already added automatically in Phase 4. No prompt; treat absence as intentional.--related — $ARGUMENTS → no inference. No prompt; treat absence as intentional.--autopilot — $ARGUMENTS only. Never inferred. Default: false (interactive mode).git branch --show-current and the branch-name pattern ^issue-([0-9]+)-. Special prefix branches (hotfix-, trivial-, maintenance-, proposal-) have no issue number. No prompt.CONTRIBUTING.md directly from the repository root.This workflow is not complete until Phase 6 executes gh pr create and outputs the PR URL. Generating a title, generating a description, or running validation does not constitute completion. Execute all six phases in sequence.
Do not call any skill not listed in allowed-tools above. The title and description rules in Phases 3-4 are the validation — there is no separate validation step.
Autopilot bypass: When autopilotMode is true (from Phase 1), this contract is moot — the Phase 5 confirmation prompt is skipped. Generate the title and body, then proceed directly to Phase 6.
Every AskUserQuestion call that presents content for review (PR previews in Phase 5) MUST follow these exact rules. Simple choice dialogs (Phase 1 uncommitted changes) are exempt from the preview requirement.
question is FIXED TEXT — use the EXACT string specified in each phase. NEVER add PR titles, bodies, metadata, file lists, diffs, or any other content to the question field.header is FIXED TEXT — use the EXACT string specified in each phase.preview is MANDATORY — every option MUST include a preview field. The PR content (title + body with separators) goes ONLY in preview. NEVER put content in question, label, or description.label values are EXACT — use the exact text specified (e.g., "Create PR", "Edit content", "Cancel"). No abbreviations, no paraphrasing, no creative alternatives.description values are EXACT — use the exact text specified. No rewording.preview on all options — the user chooses an action, not content. All options show identical preview text.preview — never pass "...", "<same content>", "<full PR content>", or any other placeholder string as a preview value. Copy the full preview string literally into every option. Shorthand is illustrative only; it must never appear in an actual AskUserQuestion tool call.AskUserQuestion({
question: "Title: Add CI check monitoring\nBase: main\nBranch: issue-284-pr-monitor\n1 commit, 3 files changed\n\nBody:\nThe pr:monitor skill now monitors CI checks.\n\n- Added CI check detection\n- Added automated fix workflow\n\nRelease notes:\n- Added CI check monitoring\n\nCloses #284",
header: "Create PR",
options: [
{ label: "Create PR", description: "Create this pull request" },
{ label: "Edit", description: "Let me adjust the PR content" }
]
})
AskUserQuestion({
question: "Review the pull request details and choose an action.",
header: "Create PR",
options: [
{ label: "Create", description: "Add CI check monitoring - Added CI check detection..." },
{ label: "Edit", description: "Modify the PR" }
]
})
AskUserQuestion({
question: "Review the pull request details and choose an action.",
header: "Create PR",
options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Add CI check monitoring\n\nThe pr:monitor skill now monitors CI checks.\n\n- Added CI check detection\n- Added automated fix workflow\n\n---\n\n**Release notes:**\n\n- Added CI check monitoring\n\n---\n\n**Issues:**\n\nCloses #284" },
{ label: "Edit content", description: "Modify title or description", preview: "Add CI check monitoring\n\nThe pr:monitor skill now monitors CI checks.\n\n- Added CI check detection\n- Added automated fix workflow\n\n---\n\n**Release notes:**\n\n- Added CI check monitoring\n\n---\n\n**Issues:**\n\nCloses #284" },
{ label: "Cancel", description: "Abort PR creation", preview: "Add CI check monitoring\n\nThe pr:monitor skill now monitors CI checks.\n\n- Added CI check detection\n- Added automated fix workflow\n\n---\n\n**Release notes:**\n\n- Added CI check monitoring\n\n---\n\n**Issues:**\n\nCloses #284" }
]
})
Invoke Skill(autopilot:preflight-check) with mode: pr from this conversation context. The skill verifies the current branch is appropriate for opening a PR and warns if you are on main. If it outputs a "cancelled" message, stop immediately — do not proceed to Phase 1.
Uncommitted-change handling is done in Phase 0 by preflight-check — do not repeat it here.
$ARGUMENTS: if it contains --autopilot, set autopilotMode = true and remove the flag before further parsing. Otherwise autopilotMode = false.git branch --show-currentissue-<number>-<short-description> (e.g., issue-123-add-feature)<team>-<number>-<short-description> (e.g., eng-123-add-auth)<hotfix|trivial|maintenance|proposal|security>-<short-description> (e.g., hotfix-memory-leak-editor, security-tainted-format-string)issue- and the special prefixes are matched before the generic Linear pattern):
^issue-([0-9]+)-: extract the number (e.g., 123); provider = github; link as Closes #123.hotfix-/trivial-/maintenance-/proposal-/security-: uppercase it for the PR title prefix (e.g., HOTFIX:). For a security- branch, emit NO Closes # — record the code-scanning alert reference instead (see Phase 4).^([a-z][a-z0-9]*)-([0-9]+)-: uppercase team + number to the Linear id (e.g., eng-123-… → ENG-123); provider = linear; the title gets the ENG-123: prefix and **Issues:** carries the magic word with the plain Linear issue URL — Closes <linear-issue-url> from the Phase 2 issue context (bare-id fallback, see Phase 4).Invoke the analyze-pr-commits sub-agent to gather commit history, diff summary, issue context, and change significance:
Use the Agent tool with:
- `subagent_type`: "autopilot:analyze-pr-commits"
- `prompt`: "Analyze commits for PR. Base: main. Branch: [branch name]. Provider: [github or linear]. Issue number: [GitHub number, Linear id, or none]. Repository: [owner/repo]. Fetch issue: [true if a GitHub or Linear issue branch, false if special prefix]."
- `description`: "Analyze PR commits"
After the agent completes, store the structured results (commit log, diff summary, issue context, breaking/meaningful flags).
If the agent reports breaking changes, treat --release-notes as mandatory — add it automatically regardless of whether the flag was passed. Inform the user: "Breaking changes detected — release notes will be included automatically."
Canonical: title/branch grammar is owned by pr:validate Rules; the title rules here mirror it — keep in sync.
Standard (GitHub) format: <Business-valuable description>
Linear format: <LINEAR-ID>: <Business-valuable description> (e.g., ENG-123: Allow theme selection)
Special prefix format: <PREFIX>: <Business-valuable description> where <PREFIX> is one of HOTFIX, TRIVIAL, MAINTENANCE, PROPOSAL, SECURITY
Rules:
**Issues:** section via Closes #<n>)ENG-123: …) so the ticket shows in the PR list; the **Issues:** section still carries the magic word with the plain issue URL (Closes https://linear.app/<workspace>/issue/ENG-123), bare id only when no URL is resolvableGenerate a title that:
Title self-check (MANDATORY): re-verify the drafted title against the Phase 1 provider immediately before Phase 6 — when composing the Phase 5 preview on the interactive path, and in the autopilot bypass. If provider = linear, the title MUST start with the branch's <team>-<number> uppercased plus : (branch frtns-28-pr-gate → title starts with FRTNS-28: ); if the prefix is missing or names a different id, fix the title now. If provider = github or a special prefix, the title MUST NOT start with a TEAM-N: ticket prefix. A rule stated only here demonstrably gets dropped when the title is composed from commit context — this check is the gate, exactly like the reference-formatting self-check in Phase 4 is for the body.
Canonical: this section is the canonical PR-body grammar (sections, ordering, formatting, magic words); pr:update Phase 5 mirrors it — keep the two in sync.
Reference formatting (MANDATORY): The generated body — both the description and the release-notes section — MUST follow the reference-formatting rules inlined at the end of this skill. The rule that keeps regressing: render every mention of a standard consistently as a link to its versioned RFC by stable ID (e.g., [RFC-0001](<repo-blob-url>/rfc/0001-reference-formatting.md)), never a mix of bare text and links in the same body. Before finalizing, self-check the drafted body: a bare 7–40-char hex token or a bare tracker id ([A-Z][A-Z0-9]*-[0-9]+) outside the **Issues:** section is a violation — link it per the inlined rules.
The PR body uses --- separators to divide three sections: description, release notes (optional), and issue links.
CRITICAL — Section ordering is MANDATORY and MUST NOT be rearranged:
**Release notes:**)**Issues:**)Each section is separated by ---. The **Issues:** section is ALWAYS last. Placing it before the description or release notes is a format violation.
Section 1: Description
Formatting rule (no hard-wrapping):
Section 2: Release Notes (conditional)
Include this section (titled **Release notes:**) with a --- separator when:
--release-notes flag is present, ORContent rules:
Format rules (exact heading required):
**Release notes:** — bold, lowercase "n" in "notes", with colon## Release Notes (H2 heading) — that format is for .release_notes/*.md files only**Release Notes:** (capital "N") — use lowercase **Release notes:****Issues:** section--- on both sidesSection 3: Issue Links (titled **Issues:**)
Format rules (exact section required):
**Issues:** — bold, with colon------ separator and the **Issues:** headingCloses #N, Related to #N) as bare text in the description — they MUST be inside the **Issues:** section[#N](url) (they break the GitHub and Linear close-parsers); for a Linear issue the magic word takes the plain issue URL, which GitHub auto-links and Linear detectssecurity- branch (code-scanning alert fix), the **Issues:** section is omitted and replaced by an **Alert:** section recording the alert reference — a --- separator, then **Alert:** on its own line, then the alert URL. The URL is the htmlUrl from the run skill's Phase 0 resolve-alert-context output, carried in conversation context; when pr:create runs standalone (no parent context), resolve it via gh api repos/{owner}/{repo}/code-scanning/alerts/{n} if the alert number is known, otherwise ask the user for the alert URL. Emit NO Closes #: code-scanning alerts close on the next scan, not via PR magic words. The **Alert:** section is last, in the same slot **Issues:** would occupy.Magic Words:
Closes #N — Links and closes the issue on mergeFixes #N — Links and closes the issue on mergeResolves #N — Links and closes the issue on mergePart of #N — Plain reference (auto-linked, no close)Related to #N — Plain reference (auto-linked, no close)For a Linear branch, use the plain Linear issue URL in place of #N (e.g., Closes https://linear.app/<workspace>/issue/ENG-123, Part of https://linear.app/<workspace>/issue/ENG-100) — a bare Linear id is dead text on GitHub, while Linear's magic-word parser accepts the URL form and GitHub renders it as a clickable autolink. Take the URL from the Phase 2 issue context; when no URL is resolvable there, fall back to the bare id and state "issue URL unresolvable — emitting bare Linear id" in the run output. Linear auto-closes the ticket on merge only when the GitHub↔Linear integration is configured for the repository; otherwise the magic word is a tracked reference.
Issue linking rules:
Closes #<N> (GitHub) or Closes <linear-issue-url> (Linear; bare-id fallback per the rule above) for the issue derived from the branch name (skip for special prefix branches — no issue exists)--closes provided, add Closes #<n> for each additional issue--related provided, add Related to #<n> for each related issueExample format (with release notes):
<Brief description of what this PR does and why it's needed.>
- <Important implementation detail 1>
- <Important implementation detail 2>
---
**Release notes:**
- <User-facing change 1>
- <User-facing change 2>
---
**Issues:**
Closes #<issue-from-branch>
Closes #<issue-from-closes-arg>
Related to #<issue-from-related-arg>
Example format (without release notes):
<Brief description of what this PR does and why it's needed.>
- <Important implementation detail 1>
- <Important implementation detail 2>
---
**Issues:**
Closes #<issue-from-branch>
Autopilot bypass: If autopilotMode is true, skip the AskUserQuestion confirmation below. Before proceeding to Phase 6:
--release-notes nor breaking changes triggered the release notes section, auto-generate the **Release notes:** section using the rules in Phase 4 and insert it between the description and the **Issues:** section (with --- separators).Present PR details using AskUserQuestion tool with preview.
Compose the full PR content (title + description with separators) as a single string, after running the Phase 3 Title self-check on the title.
Confirm using AskUserQuestion tool:
Tool call structure: See AskUserQuestion Contract above. All rules are mandatory.
Tool parameters:
question: "Review the pull request details and choose an action."
header: "Create PR"
options:
If --release-notes was NOT used AND no breaking changes AND meaningful changes detected (per the analyze-pr-commits significance from Phase 2):
[
{ label: "Create PR", description: "Create pull request ready for review", preview: "" },
{ label: "Add release notes", description: "Generate a release notes section for the changelog", preview: "" },
{ label: "Edit content", description: "Modify title or description", preview: "" },
{ label: "Cancel", description: "Abort PR creation", preview: "" }
]
Otherwise (flag used, breaking changes auto-added, or no meaningful changes): [ { label: "Create PR", description: "Create pull request ready for review", preview: "" }, { label: "Edit content", description: "Modify title or description", preview: "" }, { label: "Cancel", description: "Abort PR creation", preview: "" } ]
multiSelect: false
All options use the same preview content (full PR title + body) since the user is choosing an action, not content. The preview enables a side-by-side layout in the UI.
If user selects "Add release notes":
--- separators)If user selects "Edit content": ask what to change, regenerate, re-present
If user selects "Cancel": abort with "PR creation cancelled."
Only proceed after user selects "Create PR"
Once "Create PR" is selected, immediately continue to Phase 6 below to execute gh pr create. Do not stop here.
This phase is mandatory. Do not end the workflow before executing these steps.
git ls-remote --heads origin <branch>git push -u origin <branch>--draft flag was passed: gh pr create --draft --title "<title>" --body "<body>"gh pr create --title "<title>" --body "<body>"Command: /create-pr
Branch: issue-749-editor-theme-selection
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nIssues:\n\nCloses #749" },
{ label: "Add release notes", description: "Generate a release notes section for the changelog", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nIssues:\n\nCloses #749" },
{ label: "Edit content", description: "Modify title or description", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nIssues:\n\nCloses #749" },
{ label: "Cancel", description: "Abort PR creation", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nIssues:\n\nCloses #749" }
]Meaningful changes detected (feat: commits). "Add release notes" option shown.
User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/123
Command: /create-pr --closes #750,#751
Branch: issue-749-editor-theme-selection
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace.\n\n- Added editor_theme per-workspace setting\n- Fixed related caching issues\n\n---\n\nIssues:\n\nCloses #749\nCloses #750\nCloses #751" },
{ label: "Edit content", description: "Modify title or description", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace.\n\n- Added editor_theme per-workspace setting\n- Fixed related caching issues\n\n---\n\nIssues:\n\nCloses #749\nCloses #750\nCloses #751" },
{ label: "Cancel", description: "Abort PR creation", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace.\n\n- Added editor_theme per-workspace setting\n- Fixed related caching issues\n\n---\n\nIssues:\n\nCloses #749\nCloses #750\nCloses #751" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/124
Command: /create-pr --related #600
Branch: issue-605-annotation-streaming
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Refactor annotation codec for streaming support\n\nPart of the wire-format migration. Annotation codec is now streaming-capable.\n\n- No functional changes\n- All existing tests pass\n\n---\n\nIssues:\n\nCloses #605\nRelated to #600" },
{ label: "Edit content", description: "Modify title or description", preview: "Refactor annotation codec for streaming support\n\nPart of the wire-format migration. Annotation codec is now streaming-capable.\n\n- No functional changes\n- All existing tests pass\n\n---\n\nIssues:\n\nCloses #605\nRelated to #600" },
{ label: "Cancel", description: "Abort PR creation", preview: "Refactor annotation codec for streaming support\n\nPart of the wire-format migration. Annotation codec is now streaming-capable.\n\n- No functional changes\n- All existing tests pass\n\n---\n\nIssues:\n\nCloses #605\nRelated to #600" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/125
Command: /create-pr --draft --closes #21 --related #20
Branch: issue-21-annotation-playback-events
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Add annotation events for playback duration reporting\n\nThe viewer needs to report how much of a plan was actually read before the user resolved it. This data is required for accurate review analytics.\n\n- AnnotationOpenedEvent\n- AnnotationResolvedEvent\n\n---\n\nIssues:\n\nCloses #21\nRelated to #20" },
{ label: "Edit content", description: "Modify title or description", preview: "Add annotation events for playback duration reporting\n\nThe viewer needs to report how much of a plan was actually read before the user resolved it. This data is required for accurate review analytics.\n\n- AnnotationOpenedEvent\n- AnnotationResolvedEvent\n\n---\n\nIssues:\n\nCloses #21\nRelated to #20" },
{ label: "Cancel", description: "Abort PR creation", preview: "Add annotation events for playback duration reporting\n\nThe viewer needs to report how much of a plan was actually read before the user resolved it. This data is required for accurate review analytics.\n\n- AnnotationOpenedEvent\n- AnnotationResolvedEvent\n\n---\n\nIssues:\n\nCloses #21\nRelated to #20" }
]User selects "Create PR".
✓ Created draft PR: https://github.com/org/repo/pull/126
Command: /create-pr
Branch: hotfix-memory-leak-editor
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "HOTFIX: Fix memory leak in editor\n\nFixed a memory leak in the editor caused by unreleased document buffers.\n\n- Properly dispose document buffers after editor close" },
{ label: "Edit content", description: "Modify title or description", preview: "HOTFIX: Fix memory leak in editor\n\nFixed a memory leak in the editor caused by unreleased document buffers.\n\n- Properly dispose document buffers after editor close" },
{ label: "Cancel", description: "Abort PR creation", preview: "HOTFIX: Fix memory leak in editor\n\nFixed a memory leak in the editor caused by unreleased document buffers.\n\n- Properly dispose document buffers after editor close" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/127
Command: /create-pr
Branch: proposal-add-vim-keybindings
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "PROPOSAL: Add Vim keybindings\n\nProposes Vim-style modal keybindings as an opt-in editor mode. Discussion on this PR will decide if we adopt it.\n\n- Sketch of normal/insert/visual mode bindings\n- Opt-in via editor.mode setting" },
{ label: "Edit content", description: "Modify title or description", preview: "PROPOSAL: Add Vim keybindings\n\nProposes Vim-style modal keybindings as an opt-in editor mode. Discussion on this PR will decide if we adopt it.\n\n- Sketch of normal/insert/visual mode bindings\n- Opt-in via editor.mode setting" },
{ label: "Cancel", description: "Abort PR creation", preview: "PROPOSAL: Add Vim keybindings\n\nProposes Vim-style modal keybindings as an opt-in editor mode. Discussion on this PR will decide if we adopt it.\n\n- Sketch of normal/insert/visual mode bindings\n- Opt-in via editor.mode setting" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/131
Command: /create-pr --release-notes
Branch: issue-749-editor-theme-selection
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nRelease notes:\n\n- Added per-workspace editor theme selection\n- Default theme fallback when no workspace preference is set\n\n---\n\nIssues:\n\nCloses #749" },
{ label: "Edit content", description: "Modify title or description", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nRelease notes:\n\n- Added per-workspace editor theme selection\n- Default theme fallback when no workspace preference is set\n\n---\n\nIssues:\n\nCloses #749" },
{ label: "Cancel", description: "Abort PR creation", preview: "Allow editor theme selection per workspace\n\nUsers can now pick an editor theme per workspace. This makes long review sessions easier on the eyes and matches the rest of their IDE.\n\n- Added editor_theme per-workspace setting\n- Falls back to the system theme if no preference is set\n\n---\n\nRelease notes:\n\n- Added per-workspace editor theme selection\n- Default theme fallback when no workspace preference is set\n\n---\n\nIssues:\n\nCloses #749" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/128
Command: /create-pr
Branch: issue-400-remove-legacy-plan-import
Breaking changes detected (feat!: commit). Release notes added automatically.
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Remove legacy plan-import endpoints\n\nRemoved deprecated v1 plan-import endpoints. All consumers must migrate to v2.\n\n- Removed /api/v1/plans/* routes\n- Updated API documentation\n\n---\n\nRelease notes:\n\n- BREAKING: Removed legacy plan-import v1 endpoints — migrate to /api/v2\n\n---\n\nIssues:\n\nCloses #400" },
{ label: "Edit content", description: "Modify title or description", preview: "Remove legacy plan-import endpoints\n\nRemoved deprecated v1 plan-import endpoints. All consumers must migrate to v2.\n\n- Removed /api/v1/plans/* routes\n- Updated API documentation\n\n---\n\nRelease notes:\n\n- BREAKING: Removed legacy plan-import v1 endpoints — migrate to /api/v2\n\n---\n\nIssues:\n\nCloses #400" },
{ label: "Cancel", description: "Abort PR creation", preview: "Remove legacy plan-import endpoints\n\nRemoved deprecated v1 plan-import endpoints. All consumers must migrate to v2.\n\n- Removed /api/v1/plans/* routes\n- Updated API documentation\n\n---\n\nRelease notes:\n\n- BREAKING: Removed legacy plan-import v1 endpoints — migrate to /api/v2\n\n---\n\nIssues:\n\nCloses #400" }
]User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/129
Command: /create-pr
Branch: issue-801-add-billing-export
Meaningful changes detected (feat: commits). "Add release notes" option shown.
AskUserQuestion with:
question: "Review the pull request details and choose an action."header: "Create PR"options: [
{ label: "Create PR", description: "Create pull request ready for review", preview: "Add monthly billing export\n\nAdded ability to export monthly billing data as CSV.\n\n- New /api/v2/billing/export endpoint\n- Supports date range filtering\n\n---\n\nIssues:\n\nCloses #801" },
{ label: "Add release notes", description: "Generate a release notes section for the changelog", preview: "Add monthly billing export\n\nAdded ability to export monthly billing data as CSV.\n\n- New /api/v2/billing/export endpoint\n- Supports date range filtering\n\n---\n\nIssues:\n\nCloses #801" },
{ label: "Edit content", description: "Modify title or description", preview: "Add monthly billing export\n\nAdded ability to export monthly billing data as CSV.\n\n- New /api/v2/billing/export endpoint\n- Supports date range filtering\n\n---\n\nIssues:\n\nCloses #801" },
{ label: "Cancel", description: "Abort PR creation", preview: "Add monthly billing export\n\nAdded ability to export monthly billing data as CSV.\n\n- New /api/v2/billing/export endpoint\n- Supports date range filtering\n\n---\n\nIssues:\n\nCloses #801" }
]User selects "Add release notes". Notes generated and inserted. Re-presented with preview for confirmation.
User selects "Create PR".
✓ Created PR: https://github.com/org/repo/pull/130
These rules govern references — when you point the reader at a real file, standard, section, commit, or issue. (A token named only as an example, with no real target, is a code specimen in backticks, like any code identifier.) Every reference must resolve: render it as a real link whose target exists, and prefer the most stable link form so it does not rot. Render the same kind of reference the same way everywhere:
buildReviewComments, reviewOutput.ts. A backticked token names a thing as an example; it is not a reference and carries no link.[release field spec](<repo-blob-url>/docs/06-release-field.md). Use a repo-relative path in repository files and the absolute <repo-blob-url> form in generated output posted outside the repo (PR/issue bodies, review comments, release notes), where relative paths do not resolve. Any prose mention of a file or path that exists in the repo is such a reference — link it so it resolves on the default branch at writing time; a path that does not exist yet (a file the text proposes to create) or one shown inside a command or fenced block is a code specimen, not a reference.[RFC-0001](<repo-blob-url>/rfc/0001-reference-formatting.md); an Accepted RFC is immutable except through an explicit version bump, so the link never rots.[title](url) to the canonical source, taking the title from the source (or the site name). Use only a URL present in your input or context — never produce one from memory; a source with no known URL stays plain prose. When several sources back one document, they may be gathered into a short references list.#anchor, e.g. [Phase 6](#phase-6-reply-to-review-threads). Another document: path#anchor — a repo-relative path in repository files, the absolute <repo-blob-url>/path#anchor form in generated output. A GitHub anchor is the heading lower-cased, spaces turned to hyphens, punctuation dropped.[0328a61](<repo-commit-url>/0328a61); a commit is immutable. If you cannot build the URL, leave the bare SHA un-backticked.ENG-123) is dead text when bare: in prose, ALWAYS render it as a markdown link, e.g. [ENG-123](https://linear.app/<workspace>/issue/ENG-123) — a slug-less issue URL resolves. On a magic-word line (Closes/Fixes/Related to in a PR body's **Issues:** section) use plain forms only: bare #N for GitHub, the plain issue URL for other trackers — never a markdown-bracket link, which breaks the close-parsers.Backticks suppress GitHub autolinking: a commit SHA or issue/PR number inside a code span renders as dead text — that is why a backticked SHA was un-clickable in a prior review. Never wrap a SHA or issue/PR number in backticks; link it, or leave it bare so GitHub auto-links it.
Write the most helpful, readable output you can: plain, direct prose; every reference resolvable; explain the "why", not the obvious "what".