Generates comprehensive PR descriptions in English (default) or Japanese by analyzing pull request changes using GitHub CLI
Generates comprehensive PR descriptions by analyzing GitHub PR changes using the GitHub CLI. It retrieves PR details, examines diffs, and creates well-structured templates with sections for overview, changes, testing, and review points. Use this to quickly create detailed PR descriptions after creating a pull request.
/plugin marketplace add mei28/claude-code/plugin install mei28-pr-template-pr-template@mei28/claude-codeAnalyzes GitHub pull requests and automatically generates comprehensive, well-structured PR descriptions following established template formats. Generates in English by default, with optional Japanese output based on configuration.
/pr-template <PR_NUMBER>
Examples:
/pr-template 123
/pr-template 456
The PR number is available as $ARGUMENTS variable.
The plugin generates PR descriptions in English by default.
To use Japanese, configure in CLAUDE.md:
## PR Template
Language: Japanese # Use Japanese for PR descriptions
Or user can explicitly request Japanese when invoking:
User: /pr-template 123 in Japanese
User: /pr-template 123 日本語で
gh pr view $ARGUMENTS
Extracts:
gh pr diff $ARGUMENTS
Analyzes:
When needed, use Read tool to understand context:
# Read modified files for deeper understanding
Read src/auth/login.ts
Read tests/auth/login.test.ts
When to Read Files:
Optimize Token Usage:
Create comprehensive PR description following the template format.
mkdir -p .tmp
# Save to .tmp/pr-template-<PR_NUMBER>.md
Purpose: Explain the "why", "what", and "how" of the changes
Requirements:
Example (English - Default):
## Overview
Improved user authentication performance.
API response time reduced from 200ms to 50ms average, enhancing user experience.
Achieved through token validation optimization and cache mechanism introduction.
Example (Japanese):
## 概要
ユーザー認証機能のパフォーマンス改善を実施しました。
APIレスポンス時間が平均200msから50msに短縮され、ユーザー体験が向上します。
トークン検証ロジックの最適化とキャッシュ機構の導入により実現しました。
Purpose: Detailed breakdown of all modifications
Requirements:
Example (English - Default):
## Changes/Additions
### New Features
- **Token Cache Mechanism** (`src/auth/tokenCache.ts`)
- Implement 5-minute token cache using Redis
- Achieve 90% cache hit rate
- L45-120: Cache logic implementation
### Performance Improvements
- **Authentication API Optimization** (`src/api/auth.ts`)
- Optimize database queries (resolve N+1 problem)
- L78-95: Reduce DB calls through query joining
### Tests
- **Cache Feature Tests** (`tests/auth/tokenCache.test.ts`)
- Add 15 unit test cases
- Achieve 95% coverage
### Documentation
- **Authentication Flow Diagram** (`docs/auth-flow.md`)
- Add updated flow diagram including cache mechanism
Purpose: Suggest appropriate testing approaches based on changes
Requirements:
Example:
## 動作確認
### 必須確認項目
- [ ] 新規ユーザーログインが正常に動作すること
- [ ] トークンキャッシュが5分後に期限切れになること
- [ ] キャッシュミス時にDB取得にフォールバックすること
### パフォーマンス確認
- [ ] ログインAPIのレスポンスが100ms以内であること
- [ ] 1000件の同時リクエストを処理できること
### エッジケース
- [ ] Redisダウン時の動作(DB直接取得にフォールバック)
- [ ] 無効なトークンのキャッシュ防止
- [ ] キャッシュクリア機能の動作確認
Purpose: Highlight areas requiring special attention
When to Include:
Example:
## レビュー観点
### セキュリティ
- トークン検証ロジックの安全性(`src/auth/tokenCache.ts` L65-80)
- キャッシュキーの衝突防止策
### パフォーマンス
- Redisの接続プーリング設定(`src/config/redis.ts` L12-25)
- メモリ使用量の監視
### 破壊的変更
- なし(後方互換性を維持)
Purpose: Include relevant supplementary information
Include:
Example:
## 補足・参考
### 新規ライブラリ
- **ioredis** (v5.3.0)
- Redisクライアントライブラリ
- ドキュメント: https://github.com/redis/ioredis
- 接続プーリングとクラスタサポートのため採用
### 参考資料
- [JWT Best Practices](https://example.com/jwt-best-practices)
- [Redis Caching Patterns](https://example.com/redis-patterns)
### パフォーマンス結果
| 項目 | 変更前 | 変更後 | 改善率 |
|------|--------|--------|--------|
| ログインAPI | 200ms | 50ms | 75% |
| トークン検証 | 50ms | 5ms | 90% |
### 今後の改善案
- トークンリフレッシュの自動化
- マルチリージョン対応のキャッシュ同期
Understand PR Purpose:
Categorize Changes:
Extract Technical Details:
Infer Business Value:
| Error | Response |
|---|---|
| No PR number | PRナンバーを指定してください。使用方法: /pr-template <PR_NUMBER> |
| PR not found | 指定されたPRが見つかりません。PRナンバー ${ARGUMENTS} を確認してください。 |
| No changes | このPRには変更が検出されませんでした。 |
| gh CLI not installed | GitHub CLI (gh) がインストールされていません。https://cli.github.com/ からインストールしてください。 |
| Not authenticated | GitHub CLI にログインしていません。'gh auth login' を実行してください。 |
After generating template, present summary:
## PR Template Generated
**PR**: #123 - Add user authentication
**Files Changed**: 5 files (+245, -32 lines)
**Template Saved**: `.tmp/pr-template-123.md`
### Summary
- 概要: 3行で背景と目的を説明
- 修正内容: 3カテゴリー(新機能、テスト、ドキュメント)
- 動作確認: 8項目の確認事項
- 補足: 新規ライブラリ2件、パフォーマンス結果
### Next Steps
1. Review the generated template: `.tmp/pr-template-123.md`
2. Edit if needed to add project-specific details
3. Copy content to PR description on GitHub
Template is ready to use! 🎉
PR: #456 - "Add dark mode support"
Generated Template:
## 概要
ダークモード機能を実装し、ユーザーが好みの表示テーマを選択できるようになりました。
システム設定との自動連携により、ユーザー体験が向上します。
ユーザー設定の永続化にも対応しています。
## 修正内容・追加内容
### 新機能
- **ダークモードテーマ** (`src/theme/darkMode.ts`)
- ライト/ダークテーマの定義
- システム設定の自動検出
- L1-85: テーマ切り替えロジック
- **テーマトグルコンポーネント** (`src/components/ThemeToggle.tsx`)
- ヘッダーに配置されたトグルスイッチ
- アニメーション付きの滑らかな切り替え
- L12-45: コンポーネント実装
### 状態管理
- **テーマContextの追加** (`src/contexts/ThemeContext.tsx`)
- グローバルテーマ状態の管理
- localStorageへの永続化
- L20-60: Context Provider実装
### テスト
- **ダークモードテスト** (`tests/theme/darkMode.test.ts`)
- テーマ切り替えのユニットテスト
- ローカルストレージの動作確認
- カバレッジ92%達成
## 動作確認
### 必須確認項目
- [ ] ヘッダーのトグルボタンでテーマが切り替わること
- [ ] ページリロード後もテーマ設定が保持されること
- [ ] システム設定と同期すること(初回訪問時)
### 表示確認
- [ ] 全ページでダークモードが正しく表示されること
- [ ] テキストの可読性が十分であること
- [ ] ボタンやリンクの視認性が確保されていること
## 補足・参考
### 参考実装
- Material-UI のテーマシステムを参考
- `prefers-color-scheme` CSS メディアクエリを活用
### 今後の改善案
- ユーザープロフィールへのテーマ設定保存(クロスデバイス同期)
- カスタムテーマカラーの選択機能
Saved to: .tmp/pr-template-456.md
PR: #789 - "Fix memory leak in WebSocket connection"
Generated Template:
## 概要
WebSocket接続のメモリリークを修正しました。
長時間稼働時のメモリ使用量増加問題が解消され、システムの安定性が向上します。
## 修正内容・追加内容
### バグ修正
- **WebSocket接続管理** (`src/services/websocket.ts`)
- 接続切断時のイベントリスナー解除漏れを修正
- L145-160: cleanup関数の追加
- L78: useEffect のdependency配列を修正
### テスト
- **メモリリークテスト** (`tests/services/websocket.test.ts`)
- 接続・切断を1000回繰り返すストレステスト追加
- メモリ使用量の監視テスト
## 動作確認
### 必須確認項目
- [ ] WebSocket接続・切断を繰り返してもメモリが増加しないこと
- [ ] 通常のWebSocket通信が正常に動作すること
- [ ] エラー時の切断処理が正しく動作すること
### パフォーマンス確認
- [ ] 24時間稼働後のメモリ使用量が安定していること
## レビュー観点
### メモリ管理
- cleanup関数の実装が適切か(`src/services/websocket.ts` L145-160)
- イベントリスナーの解除が確実に実行されるか
## 補足・参考
### バグの原因
- React の useEffect cleanup関数でイベントリスナーを解除していなかった
- 接続を繰り返すたびにリスナーが蓄積
### 再発防止
- ESLint ルール `react-hooks/exhaustive-deps` を有効化
- メモリリークチェックを CI に追加
Saved to: .tmp/pr-template-789.md
Don't:
# Reading all files unnecessarily
Read src/components/UserProfile.tsx
Read src/api/users.ts
Read src/utils/validation.ts
Read src/styles/userprofile.css
Read tests/user.test.ts
Do:
# Read only when diff is insufficient
# Prioritize key files for understanding context
Read src/components/UserProfile.tsx # Main change
Read tests/user.test.ts # To understand test coverage
Don't (English):
## Overview
Added getUserData function.
Do (English):
## Overview
Implemented user profile retrieval feature to accelerate dashboard loading.
API response caching enables instant loading from second access onwards.
Don't:
- Modified `src/auth.ts`
Do:
- **Token Validation Logic** (`src/auth.ts`)
- L45-78: JWT validation implementation
- L92-105: Token refresh handling
Group changes logically (use English or Japanese based on language setting):
What would a reviewer want to know?
1. Make changes to codebase
2. Run /deslop to clean up AI-generated code
3. Run /commit to create logical commits
4. Create PR on GitHub
5. Run /pr-template <PR_NUMBER> to generate description
6. Copy template content to PR
7. Request review
Always check for project-specific templates:
# Check for existing PR template
Read .github/PULL_REQUEST_TEMPLATE.md
Read docs/PR_GUIDELINES.md
Adapt generated template to match project standards.
gh) installed and authenticated.tmp/ directory