commit-message について
commit-messageは、Gitの変更を分析し、文脈に沿ったConventional Commits形式のメッセージを作成するコマンドラインスキルです。変更ファイルの確認や関連変更のコミット分割、コードの目的を伝える説明に役立ちます。
主な機能
- 01変更ファイル、状態、分類の一覧表示
- 02複数コミット向けの変更グループ提案
- 03指定したファイルパターンのメッセージ生成
- 04ステージ済み変更のみを分析
- 05Conventional Commitsのタイプとスコープに準拠
活用シーン
- 01コミット前にリポジトリの変更を確認する
- 02無関係な作業を別々のコミットに分ける
- 03選択したファイルのメッセージを作成する
- 04コード変更を目的が伝わる説明にまとめる
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jiatastic/ open-python-skills --skill commit-messageインストール後、Claude Code で/commit-messageを入力して読み込まれたか確認します。
同梱ファイルdata/commit_patterns.jsonscripts/analyze_changes.py
詳細
commit-message
Git の変更を分析し、コンテキストを踏まえた Conventional Commits 準拠のコミットメッセージを生成します。
クイックスタート
# Analyze all changes
python3 .shared/commit-message/scripts/analyze_changes.py --analyze
# Get batch commit suggestions
python3 .shared/commit-message/scripts/analyze_changes.py --batch
# Generate message for specific files
python3 .shared/commit-message/scripts/analyze_changes.py --generate "src/api/*.py"
コマンド
| コマンド | 説明 |
|---|---|
--analyze | 変更されたすべてのファイルを、ステータスとカテゴリとともに表示します |
--batch | 変更を複数のコミットに分割する方法を提案します |
--generate [pattern] | パターンに一致するファイルのコミットメッセージを生成します |
--staged | ステージング済みの変更のみを分析します(デフォルトではすべての変更が対象です) |
コミットタイプ
| タイプ | 説明 | 例 |
|---|---|---|
feat | 新機能 | feat(api): add user authentication |
fix | バグ修正 | fix(db): resolve connection timeout |
refactor | コードの再構成 | refactor(utils): simplify helper functions |
docs | ドキュメント | docs: update README |
test | テスト | test(api): add user endpoint tests |
chore | メンテナンス | chore: update dependencies |
style | フォーマット | style: fix linting errors |
バッチコミットのワークフロー
関連のない変更が複数ある場合:
--batchを実行して、提案されたコミットグループを確認します- 最初のコミット用のファイルをステージングします:
git add <files> - 提案されたメッセージでコミットします
- 残りのグループについて繰り返します
グループ化の戦略
ファイルは次の基準でグループ化されます:
- ディレクトリ/モジュール:
src/api/、tests/、docs/ - 変更タイプ:追加、変更、削除
- 意味上の関連性:関連するファイルをまとめます
コンテキストを踏まえたコミットメッセージ
注:
analyze_changes.pyスクリプトは、ファイルのグループ化と基本的な提案を行います。その出力を出発点として、git diffを読んで実際の変更内容を把握し、以下の例に従ってコンテキストを踏まえたメッセージを作成してください。
コミットメッセージを生成する際は、実際のコード変更を分析して、ビジネス上の背景を推測してください。ファイルの説明だけでなく、変更によって何が実現するのかを説明します。
スコープのガイドライン
スコープには、ディレクトリだけでなく、ビジネス上のモジュールまたは機能を反映させます。
| スコープの種類 | 例 | 使用する場面 |
|---|---|---|
| 機能/モジュール | companion、calendar、inbox | 特定の製品機能に対する変更 |
| プラットフォーム | ios、android、web | プラットフォーム固有の変更 |
| インテグレーション | outlook、gmail、slack | サードパーティとのインテグレーションに関する変更 |
| コンポーネント | auth、api、db | 中核となるインフラストラクチャの変更 |
入出力の例
例 1:新機能
Input (code changes):
+ src/companion/pages/AvailabilityDetailPage.tsx
+ src/companion/pages/AvailabilityActionsPage.tsx
+ src/companion/components/AvailabilityCard.tsx
M src/companion/navigation/routes.ts
Output:
feat(companion): add availability detail and actions pages for ios
- New AvailabilityDetailPage showing time slot details
- New AvailabilityActionsPage for booking/canceling
- AvailabilityCard component for list display
- Updated navigation routes
例 2:バグ修正
Input (code changes):
M src/integrations/outlook/email_sender.py
M src/integrations/outlook/auth.py
Output:
fix(outlook): resolve email sending failures due to token expiration
Refresh OAuth token before sending when close to expiry
例 3:マルチプラットフォームの変更
Input (code changes):
M ios/Calendar/CalendarView.swift
M android/calendar/CalendarFragment.kt
M web/src/calendar/Calendar.tsx
Output:
feat(calendar): add week view across all platforms
Implement consistent week view UI for iOS, Android, and web
例 4:雑務/メンテナンス
Input (code changes):
M package.json
M yarn.lock
M requirements.txt
Output:
chore(deps): update dependencies to latest versions
適切な説明を書く
| 悪い例(一般的) | 良い例(コンテキストを反映) |
|---|---|
feat: add new file | feat(payments): add Stripe webhook handler |
fix: fix bug | fix(auth): prevent session timeout on mobile |
chore: update code | chore(ci): reduce build time with parallel jobs |
refactor: refactor utils | refactor(api): extract rate limiting to middleware |
重要な原則
- コードを読む - 変更によって実際に何が行われるかを把握します
- 機能を特定する - 影響を受けるユーザー向け機能またはシステム機能は何かを確認します
- 具体的にする - 関連する詳細(プラットフォーム、インテグレーション、コンポーネント)を含めます
- 能動態を使う - 「追加する」「修正する」「更新する」を使い、「追加した」「修正した」「更新した」は避けます
- 簡潔にする - 1 行目を 72 文字未満にします
コメント
Markdown 対応