はじめに
Claude Codeに/commitを実行させると、コミットメッセージを自動生成してくれる。ただし、CLAUDE.mdに規約を書かなければフォーマットは安定しない。「fix: some bug fixes」「Changed the login form」。こういったメッセージが積み上がると、半年後にgit logを掘り起こしても何が起きたか分からない。
この記事では、Claude Code × Conventional Commitsの組み合わせでコミットメッセージを規約準拠にし、Changesetsと連携してCHANGELOGとバージョニングを自動化するチーム設計を解説する。
Claude Codeのコミットメッセージを規約に揃える
CLAUDE.mdにルールを書くと出てくるコミットと、書かないときの典型的なコミットを並べる。
# 規約なし(Claude Codeが出しやすい)
fix: some bug fixes
Update user authentication and add password reset feature and fix validation
# 規約あり(CLAUDE.mdに記述後)
feat(auth): add password reset flow via email verification
Add /api/auth/reset endpoint with token generation
Send reset email using SendGrid template
Implement 24-hour token expiration with Redis TTL
Closes #234CLAUDE.md本体が長くなるのを防ぐため、コミットルールは.claude/commands/commit.mdに分離して書き、CLAUDE.mdからは参照だけする(.claude/commands/でカスタムコマンドを定義できるのはClaude Code公式ドキュメントで確認済み)。
# .claude/commands/commit.md
フォーマット
(): (50字以内、命令形)
(「なぜ」変更したか、72文字/行)
# CLAUDE.md(本体)
コミットルール
コミット作成時は .claude/commands/commit.md のルールに従うことcommitlintで自動検証する
Claude Codeが生成したコミットメッセージがConventional Commitsに準拠しているか、commitlint + huskyで自動検証できる。
// .commitlintrc.json
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"subject-max-length": [2, "always", 72]
}
}# .husky/commit-msg
npx --no -- commitlint --edit "$1"Claude Codeが生成したコミットメッセージが規約に違反していると、huskyがコミットを拒否してフィードバックを返す。Claude Code自身がエラーを読んでメッセージを修正し、再コミットするため、ほとんどの場合に人間が介入しなくて済む。
Changesetsでバージョニング・CHANGELOGを自動化する
semantic-releaseとの使い分け
| 項目 | semantic-release | Changesets |
|---|---|---|
| バージョン決定 | コミット履歴から自動判定 | PRで人間が指定(明示的) |
| モノレポ対応 | 非公式プラグイン | 公式対応 |
| レビュー可能性 | 難しい | PRのchangesetをレビュー可 |
Changesetsはモノレポやチームレビュー重視の環境に向いている。PRにコード変更と一緒に.changeset/[uuid].mdを追加し、changeset versionでCHANGELOGとpackage.jsonを自動更新する。
Claude CodeにchangesetファイルをPRで書かせる
CLAUDE.mdにchangesetのルールを書いておくと、Claude Codeがchangesetファイルを生成してくれる。
## Changesetsルール
PRにコード変更が含まれる場合は、必ず.changeset/ディレクトリにchangesetファイルを追加する
形式:
"パッケージ名": patch | minor | major
変更の概要(ユーザー向けの説明)
バージョン種別: patch=バグ修正 / minor=後方互換の新機能 / major=破壊的変更Claude Codeへの依頼:
このPRの変更内容からchangesetファイルを生成して。
変更: UserコンポーネントにアバターURLのvalidationを追加
影響パッケージ: @myapp/ui生成される.changeset/happy-dogs-fix.md:
---
"@myapp/ui": patch
UserコンポーネントのアバターURLバリデーションを追加。不正なURL形式の場合にデフォルトアバターを表示。EM視点:コミット規約がCHANGELOGとオンボーディングを変える
規約なしのコミット履歴からCHANGELOGを生成すると「fix: various bugs」が並ぶだけだ。Conventional Commitsを徹底するとCHANGELOGが顧客向けリリースノートの素材になる。
CLAUDE.mdにコミット規約を書くことで、新メンバーがClaude Codeを使うだけで規約準拠のコミットが出てくる。「どう書けばいいか」を先輩エンジニアに聞く機会が減り、コードレビューで指摘する内容もコミットメッセージからロジックに移る。
BREAKING CHANGE:フッターをCLAUDE.mdで必須化すると、破壊的変更のログが機械的に蓄積される。SemVerのmajorバンプが「何を壊したか」を常に記録した状態になる。
.claude/commands/commit.mdでコミット規約を定義し、commitlintで検証を自動化する。Changesetsの導入はその後でも十分間に合う。
まとめ
コミットメッセージの質は、CLAUDE.mdに規約を書くだけで変わる。.claude/commands/commit.mdにConventional Commitsのルールを書いて、次のセッションでClaude Codeがどう変わるか確認してほしい。CHANGELOGが読める状態になれば、リリース前の棚卸し作業の手間が一気に減る。

コメント