commitcheck について
commitcheckは、Gitの直近のコミット履歴を検査するコマンドラインツール兼MCPサーバーです。リポジトリ固有の慣例に応じて署名やメッセージ形式を判定し、問題をコミット単位で示します。
主な機能
- 01直近50件のコミットを検査
- 02長すぎる件名や仮の件名を検出
- 03DCO署名トレーラーを確認
- 04主要なメッセージ形式を判定
- 05短縮SHA付きで問題を報告
活用シーン
- 01マージ前のコミット品質確認
- 02DCO採用リポジトリで署名漏れを探す
- 03ローカルの形式から外れたコミットを特定
MCP 対応
MCPサーバーは `check_commits` ツールを提供します。リポジトリのパスを受け取り、検査結果をJSONで返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | 確認する対象パス |
詳細
commitcheck
Git リポジトリの直近の履歴を対象とするコミットの衛生チェックツールです。直近の 50 件のコミットを読み込み、件名の長さ、プレースホルダーの件名、DCO の Signed-off-by トレーラー、不正な形式のトレーラー、および各コミットがリポジトリで実際に使われているメッセージ規約に従っているかをチェックします。各検出結果には、該当するルール名とコミットの短縮 SHA が記載されます。
インストール
npx @reneturcios/commitcheck check [path]
または、グローバルにインストールします。
npm install -g @reneturcios/commitcheck
Node 20 以降と、PATH 上の git が必要です。
CLI
commitcheck check [path] [--json] # check a repo (default path: .)
commitcheck mcp # run the MCP server on stdio
commitcheck --version # print the version
終了コード:判定結果が CLEAN の場合は 0、FINDINGS の場合は 1、使用方法の誤りまたは読み取り不能な対象の場合は 2、読み取り側が出力パイプを早期に閉じた場合は 141 です(シェルから見た SIGPIPE による終了に相当します)。
検出結果は git log の順序(新しい順)で出力され、同じ履歴に対しては常に同じ順序になります。
MCP
MCP サーバーは、次のツールを 1 つ公開します。
check_commits。引数pathを指定すると、CLI と同じチェックを実行し、レポート全体を JSON で返します。
ルール
| ルール | 重大度 | 説明 |
|---|---|---|
SUBJECT-TOO-LONG | medium | 件名が 72 文字を超えています。 |
SUBJECT-VAGUE | low | 件名が空、または wip、fix、update、changes、. などのプレースホルダーです。 |
NO-SIGNOFF | medium | DCO 規約に従う履歴を持つリポジトリで、コミットに Signed-off-by トレーラーがありません(下記参照)。 |
CONVENTION-BREAK | low | 件名が対象範囲の主要なメッセージスタイルに反しています(下記参照)。 |
MERGE-COMMIT | info | マージコミットです。状況把握のために報告されます。マージコミットが info を超える重大度で検出されることはありません。 |
TRAILER-MALFORMED | low | メールアドレス形式を含まない Signed-off-by 行です。たとえば、<[email protected]> がない Signed-off-by: Jane Doe です。 |
対象範囲に medium の検出結果がない場合、判定は CLEAN です。それ以外の場合は FINDINGS です。low と info の検出結果は報告されますが、判定には影響しません。
適応型ルールの概要
commitcheck は特定のスタイルを押し付けません。2 つの規約チェックはいずれも、チェック対象の範囲から判断されます。
- DCO/サインオフ。 リポジトリがサインオフを実際に使っていることを確認できる場合に限り、コミットに
NO-SIGNOFFのフラグを付けます。具体的には、対象範囲内の 他の コミットの少なくとも半数に、正しい形式のSigned-off-byトレーラーがあることが条件です。リポジトリがサインオフを使っていない場合、サインオフがないことを理由にフラグが付くコミットはありません。不正な形式のサインオフ行は、サインオフとして数えられません。 - メッセージ規約。 2 種類のスタイルを追跡します。Conventional Commits 形式の件名(
type: summaryまたはtype(scope): summary)と、先頭を大文字にした命令形の件名(Add the thing)です。対象範囲のマージ以外のコミットの少なくとも 70 パーセントで一方のスタイルが使われている場合、それを主要なスタイルとし、それに反するコミットにはCONVENTION-BREAKのフラグを付けます。どちらのスタイルも 70 パーセントに達しない場合、スタイル違反は報告されません。
制限事項
- チェック対象は直近 50 件のコミットのみです。
- スタイルの検出は統計的に行われます。履歴が短い場合やスタイルが混在している場合は、主要なスタイルが特定されず、規約違反が報告されないことがあります。
- チェックするのはサインオフの有無であり、署名の有効性ではありません。commitcheck は、メールアドレス形式を含む
Signed-off-byトレーラーがあることを確認しますが、署名者が作成者かどうか、また署名が本物かどうかは検証しません。 - マージコミットは
Merge ...という件名から検出されます。これは git のデフォルト形式です。Mergeで始まる手書きの件名もマージコミットとして報告されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。