vibe-commit-message
Gitのコミットメッセージ作成、レビュー、修正時に、Conventional Commitsやi18n対応、パフォーマンス改善、セキュリティ修正など、様々なケースでAIが理解しやすい、高品質なコミット履歴を作成するのを支援するSkill。
📜 元の英語説明(参考)
Use when writing, revising, reviewing, or critiquing git commit messages, especially commit bodies, Conventional Commits, release commits, dependency updates, monorepo/package changes, i18n/localization commits, performance work, CI/build automation, security/data-loss fixes, agent-authored history, LLM-readable project history, or requests for vibe/AI-friendly commit context.
🇯🇵 日本人クリエイター向け解説
Gitのコミットメッセージ作成、レビュー、修正時に、Conventional Commitsやi18n対応、パフォーマンス改善、セキュリティ修正など、様々なケースでAIが理解しやすい、高品質なコミット履歴を作成するのを支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o vibe-commit-message.zip https://jpskill.com/download/9634.zip && unzip -o vibe-commit-message.zip && rm vibe-commit-message.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9634.zip -OutFile "$d\vibe-commit-message.zip"; Expand-Archive "$d\vibe-commit-message.zip" -DestinationPath $d -Force; ri "$d\vibe-commit-message.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
vibe-commit-message.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
vibe-commit-messageフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Vibe Commit Message
概要
差分を再生するためではなく、将来のエージェントやメンテナのためにコミットメッセージを記述します。件名にはコミットが何を達成するかを記述します。本文には、パッチ自体では確実に説明できないコンテキスト、要件、制約、トレードオフ、および意図的な非目標を保持します。
コミットメッセージを永続的な散文として扱います。確定する前に、メッセージが簡潔で、意味を保持し、言語を意識し、スタンドアロンで、正確なリポジトリテンプレートに忠実であり、必要な警告を保持し、捏造されたコンテキストがないことを確認してください。
このスキルは、メッセージの内容のみを制御します。リポジトリの既存のステージング、コミット、署名、リリース、および Conventional Commit のルールに従ってください。ユーザーまたはアクティブなワークフローがコミットを承認していない限り、コミットを作成しないでください。
コア・ルール
差分を書き写さないでください。差分では確実に説明できない理由を保持します。
本文を書く前に、候補となる情報を価値によって分類します。
| 情報タイプ | コミット本文の扱い |
|---|---|
git show --stat、ファイル名、またはパッチのざっと見で明らかなもの |
公開コントラクトを変更する場合、または検索アンカーとして必要な場合を除き、省略 |
| ユーザーレポート、本番環境の症状、失敗したワークフロー、問題の要件、リリースの制約、または互換性の約束 | 含める |
| 妥当な代替案間の設計上の選択 | 選択されたパスとその理由を含める |
| 将来の呼び出し元が検索するフィールド、コマンド、環境変数、エラーコード、API名、またはツール名 | アンカーとして控えめに含める |
| テストファイル名、個々のテストケース、ヘルパー名、移動された関数、または行ごとのメカニズム | 通常は省略 |
| 機械的な同期、依存関係の更新、生成されたロックの更新、または動作の詳細がないカタログの更新 | 件名のみを優先します。範囲が限定されている場合、またはコンテキストがない場合にのみ、1文を追加します。 |
| i18n、ローカリゼーション、または翻訳されたコピーの変更 | ロケール、ユーザー向けのコピーの意図、および変更されていないソース/コードの範囲を保持します。コードが変更されない限り、製品の動作が変更されたとは主張しないでください。 |
| モノレポまたは複数のパッケージの変更 | 共有コントラクト、バージョン管理、生成されたクライアント、またはワークフローの理由を含めます。共有の理由が存在しない場合は、パッケージを分割します。 |
| リリースコミット | リリースの慣例に従います。変更ログを複製せずに、リリースの契約、破壊/移行ステータス、および検証を要約します。 |
| パフォーマンス、CI/ビルド、公開、セキュリティ/プライバシー、またはデータ損失の変更 | 提供されたワークロード、ツールチェーン、脅威境界、破壊的な順序付け、およびガードレールの証拠を含めます。測定、セキュリティの主張、またはロールアウトのステータスを発明しないでください。 |
| ロールバックフラグ、移行パス、破壊的変更、保持されたレガシー動作、または意図的な no-op | 含める |
| 既知の制限、延期されたフォローアップ、またはこのコミットで受け入れられたリスク | 含める |
| 信頼性またはレビューリスクを変更する検証 | 簡潔に含める |
利用可能な証拠が変更が存在する理由を説明しない場合は、動機を発明しないでください。観察可能な動作からより小さなメッセージを書き、コミットがそれなしでは誤解を招く場合にのみ、不足しているコンテキストを要求します。
メッセージの形状
リポジトリの件名スタイルを使用します。Conventional Commits の場合は、以下を優先します。
type(scope): outcome
文書化されているか、最近の履歴にある type の値を使用します。ローカルリストが存在しない場合は、一般的な Conventional Commit タイプを使用します。
feat、fix、refactor、perf、docs、test、build、ci、chore、
style、または revert。change のような一般的なタイプを発明しないでください。
件名には、編集行為ではなく、達成された動作または契約を記述する必要があります。
- 良い例:
fix(cache): count remapped jars in eviction limits - 弱い例:
fix(cache): update source-service and tests - 良い例:
test(search): split source-service search slice - 弱い例:
test: move tests into another file
自明でないコミットの場合は、安定したラベルが付いた本文を使用します。実際のコンテンツがあるセクションのみを含めます。
Context:
- どのような問題、ユーザーレポート、本番環境の症状、レビューの発見、リリースの制約、またはエージェントの失敗がこれを引き起こしましたか?
Decision:
- どのようなパスが選択され、どのような重要な代替案または制約がそれを形作りましたか?
Behavior:
- どのようなユーザーから見える、API、CLI、スキーマ、データ、互換性、またはワークフローの契約が変更されましたか?
Compatibility:
- 何が壊れ、移行し、ロールバックし、意図的に変更されずに残り、またはレガシー動作を維持しますか?
Verification:
- どのような証拠が信頼性にとって重要ですか?テストケースのインベントリよりも、動作カバレッジ、再現性、スモーク結果、ベンチマーク、または変更されていないカバレッジを優先します。
Out of scope:
- 何が意図的に解決されず、延期され、または依然として危険ですか?
小さなコミットの場合は、短い段落を使用するか、本文を使用しません。件名と差分が将来の読者の質問にすでに答えている場合は、本文を省略します。機械的な同期、依存関係の更新、生成されたロックの更新、または動作の詳細がないカタログの更新の場合は、件名のみを優先します。件名が伝えることができない限定的な範囲または欠落しているコンテキストを記録する場合にのみ、1文を追加します。
リポジトリまたはワークフローで Co-Authored-By や Signed-off-by などのコミットトレーラーが必要な場合は、空白行で散文の本文から区切られた最後のフッターブロックにそれらを保持します。Verification: ... のような最後の1行の Key: value 段落で本文を終了することは避けてください。git commit --trailer でトレーラーを追加する直前に、Git はその行をトレーラーブロックの一部として扱う可能性があります。フッターの前に箇条書きのあるラベル付き本文セクションを優先します。
Verification:
- `git diff --check` passed.
Co-Authored-By: Codex <noreply@openai.com>
書き込みワークフロー
- 書き込む前にコミットの範囲を検査します。ステージングされた差分またはターゲットコミット、最近のローカルメッセージスタイル、および意図を説明する参照されている問題、計画、変更ログエントリ、リリースノート、インシデント、またはレビューの発見。
- 将来の読者が抱く可能性のある質問を特定します。なぜこれが存在するのか、呼び出し元がどのように影響を受けるのか、動作が変更されたかどうか、ロールバックする方法、または何が安全でないままなのか。
- コミットが複数の変更をバンドルしている場合は、結束の理由を特定します。共有ユーザーワークフロー、共有公開コントラクト、共有ロールバックパターン
(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Vibe Commit Message
Overview
Write commit messages for future agents and maintainers, not for replaying the diff. The subject says what the commit achieves. The body preserves the context, requirements, constraints, tradeoffs, and deliberate non-goals that the patch cannot reliably explain by itself.
Treat commit messages as durable prose. Before finalizing, check that the message is concise, meaning-preserving, language-aware, standalone, faithful to exact repository templates, preserves required warnings, and is free of invented context.
This skill controls message content only. Follow the repository's existing staging, commit, signing, release, and Conventional Commit rules. Do not create a commit unless the user or active workflow has authorized committing.
Core Rule
Do not transcribe the diff. Preserve the reasoning that the diff cannot reliably explain.
Before writing a body, classify candidate information by value:
| Information type | Commit-body treatment |
|---|---|
Obvious from git show --stat, filenames, or a skim of the patch |
Omit unless it changes a public contract or is needed as a search anchor |
| User report, production symptom, failed workflow, issue requirement, release constraint, or compatibility promise | Include |
| Design choice between plausible alternatives | Include the chosen path and why |
| Field, command, env var, error code, API name, or tool name future callers search for | Include sparingly as anchors |
| Test file names, individual test cases, helper names, moved functions, or line-by-line mechanics | Usually omit |
| Mechanical sync, dependency bump, generated lock update, or catalog refresh without behavior details | Prefer subject-only; add one sentence only for limited scope or absent context |
| i18n, localization, or translated-copy change | Preserve locale, user-facing copy intent, and unchanged source/code scope; do not claim product behavior changed unless code changed |
| Monorepo or multiple package change | Include the shared contract, versioning, generated-client, or workflow reason; split packages when no shared reason exists |
| Release commit | Follow release convention; summarize release contract, breaking/migration status, and verification without duplicating the changelog |
| Performance, CI/build, publishing, security/privacy, or data-loss change | Include supplied workload, toolchain, threat boundary, destructive ordering, and guardrail evidence; do not invent measurements, security claims, or rollout status |
| Rollback flag, migration path, breaking change, preserved legacy behavior, or intentional no-op | Include |
| Known limitation, deferred follow-up, or risk accepted for this commit | Include |
| Verification that changes confidence or review risk | Include briefly |
If the available evidence does not explain why the change exists, do not invent motivation. Write a smaller message from observable behavior and ask for missing context only when the commit would be misleading without it.
Message Shape
Use the repository's subject style. For Conventional Commits, prefer:
type(scope): outcome
Use documented or recent-history type values. If no local list exists, use
common Conventional Commit types:
feat, fix, refactor, perf, docs, test, build, ci, chore,
style, or revert. Do not invent generic types such as change.
The subject should name the achieved behavior or contract, not the editing act:
- Good:
fix(cache): count remapped jars in eviction limits - Weak:
fix(cache): update source-service and tests - Good:
test(search): split source-service search slice - Weak:
test: move tests into another file
For non-trivial commits, use a body with stable labels. Include only sections that have real content:
Context:
- What problem, user report, production symptom, review finding, release
constraint, or agent failure triggered this?
Decision:
- What path was chosen, and what important alternative or constraint shaped it?
Behavior:
- What user-visible, API, CLI, schema, data, compatibility, or workflow contract
changed?
Compatibility:
- What breaks, migrates, rolls back, remains intentionally unchanged, or keeps
legacy behavior working?
Verification:
- What proof matters for confidence? Prefer behavioral coverage, reproduction,
smoke result, benchmark, or unchanged coverage over a test-case inventory.
Out of scope:
- What was intentionally not solved, deferred, or still risky?
For small commits, use a short paragraph or no body. If the subject plus diff already answer the future reader's questions, omit the body. For mechanical syncs, dependency bumps, generated lock updates, or catalog refreshes without behavior details, prefer subject-only; add one sentence only when it records limited scope or missing context the subject cannot carry.
When the repository or workflow requires commit trailers such as
Co-Authored-By or Signed-off-by, keep them in a final footer block separated
from the prose body by a blank line. Avoid ending the body with a final
single-line Key: value paragraph such as Verification: ... immediately
before adding trailers with git commit --trailer; Git may treat that line as
part of the trailer block. Prefer labeled body sections with bullets before the
footer:
Verification:
- `git diff --check` passed.
Co-Authored-By: Codex <noreply@openai.com>
Writing Workflow
- Inspect the commit scope before writing: staged diff or target commit, recent local message style, and any referenced issue, plan, changelog entry, release note, incident, or review finding that explains intent.
- Identify the future reader's likely question: why this exists, how callers are affected, whether behavior changed, how to roll it back, or what remains unsafe.
- If the commit bundles multiple changes, identify the cohesion reason: shared user workflow, shared public contract, shared rollback path, shared plumbing, or one verification/review surface. Split the commit when the only connection is "these were in the same plan" or "the agent touched them together." For shared plumbing, name the stable workflow or contract before naming any symbol. A prompt-supplied component, prop, helper, or file name is not a durable anchor merely because it appears in the prompt. Prefer workflow labels such as save path, header handoff, sample refresh, request parsing, or generated-client contract unless the symbol is public API, diagnostic output, or the only durable search term.
- Draft the subject from the outcome.
- Draft the body from non-diff context and durable anchors. Keep implementation names only when they are public contracts, diagnostics, commands, env vars, or durable search anchors.
- Cut any bullet that a future agent could recover just as well from the diff,
git show --stat, or test names. - Check that every claim is supported by the diff, supplied context, local evidence, or a primary source. Remove unsupported impact, reliability, performance, security, or user-benefit claims.
Common Commit Shapes
- i18n / localization. Name the locale and copy intent. Preserve paths, locale tags, message keys, and source strings as identifiers. State when source strings or code are unchanged. Do not turn copy clarification into a product, security, or all-locales claim.
- Monorepo / multiple packages. Name the shared contract: API shape, generated client, version alignment, shared runtime behavior, or one verification surface. Say why the packages move together without phrasing it as "in one commit" or "as part of this commit." List package names only as search anchors. Split unrelated package edits.
- Dependency update. Include the supplied reason: security advisory, runtime compatibility, framework peer range, CI requirement, or API migration. For a lockfile-only or routine bump, prefer subject-only or one limited-scope sentence. Do not claim security, performance, or compatibility from the version bump itself.
- Performance work. Name the workload and constraint: hot path, corpus, cache boundary, ordering contract, benchmark, or resource ceiling. Include measured deltas only when supplied. Preserve compatibility or correctness invariants that were kept while optimizing.
- CI / build / publishing automation. Preserve the failing runner, toolchain, permission, package-manager, or registry constraint. Explain the chosen narrow fix instead of listing YAML steps. Do not claim deployment, publication, or security hardening unless that action or evidence is supplied.
- Security, privacy, or data-loss fix. Name the concrete failure mode, threat boundary, destructive ordering, credential/store invariant, or fail-closed behavior. Keep exact error codes, env vars, file names, or commands only when they are audit or recovery anchors. Do not turn a local invariant into a broad "secure" or "data safe" claim.
- Release commit. Follow the repository's release subject and trailer
convention. Summarize the release contract: version, breaking changes,
migration path, and verification. Do not paste the changelog, add unreleased
behavior, or claim publishing/rollout unless supplied. For release preparation,
prefer
chore(release): 1.4.0orchore(release): prepare v1.4.0; avoidpublish,deploy,roll out,ship, andcutin both subject and body unless that action happened. Use neutral body verbs such asPrepares,Promotes Unreleased entries into,Records, orIncludes.
What to Preserve
Commit bodies are most useful when they capture:
- The triggering failure mode: production restart loop, flaky smoke, OOM, stale release note, confused caller, broken CI environment.
- The caller or user impact: could not recover, saw the wrong namespace, lost a diagnostic, received a misleading contract.
- The constraint: public API compatibility, cache identity, release-history accuracy, sandbox behavior, cost, latency, unsafe destructive path, CI runner capability.
- The selected design: cooperative budget instead of hard cancellation, structural assertion instead of exact prose, route-handler auth instead of Express middleware, local toolchain pin instead of global upgrade.
- The cohesion reason when multiple changes land together: shared UI plumbing, one public contract, one migration path, one review finding class, or one verification surface.
- Compatibility and escape hatches: breaking change, migration, rollback env var, legacy envelope preserved, no data migration required.
- Deliberate exclusions: follow-up spec, unsupported platform, no broad refactor, no AbortSignal threading, no production benchmark.
- Verification signal: reproduced failure, regression test, manual smoke, CI check, benchmark delta, coverage unchanged, guardrail still passing.
Durable References
Commit messages should stand alone after scratch plans, chat context, and review cycle state disappear.
Keep durable repository or issue-system references: issue IDs, incident IDs, ADRs, release versions, public API names, stable design docs, and commit SHAs.
Translate references that are likely to rot:
- Replace plan item numbers with the actual requirement or user workflow.
- Replace review finding IDs with the invariant or failure mode the finding exposed.
- Replace "3 review cycles" with the specific class of defects fixed, unless the review-cycle count itself is an audit requirement.
- Replace "per the plan" with the concrete scope or acceptance criterion.
When a plan or review reference explains why unrelated-looking changes are bundled, preserve that as a cohesion reason instead of as a bare identifier.
What to Cut
Remove or compress:
- File-by-file change logs.
- "Add/update/remove" bullets that mirror filenames or symbols.
- Mechanical refresh bodies that only restate subject-level facts.
- Long lists of fields, tests, imports, or private implementation names (components, props, helpers, files, functions).
- Prompt-supplied private names that only explain how the patch was wired. Turn them into a workflow or contract label instead.
- Claims that every test case was added unless the test matrix itself is the commit's contract.
- Generic benefits such as "improves reliability", "enhances maintainability", "makes future work easier", "faster", or "more secure" without concrete evidence.
- Prompt or conversation leaks:
as requested,per the plan,above,Claude noticed,this commit,in this commit,in one commit. - Bare scratch references:
plan item 8.3,cycle 2 F1,the backlog file, or deleted local note paths when they are not durable citations.
Examples
Incident or production symptom
Prefer:
feat(validate-mixin,supervisor): return structured restart diagnostics
Context:
- `validate-mixin` could restart the MCP worker before callers learned which
stage, namespace, or input caused the failure.
Decision:
- Add cooperative stage budgets and a typed restart envelope so callers can
narrow the request or report a real crash instead of parsing a generic retry.
Compatibility:
- Legacy JSON-RPC errors remain for non-tool calls; env flags can disable the new
budget and restart-envelope paths.
Out of scope:
- Hard cancellation of hung downstream awaits and `validate-project`
partial-success are separate follow-ups.
Avoid a long field inventory unless those fields are the public contract a caller must search for.
Internal test refactor
Prefer:
test(search): split source-service search coverage
The source-service test file had become the slowest and largest local feedback
surface. Move the search-specific cases and shared metric readers into a focused
slice while keeping total coverage unchanged.
Avoid listing every moved helper and test name; the rename and stat already show that.
Thin evidence
When the diff shows behavior but no rationale:
fix(parser): preserve fractional Retry-After values
Use numeric parsing that keeps fractional seconds instead of truncating them.
No rollout, incident, or benchmark context was supplied.
Do not invent an outage, customer impact, or performance reason.
Mechanical sync
Prefer subject-only when it carries the whole change:
chore(skills): refresh bundled catalog and lock hashes
If one important limitation would otherwise be lost:
chore(skills): refresh bundled catalog and lock hashes
No upstream behavior details were supplied beyond the catalog refresh.
Avoid a body that only says the same thing as the subject in longer words.
Release commit
Prefer a neutral release-preparation subject. If a required footer trailer is present, keep it after a blank line:
chore(release): 1.4.0
Release contract:
- Prepares 1.4.0 with the contact CSV import parser and upload preview UI.
Compatibility:
- No breaking changes or migration steps.
Verification:
- `pnpm test` and `pnpm build` passed.
Co-Authored-By: Codex <noreply@openai.com>
Do not add footer trailers such as Co-Authored-By unless the repository or
workflow requires them. Avoid publish, deploy, roll out, ship, or cut
in the subject or body unless the supplied context says that action happened.
For preparation-only commits, write Prepares 1.4.0, Records 1.4.0, or
Promotes Unreleased entries into 1.4.0, not Cuts 1.4.0.
Bundled plan or review work
Prefer:
feat(requests): add empty-state onboarding and JSON save formatting
Context:
- Both changes touch the request-editor save path, header handoff, and sample
refresh, so one review can cover the same user workflow.
Decision:
- Auto-format only JSON on save; XML and HTML remain manual because formatting
can change whitespace-sensitive wire bytes.
Out of scope:
- Broader markup reflow and unrelated onboarding channels remain separate.
Avoid anchoring the body on plan item 11.8, 8.3, or review-cycle finding IDs
unless those identifiers remain durable after the commit lands. Also avoid
private prop or component names such as BodyEditor headers prop when a workflow
label like header handoff carries the same meaning.
Review Checklist
Before finalizing a commit message, verify:
- The subject is a standalone outcome in the repo's style.
- The body answers why, why this shape, compatibility, verification, or non-goals better than the diff can.
- Implementation-detail bullets are removed unless they are durable search anchors or public contracts.
- Breaking changes, rollback paths, migrations, and known limitations are visible when present.
- Unsupported impact claims and prompt-context references are gone.
- Required trailers are separated from the prose body by a blank line and the
body does not end with a single-line
Key: valueparagraph immediately before agit commit --trailerfooter is added.