commit-push について
commit-pushは、Conventional Commits形式でローカル変更をコミットし、リモートへプッシュするスキルです。差分、ステージ済みファイル、対象ブランチとリモート、プッシュ後の状態を順に確認します。
主な機能
- 01作業ツリーと差分を確認
- 02Conventional Commits形式のメッセージを作成
- 03コミット前にステージ済みファイルを確認
- 04プッシュ前にブランチとリモートを確認
- 05プッシュ後に作業ツリーと同期状態を確認
活用シーン
- 01レビュー済みのローカル変更をコミット
- 02指定したブランチとリモートへ変更をプッシュ
- 03プッシュ後にリポジトリの同期状態を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ existential-birds/ beagle --skill commit-pushインストール後、Claude Code で/commit-pushを入力して読み込まれたか確認します。
詳細
コミットしてプッシュする
すべてのローカル変更を Conventional Commits 形式でコミットし、リモートにプッシュします。
ゲート
順番に完了してください。合格条件を満たすまでは、次の操作を実行しないでください(記憶ではなく、コマンドの出力を根拠として使用してください)。
- 差分の内容を把握 — 合格条件:
git status、git diff、git diff --cachedの出力が、変更内容を一文で説明した内容と一致している(または、コミットする変更がないと記録している)。 - コミット行を決定 — 合格条件: 出荷する変更セットに合った、先頭行の案
type(scope): description(scope を省略する場合はtype: description)がある。 - ステージングが意図と一致 — 合格条件:
git addの後、git diff --cached --stat(必要に応じてgit diff --cachedも確認)に、含める予定のパスのみが表示されている。一致しない場合は、コミット前にステージングを調整する。 - プッシュ先を確認 — 合格条件: 現在のブランチとリモートが意図したものになっている(
git branch -vv、git remote -v)。その後、プッシュする。 - リモートとの同期を確認 — 合格条件:
git statusがクリーンで、git status -sbにブランチが設定済みのアップストリームと同期していることが示されている(このタスクで予期しない未プッシュのコミットが残っていない)。
ステップ 1:コンテキストを把握する
変更内容を理解するため、これらのコマンドを並行して実行します。
# See all untracked and modified files
git status
# See staged and unstaged changes
git diff
git diff --cached
# See recent commit messages for style reference
git log --oneline -10
ステップ 2:変更を分析する
変更を確認し、以下を判断します。
-
種類:どのような種類の変更ですか?
feat- 新機能または新しい機能の追加fix- バグ修正docs- ドキュメントのみの変更refactor- 動作を変えないコードの再構成test- テストの追加または更新chore- メンテナンス、依存関係の更新perf- パフォーマンスの改善ci- CI/CD の変更
-
スコープ:どのコンポーネントに影響しますか?
- 変更されたファイルを調べ、適切なスコープを判断します
- プロジェクト内で一貫したスコープ名を使用します(パターンは
git logで確認します) - (複数の領域にまたがる変更ではスコープを省略します)
-
破壊的変更:後方互換性を損ないますか?損なう場合は、スコープの後に ! を付けます。
ステップ 3:コミットメッセージを書く
形式:
type(scope): description
[optional body explaining why, not what]
[optional footer with issue references]
ルール:
- 命令形を使います。「added」ではなく「add feature」のようにします
- 先頭行は 72 文字未満にします
- 本文では「なぜ」に焦点を当て、差分で「何を」示します
- イシューを参照します:
Closes #123またはFixes #456
ステップ 4:ステージング、コミット、プッシュを行う
git commit の前にゲート 1〜3 を満たし、git push の前にゲート 4 を満たし、プッシュ後にゲート 5 を満たします。
# Stage all changes (or selectively stage)
git add -A
# Gate 3: confirm staged set before committing
git diff --cached --stat
# Commit with message (use HEREDOC for multi-line)
git commit -m "$(cat <<'EOF'
type(scope): description
Optional body explaining the motivation.
Closes #123
EOF
)"
# Push to remote
git push
例
# Simple feature
git commit -m "feat(api): add pagination support to list endpoints"
# Bug fix with body
git commit -m "$(cat <<'EOF'
fix(auth): handle token expiration during long requests
The previous implementation did not account for tokens expiring
during the processing of long-running requests.
Fixes #42
EOF
)"
# Breaking change
git commit -m "$(cat <<'EOF'
feat!(api): change response format for user endpoints
BREAKING CHANGE: The `status` field is now an object with `state` and
`message` properties instead of a plain string.
EOF
)"
プロジェクトの慣例に応じて、共同作成者またはフッターのトレーラーを任意で追加できます(例:Co-Authored-By: 行や、ツールの帰属を示すフッター)。プロジェクトにそのような慣例がなければ省略してください。
ステップ 5:確認する
プッシュ後にゲート 5 を満たすため、git status と git status -sb を実行し、作業ツリーがクリーンでアップストリームと同期していることを確認します(フォークのワークフローなど、想定内で説明できる ahead/behind の場合は除きます)。