| name | vk-push |
| description | 現在のリポジトリの変更をステージ・コミット・プッシュまで一気に行う。『コミットしてプッシュして』『vk-push』等の依頼時に使用。コミットメッセージは差分から自動生成する |
/vk-push スキル
カレントリポジトリの変更を git add → git commit → git push まで一気通貫で行う。コミットメッセージは差分から自動生成し、毎回の指示を不要にする。
トリガー
以下の表現が含まれる場合にこのスキルを使う:
- 「コミットしてプッシュして」
- 「コミット & プッシュ」
- 「push して」
- 「vk-push」
PR 作成まで必要なら /vk-pr、issue から完了まで一気通貫なら /vk-kore を使う。このスキルは コミットとプッシュのみ を行い、PR 作成・CI 監視・changelog 更新は行わない。
引数
$ARGUMENTS に渡せるのは コミットメッセージ か --direct フラグ のみ
$ARGUMENTS にコミットメッセージが指定された場合は、それを(必要なら分類プレフィックスを補って)使う
- 引数なしの場合は差分からコミットメッセージを自動生成する
--direct フラグが含まれる場合は、main / master などの保護ブランチでも確認なしで直接 commit・push する(手順4参照)。--direct はコミットメッセージ本文に含めない
フラグの検証ルール
- 認識するフラグは
--direct のみ。- で始まるトークンのうち --direct 以外(例: --force, -f, --no-verify, --amend など)が含まれていた場合は、git のオプションとして解釈せず、エラーとして報告して中断する(git push --force のような危険なオプション混入を防ぐため)
--direct 以外の - 始まりトークンをコミットメッセージの一部として扱ったり、git コマンドにそのまま渡したりしない
--direct は重複指定されても 1 回扱い。--direct とコミットメッセージの併用は許可(メッセージ指定かつ保護ブランチ直 push)
- 上記以外で引数の解釈が曖昧・矛盾する場合は、勝手に推測せずユーザーに確認する
手順
1. 状態確認
git rev-parse --show-toplevel でリポジトリルートを確認する(git リポジトリでなければ中断して報告)
git status --porcelain で変更の有無を確認する
- 変更が無く、未プッシュコミットも無い場合は「コミットする変更がありません」と報告して終了する
- 変更が無いが未プッシュコミットがある場合は手順4(push)のみ実行する
git branch --show-current で現在のブランチ名を取得する
2. 差分の把握とコミットメッセージ生成
git status --porcelain と git diff --stat、必要に応じて git diff(未ステージ)/ git diff --cached(ステージ済み)で変更内容を理解する
- コミットメッセージを決める:
$ARGUMENTS でメッセージが指定されていればそれを使う(分類プレフィックスが無ければ後述の規約で補う)
- 指定が無ければ差分から自動生成する
- コミットメッセージの規約(
$VK_AGENTS_DIR/rules/change-title.md に準拠):
- 先頭に分類を
[ 分類 ] 形式で付ける。分類は change-title.md の一覧(機能追加 / 不具合修正 / デザイン不具合修正 / セキュリティ修正 / 仕様変更 / 開発環境 / その他)から選ぶ。独自分類は禁止。迷ったら [ 仕様変更 ] か [ その他 ]
- 日本語・体言止め(「〜を追加」「〜を修正」など。過去形は使わない)
- 一般ユーザーが読んで何が変わったか分かる表現にする
- 変更が複数の関心事にまたがる場合は、本文(コミットメッセージ2行目以降)に箇条書きで補足してよい
3. ステージとコミット
git add -A で全変更をステージする(特定ファイルのみの指示があれば従う)
- ヒアドキュメントでコミットする:
git commit -m "$(cat <<'EOF'
[ 分類 ] 変更内容の要約
EOF
)"
- グローバル設定の Co-Authored-By 規約に従い、必要に応じてコミットメッセージ末尾に署名を付ける
4. プッシュ
- 現在のブランチが
main / master の場合は 事故防止のため、push 前にユーザーに確認する(保護ブランチへの直接 push は意図しない場合が多いため)。それ以外のブランチは確認不要で push する
- ただし
$ARGUMENTS に --direct フラグが指定されている場合は、保護ブランチでも確認を省略して直接 push する
- upstream の有無を確認して push する:
- upstream 設定済み:
git push
- 未設定(新規ブランチ等):
git push -u origin <ブランチ名>
5. 報告
- コミットした SHA・メッセージ・push 先ブランチを簡潔に報告する
失敗時の対応
問題が起きた場合は、勝手な代替手段を取らず以下を確認し、解決できなければ出力を添えてユーザーにエスカレーションする。
- push が拒否された(non-fast-forward): リモートに先行コミットがある。
git pull --rebase の要否を確認のうえ案内する。勝手に --force は使わない
- コミットが pre-commit フック等で失敗した: フックの出力をそのまま提示し、原因を報告する。
--no-verify で握りつぶさない
- 認証エラー: 認証情報の確認を案内する
補足
- コードを変更したリポジトリで changelog 更新が必要な場合(vk-agents 等)は、このスキルは changelog を更新しないため、別途対応すること