split-commit について
split-commit は、現在のローカル変更を論理的なコミットに分ける計画を作るスキルです。リポジトリを読み取り専用で調べ、ユーザー実行用の PowerShell コマンドを出力し、ステージングやコミットは代行しません。
主な機能
- 01読み取り専用の Git 調査
- 02変更の論理的なグループ化
- 03ブランチ規則に沿ったメッセージ確認
- 04PowerShell コマンド列の出力
- 05ステージングとコミットはユーザーが実行
活用シーン
- 01複数種類のローカル変更の分割
- 02ブランチ規則に合うコミットメッセージの準備
- 03ユーザー実行用コミットスクリプトの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ enderpuentes/ ai-agent-skills --skill split-commitインストール後、Claude Code で/split-commitを入力して読み込まれたか確認します。
同梱ファイルLICENSE.md
詳細
Git のコミットを分割する
著者:Bruno Balderrama ([email protected])。著者の許可を得て、このコレクションに収録しています。
目標:現在のローカル変更を複数の論理的なコミットに分割するため、ユーザー自身が実行する単一の PowerShell スクリプトを作成します。
制約(必須)
- ユーザーに代わって
git add、git commit、git pushを実行しないでください。以下の読み取り専用の確認コマンド(および必要なその他の非変更型 Git クエリ)のみを使用してください。 - ユーザーに代わってステージング、コミット、プッシュを行わないでください。
- 最終的な出力は1 つのブロックのみにしてください。ユーザーがコピーして貼り付けて実行できる PowerShell の一連のコマンド(コメント+コマンド)です。
ステップ 1 — 確認(リポジトリのルート)
リポジトリのルートから以下を実行し、出力をグループ分けとメッセージのスタイルに使用します。
git branch --show-current
git status --short
git log -12 --oneline
git diff
変更セットが大きい場合は、バッチを検討するために git diff --stat やパスを限定した git diff -- path も使用できます。ただし、git add/git commit/git push は実行しないでください。
コミットメッセージ — .githooks/commit-msg(必須)
正しい基準となるもの: .githooks/commit-msg。提案する git commit -m はすべて、(git branch --show-current で確認した)現在のブランチに対して、このフックを通過しなければなりません。
| ブランチ | 許可される先頭行(空でなく、前後の空白を除去したもの) |
|---|---|
main | マージ形式の行(Merge branch…、Merge remote-tracking branch…、Merge commit…、Merge pull request…)または hotfix(scope): の件名 |
develop | マージ形式の行のみ(同じパターン)。develop では feat:/fix: などは不可 |
| その他 | Conventional Commits:type(scope): subject または type: subject — : の後にスペースを入れ、件名は空にしません。タイプは feat、fix、hotfix、chore、test、docs、style、ci。先頭行は 120 文字以下 |
ユーザーが develop にいて複数のコミットが必要な場合は、フィーチャーブランチを使う必要がある(または推奨しない --no-verify を受け入れる必要がある)ことを明確に伝えてください。メッセージがマージ形式でない限り、develop 向けに Conventional Commits 形式の git commit -m 行を出力しないでください。
Conventional Commits を使用する場合は、命令形にし、git log -12 --oneline との一貫性も保ってください。
ステップ 2 — バッチを計画する
- 変更されたパスを、論理的なコミット(機能、修正、ドキュメント、テスト、雑務、またはサブシステムごと)にグループ化します。
- 現在のブランチに対する
.githooks/commit-msgの要件を満たすコミットメッセージを作成します(上の表を参照)。
ステップ 3 — PowerShell の一連のコマンドを出力する
フックへの準拠(エージェント側のみ): .githooks/commit-msg と上記のコミットメッセージ表を確認してください。出力するすべての git commit -m "…" 行は、現在のブランチに対するフックの要件を満たさなければなりません。フィーチャーブランチで使用できるタイプは feat、fix、hotfix、chore、test、docs、style、ci のみです(例:refactor は拒否されます)。ヘルパー、テンポラリファイル、Assert-* は出力しないでください。ユーザーは通常どおりコミットを実行して検証します。
出力形式(常にこのレイアウトを使用):
- ユーザーはすでにリポジトリのルートにいるものとします。
- 最初の行は、作業ツリーをきれいにするコメントと
git reset HEADから始めます(リポジトリにコミットがまだない場合はgit reset HEADを省略し、その旨をコメントに記載します)。 - 各バッチについて、順番に以下を記載します。
- コメントを 1 つ記載します:
# <n>) <短いタイトル>(nは順に増やします)。 - そのバッチの各ファイルに対して
git add "path"を記載します(パスを引用符で囲み、1 行につきgit addは 1 つ)。 git commit -m "正確な先頭行"を記載します。二重引用符で囲んだ文字列をそのまま指定し、命令形にします。形式はtype(scope): subjectまたはtype: subject、120 文字以下です。
- コメントを 1 つ記載します:
- すべてのバッチの後は、必ず以下で終わらせます:
git status --short
git log -12 --oneline
出力例(形式はこのとおりにしてください。フックに従い、refactor ではなく feat/fix/chore/… を使用します):
# Start clean (omit if repo has no commits yet)
git reset HEAD
# 1) Shared route URL helper
git add "src/lib/navigation/route-params.ts"
git commit -m "chore(lib): add replaceRouteSearchParams for list route queries"
# 2) System components: single pattern for updating search params
git add "src/components/system/search/index.tsx"
git add "src/components/system/search/ui.tsx"
git add "src/components/system/filters/dropdown/index.tsx"
git add "src/components/system/filters/search-button/index.tsx"
git add "src/components/system/sorts/dropdown/index.tsx"
git commit -m "chore(system): use shared route param updates in search and filters"
# 3) Header + client list-filter hooks (param naming)
git add "src/components/layouts/header/index.tsx"
git add "src/components/layouts/header/hooks/use-list-filters.tsx"
git add "src/components/layouts/header/hooks/use-assistants-filters.tsx"
git commit -m "chore(layouts): align list header and filter hooks with route param names"
# 4) Spaces list: URL-driven filters, parse-url, tests
git add "src/lib/spaces/parse-url.ts"
git add "src/app/(authenticated)/spaces/hooks/filters.tsx"
git add "src/app/(authenticated)/spaces/partials/list.tsx"
git add "__tests__/spaces-list-filters.test.tsx"
git commit -m "chore(spaces): route-based list filters and simplify URL parse"
git status --short
git log -12 --oneline
アシスタントの最終返信には、この PowerShell ブロック以外を何も含めないでください(必要な場合は 1 行の導入文を付けてもかまいませんが、ブロックのみを推奨します)。
エッジケース
- 変更なし:
git status --shortとgit log -12 --onelineのみを実行し、分割するものがないことをコメントに記した最小限のスクリプトを出力します。 - 未追跡ファイル:適切なバッチに含め、ユーザーが実行するスクリプト内でのみ
git add "path"を使います(ご自身でgit addを実行することはありません)。 - 単一の論理的なコミット:1 つのバッチで構いません。同じスクリプト構成に従ってください。