From cc-arsenal
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 claudepluginhub mgiovani/cc-arsenal --plugin cc-arsenal-teamsThis skill is limited to using the following tools:
> **Cross-Platform AI Agent Skill**
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
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.