mcpField
C
commit-message

commit-message

github.com/jiatastic開発1058 回インストール40 週間前に更新
リポジトリ

commit-message について

commit-messageは、Gitの変更を分析し、文脈に沿ったConventional Commits形式のメッセージを作成するコマンドラインスキルです。変更ファイルの確認や関連変更のコミット分割、コードの目的を伝える説明に役立ちます。

主な機能

  1. 01変更ファイル、状態、分類の一覧表示
  2. 02複数コミット向けの変更グループ提案
  3. 03指定したファイルパターンのメッセージ生成
  4. 04ステージ済み変更のみを分析
  5. 05Conventional Commitsのタイプとスコープに準拠

活用シーン

  1. 01コミット前にリポジトリの変更を確認する
  2. 02無関係な作業を別々のコミットに分ける
  3. 03選択したファイルのメッセージを作成する
  4. 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

バッチコミットのワークフロー

関連のない変更が複数ある場合:

  1. --batch を実行して、提案されたコミットグループを確認します
  2. 最初のコミット用のファイルをステージングします:git add <files>
  3. 提案されたメッセージでコミットします
  4. 残りのグループについて繰り返します

グループ化の戦略

ファイルは次の基準でグループ化されます:

  • ディレクトリ/モジュール: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 filefeat(payments): add Stripe webhook handler
fix: fix bugfix(auth): prevent session timeout on mobile
chore: update codechore(ci): reduce build time with parallel jobs
refactor: refactor utilsrefactor(api): extract rate limiting to middleware
重要な原則
  1. コードを読む - 変更によって実際に何が行われるかを把握します
  2. 機能を特定する - 影響を受けるユーザー向け機能またはシステム機能は何かを確認します
  3. 具体的にする - 関連する詳細(プラットフォーム、インテグレーション、コンポーネント)を含めます
  4. 能動態を使う - 「追加する」「修正する」「更新する」を使い、「追加した」「修正した」「更新した」は避けます
  5. 簡潔にする - 1 行目を 72 文字未満にします

コメント