Initial commit
This commit is contained in:
268
commands/create-pr.md
Normal file
268
commands/create-pr.md
Normal file
@@ -0,0 +1,268 @@
|
||||
---
|
||||
description: Create pull requests with formatted code, logical commits, and comprehensive descriptions
|
||||
version: 1.0.0
|
||||
---
|
||||
|
||||
# PR Creator
|
||||
|
||||
Automate pull request creation with code formatting, commit organization, and detailed PR descriptions.
|
||||
|
||||
## What It Does
|
||||
|
||||
- Formats code with your project's formatter
|
||||
- Organizes changes into logical commits
|
||||
- Creates feature branches with descriptive names
|
||||
- Generates comprehensive PR descriptions
|
||||
- Pushes to remote and opens PR
|
||||
|
||||
## How to Use
|
||||
|
||||
Run when you're ready to create a PR from your changes:
|
||||
|
||||
```bash
|
||||
/create-pr
|
||||
```
|
||||
|
||||
The command handles everything from formatting to PR submission.
|
||||
|
||||
## Workflow Steps
|
||||
|
||||
**1. Format Code**
|
||||
```bash
|
||||
# Run project formatter
|
||||
npm run format
|
||||
# or
|
||||
biome format --write .
|
||||
```
|
||||
|
||||
**2. Analyze Changes**
|
||||
```bash
|
||||
git status
|
||||
git diff
|
||||
```
|
||||
|
||||
**3. Create Feature Branch**
|
||||
```bash
|
||||
git checkout -b feature/user-profile-editor
|
||||
```
|
||||
|
||||
**4. Organize Commits**
|
||||
```bash
|
||||
# Group related changes
|
||||
git add src/components/Profile*.tsx
|
||||
git commit -m "feat(profile): add profile editor component"
|
||||
|
||||
git add src/api/profile.ts
|
||||
git commit -m "feat(api): add profile update endpoint"
|
||||
```
|
||||
|
||||
**5. Push and Create PR**
|
||||
```bash
|
||||
git push -u origin feature/user-profile-editor
|
||||
gh pr create --title "Add user profile editor" --body "..."
|
||||
```
|
||||
|
||||
## PR Description Template
|
||||
|
||||
```markdown
|
||||
## Summary
|
||||
Brief overview of what this PR accomplishes
|
||||
|
||||
## Changes
|
||||
- Added profile editor component
|
||||
- Created profile update API endpoint
|
||||
- Added form validation
|
||||
- Wrote unit tests
|
||||
|
||||
## Type of Change
|
||||
- [x] New feature
|
||||
- [ ] Bug fix
|
||||
- [ ] Breaking change
|
||||
- [ ] Documentation update
|
||||
|
||||
## Testing
|
||||
- All unit tests passing
|
||||
- Manually tested on Chrome/Firefox
|
||||
- Verified form validation edge cases
|
||||
|
||||
## Related Issues
|
||||
Closes #234
|
||||
```
|
||||
|
||||
## Example: Complete PR Creation
|
||||
|
||||
**Scenario**: Adding export functionality
|
||||
|
||||
**Step 1: Format**
|
||||
```bash
|
||||
npm run format
|
||||
# Fixed formatting in 3 files
|
||||
```
|
||||
|
||||
**Step 2: Create Branch**
|
||||
```bash
|
||||
git checkout -b feature/export-data
|
||||
```
|
||||
|
||||
**Step 3: Commit Changes**
|
||||
```bash
|
||||
git add src/services/export.ts src/services/export.test.ts
|
||||
git commit -m "feat(export): add data export service"
|
||||
|
||||
git add src/components/ExportButton.tsx
|
||||
git commit -m "feat(ui): add export button to dashboard"
|
||||
|
||||
git add README.md
|
||||
git commit -m "docs: add export feature documentation"
|
||||
```
|
||||
|
||||
**Step 4: Create PR**
|
||||
```bash
|
||||
git push -u origin feature/export-data
|
||||
gh pr create \
|
||||
--title "Add data export functionality" \
|
||||
--body "Closes #123. Adds CSV/JSON export with download button."
|
||||
```
|
||||
|
||||
## Use Cases
|
||||
|
||||
- **Feature Development**: Create PRs for new features with proper structure
|
||||
- **Bug Fixes**: Submit fixes with clear problem/solution description
|
||||
- **Refactoring**: Document code improvements without behavior changes
|
||||
- **Documentation**: Update docs with organized commits
|
||||
|
||||
## Best Practices
|
||||
|
||||
- **Format First**: Always format code before committing
|
||||
- **Logical Commits**: Group related changes together
|
||||
- **Clear Messages**: Write descriptive commit messages
|
||||
- **Test Everything**: Run tests before pushing
|
||||
- **Descriptive Titles**: Make PR title clear and specific
|
||||
- **Link Issues**: Reference related issue numbers
|
||||
- **Small PRs**: Keep changes focused and reviewable
|
||||
|
||||
## Commit Organization
|
||||
|
||||
**Good Organization**
|
||||
```
|
||||
✓ feat(auth): add login form component
|
||||
✓ feat(auth): add authentication API
|
||||
✓ test(auth): add login tests
|
||||
✓ docs(auth): update authentication guide
|
||||
```
|
||||
|
||||
**Poor Organization**
|
||||
```
|
||||
✗ update stuff
|
||||
✗ WIP
|
||||
✗ more changes
|
||||
✗ fix
|
||||
```
|
||||
|
||||
## Branch Naming
|
||||
|
||||
Use descriptive branch names with prefixes:
|
||||
|
||||
- `feature/add-dark-mode`
|
||||
- `fix/validation-error`
|
||||
- `refactor/extract-utils`
|
||||
- `docs/api-documentation`
|
||||
|
||||
## Code Formatting
|
||||
|
||||
The command runs formatters automatically:
|
||||
|
||||
**JavaScript/TypeScript**
|
||||
```bash
|
||||
prettier --write .
|
||||
# or
|
||||
biome format --write .
|
||||
```
|
||||
|
||||
**Python**
|
||||
```bash
|
||||
black .
|
||||
ruff format .
|
||||
```
|
||||
|
||||
**Go**
|
||||
```bash
|
||||
go fmt ./...
|
||||
```
|
||||
|
||||
## PR Checklist
|
||||
|
||||
Before creating PR, verify:
|
||||
- [ ] Code is formatted
|
||||
- [ ] All tests pass
|
||||
- [ ] Commits are logical and atomic
|
||||
- [ ] Branch name is descriptive
|
||||
- [ ] PR description is complete
|
||||
- [ ] Related issues are linked
|
||||
- [ ] No debug code remains
|
||||
|
||||
## Testing Before PR
|
||||
|
||||
```bash
|
||||
# Run tests
|
||||
npm test
|
||||
|
||||
# Run linter
|
||||
npm run lint
|
||||
|
||||
# Build project
|
||||
npm run build
|
||||
|
||||
# Type check (if TypeScript)
|
||||
npm run typecheck
|
||||
```
|
||||
|
||||
All checks must pass before creating PR.
|
||||
|
||||
## Multiple Reviewers
|
||||
|
||||
Request specific reviewers:
|
||||
|
||||
```bash
|
||||
gh pr create \
|
||||
--reviewer alice,bob \
|
||||
--assignee charlie \
|
||||
--label "needs-review"
|
||||
```
|
||||
|
||||
## Draft PRs
|
||||
|
||||
For work in progress:
|
||||
|
||||
```bash
|
||||
gh pr create --draft --title "WIP: Feature in progress"
|
||||
```
|
||||
|
||||
Mark ready when complete:
|
||||
|
||||
```bash
|
||||
gh pr ready
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Formatting Fails**: Check formatter config, fix errors manually
|
||||
|
||||
**Push Rejected**: Pull latest changes, rebase, try again
|
||||
|
||||
**PR Creation Fails**: Verify GitHub CLI is authenticated
|
||||
|
||||
**Tests Fail**: Fix tests before creating PR
|
||||
|
||||
**Merge Conflicts**: Resolve conflicts with base branch
|
||||
|
||||
## Quality Standards
|
||||
|
||||
A good PR includes:
|
||||
- Formatted, lint-free code
|
||||
- Logical, atomic commits
|
||||
- Comprehensive description
|
||||
- Linked issues
|
||||
- Passing tests
|
||||
- Clear title
|
||||
- Appropriate reviewers assigned
|
||||
Reference in New Issue
Block a user