conventional-commit について
Git の変更内容から Conventional Commits 形式のメッセージを作成するスキルです。開発者向けに、差分の確認、ファイルのステージ、種類とスコープの選択、コミットまでを案内し、無関係なコード変更を避けます。
主な機能
- 01Git の状態と差分の分析
- 02コミット種類とスコープの選択
- 03形式に沿ったメッセージの生成
- 04指定ファイルまたは全ファイルのステージ
- 05HEREDOC 形式でのコミット
- 06依頼のないプッシュや修正の回避
活用シーン
- 01コード変更を確認した後のコミット作成
- 02変更を機能、修正、保守作業に分類
- 03破壊的変更の説明や課題参照の追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ trancong12102/ agentskills --skill conventional-commitインストール後、Claude Code で/conventional-commitを入力して読み込まれたか確認します。
詳細
Conventional Commit Generator
Conventional Commits 1.0.0 に従ってコミットメッセージを生成します。
ワークフロー
-
git statusとgit diff HEADを実行して変更を分析します -
ファイルをステージングします。ユーザーが指定したファイルのみ、またはすべての場合は
git add -A -
変更内容からタイプとスコープを判断します
-
ユーザーのヒントを反映してコミットメッセージを生成します
-
書式を保持するため、HEREDOC 形式でコミットします。
git commit -m "$(cat <<'EOF' <type>(<scope>): <description> <body> <footer> EOF )" -
出力:
<hash> <subject>
適用範囲
実行すること: Git の変更を分析する、メッセージを生成する、ファイルをステージングする、コミットする
実行しないこと: コードを変更する、プッシュする(依頼された場合を除く)、ブランチを作成する、依頼なしにコミットを修正する
コミット形式
<type>[optional scope][!]: <description>
[optional body]
[optional footer(s)]
タイプの選択
| 変更内容 | タイプ | SemVer |
|---|---|---|
| 新機能 | feat | MINOR |
| バグ修正 | fix | PATCH |
| パフォーマンス改善 | perf | PATCH |
| コードの再構成(動作の変更なし) | refactor | - |
| コードのスタイル/フォーマット(ロジックの変更なし) | style | - |
| テストの追加/更新 | test | - |
| ドキュメントのみ | docs | - |
| ビルドシステム/依存関係 | build | - |
| CI/CD の設定 | ci | - |
| 以前のコミットの取り消し | revert | - |
| その他の保守タスク | chore | - |
注: SemVer に影響するのは
featとfixのみです。破壊的変更(感嘆符を付けた任意のタイプ、またはBREAKING CHANGEフッター)は MAJOR の変更となります。
件名行
- 最大長: 72 文字(読みやすさを考慮した推奨は 50 文字)
- 形式:
type(scope): descriptionまたはtype: description - 語調: 命令形の現在形(「added」や「adds」ではなく「add」)
- 大文字・小文字: 先頭は小文字
- 句読点: 末尾にピリオドを付けない
スコープ
スコープは、コードベースのどの部分が影響を受けるかを示します。モジュール、コンポーネント、または領域を表す名詞を使用します。
一般的なスコープのパターン:
- コンポーネント/モジュール:
feat(auth):、fix(parser):、refactor(api): - ファイル/領域:
docs(readme):、test(unit):、build(webpack): - 機能:
feat(dark-mode):、fix(checkout):
本文
- 件名との間に空行を 1 行入れます
- 何を、なぜ行うのかを説明し、どのように行うかは説明しません
- 複数の段落を含めることができます(段落間は空行で区切ります)
- 72 文字で折り返します
フッター
フッターは、:<space> または <space># を区切り文字とする git trailer 形式に従います。
一般的なフッター:
BREAKING CHANGE: <description>- API の破壊的変更Refs: #123またはRefs: JIRA-456- 関連する課題への参照Closes: #123またはFixes: #123- 課題をクローズするCo-authored-by: Name <email>- 共同作成者を記載するReviewed-by: Name <email>- レビュアーを記載するAcked-by: Name- 承認者を記載する
注: フッタートークンでは、スペースの代わりに
-を使用します(例:Reviewed byではなくReviewed-by)。例外として、BREAKING CHANGEではスペースを使用できます。
破壊的変更
破壊的変更を示す方法は 2 つあります(強調のため、両方を使用できます)。
-
感嘆符: 件名のコロンの前に感嘆符を追加します
feat(api)!: remove deprecated endpoints -
フッター: フッターに
BREAKING CHANGE:またはBREAKING-CHANGE:を追加しますfeat(api): redesign authentication flow BREAKING CHANGE: OAuth tokens now expire after 1 hour instead of 24 hours.
例
シンプルな機能:
feat: add email notifications for new messages
スコープ付きのバグ修正:
fix(cart): prevent ordering with empty shopping cart
ドキュメントの更新:
docs(api): add authentication examples to README
本文とフッターを含む破壊的変更:
feat(api)!: redesign user authentication endpoints
Migrate from session-based auth to JWT tokens for better scalability.
The new system supports refresh tokens and configurable expiration.
BREAKING CHANGE: /api/login now returns JWT instead of session cookie.
Clients must include Authorization header with Bearer token.
Refs: JIRA-1337
コミットの取り消し:
revert: let us never again speak of the noodle incident
Refs: 676104e, a215868
複数のスコープにまたがる変更(最も重要なものを使用):
feat(auth): add OAuth2 support with Google provider
Adds Google OAuth2 login flow with automatic account linking.
Co-authored-by: Jane Doe <[email protected]>
Closes: #42
アンチパターン
よくある次の間違いを避けてください。
| 悪い例 | 良い例 | 理由 |
|---|---|---|
Update code | fix(auth): validate token expiration | 具体的に記述する |
Fixed bug | fix: prevent null pointer in parser | 現在形を使う |
WIP | WIP のコミットは避ける | 完了した単位でコミットする |
Add feature. | feat: add dark mode toggle | 末尾にピリオドを付けない |
Added tests | test: add unit tests for parser | 命令形を使う |
FEAT: Add... | feat: add... | 種別は小文字にする |
misc changes | chore: update dependencies | 内容を具体的に記述する |