skills/git-create-pr/SKILL.md
Create GitHub Pull Requests with conventional commit format. Activates when users want to create a PR, open a pull request, or push changes for review.
npx skillsauth add mgiovani/cc-arsenal git-create-prInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cross-Platform AI Agent Skill This skill works with any AI agent platform that supports the skills.sh standard.
Create a GitHub Pull Request following conventional commits specification, pre-filled with the PR template, and opened in the browser for final review.
CRITICAL: PR descriptions must accurately reflect ACTUAL changes:
For PRs with multiple commits or complex changes, spawn parallel agents:
If branch has >3 commits or >10 files changed:
Agent 1 - Feature Analysis:
- prompt: "Analyze all commits in this branch. What user-facing features or fixes were implemented? Focus on WHAT changed for users, not HOW the code changed."
- agent-type: "general-purpose"
Agent 2 - Technical Analysis:
- prompt: "Analyze the code changes. What architectural or technical changes were made? Look for: new dependencies, API changes, database migrations, config changes."
- agent-type: "general-purpose"
Agent 3 - Risk Assessment:
- prompt: "Identify risks in these changes: breaking changes, security implications, performance impacts, areas needing extra review. Check for removed tests or skipped validations."
- agent-type: "general-purpose"
Agent 4 - Test Coverage:
- prompt: "Check if changes include tests. For each modified file, is there a corresponding test change? List untested changes that should have tests."
- agent-type: "Explore"
Merge results -> Generate accurate, comprehensive PR description
### Track Progress with TodoWrite
Use TodoWrite to track PR creation steps:
TodoWrite:
Mark each as in_progress -> completed as you proceed.
git status --porcelaingit branch --show-currentgit log origin/<base>..HEAD --onelineABC-123 from feature/ABC-123_description)--base argument if providedgh repo view --json defaultBranchRef -q .defaultBranchRef.namemain if detection failsgit log origin/<base>..HEAD --format="%h %s" to get commitsgit diff origin/<base>...HEAD --stat for file changestype(scope): [TICKET-123] description (max 72 chars)type(scope): description (if no ticket)feat, fix, docs, style, refactor, perf, test, build, ci, chorefeat(auth): [ABC-123] add OAuth2 login supportfix(api): resolve null pointer in user endpoint.github/pull_request_template.md/tmp/pr-body-$(date +%s).md## Summary
[Brief description]
## Changes
- [Bullet points from commits]
## Testing
- [ ] Tests added/updated
- [ ] Manual testing completed
6. **Verify PR Description Accuracy**:
Before showing to user, verify each claim:
For each bullet point in PR description:
Create PR? (y/n/e to edit):y, yes, n, no, e, edite: ask for custom title/body modificationsgit push -u origin <branch># Push first (MUST DO THIS)
git push -u origin $(git branch --show-current)
# Create temp body file (capture timestamp in variable)
BODY_FILE="/tmp/pr-body-$(date +%s).md"
cat > "$BODY_FILE" << 'EOF'
## Summary
[Your generated content here]
EOF
# Open in browser with pre-filled data (use determined base branch)
# Add --draft if user specified --draft or -d flag
gh pr create \
--title "type(scope): [TICKET] description" \
--body-file "$BODY_FILE" \
--base <determined-base-branch> \
--web
Parse optional arguments from command arguments:
--base branch or -b branch (target branch, defaults to repo default)--draft or -d (if present, add --draft flag to gh pr create command)Note: Reviewers, labels, and assignees must be added in the web UI due to gh CLI limitations with --web flag.
ABC-123, PROJ-456, etc.) and place after type/scope--web to let user finalize the PRValidation Summary (keep lines under 60 chars):
Branch: feature/ABC-123-add-authentication
Ticket: ABC-123 (In Progress)
Commits: 8 commits ready
Authors: Multiple authors detected
Create PR? (y/n/e to edit):
## Examples
```bash
# Simple PR (uses repo default base branch)
git-create-pr
# Target specific base branch
git-create-pr --base develop
# Create as draft PR
git-create-pr --draft
# Specify base branch and draft
git-create-pr -b develop -d
After pushing the branch, the PR will open in the browser pre-filled with title and body. Add reviewers/labels in the web UI before creating.
## Claude Code Enhanced Features
This skill includes the following Claude Code-specific enhancements:
## Workflow
### Phase 1: Deep Change Analysis (Use SubAgents for Comprehensive PRs)
For PRs with multiple commits or complex changes, spawn parallel agents:
If branch has >3 commits or >10 files changed:
Agent 1 - Feature Analysis:
Agent 2 - Technical Analysis:
Agent 3 - Risk Assessment:
Agent 4 - Test Coverage:
Merge results -> Generate accurate, comprehensive PR description
### Track Progress with TodoWrite
Use TodoWrite to track PR creation steps:
TodoWrite:
Mark each as in_progress -> completed as you proceed.
### Phase 2: Validate Preconditions
1. **Validate Preconditions**:
- Check working tree is clean: `git status --porcelain`
- Get current branch: `git branch --show-current`
- Verify branch is not main/master
- Check commits exist: `git log origin/<base>..HEAD --oneline`
- Extract ticket ID from branch name (e.g., `ABC-123` from `feature/ABC-123_description`)
- Display compact validation summary (max 60 chars per line)
2. **Determine Base Branch**:
- Use `--base` argument if provided
- Otherwise use: `gh repo view --json defaultBranchRef -q .defaultBranchRef.name`
- Fall back to `main` if detection fails
3. **Analyze Changes**:
- Run `git log origin/<base>..HEAD --format="%h %s"` to get commits
- Run `git diff origin/<base>...HEAD --stat` for file changes
- Identify primary change type for PR title
4. **Generate PR Title** (Conventional Commit Format):
- Format: `type(scope): [TICKET-123] description` (max 72 chars)
- Or: `type(scope): description` (if no ticket)
- Types: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`
- Examples:
- `feat(auth): [ABC-123] add OAuth2 login support`
- `fix(api): resolve null pointer in user endpoint`
5. **Fill PR Template**:
- Look for `.github/pull_request_template.md`
- Fill based on commits and changes
- Save to `/tmp/pr-body-$(date +%s).md`
- If no template, use:
```markdown
## Summary
[Brief description]
## Changes
- [Bullet points from commits]
## Testing
- [ ] Tests added/updated
- [ ] Manual testing completed
```
6. **Verify PR Description Accuracy**:
Before showing to user, verify each claim:
For each bullet point in PR description:
7. **Ask for Confirmation**:
- Show compact summary with ticket, commits count, authors
- Display preview of generated PR title
- Display preview of generated PR body
- Ask: `Create PR? (y/n/e to edit):`
- Accept: `y`, `yes`, `n`, `no`, `e`, `edit`
- On `e`: ask for custom title/body modifications
8. **Push and Create PR** (after user confirms):
- **CRITICAL Step 1**: Push branch FIRST: `git push -u origin <branch>`
- **Step 2**: Create temp body file with timestamp variable
- **Step 3**: Open PR in browser with --web (for user to finish):
```bash
# Push first (MUST DO THIS)
git push -u origin $(git branch --show-current)
# Create temp body file (capture timestamp in variable)
BODY_FILE="/tmp/pr-body-$(date +%s).md"
cat > "$BODY_FILE" << 'EOF'
## Summary
[Your generated content here]
EOF
# Open in browser with pre-filled data (use determined base branch)
# Add --draft if user specified --draft or -d flag
gh pr create \
--title "type(scope): [TICKET] description" \
--body-file "$BODY_FILE" \
--base <determined-base-branch> \
--web
```
- **CRITICAL**: DO NOT use --reviewer, --assignee, or --label with --web (they conflict)
- User will add reviewers/labels in the web UI
- Display: "Opening PR in browser for final review..."
## Argument Parsing
Parse optional arguments from `$ARGUMENTS`:
- `--base branch` or `-b branch` (target branch, defaults to repo default)
- `--draft` or `-d` (if present, add `--draft` flag to gh pr create command)
**Note**: Reviewers, labels, and assignees must be added in the web UI due to gh CLI limitations with --web flag.
development
Generate comprehensive test suites with coverage analysis and parallel test writing. Automatically activates when users want to write tests, add test coverage, generate test cases, improve testing, or analyze coverage gaps. Supports pytest, vitest, jest, and all major test frameworks.
development
Multi-agent PR review team orchestration with 7 specialized reviewers for security-sensitive or architectural PRs. Spawns architecture, security, performance, testing, style, docs/UX, and adversary reviewers as a coordinated team. Premium review for critical code changes.
development
Spec-driven team orchestration: adaptive development team scaling from 3 to 11 agents based on complexity.
development
Perform comprehensive security review targeting OWASP Top 10 2025 vulnerabilities for PRs, commits, or entire codebases. This skill should be used when a user wants to audit code security, scan for vulnerabilities, review security posture, or check for OWASP compliance. Analysis only - identifies vulnerabilities without modifying code.