gitmoji-conventional について
Gitmoji + Conventional Commits のコミットメッセージを作成・検査するスキルです。タイプの選択や本文、形式を案内し、スクリプトでメッセージを検査します。PR タイトルは検査対象外です。
主な機能
- 01主要な変更に基づくコミットタイプの選択
- 02Gitmoji と Conventional Commit 形式の適用
- 03簡潔で有用なコミット本文の作成
- 04メッセージ・ファイル・コミット範囲の検査
- 05破壊的変更とリバートの規約への対応
活用シーン
- 01コード変更のコミットメッセージを作成
- 02ブランチ内のコミットメッセージを監査
- 03文書化された規則に沿って PR タイトルを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ morzecrew/ agent-skills --skill gitmoji-conventionalインストール後、Claude Code で/gitmoji-conventionalを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/commit-format.mdgitmoji-mapping.mdscripts/check_commit_msg.py詳細
Gitmoji + Conventional Commits
<gitmoji> <type>[optional scope][!]: <description>
✨ feat(api): add OAuth login support
🐛 fix(auth): handle expired refresh tokens
♻️ refactor(cache): extract eviction policy
形式、破壊的変更のシグナル、revert の形式、フッター、SemVer との対応、PR タイトルのルールについては、references/commit-format.md を参照してください。
check_commit_msg.py はコミットメッセージに関するルールを適用しますが、PR タイトルはチェックされません。メッセージファイル、文字列として指定されたメッセージ、コミット範囲を読み込みますが、タイトルがこのスクリプトを通ることはありません。どちらを書く場合も、このリファレンスを読み込んでください。以下では、どのチェックでも判断できない部分を扱います。
主な type を選ぶ
- 主な変更を特定します。
- references/gitmoji-mapping.md から対応する gitmoji を選びます。選択時には読み込んでください。
- その gitmoji に対応する type を使います。gitmoji や type を独自に作ってはいけません。
よくある組み合わせ:✨ feat、🐛 fix、♻️ refactor、⚡️ perf、📝 docs、✅ test、👷 ci、📦️ build、🔧 chore、⏪️ revert。破壊的変更は type ではありません。💥 は基になる type と ! を組み合わせるため、リリースの分類ではその下にある feat/fix が引き続き読み取られます。
1 つのコミットには、1 つの意味上の変更を記述します。 変更が複数の type にまたがる場合は、リリースノートの見出しにする type を選び、残りは本文の詳細にします。ユーザーへの影響度による優先順位は次のとおりです。
fix > feat > perf > refactor > build > docs > test > chore
付随する編集は数えません。機能のためにテストを追加する機能コミットは ✨ feat です。テストはその機能のために存在するからです。互いに独立した変更が 2 つある場合は、2 つのコミットに分けてください。件名に混ぜず、別々であることを伝えます。
リリースツールが読み取るのは type なので、誤ったラベル付けには代償があります。chore として登録された機能はリリースノートに載らず、feat として登録されたリファクタリングはバージョンを不必要に引き上げます。書くときにどう感じたかではなく、変更が何をするかに基づいて選んでください。
レビュアーではなく git blame のために本文を書く
空でない行を 12 行にするのが目標で、20 行は絶対に超えてはいけません。 フッターとコードフェンスで囲まれたブロックは対象外です。そのため、スタックトレース、失敗する設定、ベンチマーク表など、コミットとともに残す必要がある証拠はフェンス内に記述します。
本文に含める内容:差分からは分からない動機(制約、バグの仕組み、却下した代替案)、読者が予測できない影響、そして省略が見落としに見える場合は、意図的に対応していないこと。
含めない内容:
- セッションの経過 — 「その後テストを実行したところ、X が見つかった」など。本文がコードの新しい状態ではなく、作者の作業内容を説明しているのが見分けるポイントです。これは PR の説明に記載します。
- 証拠の羅列 — テスト数、カバレッジ、ミューテーションの集計。PR では最新情報ですが、
git logでは古くなります。例外:数値そのものが理由である場合(「p99 が 150ms の基準に対して 240ms だった」)。 - 件名の言い換えや、差分ですでに分かるファイルの列挙。
- プロセスについての説明 — どのスキルに従ったか、どのパスで見つかったか、何回かかったか。
説明にそれ以上の分量が必要なら、コミット本文ではなく、RFC、issue、PR の説明に記載し、1 行でリンクしてください。また、見出しが必要だったり段落ごとに話題が変わったりする本文は、変更をまとめすぎている兆候です。段落が 6 つあるなら、通常は 6 つのコミットに分けるべきです。これは、実際に見つかった問題よりも主な type のルールを優先するということです。
チェック
python3 skills/gitmoji-conventional/scripts/check_commit_msg.py --message "✨ feat(api): add OAuth login"
python3 skills/gitmoji-conventional/scripts/check_commit_msg.py --range main..HEAD # audit a branch
python3 skills/gitmoji-conventional/scripts/check_commit_msg.py --file "$1" # commit-msg hook
本文の上限をここで文章として示すのではなく、スクリプトで適用するのには理由があります。この文章のルールが読まれ、同意されたにもかかわらず、同じセッション内で無視されたために追加されました(drift-to-gate)。
コミットメッセージまたは PR タイトルだけを出力してください。説明や、求められていない代案は出力しないでください。
関連スキル
keep-a-changelog— 同じ変更をユーザー向けの CHANGELOG.md の項目にまとめます。ここで破壊的変更を含むコミットを行う場合は、CHANGELOG にも明示的な破壊的変更の項目が必要です。このスキルがなくても、項目を記載してください。失敗なのは破壊的変更の行がないことであり、スキルがないことではありません。