human-commit について
開発者向けに Git のコミットメッセージを作成するスキルです。ステージ済みまたは作業ツリーの差分と最近のコミット形式を確認し、変更内容に応じた 3 つの候補を提示して、破壊的変更の可能性も示します。
主な機能
- 01Git の差分とファイル状態を確認
- 02最近のコミット形式に合わせる
- 03変更の種類と範囲を特定
- 04コミットメッセージ候補を 3 件生成
- 05破壊的変更の可能性を提示
活用シーン
- 01ステージ済み変更のメッセージ作成
- 02大きな差分の主な変更点を要約
- 03リポジトリの慣習に沿ったコミット作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ b4r7x/ agent-skills --skill human-commitインストール後、Claude Code で/human-commitを入力して読み込まれたか確認します。
詳細
Human Commit
Git の変更を読み取り、実際の開発者が書いたようなコミットメッセージを生成します。
ワークフロー
ステップ 1 — 差分を読む
git diff --cached 2>/dev/null
出力が空(ステージされた変更がない)の場合は、次のコマンドに切り替えます。
git diff HEAD 2>/dev/null
関連するファイルも確認します。
git status --short 2>/dev/null
差分が約 500 行を超える場合は、そのまま分析しようとしないでください。まず、変更量の多いファイルを特定します。
git diff --cached --stat 2>/dev/null || git diff HEAD --stat 2>/dev/null
次に、すべての行ではなく、変更量の多いファイルと全体的なテーマに焦点を当てて分析します。
ステップ 1b — リポジトリのコミットスタイルを検出する
git log --oneline -5 2>/dev/null
直近 5 件のコミットを確認します。大半が Conventional Commits 形式(type(scope): subject または type: subject)に従っている場合、リポジトリでは CC を使用しています。小文字の平文の文が使われている場合は、平文スタイルに合わせます。既存のスタイルに合わせ、新しいスタイルを持ち込まないでください。
ステップ 2 — 変更を分析する
次の項目を特定します。
- 変更されたファイルとその領域(認証、UI、依存関係、設定、テストなど)
- 変更の内容(修正、追加、削除、移動、更新、リファクタリング)
- 明確な「理由」があるか(バグ、整理、新機能、メンテナンス)
- スコープ(モノレポの場合):変更されたファイルが
packages/、apps/、または名前付きワークスペース配下にある場合は、ディレクトリ名からスコープを推測します(例:packages/auth/→ スコープauth) - 破壊的変更:エクスポートされた関数の削除、公開インターフェースの名前変更、関数シグネチャの変更、メジャーバージョンの更新がある場合は、それを示してください。メッセージに
BREAKING CHANGEフッターが必要になる場合があります。
ステップ 3 — 3 つの候補を生成する
コミットメッセージの候補をちょうど 3 つ出力します。それぞれをコードブロック内の別々の行に記載します。
スタイルのルール(ステップ 1b で検出したリポジトリのスタイルに合わせます):
リポジトリが Conventional Commits を使用している場合(ステップ 1b で検出):
type(scope): subject形式を使用します。fix、feat、refactor、chore、docs、test、build- スコープは省略可能です。変更されたファイルから明確なスコープが推測できる場合は含めます。
- サブジェクトは小文字、命令形で、72 文字以内にします。
- 破壊的変更が検出された場合は、空行に続けて
BREAKING CHANGE: <変更内容>を追加します。
リポジトリが 平文スタイル を使用している場合(または明確なパターンがない場合):
- サブジェクト行は 小文字 にします。
- サブジェクトは約 50 文字 にします(72 文字までは問題ありません)。
- Conventional Commits の接頭辞は使いません。
fix: resolve token expiryではなくfix tokens not expiringとします。 - 命令形にします。
fixed Xやfixes Xではなくfix Xとします。
どちらのスタイルでも:
- 明らかな冗長表現は避けます。
update code to fix the issue with the loginのようにはしません。 - 本文は任意です。変更の説明が本当に必要な場合に限り、空行に続けて 1~2 行を追加します(各行 72 文字以内)。
避けるべきアンチパターン:
- ❌
implement JWT token validation middleware with expiry checking - ❌
refactor: extract authentication logic into separate service module - ❌
fix: resolve issue with user authentication token expiration handling - ✅
fix tokens not expiring - ✅
move auth to its own file - ✅
bump deps - ✅
add dark mode toggle - ✅
fix login redirect on mobile
出力形式
平文スタイル:
Option 1: fix tokens not expiring
Option 2: auth middleware wasn't checking expiry
Option 3: fix expired jwt tokens still passing through
Conventional Commits スタイル:
Option 1: fix(auth): tokens not expiring on check
Option 2: fix(auth): jwt expiry not validated
Option 3: fix: expired tokens still passing auth middleware
本文を含む場合(必要に応じて):
Option 2: reorganize auth module
pulled jwt logic out, the file was getting too long
破壊的変更のフッターを含む場合:
Option 1: refactor(api): rename user endpoints
BREAKING CHANGE: /users/:id renamed to /users/:userId
最適な候補をオプション 1 に選びます。