← スキル一覧に戻る
finishing-a-development-branch
Smooth-Operation / household-expense-tracker
⭐ 0🍴 0📅 2026年1月7日
Use when ready to merge feature branch. Complete checklist before creating PR/MR. Ensures professional quality and prevents embarrassing mistakes.
SKILL.md
---
name: finishing-a-development-branch
description: "Use when ready to merge feature branch. Complete checklist before creating PR/MR. Ensures professional quality and prevents embarrassing mistakes."
---
# Finishing a Development Branch
## Core Principle
Before creating a Pull/Merge Request, complete a comprehensive checklist to ensure professional quality work.
## When to Use This Skill
- Feature is implemented and tested
- Ready to create PR/MR
- About to merge branch to main/develop
- User says "it's done, let's merge"
- Before marking work as complete
## The Iron Law
**NEVER create a PR/MR without completing the finish checklist.**
Incomplete PRs waste reviewer time and damage your reputation.
## Complete Finish Checklist
### 1. Code Completion
- [ ] All planned features implemented
- [ ] All requirements met
- [ ] No TODO comments remaining
- [ ] No commented-out code
- [ ] No debugging statements (console.log, dd(), var_dump())
- [ ] No temporary/experimental code
### 2. Testing
- [ ] All tests pass locally
- [ ] New tests added for new functionality
- [ ] Edge cases tested
- [ ] Error cases tested
- [ ] Test coverage adequate (>80%)
- [ ] Database backup before tests (used `./scripts/safe-test.sh`)
- [ ] Integration tests pass
- [ ] No skipped or pending tests
### 3. Code Quality
- [ ] No linter errors
- [ ] Code formatted consistently
- [ ] No compiler warnings
- [ ] DRY principle followed (no duplication)
- [ ] Functions are single-purpose
- [ ] Meaningful variable names
- [ ] Complex logic has comments
- [ ] No magic numbers
### 4. Security
- [ ] No SQL injection vulnerabilities
- [ ] No XSS vulnerabilities
- [ ] Input validation comprehensive
- [ ] Authentication/authorization correct
- [ ] No hardcoded secrets
- [ ] Sensitive data not logged
- [ ] CSRF protection enabled
### 5. Performance
- [ ] No N+1 query problems
- [ ] Appropriate database indexes
- [ ] Efficient algorithms used
- [ ] No memory leaks
- [ ] Large datasets paginated
- [ ] Caching used where appropriate
### 6. Documentation
- [ ] PHPDoc/JSDoc comments on public methods
- [ ] Complex logic explained
- [ ] API endpoints documented
- [ ] README updated (if needed)
- [ ] CHANGELOG updated
- [ ] .env.example updated (new variables)
- [ ] Migration instructions (if applicable)
### 7. Git Hygiene
- [ ] All changes committed
- [ ] Commit messages follow convention
- [ ] Branch up to date with base branch
- [ ] No merge conflicts
- [ ] No unintended file changes
- [ ] .gitignore correct (no secrets committed)
- [ ] Sensible commit history (consider squashing if messy)
### 8. Integration
- [ ] No existing functionality broken
- [ ] API contracts maintained (backwards compatible)
- [ ] Database migrations reversible
- [ ] No conflicts with other features
- [ ] Works with other branches (if known)
### 9. CI/CD
- [ ] CI pipeline passes (if configured)
- [ ] Build succeeds
- [ ] Deployment script works (if applicable)
- [ ] Environment variables documented
### 10. Review Preparation
- [ ] PR/MR title is descriptive
- [ ] PR/MR description complete
- [ ] Screenshots/videos (if UI changes)
- [ ] Test plan included
- [ ] Breaking changes noted
- [ ] Related issues linked
## Pre-PR/MR Protocol
### Step 1: Final Self-Review
```
I'm using the finishing-a-development-branch skill before creating PR.
Running through complete checklist...
Code Completion:
✅ All features implemented
✅ No TODO comments
✅ No debugging code
Testing:
✅ Running final test suite with backup
✅ All 127 tests pass
✅ Coverage: 87%
[... complete all sections ...]
Ready to create PR ✅
```
### Step 2: Update Branch with Latest Changes
```bash
# Ensure branch is up to date
git checkout main
git pull origin main
git checkout feature/authentication
git merge main
# Or use rebase for cleaner history
git rebase main
# Resolve any conflicts
[if conflicts, resolve them]
# Run tests again after merge/rebase
./scripts/safe-test.sh vendor/bin/paratest
```
### Step 3: Clean Up Commits (Optional)
If commit history is messy:
```bash
# Interactive rebase to squash/reword commits
git rebase -i main
# Squash all commits into one (if appropriate)
# Or clean up commit messages
# Or split large commits
# Force push after rebase (ONLY on feature branches)
git push --force-with-lease origin feature/authentication
```
### Step 4: Write PR/MR Description
**Template:**
```markdown
## What
Brief description of what this PR does
## Why
Why is this change needed? What problem does it solve?
## Changes
- Bullet point list of major changes
- Added X
- Modified Y
- Removed Z
## Testing
How to test these changes:
1. Step 1
2. Step 2
3. Expected result
Test results:
- All tests pass (X tests)
- Manual testing completed
- No regressions detected
## Screenshots/Videos
(If applicable, add screenshots or video demonstrating changes)
## Breaking Changes
(If any, list them with migration instructions)
## Checklist
- [ ] Tests pass
- [ ] Documentation updated
- [ ] No merge conflicts
- [ ] Reviewed own code
Closes #123
```
**Example:**
```markdown
## What
Implements JWT token-based authentication for API using Laravel Sanctum
## Why
Needed stateless authentication to support mobile app. Session-based auth doesn't work well for mobile clients.
## Changes
- Added Laravel Sanctum package
- Created AuthController with register/login/logout endpoints
- Added auth:sanctum middleware to protected routes
- Implemented token generation and revocation
- Added 15 tests covering auth flows
- Updated API documentation
## Testing
How to test:
1. POST /api/register with email/password
2. Receive token in response
3. Use token in Authorization header for protected routes
4. POST /api/logout to revoke token
Test results:
- All 127 tests pass (added 15 new auth tests)
- Manual testing completed with Postman
- Tested token expiration
- Tested invalid credentials
- Tested protected route access
## API Endpoints
New endpoints:
- POST /api/register - User registration
- POST /api/login - User login (returns token)
- POST /api/logout - Token revocation (protected)
Protected endpoints now require:
```
Authorization: Bearer {token}
```
## Breaking Changes
None. Existing endpoints unchanged. New auth is opt-in for protected routes.
## Migration Instructions
1. Run migrations: `php artisan migrate`
2. Publish Sanctum config (optional): `php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"`
3. Add `SANCTUM_STATEFUL_DOMAINS` to .env (for SPA, optional)
## Rollback Plan
If issues occur:
```bash
php artisan migrate:rollback --step=2
composer remove laravel/sanctum
```
## Checklist
- [x] All tests pass
- [x] API documentation updated
- [x] README updated with auth setup
- [x] CHANGELOG updated
- [x] .env.example includes Sanctum variables
- [x] No merge conflicts
- [x] Self-reviewed code
- [x] Database migrations reversible
Closes #45
```
### Step 5: Create PR/MR
**GitHub:**
```bash
# Using GitHub CLI
gh pr create \
--title "feat(auth): Add JWT token authentication" \
--body-file pr-description.md \
--base main \
--head feature/authentication
# Or interactively
gh pr create
```
**GitLab:**
```bash
# Using GitLab CLI
glab mr create \
--title "feat(auth): Add JWT token authentication" \
--description "$(cat pr-description.md)" \
--source-branch feature/authentication \
--target-branch main
# Or interactively
glab mr create
```
### Step 6: Post-PR Actions
After creating PR:
```
PR created: #156
Post-PR checklist:
- [ ] Link to related issues
- [ ] Request reviewers
- [ ] Add labels (feature, enhancement, etc.)
- [ ] Assign to milestone (if applicable)
- [ ] Add to project board (if applicable)
- [ ] Notify team in chat/email
Monitoring:
- Watch for CI/CD results
- Address reviewer comments promptly
- Keep branch up to date if base changes
```
## Common PR/MR Mistakes to Avoid
### ❌ Incomplete PRs
```
Bad PR:
Title: "Update"
Description: "Fixed stuff"
Changes: 50 files modified, no explanation
```
**Why bad**: Reviewers have no context, can't review effectively
**Fix**: Complete title, thorough description, explain changes
### ❌ Huge PRs
```
Bad PR:
Title: "Add authentication, payment, and notification systems"
Changes: 150 files, 5000 lines
```
**Why bad**: Too large to review effectively, high chance of bugs
**Fix**: Split into multiple smaller PRs
**Good size**: < 400 lines of actual code changes
### ❌ PRs with Failing Tests
```
Bad PR:
- Tests: 5 passing, 3 failing
- CI: ❌ Failed
- Description: "Tests will pass after merge"
```
**Why bad**: Breaks the build, unprofessional
**Fix**: Make tests pass BEFORE creating PR
### ❌ PRs with Merge Conflicts
```
Bad PR:
- Status: Has merge conflicts with main
- Comment: "Can someone resolve the conflicts?"
```
**Why bad**: PR author should resolve conflicts
**Fix**: Merge main into your branch, resolve conflicts, test, push
### ❌ PRs without Context
```
Bad PR:
Title: "Fix bug"
Description: (empty)
Changes: Modified 3 files
```
**Why bad**: Reviewers don't know what bug or how it was fixed
**Fix**: Explain the bug, root cause, and solution
## Handling PR Feedback
### When Reviewer Requests Changes
```
Reviewer comment:
"This AuthController method is 100 lines. Can you split it?"
Good response:
"Good catch! I'll refactor this into:
- validateCredentials() method
- generateToken() method
- logAuthEvent() method
Will push update today."
[Make changes, push, notify reviewer]
"Updated! AuthController methods now < 30 lines each."
```
### When You Disagree with Feedback
```
Reviewer comment:
"Use bcrypt instead of argon2"
Your response (if you disagree):
"I chose argon2 because:
1. More secure (2015 Password Hashing Competition winner)
2. Better resistance to GPU attacks
3. Laravel default since 5.8
However, happy to switch to bcrypt if there's a specific concern. What do you think?"
[Discuss, reach consensus, implement agreed solution]
```
## Integration with Skills
**Prerequisites:**
- `code-review` - Self-review before PR
- `verification-before-completion` - Final checks
- `executing-plans` - Implementation complete
**Use with:**
- `git-workflow` - Commit conventions
- `database-backup` - Test before PR
- `systematic-debugging` - If issues found
**After PR created:**
- Monitor CI/CD results
- Address reviewer feedback
- Merge after approval
## Red Flags (Not Ready for PR)
- ❌ Tests don't pass
- ❌ Contains TODO comments
- ❌ Has merge conflicts
- ❌ No description
- ❌ Includes debugging code
- ❌ Secrets committed
- ❌ CI/CD fails
- ❌ No new tests for new features
## Common Rationalizations to Reject
- ❌ "I'll fix it after merge" → Fix BEFORE merge
- ❌ "The reviewer will catch issues" → Catch them yourself first
- ❌ "It's just a small change" → Small changes still need quality
- ❌ "I'm in a hurry" → Rushing creates bugs
- ❌ "Tests will pass in production" → Tests must pass now
## Authority
**This skill is based on:**
- Professional software development practices
- Code review best practices
- Industry standard: All major companies require thorough PR process
- Git workflow conventions
- Team collaboration efficiency
**Social Proof**: Google, Facebook, Microsoft all have rigorous PR processes.
## Your Commitment
Before creating PR/MR:
- [ ] I will complete the entire finish checklist
- [ ] I will ensure all tests pass
- [ ] I will write a thorough PR description
- [ ] I will review my own code first
- [ ] I will address all red flags
---
**Bottom Line**: Your PR represents you. Make it professional, complete, and easy to review. Reviewers' time is valuable - respect it by submitting quality work.