mcpField
C
committing-with-commitlint

committing-with-commitlint

github.com/conventional-changelog開発18.8k64 回インストール今日更新
リポジトリ

committing-with-commitlint について

committing-with-commitlintは、commitlintを使うリポジトリでコミットメッセージを書くためのスキルです。リポジトリのルール確認、メッセージ全体の検証、エラーに基づく修正を支援します。

主な機能

  1. 01commitlintの設定とフックを検出
  2. 02リポジトリで有効なルールを確認
  3. 03規定形式に沿ったメッセージ作成
  4. 04標準入力でメッセージ全体を検証
  5. 05報告されたルールに基づいて修正

活用シーン

  1. 01リポジトリで初めてコミット
  2. 02件名と本文の制約を確認
  3. 03コミットフックの拒否理由を調査
  4. 04コミット前にメッセージ全体を検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/conventional-changelog/commitlint --skill committing-with-commitlint

インストール後、Claude Code で/committing-with-commitlintを入力して読み込まれたか確認します。

詳細

commitlint を使用するリポジトリでのコミット

commitlint は、コミットメッセージがリポジトリで設定された規約(通常はConventional Commits)に準拠しているかを検証します。設定がルールです。コミットメッセージを書く前に設定を読み、コミットが拒否された場合はエラー出力を確認してください。

1. リポジトリで commitlint が使用されているか確認する

次のいずれかに該当する場合、commitlint が使用されています。

  • リポジトリのルートに設定ファイルがある: .commitlintrc、.commitlintrc.{json,yaml,yml,js,cjs,mjs,ts,cts,mts}、 または commitlint.config.{js,cjs,mjs,ts,cts,mts}
  • package.json に "commitlint" フィールドがある
  • commitlint を実行する commit-msg フックがある(.husky/commit-msg、lefthook.yml、 または .git/hooks/commit-msg を確認してください)

2. 適用されるルールを読む

npx commitlint --print-config json

これがゼロ以外の終了コードを返す場合、設定自体に問題があります(例:解決できない extends)。推測せず、標準エラー出力のエラーを確認してください。

rules オブジェクトを確認してください。各ルールは [severity, applicability, value] です。

  • severity — 0 = 無効、1 = 警告、2 = エラー(コミットをブロックするのはエラーのみ)
  • applicability — "always" = 条件を満たす必要がある、"never" = 条件を満たしてはならない
  • value — ルールのパラメーター(リスト、数値、または文字列)

メッセージを書く際に特に重要なルールは次のとおりです。

ルール制御する内容
type-enum使用できる type(例:feat、fix、chore、...)
scope-enum使用できる scope(空のリスト = 任意の scope を使用可能)
scope-empty[2, "never"] = scope が必須、[2, "always"] = scope が禁止
subject-case"never" の場合:subject で使用してはならない大文字・小文字の形式
subject-full-stop"never" と "." の場合:subject をピリオドで終えてはならない
header-max-length1 行目の最大文字数
body-leading-blanksubject と body の間に空行が必要
body-max-line-lengthbody の各行の最大文字数

ルールが記載されていない場合、または無効(severity 0)の場合、そのルールは適用されません。判断に迷う場合は、一般的なプリセットに準拠する保守的な基準を使用してください。type は小文字にし、末尾にピリオドを付けず、header は 72 文字未満にします(config-conventional では最大 100 文字まで許容されます)。設定がまったくない状態で commitlint を実行すると、既定の規約にフォールバックするのではなく、empty-rules エラーで失敗する点に注意してください。

3. メッセージを書く

形式:type(scope): subject — scope-empty が [2, "never"] でない限り、scope は省略可能です。

@commitlint/config-conventional に準拠する例:

feat(parser): add support for inline issue references

Explain what changed and why. Separate the body from the subject with a blank
line (body-leading-blank) and keep lines within body-max-line-length.

Closes #123

4. コミット前に検証する

printf '%s' "feat(parser): add support for inline issue references

Explain what changed and why.

Closes #123" | npx commitlint

出力がなく、終了コードが 0 であれば、メッセージは合格です。1 行目だけではなく、メッセージ全体(header と body)を検証してください。body のルールもチェックされます。コミット前に検証するほうが、コミットに失敗してから対処するよりも手間がかかりません。

5. commit-msg フックに拒否された場合は自己修正する

拒否時の出力には、違反した各ルールが角括弧内に示されます。

⧗   --- input ---
Feat: Added new parser.
✖   subject must not be sentence-case, start-case, pascal-case, upper-case [subject-case]
✖   subject may not end with full stop [subject-full-stop]
✖   type must be lower-case [type-case]
✖   type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum]

✖   found 4 problems, 0 warnings
  • 角括弧内に示されたルールのみを修正し、それ以外はすべて同じままにしてください。
  • 標準入力で再検証し(ステップ 4)、その後コミットを再試行してください。
  • git commit --no-verify でフックを絶対に回避しないでください。常にメッセージを修正するのが正しい対応です。

コメント