AgentSkillsCN

git-commit

采用常规 Commit 消息分析、智能暂存与消息生成功能来执行 git commit。适用于提交更改、创建 git commit,或在收到包含“/commit”的请求时使用。支持的功能包括:(1) 自动从更改中检测类型与范围;(2) 从 diff 中生成常规 Commit 消息;(3) 支持交互式提交,可覆盖类型/范围/描述;(4) 通过智能文件暂存实现逻辑分组。

SKILL.md
--- frontmatter
name: git-commit
description: 'Conventional Commit メッセージ分析、インテリジェントなステージング、メッセージ生成を使用した git commit の実行。変更をコミットする、git コミットを作成する、または "/commit" を含むリクエストがある場合に使用します。サポート機能: (1) 変更からの type と scope の自動検出、(2) diff からの Conventional Commit メッセージの生成、(3) type/scope/description のオーバーライドオプション付き対話的コミット、(4) 論理的なグループ化のためのインテリジェントなファイルステージング'
license: MIT
allowed-tools: Bash

Conventional Commits を使用した Git コミット

概要

Conventional Commits 仕様を使用して、標準化された意味のある git コミットを作成します。実際の diff を分析して、適切な type、scope、メッセージを決定します。

Conventional Commit フォーマット

code
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

以下は英語で記載してください:

  • type
  • scope

以下は日本語で記載してください:

  • description
  • body
  • footer

コミットタイプ

Type目的
feat新機能
fixバグ修正
docsドキュメントのみ
styleフォーマット/スタイル(ロジックなし)
refactorコードリファクタリング(機能/修正なし)
perfパフォーマンス改善
testテストの追加/更新
buildビルドシステム/依存関係
ciCI/設定変更
choreメンテナンス/その他
revertコミットの取り消し

破壊的変更

code
# type/scope の後に感嘆符
feat!: 非推奨エンドポイントを削除

# BREAKING CHANGE フッター
feat: 設定が他の設定を拡張できるようにする

BREAKING CHANGE: `extends` キーの動作が変更されました

ワークフロー

1. Diff の分析

bash
# ファイルがステージされている場合、ステージされた diff を使用
git diff --staged

# 何もステージされていない場合、作業ツリーの diff を使用
git diff

# ステータスも確認
git status --porcelain

2. ファイルのステージング(必要な場合)

何もステージされていない場合、または変更を異なる方法でグループ化したい場合:

bash
# 特定のファイルをステージ
git add path/to/file1 path/to/file2

# パターンでステージ
git add *.test.*
git add src/components/*

# 対話的なステージング
git add -p

決してシークレットをコミットしないでください(.env、credentials.json、秘密鍵)。

3. コミットメッセージの生成

diff を分析して以下を決定します:

  • Type: どのような種類の変更か?
  • Scope: 影響を受ける領域/モジュールは?
  • Description: 変更内容の1行要約(現在形、命令形、72文字未満)

4. コミットの実行

bash
# 単一行
git commit -m "<type>[scope]: <description>"

# 本文/フッター付きの複数行
git commit -m "$(cat <<'EOF'
<type>[scope]: <description>

<optional body>

<optional footer>
EOF
)"

ベストプラクティス

  • コミットごとに1つの論理的な変更
  • 現在形を使用:「add」であって「added」ではない
  • 命令形を使用:「fix bug」であって「fixes bug」ではない
  • Issue の参照:Closes #123Refs #456
  • 説明は72文字以内に保つ

Git 安全プロトコル

  • 決して git config を更新しない
  • 明示的な要求がない限り、破壊的コマンド(--force、hard reset)を実行しない
  • ユーザーが要求しない限り、フック(--no-verify)をスキップしない
  • 決して main/master に force push しない
  • フックによりコミットが失敗した場合、修正して新しいコミットを作成する(amend しない)