
task-commit
by einja-inc
いいんじゃ管理画面テンプレート
SKILL.md
name: task-commit description: "コミット・プッシュを実行するSkill。docs/einja/steering/commit-rules.mdのルールに従い、分割コミットを実施。直接呼び出し可能(確認あり)、task-exec経由では自動実行" allowed-tools:
- Bash
- Read
- Glob
- Grep
- AskUserQuestion
- TodoWrite
- TodoRead
task-commit Skill: コミット・プッシュ実行エンジン
役割
変更をコミット・プッシュします。docs/einja/steering/commit-rules.md のコミットルールに厳格に従い、適切な粒度でコミットを分割します。
実行手順(6ステップ)
ステップ1: 最新化(必要な場合のみ)
⚠️ 重要: 毎回 git pull --rebase を実行するのは非効率。リモートに新しいコミットがある場合のみ実行する。
手順
# 1. リモートの最新情報を取得(ローカルは変更しない)
git fetch origin
# 2. リモートとの差分を確認
git rev-list HEAD..origin/main --count
- 差分が0の場合: 最新なので何もしない(次のステップへ)
- 差分がある場合: 以下を実行
# ローカル変更を一時退避
git stash
# リモートの変更を取り込み
git pull --rebase
# ローカル変更を復元
git stash pop
コンフリクト発生時
- conflict-resolver エージェント を Task ツールで呼び出して解消
- 解消できない場合は以下を出力して終了:
## 🚀 コミット・プッシュ
### ステータス: ❌ FAILURE
**エラー**: git pull --rebase でコンフリクトが発生し、解消できませんでした。
手動でコンフリクトを解決してください。
\`\`\`
[コンフリクト詳細]
\`\`\`
ステップ2: 変更確認
git statusで変更ファイルを確認git diffで差分内容を確認- 変更がない場合: 以下を出力して正常終了
## 🚀 コミット・プッシュ完了
### ステータス: ✅ SUCCESS(変更なし)
コミット対象の変更がありませんでした。
ステップ3: コミット分割方針の決定
⚠️ 重要: docs/einja/steering/commit-rules.md の「コミットの分割方針」を必ず参照すること。
分割基準
以下の場合は必ず別々のコミットに分割:
-
異なる目的や種類の変更
- ソースコードの変更とドキュメントの更新
- 機能追加と設定ファイルの変更
- リファクタリングとバグ修正
-
異なるコンポーネントやモジュールの変更
- 複数のマイクロサービスやコンポーネントの変更
- フロントエンドとバックエンドの変更
-
レビューの容易さを考慮した分割
- 大規模な変更は小さな論理的なまとまりに分割
- テストコードの追加・更新は実装とは別のコミット
ユーザーへの確認(必須)
AskUserQuestionツールを使用して、コミット分割案の承認を得る。
⚠️ 重要: question パラメータに具体的なコミット分割内容を必ず記載すること。「コミット分割案を確認してください」のような抽象的な質問は禁止。
AskUserQuestion:
question: |
以下のコミット分割案で実行してよろしいですか?
【コミット1】feat: ユーザー認証機能の追加
対象: src/auth/login.ts, src/auth/logout.ts, src/auth/middleware.ts
【コミット2】test: 認証機能のテスト追加
対象: src/auth/__tests__/login.test.ts, src/auth/__tests__/logout.test.ts
header: "分割案"
options:
- label: "承認"
description: "この分割案でコミットを実行"
- label: "1コミットにまとめる"
description: "すべての変更を1つのコミットにまとめる"
question記載必須項目:
- 各コミットのメッセージ(プレフィックス付き)
- 各コミットの対象ファイル一覧
ユーザーが「Other」で修正指示を出した場合は、その指示に従って分割案を修正し、再度確認を取る。
ステップ4: 品質チェック
task-exec経由での呼び出しの場合
task-exec経由でQA合格後に呼び出されるため、品質チェック(lint/typecheck/test/build)はスキップします。
QAフェーズで既に実行済みのため、重複実行は不要です。
直接呼び出しの場合
コミット前に pnpm prepush を実行して以下のチェックを行います:
- lint: lint-staged による変更ファイルの lint チェック
- typecheck: TypeScript の型チェック
- test: 変更ファイルに関連するテストのみ実行(vitest related --run)
pnpm prepush が失敗した場合は、エラー内容を報告して終了します。
ステップ5: コミット実行
合意した分割方針に従って順次コミットを実行。
コミットメッセージ形式
docs/einja/steering/commit-rules.md に従い:
- プレフィックス:
feat:,fix:,docs:,style:,refactor:,test:,chore: - 言語: 日本語
- 形式: 1行目に概要、2行目以降に詳細
コミットコマンド
task-exec経由での呼び出しの場合(QA済み):
git add src/auth/login.ts src/auth/logout.ts && git commit -m "$(cat <<'EOF'
feat: ユーザー認証機能の追加
- JWT認証の実装
- ログイン・ログアウトエンドポイントの追加
- 認証ミドルウェアの実装
EOF
)"
直接呼び出しの場合(prepush実行):
git add src/auth/login.ts src/auth/logout.ts && pnpm prepush && git commit -m "$(cat <<'EOF'
feat: ユーザー認証機能の追加
- JWT認証の実装
- ログイン・ログアウトエンドポイントの追加
- 認証ミドルウェアの実装
EOF
)"
ステップ6: プッシュ実行
git pushを実行- 結果を出力
出力形式
成功時
## 🚀 コミット・プッシュ完了
### コミットサマリー
- **コミット数**: {count}個
- **変更ファイル数**: {files}個
### コミット一覧
| # | メッセージ | ファイル数 |
|---|----------|----------|
| 1 | feat: ユーザー認証機能の追加 | 3 |
| 2 | test: 認証機能のテスト追加 | 2 |
### プッシュ結果
\`\`\`
[git push の出力]
\`\`\`
### ステータス: ✅ SUCCESS
失敗時
## 🚀 コミット・プッシュ
### ステータス: ❌ FAILURE
**エラー**: [エラーの種類]
\`\`\`
[エラー詳細]
\`\`\`
[推奨される対処方法]
エラーハンドリング
| エラー種別 | 対処 |
|---|---|
| git pull コンフリクト | conflict-resolver エージェントを Task ツールで呼び出して解消を試行 |
| コンフリクト解消失敗 | 報告して終了、手動解決を依頼 |
| git commit 失敗 | エラー内容を報告 |
| git push 失敗 | エラー内容を報告、原因を説明 |
参考資料
docs/einja/steering/commit-rules.md- コミットルール、分割方針、メッセージ形式の詳細
最終更新: 2026-01-10
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon