AgentSkillsCN

worktree-commit

在 worktree 环境下,于任务完成后执行提交的技能。在 worktree 路径内暂存所有变更,以日语生成提交信息并完成提交。“worktree 提交”“在 worktree 环境下提交”“任务完成提交”等关键词均可触发此技能。

SKILL.md
--- frontmatter
name: worktree-commit
description: worktree環境でのタスク完了時のコミットを実行するスキル。worktreeパス内で全変更をステージングし、日本語でコミットメッセージを生成してコミットを実行する。「worktreeコミット」「worktree環境でコミット」「タスク完了コミット」などのフレーズで発動。

Worktree Commit スキル

worktree環境(/tmp/{リクエスト名}/ 配下)でのタスク完了時に、変更を適切にコミットします。

このスキルの目的

  1. worktree環境での作業結果をコミット - worktree内の全変更をステージング・コミット
  2. 日本語コミットメッセージの自動生成 - タスクIDと変更内容から適切なメッセージを生成
  3. MCP連携によるチケット情報取得 - 可能な場合はチケット情報を取得して詳細なメッセージを生成

前提条件

このスキルを実行する前に、以下の条件が満たされている必要があります:

  1. worktreeが存在すること - 指定されたworktreeパスが存在する
  2. 有効なgit worktreeであること - git worktree list で登録されている
  3. ブランチ形式が正しいこと - ブランチ名が {リクエスト名}-{タスクID} 形式である

入力パラメータ

パラメータ説明必須
worktree_pathworktreeの絶対パス/tmp/ログイン機能実装/
request_nameリクエスト名ログイン機能実装
task_idタスクID001

処理フロー

以下の手順で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内でのみ動作し、元のリポジトリには影響しません