git-commit について
Conventional Commits 形式で意味の明確な Git コミットを作成するスキルです。実際の差分からタイプ、スコープ、説明を決め、ステージ方法と Git の安全ルールも案内します。
主な機能
- 01ステージ済み差分または作業ツリー差分の分析
- 02コミットタイプ、スコープ、説明の選定
- 03ステージ方法とメッセージ形式の案内
- 04機密情報と破壊的コマンドへの安全対策
活用シーン
- 01コード変更から意味の明確なコミットを準備
- 02コミットタイプとスコープの選択
- 03コミット前の Git 安全確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ilteoood/ harness --skill git-commitインストール後、Claude Code で/git-commitを入力して読み込まれたか確認します。
詳細
Conventional Commits による Git コミット
概要
Conventional Commits 仕様を使用して、標準化されたセマンティックな git コミットを作成します。実際の差分を分析して、適切なタイプ、スコープ、メッセージを判断します。
Conventional Commit の形式
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
コミットのタイプ
| タイプ | 目的 |
|---|---|
feat | 新機能 |
fix | バグ修正 |
docs | ドキュメントのみ |
style | フォーマット/スタイル(ロジック変更なし) |
refactor | コードのリファクタリング(機能追加/修正なし) |
perf | パフォーマンス改善 |
test | テストの追加/更新 |
build | ビルドシステム/依存関係 |
ci | CI/設定の変更 |
chore | メンテナンス/その他 |
revert | コミットの取り消し |
破壊的変更
# Exclamation mark after type/scope
feat!: remove deprecated endpoint
# BREAKING CHANGE footer
feat: allow config to extend other configs
BREAKING CHANGE: `extends` key behavior changed
ワークフロー
1. 差分の分析
# If files are staged, use staged diff
git diff --staged
# If nothing staged, use working tree diff
git diff
# Also check status
git status --porcelain
2. ファイルのステージング(必要な場合)
何もステージングされていない場合、または変更を別の方法でグループ化したい場合:
# Stage specific files
git add path/to/file1 path/to/file2
# Stage by pattern
git add *.test.*
git add src/components/*
# Interactive staging
git add -p
シークレットをコミットしないでください(.env、credentials.json、秘密鍵)。
3. コミットメッセージの生成
差分を分析して、以下を判断します:
- タイプ: これはどのような種類の変更ですか?
- スコープ: 影響を受ける領域/モジュールは何ですか?
- 説明: 何が変更されたかの 1 行の要約(現在形、命令形、72 文字未満)
4. コミットの実行
# Single line
git commit -m "<type>[scope]: <description>"
# Multi-line with body/footer
git commit -m "$(cat <<'EOF'
<type>[scope]: <description>
<optional body>
<optional footer>
EOF
)"
ベストプラクティス
- 1 コミットにつき 1 つの論理的な変更
- 現在形: 「added」ではなく「add」
- 命令形: 「fixes bug」ではなく「fix bug」
- 課題の参照:
Closes #123、Refs #456 - 説明は 72 文字以内に収める
Git 安全プロトコル
- git config を絶対に更新しない
- 明示的な要求がない限り、破壊的なコマンド(--force、hard reset)を絶対に実行しない
- ユーザーが求めない限り、フックを絶対にスキップしない(--no-verify)
- main/master への force push を絶対に行わない
- フックが原因でコミットが失敗した場合は、修正して新しいコミットを作成する(amend しない)
コメント
Markdown 対応