Communitygithub.com

chukaofili/agent-plugins

変更行数が約300行を超える場合、複数のコミットやステージにわたる作業、プルリクエストを作成する場合、プルリクエストのレビューフィードバックを受け取るまたは応答する場合、依存するPRのスタックをリベースまたはランディングする場合に使用します。PRのサイズ予算とそれにカウントされるもの、PRの分割とスタック方法、逐次的なステージごとのレビュー、および各レビュー指摘を検証して修正または反論する方法をカバーします。

agent-plugins とは?

このスキルは、複数のコミットやステージにわたる大規模な変更や、プルリクエスト(PR)のレビューフィードバックの処理、依存関係のあるPRのスタック(積み上げ)を管理する開発者向けに設計されています。主な目的は、PRのサイズを1件あたり約300行(上限500行)に抑えることで、人間のレビュアーやAIエージェントが変更内容を正確に把握し、効果的にレビューできるようにすることです。ロックファイルや生成コードはサイズ予算にカウントされず、PR本文で明示できます。分割不可能な正当な理由がある場合も例外として扱われます。また、複数ステージの作業はPRのスタックとして管理し、下から順にレビュー・マージする「ボトムアップ方式」を推奨します。レビューは一度に1つのPRに対して逐次的に行い、各指摘は技術的に検証した上で修正するか、根拠を持って反論します。このスキルは、あらゆるAIエージェントや開発ツール(Claude Code、Cursor、Codexなど)に対応しており、PRベースの開発ワークフローを効率化します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/chukaofili/agent-plugins/tree/HEAD/plugins/coding-protocol/skills/stacked-prs

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

スタックPR

サイズ予算

1つのPRあたり約300行の変更、上限は500行を目指します。 そのサイズであれば、人間は変更全体を頭に入れて素早くレビューでき、AIレビュエージェントも表面的な指摘ではなく、明確で具体的な指摘を返します。

カウント対象: 手書きのコードとテスト。

カウント対象外: ロックファイル、生成コード(マイグレーション、コード生成、OpenAPI出力)、スナップショット、フィクスチャ、ベンダリングされたファイル。これらはざっと見るだけで、詳細には読みません。生成ファイルをPR本文にリストアップして、レビュアーがスキップすべきものを明確にします。

分割は作成前に行い、作成後に行わない。 分割は計画段階で決定します(coding-processを参照)。計画されたステージが500行を超える場合は、再計画します。一般的な分割ポイント:

  • テストは独自のステージとして扱うことができます。 例:ロジックの単体テストと結合テスト、その後UIのE2Eテスト。
  • スキーマまたはデータモデル、次にそれを使用するサービス、次にAPIサーフェス、最後にUI。
  • 変更を容易にするリファクタリング、その後変更本体。
  • 大きすぎて同梱できないドキュメント同期は、その上にドキュメント専用のステージを追加します。

真に分割不可能な変更(例:1つの一貫したマイグレーションや80ファイルにわたるリネーム)は、上限を超えても構いません。その場合はPR本文に理由を記述し、実際に読む必要がある部分をレビュアーに明示します。

各PR内ではアトミックコミットの原則は引き続き適用されます。予算はPR単位であり、コミットの衛生管理を置き換えるものではありません。

スタッキング

複数ステージの作業はPRのスタックとして出荷し、決して全体計画を1つのブランチで運んではいけません。各PRは1つのステージであり、mainではなく前のステージのブランチをターゲットにします。これにより、レビュアーが見る差分はそのステージの変更のみとなり、リスクの高いステージ(マイグレーションや認証変更など)は単独でレビューおよびリバートできます。

  • 各ステージは前のステージの先端からブランチを作成します。最下部のPRのみmainをターゲットにします:
    gh pr create --base <previous-stage-branch>
    
  • 各PR本文に位置を明記します(Stacked on #123)。これにより、順序を無視して開いたレビュアーも何を見ているか把握できます。
  • ボトムアップでマージします。 ベースブランチが変更された場合(レビュー修正やベースのマージ)は、その上のブランチをリベースし、それらをフォースプッシュします。自身の未マージのスタックブランチをフォースプッシュするのは日常的な操作です。mainや共有ブランチをフォースプッシュすることは決してありません。
  • スタック内のいずれかのPRがマージされた後、次のステージを開始する前に残りのPRを新しいベースに同期します。
  • レビューや検証パスからの修正は、新しいステージとして上に追加します。これにより、ビルドと修正が個別にレビュー可能な状態を維持します。
  • gh stack、Graphite、git-townなどのスタッキングツールはオプションです。プレーンなgitとghで十分です。

逐次レビュー

スタックは一度に1つのステージずつレビューします。 最下部のPRのみプロジェクトのレビュアーにレビューを依頼し(AGENTS.mdのプロジェクトゲートを参照)、次の手順を実行します:

  1. その1つのステージに対してレビューを依頼します。
  2. すべての指摘に対処します(以下を参照)。
  3. 再レビューを依頼し、そのステージが承認されるまで繰り返します。
  4. その後、次のステージのレビューを依頼します。

スタック全体に対して一度にレビューを依頼しないでください。ステージ1の指摘によって、ステージ2〜5に既に書かれたコメントが無効になる可能性があり、逐次レビューによりレビュアーの負担を限定できます。

ステージが停滞した場合(レビューが返ってこない、製品判断が必要な指摘があるなど)、フラグを立て、その答えに依存しない上のステージをローカルで継続して構築します。

レビュー指摘への対応(スタックPRかどうかを問わず)

  • 各指摘を技術的に検証してから対応します。指摘が指すコードを読み、可能であれば問題を再現します。
  • 修正するか、根拠を持って反論します。 人間でもボットでもレビュアーは通常のイベントとして自信満々に間違うことがあります。賛成するために悪い変更を行うことは、議論することより悪いです。パフォーマンス的な同意は不要です。
  • 指摘を現実世界の確率で判断します。 現実的に起こり得ないシナリオに対する修正や、実質的な利益なしに複雑性を追加する提案には反論します。
  • 失敗しないテストは追加しないでください。 バグの有無にかかわらずパスするテストはノイズです。最初に壊れたコードに対してテストを実行してください(testingを参照)。
  • 各指摘に返信し、レビュアーがその指摘がどうなったかを確認できるようにします:どのコミットで修正したか、またはなぜ修正しないか。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル