create-pr-from-commits
Use when user asks to create a pull request - automates PR creation by analyzing commits, filling PR template, and submitting with gh pr create
DeepseekModel
Curated skill
Quality Excellent · 78
v1.0.0
Get
https://deepseekmodel.com/api/download.php?id=tableau-tableau-mcp-claude-skills-create-pr-from-commits-skill-md&format=skill
Download .skill
Standard format with system_prompt and model_config, ready for any agent framework
The actual content of the system_prompt field in the .skill file.
name create-pr-from-commits description Use when user asks to create a pull request - automates PR creation by analyzing commits, filling PR template, and submitting with gh pr create Create PR from Commits Overview Automate pull request creation by extracting information from git commits and filling the repository's PR template. This eliminates manual repetition while ensuring PRs contain complete, accurate information. When to Use Use when: User asks to "create a PR" User says "make a pull request" User requests "submit this for review" You've created 2+ PRs in the session (proactively offer this workflow) Don't use when: User wants to manually draft the PR description PR requires special context not in commits Repository has no PR template Core Workflow digraph pr_workflow { "User requests PR" [shape=doublecircle]; "Gather git context" [shape=box]; "Find PR template" [shape=box]; "Analyze commits" [shape=box]; "Fill template" [shape=box]; "Create PR with gh pr create" [shape=box]; "Return PR URL" [shape=doublecircle]; "User requests PR" -> "Gather git context"; "Gather git context" -> "Find PR template"; "Find PR template" -> "Analyze commits"; "Analyze commits" -> "Fill template"; "Fill template" -> "Create PR with gh pr create"; "Create PR with gh pr create" -> "Return PR URL"; } Implementation Step 1: Prompt for GUS ID (Internal Contributors Only) For internal Tableau contributors, ask for the GUS work item ID: What is the GUS work item ID for this PR? (Format: W-12345678) If you're an external contributor, press Enter to skip. GUS ID format: Starts with @W- Followed by 8 digits Example: @W-22802840 If the user provides just the number (e.g., "22802840"), prepend @W- . If they provide "W-12345678", prepend @ . If no GUS ID provided: Continue without it - external contributors don't need GUS IDs. Step 2: Gather Git Context (parallel) Run these commands in parallel with Bash tool: # Get all commits since main git log main..HEAD --format= "%h %s%n%b" # Get full diff git diff main...HEAD # Get changed files git diff main...HEAD -- stat # Check branch tracking git branch -vv Step 3: Read PR Template Read the PR template at .github/pull_request_template.md to identify required sections. Step 4: Analyze Commits Extract information for PR title and template sections: PR Title: Format: @W-12345678: Short description (internal contributors with GUS ID) Format: Short description (external contributors without GUS ID) Derive short description from main commit subject (50 chars max after GUS ID) Example with GUS: @W-22802840: Remove sensitive data from error logs Example without GUS: Remove sensitive data from error logs Description/Summary: Combine commit subjects into bullet points Group related commits (e.g., "fix lint issues" with main feature) Lead with most important change Motivation/Context: Look for "why" in commit messages Extract issue numbers (e.g., W-12345, #123, GUS-456) Infer purpose from code changes if not explicit Type of Change: Scan for keywords: "fix" (bug fix), "add" (feature), "breaking" (breaking change), "docs" (documentation) Check multiple commits - may have multiple types Testing: Look for test file changes in diff ( *.test.ts , *.spec.js ) Check commit messages mentioning "test" Note if all tests pass (check last commit message) Breaking Changes: Scan for: renamed env vars, removed APIs, changed defaults Check commit bodies for "BREAKING" or "breaking change" Step 5: Fill Template Create PR with GUS ID in title using HEREDOC format: gh pr create --title "@W-12345678: Short description from commits" --body " $(cat <<'EOF' ## Description - Bullet point 1 from commit - Bullet point 2 from commit ## Motivation and Context [Extracted from commit bodies or inferred from changes] ## Type of Change - [x] Bug fix - [ ] New feature ... ## How Has This Been Tested? [List test files changed or mention manual testing] ## Related Issues Closes #123, W-45678 ## Checklist - [x] Tests added - [x] Tests pass - [ ] Documentation updated EOF ) " Template mapping patterns: Template Section Information Source Description/Summary Commit subjects (bullets) Motivation Commit bodies + issue refs Type of Change Keywords in commits + diff analysis Testing Test file changes + commit messages Breaking Changes BREAKING in commits + env var changes Checklist items Verify against actual changes Step 6: Create PR # Push if needed [[ $(git branch -vv | grep 'gone\]' ) ]] && git push -u origin HEAD # Create PR with GUS ID in title gh pr create --title "@W-12345678: Description" --body "..." Edge Cases No PR Template Found If no template exists, create minimal but complete PR: gh pr create --title "..." --body " $(cat <<'EOF' ## Summary - [commit-based bullets] ## Changes - [files changed summary] ## Testing [test coverage or manual testing note] EOF ) " Multiple Base Branch Options Check project conventions: Most repos: main Some use: master , develop , trunk Use gh pr create --base <branch> to specify. PR Already Exists If gh pr create fails with "pull request already exists": Return the existing PR URL Offer to update the PR description with gh pr edit <number> Common Mistakes ❌ Skipping GUS ID Prompt for Internal Contributors ALWAYS ask for GUS ID (but allow skipping for external contributors). Don't say: "I'll create the PR now" without prompting for GUS ID first. ❌ Asking User for Information Already in Commits Don't ask: "What should I put in the description?" The commits contain this information. Extract it (except for GUS ID). ❌ Generic or Vague Descriptions Don't write: "Various bug fixes and improvements" Extract specifics: "Fix memory leak in auth flow, improve error logging for failed requests" ❌ Skipping Template Sections Don't leave sections empty with "TODO". If information is missing, infer from code changes or use reasonable defaults: No tests? Say "Manual testing performed" No breaking changes? Check the box as "No" ❌ Creating PR Before Checking Push Status Always verify branch is pushed before creating PR: git branch -vv # Check tracking ❌ Not Handling HEREDOC Properly Use single quotes in <<'EOF' to prevent variable expansion in PR body. Quick Reference Full workflow: # 1. Ask user for GUS ID (allow skip for external contributors) # "What is the GUS work item ID? (Format: W-12345678, or press Enter to skip)" # 2. Gather context (parallel) git log main..HEAD --format= "%h %s%n%b" & git diff main...HEAD -- stat & wait # 3. Find and read template cat .github/pull_request_template.md # 4. Create PR with GUS ID in title gh pr create --title "@W-12345678: Short description" --body " $(cat <<'EOF' [filled template here] EOF ) " Title format examples: ✅ @W-22802840: Remove sensitive data from error logs (internal) ✅ @W-12345678: Add user management feature (internal) ✅ Remove sensitive data from error logs (external contributor) ❌ W-22802840: Fix bug (missing @ symbol for internal contributor) Real-World Impact Before this skill: 2-3 minutes per PR (manual git commands, template reading, copy-paste) Inconsistent PR descriptions Easy to skip template sections Repeated work for multiple PRs After this skill: ~30 seconds per PR (automated extraction) Consistent, complete PR descriptions All template sections filled Scalable to many PRs
Keywords that activate this skill. Click one to copy it.
This skill does not provide trigger words.
The downloaded .skill package contains the following fields.
| Field | Description |
|---|---|
| format | Format tag (skill/v1) |
| skill_id | Unique skill ID |
| name | Skill name |
| version | Version |
| description | Description |
| category | Categories (array) |
| trigger_words | Trigger words |
| tags | Tags |
| source | Source |
| source_url | Source URL (this page) |
| exported_at | Exported at (set per download) |
| system_prompt | System prompt body |
| model_config | Model config: provider / model / temperature / max_tokens / top_p |
| examples | Examples |
| install_guide | Import guide for Coze / Dify / Claude / custom frameworks |
The same skill can be exported in different platform formats.