pr-retro について
pr-retroは、マージ、却下、停滞したプルリクエストや、多くのフィードバックを受けた案件を振り返るスキルです。レビュー内容と結果から再利用できる具体的な教訓をまとめ、日付付きのMarkdown文書に保存します。
主な機能
- 01プルリクエストの検索と確認
- 02結果とレビュー内容の分類
- 03成功・失敗パターンの特定
- 04実行可能な教訓の抽出
- 05日付付きMarkdownレトロの保存
活用シーン
- 01却下されたプルリクエストの理由を分析
- 02マージ成功につながった進め方の記録
- 03繰り返し寄せられる貢献へのフィードバックの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ boshu2/ agentops --skill pr-retroインストール後、Claude Code で/pr-retroを入力して読み込まれたか確認します。
同梱ファイルscripts/validate.sh
詳細
PR 振り返りスキル
PR の結果から、承認/却下のパターンを分析して学びます。
概要
PR がマージまたは却下された後、何がうまくいき、何がうまくいかなかったかを分析し、今後のコントリビューションに活かします。
出力: .agents/learnings/YYYY-MM-DD-pr-{repo}-{outcome}.md
使用するタイミング:
- PR がマージされた後(成功パターンを記録する)
- PR が却下された後(理由を把握する)
- 重要なレビューのフィードバックを受け取った後
- コントリビューションのパターンを定期的に見直すとき
ワークフロー
1. PR Discovery -> Find the PR to analyze
2. Outcome Analysis -> Merged/rejected/changes requested
3. Feedback Extraction -> What did reviewers say?
4. Pattern Identification -> What worked/didn't
5. Lesson Extraction -> Reusable learnings
6. Output -> Write retro document
フェーズ 1:PR の特定
# If PR number provided
gh pr view <number> --json state,reviews,comments,mergedAt,closedAt
# Find recent PRs by you
gh pr list --state all --author @me --limit 10
# Find PRs to a specific repo
gh pr list -R <owner/repo> --state all --author @me --limit 10
フェーズ 2:結果の分析
| 結果 | 意味 | 焦点 |
|---|---|---|
| マージ済み | 成功 | 何がうまくいったか? |
| クローズ(未マージ) | 却下 | 理由は何か? |
| オープン(停滞) | 無視/放置 | 何がうまくいかなかったか? |
| 変更を要求 | 対応が必要 | どんなフィードバックか? |
# Get PR outcome
gh pr view <number> --json state,mergedAt,closedAt,reviews
フェーズ 3:フィードバックの抽出
# Get all review comments
gh pr view <number> --json reviews --jq '.reviews[] | "\(.author.login): \(.body)"'
# Get all comments
gh api repos/<owner>/<repo>/pulls/<number>/comments --jq '.[].body'
# Get requested changes
gh pr view <number> --json reviews --jq '.reviews[] | select(.state == "CHANGES_REQUESTED")'
フィードバックのカテゴリ
| カテゴリ | 例 |
|---|---|
| スタイル | 命名、フォーマット、規約 |
| 技術面 | アルゴリズム、アーキテクチャ、パターン |
| スコープ | 大きすぎる、スコープクリープ、無関係な変更 |
| テスト | テスト不足、カバレッジ、エッジケース |
| ドキュメント | ドキュメント不足、不明瞭なコメント |
| プロセス | ブランチの誤り、承認漏れ |
フェーズ 4:パターンの特定
成功パターン(マージされた場合)
| うまくいったこと | 根拠 |
|---|---|
| 小さく、焦点が明確な PR | 5 ファイル未満 |
| 規約に準拠 | スタイルに関するコメントなし |
| 良いテスト | 「テストを追加してください」という要求なし |
| 明確な説明 | すぐに承認 |
失敗パターン(却下された場合)
| うまくいかなかったこと | 根拠 |
|---|---|
| 大きすぎる | 「この PR を分割してください」 |
| スコープクリープ | 「これはスコープ外です」 |
| テスト不足 | 「テストを追加してください」 |
| アプローチの誤り | 「代わりに X の使用を検討してください」 |
フェーズ 5:教訓の抽出
教訓のテンプレート
## Lesson: [Title]
**Context**: [When does this apply?]
**Learning**: [What did we learn?]
**Action**: [What to do differently?]
**Evidence**:
- PR #N: [quote or summary]
よくある教訓
| 教訓 | 対応 |
|---|---|
| PR が大きすぎる | PR を 200 行未満に分割する |
| コンテキスト不足 | 「## Context」セクションを追加する |
| スタイルの不一致 | PR の前にリンターを実行する |
| テスト不足 | 新しいコードにテストを追加する |
| レビューが遅い | 1 週間後にリマインドする |
フェーズ 6:出力
.agents/learnings/YYYY-MM-DD-pr-{repo}-{outcome}.md に書き込みます
# PR Retro: {repo} #{number}
**Date**: YYYY-MM-DD
**PR**: {url}
**Outcome**: Merged / Rejected / Stale
## Summary
{What was the PR about? What happened?}
## Timeline
| Date | Event |
|------|-------|
| {date} | PR opened |
| {date} | First review |
| {date} | {outcome} |
## Feedback Analysis
### Positive Feedback
- {quote}
### Requested Changes
- {quote}
### Rejection Reasons (if applicable)
- {quote}
## Lessons Learned
### Lesson 1: {title}
**Context**: {when this applies}
**Learning**: {what we learned}
**Action**: {what to do differently}
## Updates to Process
{Any changes to make to pr-prep, pr-plan, or other skills}
## Next Steps
{Future actions based on this retro}
アンチパターン
| してはいけないこと | 代わりにすること |
|---|---|
| マージ済み PR の振り返りを省略する | 成功からも学ぶ |
| メンテナーを非難する | 自分が変えられることに焦点を当てる |
| 抽象的な教訓にする | 具体的で実行可能な学びにする |
| 却下された PR を見送る | 最も価値のある学習源として活用する |
例
却下された PR から学ぶ
ユーザーの指示: 「この PR が却下された理由を振り返ってください。」
実行内容:
- レビュアーのフィードバックと時系列を分析します。
- 防げたプロセス上およびスコープ上の問題を特定します。
- 今後の PR に活かせる再利用可能な教訓を記録します。
マージ成功から学ぶ
ユーザーの指示: 「このマージ済み PR でうまくいったことを抽出してください。」
実行内容:
- レビューや承認を早めたパターンを特定します。
- 実行可能なプレイブックの更新内容にまとめます。
- 今後のコントリビューションのワークフローに活かすため、教訓を保存します。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 振り返りが抽象的 | フィードバックが根拠と結び付いていない | 具体的なコメントや判断、その結果を引用する |
| 明確な教訓を抽出できない | 分析が状況の説明にとどまっている | 観察内容を行動の変化に結び付ける |
| メンテナーの意図が不明瞭 | レビューコメントに矛盾がある | 必須の修正事項と好みによるフィードバックを分ける |
| プロセスの変更が定着しない | 教訓が運用に反映されていない | 準備/計画/検証のワークフローに明示的な更新を加える |
コメント
Markdown 対応