pr-quality-checklist by bobmatnyc/claude-mpm-skills
npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill pr-quality-checklist创建高质量 Pull Request 的全面指南,确保 PR 易于审查、文档齐全并遵循团队标准。包含模板、规模指南以及作者和审查者的最佳实践。
type(scope): description{type}({scope}): {short description}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
feat(auth): add OAuth2 login support
fix(cart): resolve race condition in checkout
refactor(search): extract query param parsing logic
docs(api): update authentication examples
test(payment): add integration tests for Stripe
chore(deps): update Next.js to v15
perf(images): implement lazy loading for gallery
ci(deploy): add staging environment workflow
auth、cart、search、apiuser-profile 而非 user-profile-settings-modal## Summary
<!-- 1-3 bullet points describing what changed -->
- Added OAuth2 authentication flow
- Integrated with Auth0 provider
- Updated login UI components
## Related Tickets
<!-- Link to Linear/Jira/GitHub issues -->
- Closes #123
- Related to #456
- Fixes ENG-789
## Changes
<!-- Detailed list of changes -->
### Added
- `src/lib/auth/oauth2.ts` - OAuth2 client implementation
- `src/app/api/auth/callback/route.ts` - Auth callback handler
- `src/components/OAuthButtons.tsx` - OAuth login buttons
### Modified
- `src/components/LoginForm.tsx` - Added OAuth buttons
- `src/lib/auth/index.ts` - Export new auth methods
- `README.md` - Updated setup instructions
### Removed
- `src/lib/auth/legacy.ts` - Deprecated auth code
- `src/components/OldLoginForm.tsx` - Replaced by new form
## Screenshots
<!-- Required for UI changes -->
### Desktop

### Mobile

