mcpField
G
git

git

github.com/laststance開発142 回インストール2 週間前に更新
リポジトリ

git について

引数に応じて status、commit、push、branch などの Git 操作を行い、自然言語の変更依頼を処理してから commit と push まで進めるスキルです。Conventional Commits 形式を必須とし、破壊的操作には確認を求めます。

主な機能

  1. 01引数に基づく Git 操作の振り分け
  2. 02変更分析による Conventional Commits メッセージ生成
  3. 03指定ファイルのみのステージング
  4. 04破壊的操作前の確認
  5. 05自然言語の依頼から commit と push まで対応
  6. 06マージ競合の解決を案内

活用シーン

  1. 01リポジトリの状態と次の対応を確認
  2. 02ステージ済み変更のコミットを作成
  3. 03リモートリポジトリへコミットを同期
  4. 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 サブコマンドではない 自然言語の引数には、これをデフォルトで適用します。

  1. 依頼されたタスクを実行します(該当ファイルの編集/作成)。変更範囲は依頼された内容に限定します。
  2. 以下の commit 操作を実行します — タスクで変更したファイルのみをステージングし(個別の ファイル名を指定し、git add -A や . は決して使用しません)、変更内容の分析に基づいて Conventional Commit メッセージを生成します。
  3. 以下の push 操作を実行し、リモートと同期します。
  4. タスクを完了できない場合(曖昧、作業を妨げる要因がある、またはファイルに変更が生じなかった場合)は、 中止して報告してください。空のコミットや推測によるコミットは作成しないでください。

引き続き安全ルールを守ってください。--no-verify は決して使用せず、確認なしに強制プッシュせず、 上記の安全ルールで定めた破壊的な操作に関する確認を必ず行ってください。

commit & push

現在の変更をコミットしてから、作成したコミットをプッシュします。

  1. 以下のcommit操作を実行します。
  2. 変更がない、ステージされたファイルが明確でない、または別の阻害要因によってコミット操作が停止した場合は、その阻害要因を報告し、プッシュしないでください。
  3. コミットが成功した後に限り、以下のpush操作を実行します。
status

リポジトリの状態を分析し、実行可能な概要を提示します。

  1. git statusを実行します(-uallフラグは使用しないでください)
  2. 変更の概要を確認するため、git diff --statを実行します
  3. 以下を提示します。
    • ステージ済み/未ステージ/未追跡ファイルの数
    • ブランチ情報とアップストリームの追跡状態
    • 推奨する次のアクション(例:「コミットできます」「変更をステージする必要があります」)
commit

変更内容の分析に基づいて、Conventional Commitメッセージを作成します。

  1. git status、git diff --cached(ステージ済み)、git diff(未ステージ)を実行します
  2. 既存のコミットスタイルに合わせるため、git log --oneline -5を実行します
  3. 変更を分析します。
    • 変更の性質からtypeを決定します(新機能 → feat、バグ修正 → fixなど)
    • 影響を受けるディレクトリ/ファイルからscopeを決定します
    • 「何を」ではなく「なぜ」に焦点を当て、簡潔な説明を書きます
  4. ステージ済みの変更がない場合は、何をステージするかユーザーに尋ねます
  5. git add -Aやgit add .は避け、ファイル名を指定してステージします
  6. HEREDOC形式を使ってコミットします。
    git commit -m "$(cat <<'EOF'
    type(scope): description
    EOF
    )"
    
push

ローカルのコミットをリモートと同期します。

  1. アップストリームの追跡状態を確認します:git rev-parse --abbrev-ref --symbolic-full-name @{u}
  2. アップストリームがない場合は、-uを付けてプッシュします:git push -u origin <branch>
  3. アップストリームがある場合は、git pushを実行します
  4. ユーザーの確認なしに、強制プッシュしないでください
pull

リモートの変更を取得して統合します。

  1. git pull --rebaseを実行します(履歴をきれいに保つため、マージよりリベースを優先します)
  2. コンフリクトが発生した場合は、解決方法をユーザーに案内します
branch

ブランチを作成、切り替え、管理します。

  1. 作成:命名規則type/description(例:feat/add-login、fix/header-alignment)に従って、git checkout -b <name>を実行します
  2. 切り替え:git checkout <name>を実行します
  3. 一覧表示:アップストリームの状態とともにgit branch -aを実行します
  4. 削除:git branch -d <name>を実行します(-Dはユーザーの確認がある場合に限り使用します)
merge

コンフリクト解決をサポートしながら、マージを案内します。

  1. 対象ブランチが最新であることを確認します:git fetch origin
  2. マージを実行します:git merge <source>
  3. コンフリクトがある場合:
    • コンフリクトが発生しているファイルを一覧表示します
    • 各ファイルのコンフリクトマーカーを表示します
    • 解決方法をユーザーに案内します
    • 解決後:git add <resolved-files> && git commit
stash

未コミットの変更を一時的に保存します。

  1. 保存:git stash push -m "description"
  2. 一覧表示:git stash list
  3. 適用:git stash popを実行します(スタッシュに残す場合はapplyを使用します)
log

便利な形式でコミット履歴を表示します。

  1. デフォルト:git log --oneline -20
  2. 詳細: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に記載してください)

コメント