Awesome-omni-skill pr-creator
REQUIRED for all PR creation in this project. Creates professional PRs using project template, enforces Conventional Commits title format, BLOCKS AI attribution pollution, always creates drafts via gh CLI. Use when creating PR, opening PR, submitting PR, creating pull request, or user mentions "create pr", "open pr", "pr this", "submit pr", "make pr", "pull request", "create a pr", "open a pr", "push for review".
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/pr-creator" ~/.claude/skills/diegosouzapw-awesome-omni-skill-pr-creator && rm -rf "$T"
skills/tools/pr-creator/SKILL.mdPR Creator
Creates professional pull requests with proper titles, populated templates, and always in draft mode.
Core Mission
This skill automates PR creation following project conventions. It uses the existing
.github/pull_request_template.md, enforces Conventional Commits title format, and always creates PRs as drafts to allow review before marking ready.
Problem Solved: Manual PR creation is tedious and often results in incomplete descriptions or inconsistent titles. This skill ensures every PR has proper structure, meaningful descriptions, and follows project conventions.
Instructions
1. Intercept PR Intent
Detect when user wants to create a PR:
- Direct: "create pr", "open pr", "make pr"
- Indirect: "pr this", "submit pr", "push for review"
- After work: "done, create a pr"
Immediately activate and begin PR workflow.
2. Gather Repository Information
Collect context about current state:
# Current branch name git branch --show-current # Verify not on main/master git branch --show-current | grep -E '^(main|master)$' && echo "ERROR: Cannot PR from main" # Check for remote tracking git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null || echo "No upstream" # Commits in this branch (vs main) git log main..HEAD --oneline # Changed files summary git diff main..HEAD --stat # Detailed file list git diff main..HEAD --name-only
Block if:
- On main/master branch
- No commits ahead of main
- Uncommitted changes exist (warn and offer to commit first)
3. Analyze Changes
Determine PR characteristics:
Type (from file changes):
- New files in src/, new functionalityfeat
- Changes to existing code fixing issuesfix
- Only .md files, docs/ changesdocs
- Formatting, whitespace onlystyle
- Code restructure, same behaviorrefactor
- Performance improvementsperf
- Test files onlytest
- build.gradle.kts, Makefile, CIbuild
- .github/workflows/ changesci
- Maintenance, dependencieschore
Scope (from paths):
- compiler/src/**compiler
- compiler/src//fir/fir
- compiler/src//ir/ir
- compiler/src//generation/generation
- gradle-plugin/**gradle
- annotations/**annotations
- samples/**samples
- docs/**, *.mddocs
Related Issues:
- Extract from branch name:
→ #123fix/123-description - Extract from commit messages:
Fixes #456
4. Generate PR Title
Apply Conventional Commits format:
<type>[(scope)]: <description>
Validation:
- Type is valid
- Max 72 characters
- No period at end
- Imperative mood ("add" not "added")
Examples:
feat(compiler): add generic type parameter support fix(fir): resolve annotation detection for nested interfaces docs: update KMP multi-module guide refactor(generation): restructure factory generation API
5. Populate PR Template
Read project template:
cat .github/pull_request_template.md
Always use Standard format:
## Description {2-3 sentences explaining what changed and why} ## Related Issue Fixes #{issue} ## Type of Change - [x] {Detected type} - [ ] Breaking change (if applicable) ## Pre-Submission Checklist - [x] Code formatted: `./gradlew spotlessApply` - [x] Linter passing: `./gradlew lintKotlin` - [x] Static analysis: `./gradlew detekt` - [x] Tests added/updated and passing: `./gradlew test` - [x] Generated code compiles (verified with sample project) - [x] Updated documentation if needed ## Additional Context {Key implementation details or decisions}
6. Validate Before Submission
Check PR is ready:
# Verify branch is pushed git push -u origin $(git branch --show-current) # Verify no uncommitted changes git status --porcelain # Optional: Run quick validation make format 2>/dev/null || ./gradlew spotlessCheck
Warn if:
- Branch not pushed to remote
- Uncommitted changes exist
- Format check fails
7. Create Draft PR
Always use draft mode:
gh pr create \ --draft \ --title "<generated-title>" \ --body "$(cat <<'EOF' <populated-template> EOF )"
Important flags:
- Always create as draft (REQUIRED)--draft
- Validated Conventional Commits title--title
- Populated template with proper depth--body
8. Output PR URL and Next Steps
Success output:
PR CREATED (Draft) URL: https://github.com/rsicarelli/fakt/pull/123 Title: feat(compiler): add generic type parameter support Status: Draft Checklist before marking ready: - [ ] Review the PR description for accuracy - [ ] Ensure all CI checks pass - [ ] Add reviewers if needed To mark ready for review: gh pr ready 123 To view PR: gh pr view 123 --web
Forbidden Patterns (CRITICAL)
These MUST NEVER appear in PR title or description:
FORBIDDEN - ALWAYS BLOCK 1. AI Attribution: "Generated with Claude Code" "Generated by Claude" "Created by AI" 2. Co-Author Lines: "Co-Authored-By: Claude" "Co-authored-by:.*noreply@anthropic.com" 3. Robot Emoji Attribution: Lines with robot emoji followed by "Generated"
PRs should appear professional and human-authored.
Supporting Files
Progressive disclosure for detailed documentation:
- Full title format specificationresources/pr-title-conventions.md
- How to write effective descriptionsresources/pr-description-guide.md
Related Skills
This skill composes with:
- Ensures commits are clean before PRgit-commit-guardian
- Run tests before PR submissionbdd-test-runner
- Validate code compilescompilation-validator
This skill enables:
- Consistent PR quality across the project
- Automated changelog generation
- Clear review process with drafts
Best Practices
- Always draft first - Review before requesting reviews
- Match title to primary change - Use most significant commit type
- Reference issues - Link related GitHub issues
- Explain the why - Description should explain reasoning
- No AI attribution - Clean, professional PRs only
- Check CI before ready - Ensure all checks pass first
PR Type Reference
| Type | When to Use | Example Title |
|---|---|---|
| New feature | |
| Bug fix | |
| Docs only | |
| Formatting | |
| Restructure | |
| Performance | |
| Tests | |
| Build system | |
| CI/CD | |
| Maintenance | |
Error Messages
Not on Feature Branch
PR BLOCKED - Cannot create PR from main/master Create a feature branch first: git checkout -b feat/your-feature
No Commits
PR BLOCKED - No commits ahead of main Make some changes and commit first. Current branch is up to date with main.
Uncommitted Changes
PR WARNING - Uncommitted changes detected Files with changes: M src/main/kotlin/File.kt ? src/main/kotlin/NewFile.kt Options: 1. Commit changes first (recommended) 2. Stash changes: git stash 3. Proceed anyway (changes won't be in PR)
Title Too Long
PR BLOCKED - Title exceeds 72 characters Current: 85 characters Limit: 72 characters Original: "feat(compiler): implement comprehensive generic type parameter support for all interfaces" Suggested: "feat(compiler): add generic type support"
Known Limitations
- Requires
CLI to be installed and authenticatedgh - Cannot detect all issue references automatically
- Breaking change detection is heuristic-based
- Depth level must be explicitly chosen (by design)
References
- Project PR Template:
.github/pull_request_template.md - Conventional Commits: https://www.conventionalcommits.org/
- GitHub CLI: https://cli.github.com/