Skip to main content

create-pr

Group uncommitted changes into logical conventional commits, push them to a feature branch, and open a GitHub pull request with a release-please friendly description. Use when the user types /create-pr or asks to commit their changes and open a PR.

Source facts

Repository
itsmostafa/agent-skills
Last source activity
September 29, 2026 at 16:03
Detected SKILL.md language
English
Stars
2
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
create-pr
description
Group uncommitted changes into logical conventional commits, push them to a feature branch, and open a GitHub pull request with a release-please friendly description. Use when the user types /create-pr or asks to commit their changes and open a PR.
disable-model-invocation
true
# Create Pull Request with Release-Please Guidelines This skill automates the process of committing changes, pushing to GitHub, and creating a Pull Request with a comprehensive description following Google release-please guidelines. ## Conventional Commit Types - feat: New feature (triggers minor version bump) - fix: Bug fix (triggers patch version bump) - feat! or fix!: Breaking change (triggers major version bump) - chore: Maintenance tasks (no version bump) - docs: Documentation changes (no version bump) - refactor: Code refactoring (no version bump) - test: Test changes (no version bump) - perf: Performance improvements (triggers patch version bump) ## Release-Please Guidelines PR descriptions should include: 1. **Clear title**: Following conventional commits format 2. **Summary**: What changed and why 3. **Breaking Changes**: Clearly marked with BREAKING CHANGE: footer 4. **Related Issues**: Link to issues using Fixes or Closes keywords 5. **Test Plan**: How to verify the changes 6. **Release Notes**: User-facing description of changes ## Instructions for Claude When this skill is invoked: 1. **Check git status and diff**: ```bash git status git diff --staged git diff ``` 2. **Group changes into logical commits** by analyzing: - **By feature/functionality**: Group files that implement the same feature together - **By layer**: Keep related files together (e.g., API handler + its test file) - **By change type**: Separate refactoring from new features from bug fixes - **By scope**: Group changes affecting the same module/package Common grouping patterns: - `handler.go` + `handler_test.go` → one commit - `api.yaml` + generated `openapi/*.gen.go` → one commit - Multiple files for same feature → one commit - Unrelated fixes → separate commits - Test additions → can be separate or with implementation 3. **Determine commit type for each group**: - New features → feat - Bug fixes → fix - Breaking changes → Add ! suffix or BREAKING CHANGE: footer - Other changes → chore, refactor, docs, test, etc. 4. **Identify the scope for each commit** (optional but recommended): - Examples: `api`, `config`, `workflow`, `provider`, `auth`, etc. 5. **Check current branch**: ```bash git branch --show-current ``` 6. **If on main/master, create a new feature branch**: ```bash git checkout -b <type>/<scope>-<short-description> ``` Examples: `feat/api-appointment-slots`, `fix/auth-token-validation` 7. **Create commits for each logical group** (repeat for each group): ```bash # Stage only files for this commit group git add <file1> <file2> ... # Create the commit git commit -m "<type>(<scope>): <description> <body with detailed explanation> BREAKING CHANGE: <description if applicable> Fixes #<issue-number> (if applicable)" ``` **Commit order**: Order commits so that reading them oldest-first explains the change, usually setup, then implementation, then tests and docs. Tests may share a commit with the code they cover. 8. **Push to remote**: ```bash git push -u origin <branch-name> ``` 9. **Create PR with comprehensive description**: ```bash gh pr create --title "<primary-change-title>" --body "$(cat <<'EOF' ## Summary <1-3 sentence summary of what changed and why> ## Commits - `<short-sha>` <commit title> ## Changes - <bullet point list of key changes> - <each change should be clear and specific> ## Breaking Changes <If applicable, list breaking changes with migration guide> <If not applicable, write "None"> ## Test Plan - [ ] <How to test the changes> - [ ] <Include specific curl commands or test steps> - [ ] <Verify no regressions> ## Related Issues Fixes #<issue-number> (if applicable) Closes #<issue-number> (if applicable) ## Release Notes <User-facing description for changelog> <Written from user perspective> <Highlight value and impact> ## Screenshots/Logs <If applicable, include relevant screenshots or log outputs> ## Checklist - [ ] Tests pass locally (project test command) - [ ] Linting passes (project lint command) - [ ] Documentation updated (if needed) - [ ] Breaking changes documented - [ ] Conventional commit format followed EOF )" ``` **PR Title**: Use the primary/most significant change as the PR title. If all commits are of equal importance, use a summary title that encompasses the changes. 10. **Display PR URL** and confirm successful creation ## Important Notes - **Create multiple logical commits** instead of one massive commit - **Each commit should be atomic**: It should represent one logical change that could stand alone - **Always follow Conventional Commits** format for commit messages - **Use imperative mood** in commit descriptions (e.g., "add feature" not "added feature") - **Keep commit title under 72 characters** - **Breaking changes** must include BREAKING CHANGE: in commit footer or ! after type/scope - **PR title** should reflect the primary change or summarize multiple changes - **Verify all services** are properly tested before creating PR - **Link related issues** using GitHub keywords (Fixes, Closes, Resolves) - **Commit order should tell a story**: Reading commits chronologically should explain the progression of changes ## Example: Multiple Commits for a Feature Given changes to implement appointment slot filtering, create separate commits: **Commit 1 - API spec update:** ``` docs(api): add provider_type parameter to slots endpoint Update OpenAPI spec with new query parameter for filtering appointment slots by provider type. ``` **Commit 2 - Core implementation:** ``` feat(api): add appointment slot filtering by provider Implement endpoint to filter available appointment slots based on provider type and location preferences. This improves user experience by showing only relevant appointment options. - Add provider filter to slots endpoint - Implement timezone conversion for slot times Fixes #123 ``` **Commit 3 - Tests:** ``` test(api): add tests for appointment slot filtering Add unit tests covering filter logic, timezone conversion, and edge cases for the new provider filtering feature. ``` ## Example PR Description (Multiple Commits) ```markdown ## Summary Adds appointment slot filtering by provider type to improve user experience when booking appointments. ## Commits - `a1b2c3d` docs(api): add provider_type parameter to slots endpoint - `e4f5g6h` feat(api): add appointment slot filtering by provider - `i7j8k9l` test(api): add tests for appointment slot filtering ## Changes - Added `provider_type` query parameter to `/v1/appointments/slots` endpoint - Implemented timezone conversion for accurate slot display across regions - Updated OpenAPI spec with new filtering parameters - Added unit tests for filter logic and edge cases ## Breaking Changes None ## Test Plan - [ ] Run the test suite to verify all tests pass - [ ] Test filtering with curl: ```bash curl -X GET "http://localhost:8080/v1/appointments/slots?start_date=2025-11-01&end_date=2025-11-15&provider_type=primary_care" \ -H "Authorization: Bearer valid-jwt" ``` - [ ] Verify timezone handling for different user locations - [ ] Test backward compatibility (endpoint works without filter) ## Related Issues Fixes #123 ## Release Notes Users can now filter appointment slots by provider type, making it easier to find appointments with their preferred healthcare provider. ## Checklist - [x] Tests pass locally (project test command) - [x] Linting passes (project lint command) - [x] Documentation updated - [x] Conventional commit format followed ``` ## When to Use Single vs Multiple Commits **Use multiple commits when:** - Changes span different concerns (API, tests, docs) - Changes affect different modules/packages - You have both bug fixes and new features - Changes can be logically separated for easier review - Implementation + tests can be split **Use a single commit when:** - All changes are tightly coupled and inseparable - Very small change (few lines across 1-2 files) - Single atomic change that makes no sense to split ## Usage Invoke this skill with `/create-pr` and Claude will: 1. Analyze your uncommitted changes 2. Group changes into logical commit units 3. Create multiple commits in logical progression order 4. Push all commits to the feature branch 5. Generate a comprehensive PR with release-please compatible formatting 6. Open the PR on GitHub
View on GitHub