Worktree Commit スキル
worktree環境(/tmp/{リクエスト名}/ 配下)でのタスク完了時に、変更を適切にコミットします。
このスキルの目的
- •worktree環境での作業結果をコミット - worktree内の全変更をステージング・コミット
- •日本語コミットメッセージの自動生成 - タスクIDと変更内容から適切なメッセージを生成
- •MCP連携によるチケット情報取得 - 可能な場合はチケット情報を取得して詳細なメッセージを生成
前提条件
このスキルを実行する前に、以下の条件が満たされている必要があります:
- •worktreeが存在すること - 指定されたworktreeパスが存在する
- •有効なgit worktreeであること -
git worktree listで登録されている - •ブランチ形式が正しいこと - ブランチ名が
{リクエスト名}-{タスクID}形式である
入力パラメータ
| パラメータ | 説明 | 必須 | 例 |
|---|---|---|---|
worktree_path | worktreeの絶対パス | ✅ | /tmp/ログイン機能実装/ |
request_name | リクエスト名 | ✅ | ログイン機能実装 |
task_id | タスクID | ✅ | 001 |
処理フロー
以下の手順でworktree環境でのコミットを実行してください。
1. worktree環境の確認
1.1 worktreeパスの存在確認
bash
# worktreeパスが存在するか確認
ls -la {worktree_path}
存在しない場合はエラーを報告して終了。
1.2 git worktreeとして登録されているか確認
bash
# リポジトリルートに戻ってworktreeリストを確認
cd {元のリポジトリルート}
git worktree list
出力に {worktree_path} が含まれていることを確認。
1.3 worktreeに移動してブランチ確認
bash
cd {worktree_path}
git branch --show-current
ブランチ名が {リクエスト名}-{タスクID} 形式であることを確認。
2. 変更内容の確認
bash
cd {worktree_path}
# 変更状態を確認
git status
# 差分を確認(変更がある場合)
git diff
git diff --cached
変更がない場合:
- •エラーにはせず、「変更なし」としてスキップ
- •コミットせずに正常終了
3. 全変更のステージング
bash
cd {worktree_path}
# 全変更(未追跡ファイル含む)をステージング
git add -A
# ステージング状態を確認
git status
git diff --cached --stat
4. チケット情報の取得(オプション)
ブランチ名からチケットIDを抽出し、可能であればMCP経由でチケット情報を取得。
チケットID抽出パターン
ブランチ名 {リクエスト名}-{タスクID} から {タスクID} 部分を抽出。
GitHub Issues(MCPが利用可能な場合)
チケットIDが数値のみの場合、GitHub MCPの github-mcp-server-issue_read を使用:
code
method: get
owner: {リポジトリオーナー}
repo: {リポジトリ名}
issue_number: {タスクID}
MCPが利用できない場合
ブランチ名とリクエスト名から推測できる情報のみを使用。
5. コミットメッセージの生成
🚨 重要:コミットメッセージは必ず日本語で生成してください 🚨
絶対に英語でコミットメッセージを生成してはいけません。
フォーマット
code
{タスクID}: {変更内容の要約(日本語)}
変更ファイル:
- {ファイル1}
- {ファイル2}
- {ファイル3}
詳細:
- {変更内容1}
- {変更内容2}
例
code
001: ログイン機能の実装 変更ファイル: - src/components/LoginForm.tsx - src/api/auth.ts - src/hooks/useAuth.ts 詳細: - ログインフォームコンポーネントを追加 - 認証APIクライアントを実装 - 認証状態管理フックを追加
チケット参照がある場合
code
refs #123 001: ログイン機能の実装 変更ファイル: - src/components/LoginForm.tsx ...
6. コミット実行
bash
cd {worktree_path}
# コミット実行
git commit -m "{生成したコミットメッセージ}"
# コミットハッシュを取得
git rev-parse HEAD
7. 結果の報告
以下の情報を返却:
- •コミットハッシュ(短縮形)
- •コミットメッセージ
- •変更ファイル数
- •ブランチ名
エラーハンドリング
| 状況 | 対応 |
|---|---|
| worktreeパスが存在しない | エラー報告して終了。「指定されたworktreeパス {path} が存在しません」 |
| git worktreeとして未登録 | エラー報告して終了。「{path} は有効なgit worktreeではありません」 |
| 変更がない | 正常終了(コミットスキップ)。「変更がないためコミットをスキップしました」 |
| ステージングエラー | エラー報告して終了。エラーメッセージを含める |
| コミットエラー | エラー報告して終了。エラーメッセージを含める |
使用例
親エージェントからの呼び出し例
code
worktree-commitスキルを使用して、以下のworktree環境でコミットを実行してください: - worktree_path: /tmp/ログイン機能実装/ - request_name: ログイン機能実装 - task_id: 001 変更内容をすべてステージングし、日本語でコミットメッセージを生成してコミットしてください。
実行結果例
code
✅ コミット完了 - コミットハッシュ: abc1234 - ブランチ: ログイン機能実装-001 - コミットメッセージ: 001: ログイン機能の実装 変更ファイル: - src/components/LoginForm.tsx - src/api/auth.ts 詳細: - ログインフォームを追加 - 認証APIを実装
典型的なワークフロー
code
[worktree確認] --> パス存在確認 & worktree登録確認
|
[ブランチ確認] --> ブランチ名がタスク形式か確認
|
[変更確認] --> git status/diff で変更内容確認
|
+--> 変更なし --> [スキップ終了]
|
[ステージング] --> git add -A で全変更をステージ
|
[チケット情報取得] --> MCP連携(オプション)
|
[メッセージ生成] --> タスクID + 変更内容で日本語メッセージ作成
|
[コミット実行] --> git commit 実行
|
[結果報告] --> ハッシュ・メッセージ・ファイル数を返却
注意事項
- •🚨 コミットメッセージは必ず日本語を使用してください(英語は禁止)🚨
- •
git add -Aで未追跡ファイル(新規作成ファイル)も含めてすべてステージングします - •worktree環境は一時ディレクトリ(
/tmp/配下)に作成されるため、コミット後にworktree自体は削除される想定です - •コミット後はプッシュを行いません(プッシュは親エージェントまたは別スキルで実行)
- •このスキルはworktree内でのみ動作し、元のリポジトリには影響しません