pr について
コーディングエージェントやコントリビューター向けに、簡潔なプルリクエストの説明方法を示すスキルです。変更内容や証拠、マージリスクを図示する形式も案内します。
主な機能
- 01PRテンプレートとセクションの指針
- 02疑似コード、ツリー、差分、Mermaid
- 03変更前後の証拠に関する指針
- 04マージリスクと影響範囲の評価
活用シーン
- 01簡潔なPR本文の作成
- 02コード変更に適した図示形式の選択
- 03テスト結果やスクリーンショットの記録
- 04ロールバックリスクと影響の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ overextended/ skills --skill prインストール後、Claude Code で/prを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlCREDITS.md
詳細
PR
PR の本文を書く際は、このテンプレートを使用してください。
## Summary
<diagram, diff-sketch, or tree>
## Evidence
- **Before:** <screenshot/output/failing test run>
**After:** <screenshot/output/passing test run>
## Merge Danger
**Door:** <one-way or two-way>
<optional: description>
**Blast Radius:** <one-word description>
<optional: potential ramifications of merge>
リポジトリにプルリクエストテンプレート(.github/pull_request_template.md または .github/PULL_REQUEST_TEMPLATE/)がある場合は、代わりにそのテンプレートを使用し、見出しが合う箇所に以下のセクションを記入してください。
セクション
前置きは省略し、文章は簡潔にしてください。リソース、イベント、エクスポート、項目には、コードで使われている名前を使用してください。
概要
要点が明確に伝わる最小限の形式を選んでください。
- ロジックやアルゴリズムは、疑似コードで示します。
on(my_shops:buy)
if player is too far from the shop
return false
remove money
add item
return true
- ランタイムの制御フローは、重要な箇所でクライアントとサーバーの境界をまたぐ呼び出しツリーで示します。
client/points.lua nearby
lib.callback.await('my_shops:buy')
server/shops.lua buy
exports.ox_inventory:RemoveItem
exports.ox_inventory:AddItem
- NUI の構造は、重要な状態とモジュールの境界を含むコンポーネントツリーで示します。
<App> (web/src/App.tsx)
useNuiEvent('setVisible')
<ShopWindow>
<ItemGrid> (web/src/components/ItemGrid.tsx)
- ファイルの責務や大規模なリファクタリングは、浅いファイルツリーで示します。
my_shops/
├── client/ # points, target and NUI messages
├── server/ # validates and charges purchases
├── data/ # shop locations and stock
└── web/ # NUI
- コンポーネント間のやり取り、制御フロー、データフローは、Mermaid で示します。
sequenceDiagram
participant NUI
participant Client
participant Server
NUI->>Client: buy (NUI callback)
Client->>Server: lib.callback.await('my_shops:buy')
Server-->>Client: true
Client-->>NUI: updated stock
- 要点が変更内容であり、周囲の構造がすでに存在する場合は、
diffを使用します。トピックに合った形式の差分を示してください。
コンポーネントの変更の場合:
<ShopWindow>
<ItemGrid>
+ <BasketSummary />
<CloseButton>
ファイル構成の変更の場合:
my_shops/
├── client/
+│ └── target.lua # only required when ox_target is used
├── server/
-└── config.lua
+└── data/
+ └── shops.lua
呼び出しツリーまたはコールスタックの変更の場合:
server/shops.lua buy
+ check distance to shop
exports.ox_inventory:RemoveItem
exports.ox_inventory:AddItem
- TriggerClientEvent('my_shops:refresh', -1)
+ TriggerClientEvent('my_shops:refresh', source)
状態または制御フローの変更の場合:
on(my_shops:buy)
- remove money
+ if count is not a whole number from 1 to 100
+ return false
+ remove money
add item
- 大部分が新規の場合、省略したコンテキストによって所有者や順序が分からなくなる場合、またはコピーできる完成形が必要な場合は、ブロック全体を示します。
lib.callback.register('my_shops:buy', function(source, shopId, itemName, count)
local shop = type(shopId) == 'string' and shops[shopId]
if not shop then return false end
-- ...
end)
ガイダンス
各図は、それを補足する短い説明のすぐ近くに配置してください。変更に関するレビュアーの疑問に答えるために必要な呼び出し、ファイル、プロパティ、状態、境界だけを残してください。
これらの形式から1つを使っても、複数を使ってもかまいません。すべて使うことはまずありません。判断を働かせ、レビュアーに情報を詰め込みすぎないようにしてください。
エビデンス
変更が機能することを示す具体的な証拠です。変更前と変更後を示してください。
スクリーンショットは最上位のエビデンスです。環境が整っていて、変更が視覚的なものである場合は、NUI の開発サーバーをブラウザーで操作して撮影してください。
実行に基づくエビデンスは次点です。テスト結果、スクリプトの出力、サーバーコンソールの出力などを示します。疑似コードを使って、失敗してから成功するようになったテストを正確に示してください。
マージ時の危険性
一方通行か、双方向かを説明してください。双方向の変更なら元に戻せますが、一方通行の変更は元に戻せません。簡単にロールバックできる PR はリスクが低くなります。破壊的な操作や元に戻しにくい決定を伴う変更は一方通行です。たとえば、データベース列の削除や名前変更、項目名の変更(保存済みのインベントリには古い名前が残っています)、KVP キーや保存される JSON の構造の変更などです。
影響範囲とは、この PR で導入する変更が及ぼす可能性のある影響や範囲のことです。あらゆる可能性を考慮してください。たとえば、変更したエクスポートを呼び出す他のリソースや、名前を変更したイベントをリッスンするリソース、全プレイヤーの保存データ、クライアントのフレーム時間、別の解像度での NUI、サーバー所有者がすでに設定している convar などです。