git について
Claude Code、OpenCode、Codex で使えるランタイム非依存の Git ワークフロースキルです。コーディングエージェントによるアトミックなコミット、プルリクエスト、レビュー対応を案内し、AI の帰属フッターを付けません。
主な機能
- 01アトミックなコミット計画
- 02Conventional Commit 形式
- 03ドラフトプルリクエストの作成
- 04プルリクエスト説明の更新
- 05レビューコメントへの対応
活用シーン
- 01無関係な変更を別コミットに分割
- 02ブランチからドラフト PR を作成
- 03既存 PR の説明を更新
- 04PR レビューのフィードバックに対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agoodway/ goodskills --skill gitインストール後、Claude Code で/gitを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
Git ワークフロースキル
このスキルはランタイムに依存せず、Claude Code、OpenCode、Codex で動作します。現在のランタイムのシェル、読み取り、編集/書き込み、検索、質問ツールを使用してください。どのランタイムでも、AI による帰属を示すフッターを追加しないでください。
ランタイムに関する注意事項
- Claude Code:選択肢の提示には、利用可能な場合は
AskUserQuestionを使用してください。 - OpenCode:選択肢の提示には、利用可能な場合は質問ツールを使用してください。
- Codex:対話形式での入力が必要な場合は、ユーザーに直接尋ねてください。
- 対話型の git コマンドが必要になる場合は、それを避け、非対話型の代替手段を使用してください。ランタイムが安全に操作できる場合を除き、
git add -pは使用しないでください。それ以外の場合は、明示したファイルをステージするか、含めるファイルをユーザーに尋ねてください。
アトミックコミット
コミットする前に、すべての変更を確認し、論理的な単位に整理してください。
- 関連する変更をまとめる - 同じ機能、バグ修正、またはリファクタリングに関する変更はまとめます
- 関連しない変更を分ける - 異なる修正や機能は別々のコミットにします
- 単一の責務にする - 各コミットは個別に取り消せるようにします
- 関心事を混在させない - フォーマットの変更はロジックの変更と分けます
変更が複数の関心事にまたがる場合は、特定のファイルをステージして別々のコミットを作成してください。ランタイムが安全にサポートする場合に限り部分ステージを使用し、それ以外の場合は変更の分け方をユーザーに尋ねてください。
コマンド
/git(サブコマンドなし)
サブコマンドを指定せずに実行した場合は、以下のコミットワークフローをデフォルトで使用します。
/git help
利用可能なすべてのサブコマンドの一覧を表示します。以下をそのまま出力してください。
/git subcommands:
commit [message] — Commit staged/unstaged changes with conventional format
commit-all — Commit all changes as logical atomic commits, skipping junk files
pr [context] — Create a draft pull request for the current branch
pr-update — Push and update an existing PR description
pr-pull-review — Fetch PR review comments and address them
help — Show this help message
/git commit [message]
AI による帰属を示さずに変更をコミットします。
git statusを実行して、コミットが必要な内容(未追跡ファイルを含む)を確認しますgit diffを実行して変更を確認します- 変更を分析して論理的なグループに分けます。関連しない変更がある場合は、複数のコミットを作成します
- 関連する変更をまとめてステージします
- 特定のファイルの場合:
git add <file1> <file2> - 部分ステージの場合:ランタイムがサポートする非対話型のパッチワークフローを使用するか、変更の分け方をユーザーに尋ねます
git statusに表示された新規ファイル/未追跡ファイルも含めます
- 特定のファイルの場合:
- 従来の形式でコミットを作成します:
type: description - AI による帰属を示すフッターを含めないでください
- ユーザーが $ARGUMENTS にメッセージを指定している場合は、コミットのコンテキストとして使用します
- コミット後、ランタイムの質問方法を使って、プッシュするかどうかをユーザーに尋ねます
- プッシュする場合、main ブランチにいなければ、PR を作成するかどうかをユーザーに尋ねます
- 作成する場合は、適切なタイトルと説明を指定して
gh pr create --draftを使用します
/git commit-all
不要そうなファイルをスキップしながら、作業ツリーの変更を論理的かつアトミックなコミットにまとめます。
git statusを実行し、ステージ済み、未ステージ、未追跡の変更をすべて確認します- 不要なファイルを除外します — 次のファイルはステージングまたはコミットしないでください:
- OS のアーティファクト:
.DS_Store、Thumbs.db、Desktop.ini、._* - エディター/IDE のファイル:
.idea/、.vscode/settings.json、*.swp、*.swo、*~ - ビルドアーティファクト:
_build/、deps/、node_modules/、dist/、*.beam - 一時ファイル/デバッグファイル:
*.log、*.tmp、*.bak、*.orig、dump.rdb - シークレット:
.env、.env.*(ただし.env.sample、.env.exampleは除く)、credentials.* .gitignoreのパターンですでに対象となっているファイル- ファイルが必要かどうか判断できない場合は、ランタイムの質問機能を使ってユーザーに確認します
- OS のアーティファクト:
git diffとgit diff --cachedを実行し、すべての変更を確認します- アトミックなコミットのルールに従い、変更を論理的なコミットにグループ化します:
- 変更されたファイルをすべて分析し、それぞれがどの関心事に属するかを判断します
- 機能、修正、リファクタリング、または領域ごとにグループ化し、各グループを1つのコミットにします
- フォーマット/スタイルの変更はロジックの変更と分けます
- マイグレーション、スキーマの変更、およびそれに対応するコードはまとめます
- テストファイルは、テスト対象のコードとまとめます
- 各論理グループについて、依存関係の順序(例:使用するコードより先にマイグレーション)に従って次を行います:
- そのグループのファイルのみをステージングします:
git add <file1> <file2> ... - Conventional Commits 形式でコミットします:
type: description - AI の帰属を示すフッターは含めないでください
- そのグループのファイルのみをステージングします:
- すべてのコミット後、コミット数、ファイル、簡潔なログを含むコミット内容の概要を表示します
- ランタイムの質問機能を使って、プッシュするかどうかをユーザーに尋ねます
- プッシュする場合、main ブランチ以外にいるなら、PR を作成するかどうかをユーザーに尋ねます
/git pr [context]
現在のブランチのプルリクエストを作成します。
git statusで未コミットの変更がないか確認します- 未コミットの変更がある場合:
git diffを実行して確認します- アトミックなコミットのルールに従い、必要に応じて複数のコミットを作成します
- Conventional Commits 形式でステージングしてコミットします
- AI の帰属表示は含めないでください
git logで現在のブランチと最近のコミットを確認します- プッシュされていないコミットをリモートにプッシュします
- ベースブランチを特定します(デフォルトブランチは
git remote show originで確認し、確認できない場合は 'main' を使用します) - 次の内容で
gh pr create --draftを使って PR を作成します:- Conventional Commits 形式の明確なタイトル
- 次の内容を含む詳細な本文:
- 箇条書きの概要セクション
- 領域ごとに整理した変更の詳細
- チェックリスト項目を含むテスト計画
- 該当する場合は、破壊的変更またはマイグレーションに関する注意事項
- AI の帰属表示や生成元を示すフッターは含めないでください
- ユーザーが $ARGUMENTS にコンテキストを指定している場合は、PR のタイトル/説明に使用します
- PR の URL をユーザーに返します
/git pr-update
現在のブランチをプッシュし、PR の説明を更新します。
- Git リポジトリ内にいることを確認し、現在のブランチ名を取得します
- 未コミットの変更がないか確認し、ある場合はユーザーに知らせます
- 現在のブランチを origin にプッシュします(ブランチがリモートに存在しない場合は
-uフラグを使用します) gh pr viewで PR が存在するか確認します- PR が存在する場合:
- 現在の PR 番号と詳細を取得します
git logで PR 作成以降のコミットを分析します- 次の内容を含む更新後の説明を作成します:
- すべての変更の概要
- 含まれるコミットの一覧
- 関連する場合はテスト計画の更新
gh pr editで PR を更新します
- PR が存在しない場合:
- 作成するかどうかをユーザーに尋ねます
- 作成する場合は、main/master から分岐して以降のすべてのコミットを分析します
gh pr create --draftで詳細な PR を作成します
- PR の URL と更新内容の概要を表示します
/git pr-pull-review
PR のレビューコメントを取得し、対応します。
- 現在のブランチ名を取得し、関連する PR を見つけます:
gh pr view --json number,url,titleを実行して PR の詳細を取得します- PR が存在しない場合は、ユーザーに伝えて停止します
- すべてのレビューコメントを取得します:
gh pr view --json reviews,commentsを実行して、PR のトップレベルコメントを取得しますgh api repos/{owner}/{repo}/pulls/{number}/commentsを実行して、インラインレビューコメント(ファイル固有のコメント)を取得します- 未解決かつ対応が必要なコメントのみを対象にし、以下は除外します:
- すでに解決済みのコメントスレッド
- 承認のみ、または「LGTM」のコメント
- ボットのコメント(CI、リンターなど)
- 各レビューコメントの番号付き概要をユーザーに提示します:
- インラインコメントの場合:ファイル、行、コメント本文を表示します
- 一般コメントの場合:コメント本文を表示します
- ランタイムの質問機能を使用して、対応するコメント(すべて、特定の番号、またはスキップ)をユーザーに確認します
- ユーザーが対応を希望した各コメントについて:
- 該当ファイルを読み、状況を把握します
- 要求された変更を実装します
- コメントの意図が曖昧な場合、または提案に同意できない場合は、変更を加える前にランタイムの質問機能を使用してユーザーに確認します
- すべての変更を行った後:
- アトミックコミットのルールに従い、関連するレビュー修正をまとめます
- 次の形式でコミットします:
fix: address PR review — <brief summary> - AI 帰属フッターを含めないでください
- 対応した各コメントに PR 上で返信します:
gh api repos/{owner}/{repo}/pulls/{number}/comments/{comment_id}/replies -f body="Addressed in <commit-sha>"を実行します- トップレベルコメントには、
gh pr comment --body "Addressed: <summary of what was fixed>"を使用します
- 変更をプッシュし、対応内容の概要を示します
コミットメッセージの形式
type: concise description
Optional body for context
タイプ: feat、fix、chore、docs、refactor、test、style
エラー処理
エラーが発生した場合:
- 何が問題だったのかを明確に説明します
- 修正方法または代替案を提案します
- 再試行するか、手動で対応するかをユーザーに確認します
$ARGUMENTS