workflow-preflight について
workflow-preflight は、作業の開始・再開前にリポジトリとブランチの状態を確認するコーディングスキルです。Git の確認と GitHub の課題・プルリクエスト検索を組み合わせ、既存の作業や差分、競合を把握します。
主な機能
- 01リモート情報の取得と古い参照の削除
- 02関連する課題・プルリクエスト・ブランチの確認
- 03ブランチ差分と未コミット変更の報告
- 04マージ競合の検出
- 05リポジトリの準備状況の要約
活用シーン
- 01機能や課題への着手前
- 02中断後に作業を再開するとき
- 03プルリクエスト用ブランチの作成前
- 04並行エージェントの起動前
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill workflow-preflightインストール後、Claude Code で/workflow-preflightを入力して読み込まれたか確認します。
詳細
/workflow:preflight
古い状態、重複作業、ブランチの競合による無駄を防ぐための作業前検証です。
このスキルを使うタイミング
| このスキルを使う場合... | 省略する場合... |
|---|---|
| 新しい課題や機能の作業を始めるとき | すぐに終わる単一ファイルの編集 |
| 休止後に作業を再開するとき | このセッションですでに状態を確認済みの場合 |
| 並列エージェントを起動する前 | 分離されたワークツリーで作業する場合 |
| PR 用のブランチを作成する前 | ブランチをすでに作成し、確認済みの場合 |
コンテキスト
- リポジトリ:!
git remote get-url origin - 現在のブランチ:!
git branch --show-current - リモート追跡:!
git branch -vv --format='%(refname:short) %(upstream:short) %(upstream:track)' - 未コミットの変更:!
git status --porcelain - スタッシュ数:!
git stash list
実行
ステップ 1:最新のリモート状態を取得
git fetch origin --prune 2>/dev/null
ステップ 2:既存の作業を確認
課題番号が指定されている場合は、すでに対応済みかどうか確認します。
# Check if issue exists and its state
gh issue view $ISSUE --json number,title,state,labels 2>/dev/null
# Check for PRs that reference this issue
gh pr list --search "fixes #$ISSUE OR closes #$ISSUE OR resolves #$ISSUE" --json number,title,state,headRefName 2>/dev/null
# Check for branches that reference this issue
git branch -a --list "*issue-$ISSUE*" --list "*fix/$ISSUE*" --list "*feat/$ISSUE*" 2>/dev/null
マージ済みの PR が存在する場合:課題はすでに対応済みであることを報告します。終了します。 オープン中の PR が存在する場合:PR を報告し、そのブランチで作業を続けるか、新しく始めるかをユーザーに尋ねます。
ステップ 3:ブランチの状態を確認
# Check divergence from main/master
git log --oneline origin/main..HEAD 2>/dev/null || git log --oneline origin/master..HEAD 2>/dev/null
# Check if main has moved ahead
git log --oneline HEAD..origin/main -5 2>/dev/null || git log --oneline HEAD..origin/master -5 2>/dev/null
# Check for uncommitted changes
git status --porcelain=v2 --branch 2>/dev/null
報告する内容:
- リモートより進んでいる/遅れているコミット数
- 作業に影響する可能性のある未コミットの変更
- リベースが必要かどうか
ステップ 4:競合を確認
# Dry-run merge to detect conflicts (without actually merging)
git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main 2>/dev/null | head -20
ステップ 5:概要を報告
次のような構造化された概要を出力します。
| 確認項目 | 状態 | 詳細 |
|---|---|---|
| リモートの状態 | 最新/古い | 最終取得時刻 |
| 既存の PR | なし/オープン中/マージ済み | 該当する場合は PR 番号 |
| ブランチの状態 | クリーン/変更あり/分岐 | 進んでいる/遅れているコミット数 |
| 競合 | なし/検出 | 競合しているファイル |
| スタッシュ | 空/N 件 | スタッシュの内容 |
推奨事項:
- リモートより遅れている場合:「作業開始前にリベースすることを推奨します」
- 既存の PR が見つかった場合:「PR #N がすでに対応しています。重複する作業を始める前に確認してください」
- 変更がある場合:「ブランチを作成する前に、変更をコミットするかスタッシュしてください」
- 競合が検出された場合:「続行する前に main との競合を解決してください」
- クリーンな場合:「作業を開始できます」
エージェント向けの最適化
| コンテキスト | コマンド |
|---|---|
| リモートを手早く同期 | git fetch origin --prune 2>/dev/null |
| 既存の PR を確認 | gh pr list --search "fixes #N" --json number,state,headRefName |
| ブランチの分岐 | git log --oneline origin/main..HEAD |
| 競合の検出 | git merge-tree $(git merge-base HEAD origin/main) HEAD origin/main |
| 簡潔な状態表示 | git status --porcelain=v2 --branch |
| リモート追跡 | git branch -vv --format='%(refname:short) %(upstream:track)' |
クイックリファレンス
| フラグ | 説明 |
|---|---|
git fetch --prune | 取得し、古いリモート参照を削除します |
git status --porcelain=v2 | プログラムで解析できる状態表示 |
gh pr list --search | 内容で PR を検索します |
gh issue view --json | 構造化された課題データ |
git merge-tree | マージ競合を事前検出します |
git log A..B | A にはなく B にあるコミット |
コメント
Markdown 対応