Create Product-Focused Pull Request is a development Claude Skill built by Mostafa Darehzereshki. Best for: Engineers automate pull request creation with Linear issue linking and intelligent branch detection..
- What it does
- Generate structured PRs with Linear integration, auto-detected base branch, and product summaries.
- Category
- development
- Created by
- Mostafa Darehzereshki
- Last updated
Create Product-Focused Pull Request
Generate structured PRs with Linear integration, auto-detected base branch, and product summaries.
Skill instructions
name: create-pr description: >- Creates a well-structured pull request with product-focused summary, change highlights, and test steps. Auto-detects base branch, links Linear issues from branch name, and pushes if needed. Use when ready to open a PR or when asking to create a pull request. argument-hint: [issue-id] [--base branch] [--draft] disable-model-invocation: true allowed-tools:
- AskUserQuestion
- Bash
- Read
- Glob
- Grep
- mcp__claude_ai_Linear__get_issue
- mcp__claude_ai_Linear__update_issue
Create PR
Create a well-structured, product-focused pull request.
Preferences
Read ~/.claude/skills/create-pr/preferences.md using the Read tool. If not found, no preferences are set.
Context
On startup, use Bash to detect: current branch (git branch --show-current), upstream branch, commits ahead of upstream, and repo name (gh repo view --json nameWithOwner -q .nameWithOwner). Skip any that fail.
Command routing
Check $ARGUMENTS:
help→ display help then stopconfig→ interactive setup then stopreset→ delete~/.claude/skills/create-pr/preferences.md, confirm, stop- anything else (including empty) → create PR
Flags
Parse from $ARGUMENTS:
--base <branch>— override base branch--draft— create as draft PR--no-linear— skip Linear integration- Remaining text — treated as Linear issue ID if it matches pattern (e.g.,
AIS-810)
Help
PR — Create a well-structured pull request
Usage:
/create-pr Create PR from current branch
/create-pr <issue-id> Create PR and link Linear issue
/create-pr --base develop Override base branch
/create-pr --draft Create as draft
/create-pr --no-linear Skip Linear linking
/create-pr config Set PR preferences
/create-pr reset Clear preferences
/create-pr help This help
Examples:
/pr
/create-pr AIS-810
/create-pr --base develop --draft
/create-pr AIS-810 --base main
What it does:
1. Detects base branch (or uses preference/flag)
2. Reads commits, diff, and Linear issue
3. Builds product-focused PR description
4. Pushes branch if needed
5. Creates PR and links to Linear
Current preferences:
(shown above under Preferences)
Config
Use AskUserQuestion:
Q1 — "Default base branch?" (auto-detect (default), main, develop, custom)
- Auto-detect: checks tracking branch, falls back to repo default branch
Q2 — "Link Linear issues?" (Yes — from branch name (default), No)
Q3 — "PR template?" (standard (default), minimal, detailed)
Q4 — "Auto-push before creating?" (Yes (default), No — just create locally)
Q5 — "Default PR type?" (Ready for review (default), Draft)
Save to ~/.claude/skills/create-pr/preferences.md.
First-time detection
If no preferences file exists, show:
"First time using /pr? Run /create-prconfig to set defaults (base branch, template, Linear linking), or continue — I'll auto-detect."
Then proceed.
Steps
1. Gather context
From git:
- Current branch (pre-injected)
- Commits on this branch:
git log <base>..HEAD --oneline - Diff stat:
git diff <base>...HEAD --stat - Full diff summary:
git diff <base>...HEAD(for understanding changes)
Base branch detection (in order):
--baseflag if provided- Saved preference if set
- Tracking branch upstream
- Repo default branch:
gh repo view --json defaultBranchRef -q .defaultBranchRef.name
Linear issue (unless --no-linear):
- Extract issue ID from branch name (pattern:
user/ais-NNN-*orais-NNN-*) - If found, fetch via
get_issuefor title, description, project
Remote check:
- Is branch pushed? If not, needs pushing.
2. Branch alignment
If a Linear issue was found, check if branch name matches issue.gitBranchName.
If mismatch, rename the branch to match (team convention):
git branch -m {old} {new}
git push origin --delete {old} # if old was pushed
git push -u origin {new}
3. Push if needed
If branch isn't pushed (or was renamed):
git push -u origin {branch}
Skip if --no-push or preference says no.
4. Build PR content
Title format: Under 70 chars, conventional prefix.
feat: Descriptionfor new featuresfix: Descriptionfor bug fixesrefactor: Descriptionfor refactoringchore: Descriptionfor maintenance
Body template (standard):
## Summary
{1-2 sentences: what this does and why. Product value first.}
**Linear:** [{issue-id}]({url}) (if available)
## What's New
- **{Feature/Change}** — {one sentence, user perspective}
- **{Feature/Change}** — {one sentence}
## How to Test
1. {Step}
2. {Step}
3. {Step}
Body template (minimal):
{1-2 sentences: what and why}
Linear: [{issue-id}]({url})
Body template (detailed):
## Summary
{1-2 sentences}
**Linear:** [{issue-id}]({url})
## What's New
- **{Feature}** — {description}
## Architecture
- {How it's structured}
- {What was reused}
- {Data flow}
## How to Test
1. {Step}
2. {Step}
5. Create the PR
gh pr create --base {base} --title "{title}" --body "$(cat <<'EOF'
{body}
EOF
)"
Add --draft if flag set or preference is draft.
6. Link to Linear
If Linear issue found, attach PR via update_issue with link:
url: https://github.com/{org}/{repo}/pull/{number}
title: PR #{number} — {title}
7. Report
PR created: {url}
Base: {base}
Head: {branch}
Title: {title}
Linear: {issue-id} (linked ✓) or "none"
Type: Ready / Draft
Commits: {count}
Files: {count}
8. Learn
- If user changes base branch, save preference
- If user edits the generated title pattern, save style preference
- If user consistently uses draft, save as default
Install
/plugin install create-product-focused-pull-request@mostafa-drzRequires Claude Code CLI.
Use cases
Engineers automate pull request creation with Linear issue linking and intelligent branch detection.
Reviews
No reviews yet. Be the first to review this skill.