conventional-commits について
開発者やエージェント向けに、Conventional Commits に沿ったコミットメッセージを定めるスキルです。タイプ、スコープ、破壊的変更の表記、説明文の指針を扱います。
主な機能
- 01Conventional Commitsのメッセージ構造
- 02コミットタイプと任意のスコープ
- 03破壊的変更の表記
- 04命令形による簡潔な説明
- 05セマンティックバージョニングとの関連
活用シーン
- 01一貫したGitコミットメッセージの作成
- 02マージコミットメッセージの準備
- 03変更履歴に使えるコミットの生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bastos/ skills --skill conventional-commitsインストール後、Claude Code で/conventional-commitsを入力して読み込まれたか確認します。
詳細
Conventional Commits
すべてのコミットメッセージをConventional Commits仕様に従って記述してください。これにより、変更履歴の自動生成、セマンティックバージョニング、より分かりやすいコミット履歴を実現できます。
フォーマットの構造
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
コミットの種類
SemVer に対応するコアタイプ
変更内容に合致する場合はこれらのタイプを使用してください。仕様上、暗黙的な SemVer の意味を持つのはこれらのタイプのみです。
feat:- 新機能(セマンティックバージョニングの MINOR に対応)fix:- バグ修正(セマンティックバージョニングの PATCH に対応)
よく使われる追加タイプ
docs:- ドキュメントのみの変更style:- コードスタイルの変更(フォーマット、セミコロンの不足など)refactor:- バグ修正や新機能の追加を伴わないコードのリファクタリングperf:- パフォーマンスの改善test:- テストの追加や更新build:- ビルドシステムや外部依存関係の変更ci:- CI/CD 設定の変更chore:- src ファイルや test ファイルを変更しないその他の変更revert:- 以前のコミットの取り消し
スコープ
任意のスコープを指定すると、コードベース内の該当箇所について追加の情報を示せます。
feat(parser): add ability to parse arrays
fix(auth): resolve token expiration issue
docs(readme): update installation instructions
説明
- タイプ/スコープの後に、コロンとスペースを挟んですぐに記述します
スタイルに関する推奨事項:
- 命令形を使います(「added feature」や「adds feature」ではなく「add feature」)
- 先頭の文字を大文字にしません
- 末尾にピリオドを付けません
- 72 文字以内(タイプとスコープを含む)を推奨します
- 読みやすさを高めるため、50 文字以内を推奨します
本文
- 追加の情報を示す、任意の長めの説明です
- 説明の後に空行を 1 行入れてから記述します
- 複数の段落で構成できます
- 変更の「方法」ではなく「内容」と「理由」を説明します
破壊的変更
破壊的変更は、次の 2 つの方法で示せます。
1. タイプ/スコープに ! を使用する
feat!: send an email to the customer when a product is shipped
feat(api)!: send an email to the customer when a product is shipped
2. BREAKING CHANGE フッターを使用する
feat: allow provided config object to extend other configs
BREAKING CHANGE: `extends` key in config file is now used for extending other config files
仕様では BREAKING-CHANGE: も同義のフッタートークンとして扱われますが、プロジェクトの慣習で別途定められていない限り、BREAKING CHANGE: を使用してください。
3. 両方の方法を使用する
chore!: drop support for Node 6
BREAKING CHANGE: use JavaScript features not available in Node 6.
例
シンプルな機能追加
feat: add user authentication
スコープ付きの機能追加
feat(auth): add OAuth2 support
本文付きのバグ修正
fix: prevent racing of requests
Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.
Remove timeouts which were used to mitigate the racing issue but are
obsolete now.
破壊的変更
feat!: migrate to new API client
BREAKING CHANGE: The API client interface has changed. All methods now
return Promises instead of using callbacks.
ドキュメントの更新
docs: correct spelling of CHANGELOG
フッター付きの複数段落の本文
fix: prevent racing of requests
Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.
Remove timeouts which were used to mitigate the racing issue but are
obsolete now.
Reviewed-by: Z
Refs: #123
ガイドライン
- 必ずタイプを使用する - すべてのコミットは、タイプ、コロン、スペースの順で始めます
- 命令形を使用する - 「このコミットを適用すると、〜する」という文を完成させるように記述します
- 具体的に記述する - 説明から変更内容が明確に伝わるようにします
- 対象を絞る - 1 つのコミットにつき、論理的にまとまった変更を 1 つにします
- 必要に応じてスコープを使用する - スコープを使うと、コードベース内の変更を分類しやすくなります
- 破壊的変更を記録する - 破壊的変更は必ず明確に示します
セマンティックバージョニングとの対応
fix:→ PATCH バージョンを上げます(1.0.0 → 1.0.1)feat:→ MINOR バージョンを上げます(1.0.0 → 1.1.0)- BREAKING CHANGE → MAJOR バージョンを上げます(1.0.0 → 2.0.0)
使用する場面
次の場面でこの形式を使用してください:
- すべての git コミット
- コミットメッセージの生成
- プルリクエストのマージコミット
- ユーザーからコミットメッセージや git コミットについて質問された場合
避けるべきよくある間違い
❌ Added new feature(過去形、大文字始まり)
✅ feat: add new feature(命令形、小文字始まり)
❌ fix: bug(曖昧すぎる)
✅ fix: resolve null pointer exception in user service
❌ feat: add feature(冗長)
✅ feat: add user profile page
❌ feat: Added OAuth support.(過去形、末尾にピリオド)
✅ feat: add OAuth support