Files
gh-syou6162-claude-code-com…/commands/estimate_pr_size.md
2025-11-30 08:59:12 +08:00

139 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Pull Requestのサイズ見積もりと分割提案
指定されたタスクに対してPull Requestのサイズを見積もり、必要に応じて分割の提案を行います。
## 実行手順
1. **リポジトリの基本情報収集**
- コードベースの構造分析(言語、フレームワーク、ディレクトリ構成)
- 既存のテストとソースコードの比率分析
2. **過去のPull Request履歴分析**
```bash
gh pr list --author @me --state merged --limit 20 --json number,title,additions,deletions,commits
```
3. **詳細なPull Request分析**
- 直近10-20件のPull Requestについて、以下を分析
- 変更行数(追加・削除)
- コミット数(レビュー対応の多さの指標)
- 変更の性質(機械的変更 vs ロジック変更)
4. **作業量見積もり**
- ソースコード変更予想行数
- テスト追加予想行数(既存比率から算出)
- ドキュメント更新予想行数
- 設定ファイル・マイグレーション等の付随作業
- 各フェーズの見積もりには必ずテストコードの行数を含める
5. **Pull Request分割アドバイス**
- 500行以下単一Pull Request推奨
- 500-1000行分割可能性検討
- 1000行超分割強く推奨
- アーキテクチャ考慮した分割順序提案
## 分析ポイント
### 変更の性質分類
- 機械的変更一括置換、フォーマット調整、import整理等
- ファイル数多くてもレビュー負荷低
- ロジック変更:新規実装、既存ロジック修正
- 少ない行数でもレビュー負荷高
### 分割戦略
- レイヤー別分割DB層 → API層 → UI層
- 段階別分割:設定変更 → 実装 → テスト
- 依存関係考慮:破壊的変更の分離、マイグレーション等
### 避けるべき分割パターン
以下のような分割は絶対に避けてください:
- フェーズ1: 機能実装のみ
- フェーズ2: 統合作業
- フェーズ3: テスト追加
理由:
- テストのない実装コードをレビューすることは非常に困難
- 実装の正しさを検証する手段がない
- 後からテストを追加する際に実装の問題が発覚するリスク
推奨される分割方法:
- 各フェーズで実装とテストをセットで含める
- 各Pull Requestが独立してマージ可能な状態を保つ
- テストコードの行数も含めて見積もりを行う
### リスク評価
- コミット数が多い過去Pull Request → レビュー対応が多い可能性
- 複雑なビジネスロジック変更 → 慎重な分割が必要
- 本番への影響度 → デプロイリスク考慮
## 出力形式
### 単一Pull Request推奨の場合
```
## 見積もり結果
- 予想ソースコード変更XXX行
- 予想テスト追加XXX行
- 予想ドキュメント更新XXX行
- 合計予想変更行数XXX行
## 分割提案
単一Pull Requestで実装することを推奨します。
[推奨理由と実装時の注意点]
```
### 複数Pull Request分割推奨の場合
Claude Codeのようなエージェントが全体のコンテキストを把握しやすくするため、GitHub Issue作成を提案し、以下の手順で全体管理を行います
```bash
# 一時ファイルにIssue内容を作成
cat > /tmp/github_issue_draft.md << 'EOF'
# [タスク名]
## 背景・課題
[やりたいことの背景とコンテキストを記載]
## 実装概要
合計予想変更行数XXX行
[トータルで必要な修正内容の概要]
上記の予想変更行数に基づき、レビュー負荷とデプロイリスクを考慮して以下のフェーズに分割することを推奨します。
## 実装フェーズ
### フェーズ1: [第1段階の内容]
- [具体的な作業内容]
- 予想変更行数XXX行実装XXX行、テストXXX行
- 含まれるテスト: [この段階で追加されるテストの説明]
### フェーズ2: [第2段階の内容]
- [具体的な作業内容]
- 予想変更行数XXX行実装XXX行、テストXXX行
- 含まれるテスト: [この段階で追加されるテストの説明]
### フェーズ3: [第3段階の内容]
- [具体的な作業内容]
- 予想変更行数XXX行実装XXX行、テストXXX行
- 含まれるテスト: [この段階で追加されるテストの説明]
## 注意事項
- [実装時の注意点]
- [依存関係やリスク]
EOF
echo "以下の内容でGitHub Issueを作成しますか"
cat /tmp/github_issue_draft.md
```
ユーザーの承認後:
```bash
# GitHub Issueを作成
gh issue create --title "[タスク名]" --body-file /tmp/github_issue_draft.md
# 一時ファイルを削除
rm /tmp/github_issue_draft.md
```
## 注意事項
- 過去のPull Request履歴から学習した傾向を活用
- リポジトリ固有のテスト・ドキュメント慣習を考慮
- レビュー負荷とデプロイリスクを総合的に判断