git について
引数に応じて status、commit、push、branch などの Git 操作を行い、自然言語の変更依頼を処理してから commit と push まで進めるスキルです。Conventional Commits 形式を必須とし、破壊的操作には確認を求めます。
主な機能
- 01引数に基づく Git 操作の振り分け
- 02変更分析による Conventional Commits メッセージ生成
- 03指定ファイルのみのステージング
- 04破壊的操作前の確認
- 05自然言語の依頼から commit と push まで対応
- 06マージ競合の解決を案内
活用シーン
- 01リポジトリの状態と次の対応を確認
- 02ステージ済み変更のコミットを作成
- 03リモートリポジトリへコミットを同期
- 04手順に沿ってマージ競合を解決
MCP 対応
README では Cursor の MCP 呼び出しを設定済みのサーバー識別子と call_mcp_tool に対応付ける方法に触れていますが、MCP サーバー機能は説明していません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ laststance/ skills --skill gitインストール後、Claude Code で/gitを入力して読み込まれたか確認します。
詳細
Git — インテリジェントな Git 操作
Codex との互換性
Codex でこのスキルを実行する場合は、操作を始める前に Claude Code 専用のプリミティブを置き換えてください。AskUserQuestion -> chat/request_user_input、TodoWrite -> update_plan、Task/TaskCreate/TeamCreate/SendMessage -> 利用可能かつ許可されている場合は spawn_agent/send_input/wait_agent、EnterPlanMode/ExitPlanMode -> 簡潔なチャットでの計画提示と明示的な承認、のように置き換えます。
Read/Write/Edit/Bash/WebSearch/WebFetch は Codex のファイル/シェル/ウェブツールに対応付けます。また、タスクが明示的に Claude Code を対象としていない限り、~/.claude/... のパスは ~/.agents/... または ~/.codex/... に対応付けます。
Cursor との互換性
Cursor Agent でこのスキルを実行する場合は、操作を始める前に Claude Code 専用のプリミティブを置き換えてください。AskUserQuestion -> AskQuestion、TodoWrite -> Cursor の TodoWrite または同等のチェックリスト、Task/TaskCreate/TeamCreate/SendMessage/マルチエージェントのフロー -> 許可されている場合は Cursor の Task(サブエージェント)、並列の Task、または run_in_background(TeamCreate/SendMessage に完全に一致するものがない場合があります)、EnterPlanMode/ExitPlanMode -> Plan mode(SwitchMode / CreatePlan)と明示的なユーザー承認、のように置き換えます。
Read/Write/Edit/StrReplace/Bash/web/search/MCP は、Cursor Composer または Agent の同等機能に対応付けます。mcp__server__tool 形式で記述された MCP 名は、通常、設定済みのサーバー識別子を使用する call_mcp_tool に対応付けます。タスクが明示的に Claude Code を対象としていない限り、~/.claude/... は ~/.cursor/skills/、.cursor/skills/、.cursor/rules/ に対応付けます。
従来型のスマートな Git ワークフローと、Conventional Commit メッセージの自動生成。
<essential_principles>
安全ルール
- Conventional Commits:すべてのコミットメッセージは
type(scope): description形式に従う必要があります- タイプ:
feat、fix、refactor、docs、test、chore、perf、ci、build、style - スコープ:任意。変更されたファイル/ディレクトリから判断します
- 説明:命令形、小文字、末尾にピリオドを付けない
- タイプ:
- 破壊的な操作にはユーザーの確認が必要です:
push --force、reset --hard、branch -D、共有ブランチでのrebase、clean -f - フックを決してスキップしないでください:ユーザーが明示的に求めない限り、
--no-verifyは使用しないでください - スマートコミットは常に有効です:ステージングされた変更を分析し、意味のあるメッセージを自動生成します
</essential_principles>
引数の振り分け
操作を始める前に、引数を確認してください。
- 空、または空白文字のみ — 以下の commit & push 操作を実行します。
- git サブコマンドを指定している(
status、commit、push、pull、branch、merge、stash、log)— 複数の指定(commit & pushなど)も含め、以下の該当する操作を実行します。 - 自然言語でタスクを説明している(言語は問いません)。例:
/git README更新してや/git fix the header typo— task-then-ship 操作を実行します。作業を行い、 その後コミットしてプッシュします。
判断に迷う場合(引数がサブコマンドに一致せず、タスクの説明とも読み取れない場合)は、 推測せず、どちらの意味かを一度だけ尋ねてください。
操作
task-then-ship
説明された変更を実行し、その後まとめてコミットとプッシュを行います。git サブコマンドではない 自然言語の引数には、これをデフォルトで適用します。
- 依頼されたタスクを実行します(該当ファイルの編集/作成)。変更範囲は依頼された内容に限定します。
- 以下の commit 操作を実行します — タスクで変更したファイルのみをステージングし(個別の
ファイル名を指定し、
git add -Aや.は決して使用しません)、変更内容の分析に基づいて Conventional Commit メッセージを生成します。 - 以下の push 操作を実行し、リモートと同期します。
- タスクを完了できない場合(曖昧、作業を妨げる要因がある、またはファイルに変更が生じなかった場合)は、 中止して報告してください。空のコミットや推測によるコミットは作成しないでください。
引き続き安全ルールを守ってください。--no-verify は決して使用せず、確認なしに強制プッシュせず、
上記の安全ルールで定めた破壊的な操作に関する確認を必ず行ってください。
commit & push
現在の変更をコミットしてから、作成したコミットをプッシュします。
- 以下のcommit操作を実行します。
- 変更がない、ステージされたファイルが明確でない、または別の阻害要因によってコミット操作が停止した場合は、その阻害要因を報告し、プッシュしないでください。
- コミットが成功した後に限り、以下のpush操作を実行します。
status
リポジトリの状態を分析し、実行可能な概要を提示します。
git statusを実行します(-uallフラグは使用しないでください)- 変更の概要を確認するため、
git diff --statを実行します - 以下を提示します。
- ステージ済み/未ステージ/未追跡ファイルの数
- ブランチ情報とアップストリームの追跡状態
- 推奨する次のアクション(例:「コミットできます」「変更をステージする必要があります」)
commit
変更内容の分析に基づいて、Conventional Commitメッセージを作成します。
git status、git diff --cached(ステージ済み)、git diff(未ステージ)を実行します- 既存のコミットスタイルに合わせるため、
git log --oneline -5を実行します - 変更を分析します。
- 変更の性質から
typeを決定します(新機能 →feat、バグ修正 →fixなど) - 影響を受けるディレクトリ/ファイルから
scopeを決定します - 「何を」ではなく「なぜ」に焦点を当て、簡潔な説明を書きます
- 変更の性質から
- ステージ済みの変更がない場合は、何をステージするかユーザーに尋ねます
git add -Aやgit add .は避け、ファイル名を指定してステージします- HEREDOC形式を使ってコミットします。
git commit -m "$(cat <<'EOF' type(scope): description EOF )"
push
ローカルのコミットをリモートと同期します。
- アップストリームの追跡状態を確認します:
git rev-parse --abbrev-ref --symbolic-full-name @{u} - アップストリームがない場合は、
-uを付けてプッシュします:git push -u origin <branch> - アップストリームがある場合は、
git pushを実行します - ユーザーの確認なしに、強制プッシュしないでください
pull
リモートの変更を取得して統合します。
git pull --rebaseを実行します(履歴をきれいに保つため、マージよりリベースを優先します)- コンフリクトが発生した場合は、解決方法をユーザーに案内します
branch
ブランチを作成、切り替え、管理します。
- 作成:命名規則
type/description(例:feat/add-login、fix/header-alignment)に従って、git checkout -b <name>を実行します - 切り替え:
git checkout <name>を実行します - 一覧表示:アップストリームの状態とともに
git branch -aを実行します - 削除:
git branch -d <name>を実行します(-Dはユーザーの確認がある場合に限り使用します)
merge
コンフリクト解決をサポートしながら、マージを案内します。
- 対象ブランチが最新であることを確認します:
git fetch origin - マージを実行します:
git merge <source> - コンフリクトがある場合:
- コンフリクトが発生しているファイルを一覧表示します
- 各ファイルのコンフリクトマーカーを表示します
- 解決方法をユーザーに案内します
- 解決後:
git add <resolved-files> && git commit
stash
未コミットの変更を一時的に保存します。
- 保存:
git stash push -m "description" - 一覧表示:
git stash list - 適用:
git stash popを実行します(スタッシュに残す場合はapplyを使用します)
log
便利な形式でコミット履歴を表示します。
- デフォルト:
git log --oneline -20 - 詳細:
git log --oneline --graph --all -20
例
/git # Default: commit current changes, then push
/git status
/git commit
/git push
/git commit & push
/git branch feat/dark-mode
/git merge main
/git stash save work in progress
/git log
/git README更新して # task-then-ship: update the README, then commit & push
/git fix the header typo # task-then-ship: make the fix, then commit & push
対応範囲
実行すること:
- Git操作をインテリジェントに自動化します
- 自然言語によるタスクを実行し、その後コミットしてプッシュします(タスクを実行してデプロイ)
- 変更内容の分析に基づいてConventional Commitメッセージを作成します
- ワークフローのガイダンスとベストプラクティスを提示します
- 段階的なガイダンスでコンフリクトの解決を支援します
実行しないこと:
- 明示的な許可なしにリポジトリ設定を変更しません
- ユーザーの確認なしに破壊的な操作を実行しません
- プロジェクト固有のワークフロールールを含めません(それらはCLAUDE.mdまたはAGENTS.mdに記載してください)