### Before/After (if applicable)
| Before | After |
|--------|-------|
|  |  |
## Testing
<!-- How was this tested? -->
- [ ] Unit tests added/updated
- [ ] Integration tests pass
- [ ] Manual testing completed
- [ ] Tested on Chrome, Firefox, Safari
- [ ] Mobile responsive (tested on iOS/Android)
- [ ] Edge cases tested (empty state, error states, loading)
## Breaking Changes
<!-- If any breaking changes -->
⚠️ **Breaking Change**: The `login()` function signature has changed.
**Before:**
```typescript
login(username: string, password: string)
After:
login({ username: string, password: string, provider?: 'local' | 'oauth' })
Migration:
// Old
await login('user', 'pass');
// New
await login({ username: 'user', password: 'pass' });
Code follows project style guidelines
Self-review completed
Comments added for complex logic
Documentation updated (if needed)
Changeset added (if user-facing change)
No console.log/debugger statements left
No TypeScript errors
Tests pass locally
Build succeeds
## Summary
Brief description of the change.
## Changes
- Modified `file.ts` to fix XYZ
## Testing
- [ ] Tests pass
- [ ] Verified manually
| 规模 | 行数 | 文件数 | 审查时间 | 建议 |
|---|---|---|---|---|
| XS | < 50 | 1-3 | 5 分钟 | ✅ 适用于热修复 |
| S | 50-150 | 3-8 | 15 分钟 | ✅ 良好规模 |
| M | 150-300 | 8-15 | 30 分钟 | ⚠️ 考虑拆分 |
| L | 300-500 | 15-25 | 1 小时 | ❌ 应拆分 |
| XL | 500+ | 25+ | 2+ 小时 | ❌ 必须拆分 |
PR #1: MVP 实现(核心功能)
PR #2: 优化和边界情况
PR #3: 附加功能
PR #1: 数据库模式变更
PR #2: 后端 API 实现
PR #3: 前端 UI 集成
PR #4: 测试和文档
PR #1: 重构(无行为变更)
PR #2: 新功能(基于重构后的代码)
PR #3: 新功能的测试
PR #1: 高风险变更(需要仔细审查)
PR #2: 低风险变更(常规更新)
git mv 显示)## Summary
Refactoring and cleanup for [area]
**Goal**: Improve code maintainability without changing behavior
## Motivation
- Reduce code duplication (3 similar functions → 1 reusable utility)
- Improve type safety (any → specific types)
- Remove dead code identified during feature work
## Related Tickets
- ENG-XXX: Improve [area] maintainability
- ENG-YYY: Remove deprecated [feature]
## Stats
- **Lines added**: +91
- **Lines removed**: -1,330
- **Net**: -1,239 ✅
- **Files changed**: 23
## Changes
### Removed (Dead Code)
- `/api/old-endpoint` - unused, replaced by `/api/new-endpoint` in v2.0
- `useDeprecatedHook.ts` - replaced by `useNewHook.ts` (ENG-234)
- `legacy-utils.ts` - functions no longer called anywhere
### Refactored
- **Extracted common logic**: Query param parsing now in `lib/url-utils.ts`
- **Consolidated validation**: 3 duplicate Zod schemas → 1 shared schema
- **Improved types**: Replaced 12 `any` types with proper interfaces
### No Behavior Changes
- [ ] All tests pass (no test modifications needed)
- [ ] Same inputs → same outputs
- [ ] No user-facing changes
## Testing
- [ ] Full test suite passes (no new tests needed)
- [ ] Manual smoke test completed
- [ ] No regressions identified
## Review Focus
- Verify removed code is truly unused (checked with `rg` search)
- Confirm refactored logic is equivalent
- Check no subtle behavior changes introduced
rg/grep 验证无使用情况在请求审查前,检查:
✅ 批准:代码良好,仅存在细微问题
💬 评论:有建议但非阻碍项
🔄 请求变更:必须在合并前修复的问题
❌ "Fix bug"
❌ "Updates"
❌ "WIP"
❌ "Changes from code review"
✅ "fix(auth): prevent duplicate login requests"
✅ "feat(cart): add coupon code support"
❌ "Changed the function"
为什么?哪里出了问题?有什么影响?
✅ "Refactored parseQueryParams to handle nested objects
Previously failed when query params contained dots (e.g., user.name).
Now correctly parses nested structures using qs library.
Fixes ENG-456"
❌ 2,000 行变更,涉及 50 个文件
❌ "Implement entire authentication system"
✅ 拆分为:
- PR #1: 为认证添加数据库模式(150 LOC)
- PR #2: 实现 JWT 工具(100 LOC)
- PR #3: 创建登录端点(200 LOC)
- PR #4: 添加登录 UI(250 LOC)
❌ 单个 PR 包含:
- 功能实现
- 依赖项更新
- 重构
- 错误修复
- 格式化变更
✅ 单独的 PR:
- PR #1: feat(feature)
- PR #2: chore(deps)
- PR #3: refactor(component)
❌ "Updated the header design"
(无截图)
✅ "Updated the header design"
[桌面端截图]
[移动端截图]
[前后对比]
❌ "Tested locally"
如何测试的?什么场景?什么浏览器?
✅ "Testing completed:
- Unit tests: All 47 tests pass
- Manual testing: Tested login flow on Chrome, Firefox, Safari
- Edge cases: Tested expired tokens, invalid credentials, network errors
- Mobile: Verified on iOS Safari and Android Chrome"
❌ console.log('user data:', user);
❌ debugger;
❌ // TODO: fix this later
❌ import { test } from './test-utils'; (unused)
✅ 无调试痕迹的干净代码
❌ 新功能发布无变更日志条目
✅ .changeset/new-feature.md:
---
"@myapp/web": minor
---
Add OAuth2 login support with Auth0 integration
{type}({scope}): {clear, concise description}
作为作者:
作为审查者:
使用此技能来维持高 PR 质量标准并简化代码审查流程。
每周安装次数
70
仓库
GitHub 星标数
20
首次出现
Jan 23, 2026
安全审计
安装于
claude-code52
codex52
gemini-cli51
opencode50
github-copilot48
cursor48
Comprehensive guide for creating high-quality pull requests that are easy to review, well-documented, and follow team standards. Includes templates, size guidelines, and best practices for both authors and reviewers.
type(scope): description{type}({scope}): {short description}
feat(auth): add OAuth2 login support
fix(cart): resolve race condition in checkout
refactor(search): extract query param parsing logic
docs(api): update authentication examples
test(payment): add integration tests for Stripe
chore(deps): update Next.js to v15
perf(images): implement lazy loading for gallery
ci(deploy): add staging environment workflow
auth, cart, search, apiuser-profile not user-profile-settings-modal## Summary
<!-- 1-3 bullet points describing what changed -->
- Added OAuth2 authentication flow
- Integrated with Auth0 provider
- Updated login UI components
## Related Tickets
<!-- Link to Linear/Jira/GitHub issues -->
- Closes #123
- Related to #456
- Fixes ENG-789
## Changes
<!-- Detailed list of changes -->
### Added
- `src/lib/auth/oauth2.ts` - OAuth2 client implementation
- `src/app/api/auth/callback/route.ts` - Auth callback handler
- `src/components/OAuthButtons.tsx` - OAuth login buttons
### Modified
- `src/components/LoginForm.tsx` - Added OAuth buttons
- `src/lib/auth/index.ts` - Export new auth methods
- `README.md` - Updated setup instructions
### Removed
- `src/lib/auth/legacy.ts` - Deprecated auth code
- `src/components/OldLoginForm.tsx` - Replaced by new form
## Screenshots
<!-- Required for UI changes -->
### Desktop

### Mobile

### Before/After (if applicable)
| Before | After |
|--------|-------|
|  |  |
## Testing
<!-- How was this tested? -->
- [ ] Unit tests added/updated
- [ ] Integration tests pass
- [ ] Manual testing completed
- [ ] Tested on Chrome, Firefox, Safari
- [ ] Mobile responsive (tested on iOS/Android)
- [ ] Edge cases tested (empty state, error states, loading)
## Breaking Changes
<!-- If any breaking changes -->
⚠️ **Breaking Change**: The `login()` function signature has changed.
**Before:**
```typescript
login(username: string, password: string)
After:
login({ username: string, password: string, provider?: 'local' | 'oauth' })
Migration:
// Old
await login('user', 'pass');
// New
await login({ username: 'user', password: 'pass' });
Code follows project style guidelines
Self-review completed
Comments added for complex logic
Documentation updated (if needed)
Changeset added (if user-facing change)
No console.log/debugger statements left
No TypeScript errors
Tests pass locally
Build succeeds
## Summary
Brief description of the change.
## Changes
- Modified `file.ts` to fix XYZ
## Testing
- [ ] Tests pass
- [ ] Verified manually
| Size | Lines | Files | Review Time | Recommendation |
|---|---|---|---|---|
| XS | < 50 | 1-3 | 5 min | ✅ Ideal for hotfixes |
| S | 50-150 | 3-8 | 15 min | ✅ Good size |
| M | 150-300 | 8-15 | 30 min | ⚠️ Consider splitting |
| L | 300-500 | 15-25 | 1 hour | ❌ Should split |
| XL | 500+ | 25+ | 2+ hours | ❌ Must split |
PR #1: MVP implementation (core functionality)
PR #2: Polish and edge cases
PR #3: Additional features
PR #1: Database schema changes
PR #2: Backend API implementation
PR #3: Frontend UI integration
PR #4: Tests and documentation
PR #1: Refactoring (no behavior change)
PR #2: New feature (builds on refactored code)
PR #3: Tests for new feature
PR #1: High-risk changes (need careful review)
PR #2: Low-risk changes (routine updates)
git mv)## Summary
Refactoring and cleanup for [area]
**Goal**: Improve code maintainability without changing behavior
## Motivation
- Reduce code duplication (3 similar functions → 1 reusable utility)
- Improve type safety (any → specific types)
- Remove dead code identified during feature work
## Related Tickets
- ENG-XXX: Improve [area] maintainability
- ENG-YYY: Remove deprecated [feature]
## Stats
- **Lines added**: +91
- **Lines removed**: -1,330
- **Net**: -1,239 ✅
- **Files changed**: 23
## Changes
### Removed (Dead Code)
- `/api/old-endpoint` - unused, replaced by `/api/new-endpoint` in v2.0
- `useDeprecatedHook.ts` - replaced by `useNewHook.ts` (ENG-234)
- `legacy-utils.ts` - functions no longer called anywhere
### Refactored
- **Extracted common logic**: Query param parsing now in `lib/url-utils.ts`
- **Consolidated validation**: 3 duplicate Zod schemas → 1 shared schema
- **Improved types**: Replaced 12 `any` types with proper interfaces
### No Behavior Changes
- [ ] All tests pass (no test modifications needed)
- [ ] Same inputs → same outputs
- [ ] No user-facing changes
## Testing
- [ ] Full test suite passes (no new tests needed)
- [ ] Manual smoke test completed
- [ ] No regressions identified
## Review Focus
- Verify removed code is truly unused (checked with `rg` search)
- Confirm refactored logic is equivalent
- Check no subtle behavior changes introduced
rg/grep to verify no usageBefore requesting review, check:
✅ Approve: Code is good, minor nits only
💬 Comment: Suggestions but not blockers
🔄 Request Changes: Issues must be fixed before merge
❌ "Fix bug"
❌ "Updates"
❌ "WIP"
❌ "Changes from code review"
✅ "fix(auth): prevent duplicate login requests"
✅ "feat(cart): add coupon code support"
❌ "Changed the function"
Why? What was wrong? What's the impact?
✅ "Refactored parseQueryParams to handle nested objects
Previously failed when query params contained dots (e.g., user.name).
Now correctly parses nested structures using qs library.
Fixes ENG-456"
❌ 2,000 lines changed across 50 files
❌ "Implement entire authentication system"
✅ Split into:
- PR #1: Add database schema for auth (150 LOC)
- PR #2: Implement JWT utilities (100 LOC)
- PR #3: Create login endpoint (200 LOC)
- PR #4: Add login UI (250 LOC)
❌ Single PR with:
- Feature implementation
- Dependency updates
- Refactoring
- Bug fixes
- Formatting changes
✅ Separate PRs:
- PR #1: feat(feature)
- PR #2: chore(deps)
- PR #3: refactor(component)
❌ "Updated the header design"
(No screenshots)
✅ "Updated the header design"
[Desktop screenshot]
[Mobile screenshot]
[Before/After comparison]
❌ "Tested locally"
How? What scenarios? What browsers?
✅ "Testing completed:
- Unit tests: All 47 tests pass
- Manual testing: Tested login flow on Chrome, Firefox, Safari
- Edge cases: Tested expired tokens, invalid credentials, network errors
- Mobile: Verified on iOS Safari and Android Chrome"
❌ console.log('user data:', user);
❌ debugger;
❌ // TODO: fix this later
❌ import { test } from './test-utils'; (unused)
✅ Clean code without debugging artifacts
❌ New feature shipped without changelog entry
✅ .changeset/new-feature.md:
---
"@myapp/web": minor
---
Add OAuth2 login support with Auth0 integration
{type}({scope}): {clear, concise description}
As Author :
As Reviewer :
Use this skill to maintain high PR quality standards and streamline code review processes.
Weekly Installs
70
Repository
GitHub Stars
20
First Seen
Jan 23, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code52
codex52
gemini-cli51
opencode50
github-copilot48
cursor48
Perl安全编程指南:输入验证、注入防护与安全编码实践
1,200 周安装