マルチエージェント実装ワークフローで、tasks.md のタスク実行(/agent-workflow・/agent-dispatch・/agent-review-commit)以外の変更やコミットを伴う依頼を受けたときに、作業に着手する前に必ず使う。`.agents/workflow/state.json` があるリポジトリ前提。該当する依頼の例: タスクの追加・計画の変更・ワークフロー外のバグ修正・ドキュメントや設定の変更。branch-check スクリプトでブランチを判定し、main やマージ済みブランチ上での誤コミットを防ぐ。
Install
npx skillscat add musasaby/multi-ai-agents-workflow/agent-branch-guard Install via the SkillsCat registry.
ブランチガード(ワークフロー外の作業のブランチ判定)
tasks.md のタスク実行以外の依頼(タスクの追加・計画の変更・ワークフロー外の修正・
ドキュメントや設定の変更など、ファイルを変更してコミットしうる作業)を受けたとき、
作業に着手する前に現在のブランチが作業に使ってよいかを判定し、必要なら
専用ブランチの作成を提案する。main やマージ済みの作業ブランチ上でコミットして
しまうのを防ぐのが目的。
skill 名の指定がなくても発動するように、AGENTS.md の「マルチエージェントワークフロー」節に
同じ規則がある(description だけに頼らない2段構えで、AGENTS.md 側が常に読まれる)。
手順
branch-check(--state/-Stateなし。読み取り専用)を実行する。.agents/workflow/scripts/配下に実体がある:.agents/workflow/scripts/branch-check.ps1.agents/workflow/scripts/branch-check.shexit code と対応は
_templates/workflow/README.mdのbranch-checkの節と一致する。
この skill では--stateを付けないため、Next: escalate reason=state-branch-mismatch(exit 5)は出ない(これは
state.json のbranchとの不一致判定で、タスク実行側のagent-dispatchが対象)。出力の最後の
Next:行で分岐する:Next: continue(exit 0。stdoutOK <ブランチ>)→ 判定に問題なし。そのまま依頼の作業に進むNext: switch-branch reason=main(exit 2。main上)またはNext: switch-branch reason=merged(exit 3。stdoutMERGED <PR URL>。PR がマージ済み)→
作業を始めず、利用者に提案する:git fetch originの後、最新の main(origin/main)から専用ブランチdevelop/<作業名>-planを切ることを提案する。config.json のupstream.branchが
設定されている場合はmainの代わりにその名前を使うdevelopという名前のブランチが既にあると、git の仕様でdevelop/...を作れない。
その場合だけdevelop-<作業名>を使う- 承認後に
git switch -c develop/<作業名>-plan origin/mainで作成してから
作業を始める(承認なく作らない) - 作業ツリーに未コミット変更(
git status --porcelainが空でない)がある場合は、
切替前にその扱い(残す・退避(stash)・破棄 等)を利用者に確認する
Next: escalate reason=gh-unavailable(exit 4。gh が無い・認証切れ等で
PR 状態を取得できない)→ 判定できない旨を利用者に伝え、このまま続行してよいか確認する。
続行の承認があれば進むNext:行なし(exit 1。使い方不備・git の失敗。detached HEAD を含む)→
スクリプトの stderr の内容を添えて利用者に報告し、作業を中断する
新ブランチに移った後の state.json の扱い:
- 新ブランチに移った後(state.json があるとき)は、
state-sync --set-branch
(PowerShell:.agents/workflow/scripts/state-sync.ps1 -SetBranch/
POSIX:state-sync.sh --set-branch)を実行して state.json のbranchを現在の
ブランチにする。state.json が追跡されている場合は、この変更を作業のコミットに含める
- 新ブランチに移った後(state.json があるとき)は、
備考
branch-checkは読み取り専用で、何も書き換えない- 判定順と stdout メッセージ:
OK <ブランチ>(exit 0)、MERGED <PR URL>(exit 3) - exit code の一覧:
0=使ってよい、1=使い方不備・git 失敗、2=main上、3=PR マージ済み、4=gh で判定できない、5=state.json のbranchと不一致
(この skill では--stateを付けないため出ない)