| name | sync-default |
| description | サブモジュール(front, back, mobile)を各デフォルトブランチに切り替えてpullし、最新状態にする。`/sync-default`や「デフォルトブランチに戻して」「最新に同期して」などのリクエストで起動する。 |
| mode | bypassPermissions |
デフォルトブランチ同期スキル
各サブモジュールを作業ブランチからデフォルトブランチに切り替え、最新化する。確認なしで即実行。
対象リポジトリとデフォルトブランチ
| パス | デフォルト |
|---|
/Users/shimizuippei/projects/dev/buzzbase/front | stg |
/Users/shimizuippei/projects/dev/buzzbase/back | stg |
/Users/shimizuippei/projects/dev/buzzbase/mobile | main |
ルートリポジトリ(buzzbase)は対象外。
トークン削減原則
- 状態取得は
status -sb のみでブランチ名 + 未コミット変更を1コマンドで取得(旧: status + rev-parse の2コマンド)
- 既にデフォルトブランチなら
switch をスキップ
- 各サブモジュールへの3コマンド(status / checkout / pull)は並列実行(独立しているため)
- pull は
--ff-only で fast-forward 不可なら早期エラー(マージコミットを作らない)
ワークフロー
1. 状態確認(3サブモジュール並列)
git -C <path> status -sb
出力例:
## chore/154-mobile-ci-testing
M file.ts
1行目(## <branch>)からブランチ名を、2行目以降の有無で未コミット変更を判定。
未コミット変更がある場合: ユーザーに通知し、stash するか確認。変更なければそのまま進む。
2. デフォルトブランチへ切り替え + pull
各サブモジュール(並列実行可):
git -C <path> switch <default>
git -C <path> pull --ff-only origin <default>
switch は checkout の代替(ブランチ切り替え専用、より安全)。既にデフォルトブランチなら switch 不要、pull のみ。
3. 元の作業ブランチを削除(変更があったサブモジュールのみ)
ステップ1でデフォルト以外のブランチにいた場合のみ:
git -C <path> branch -d <旧ブランチ>
-d(小文字)を使う。マージ済みブランチのみ削除、未マージなら警告で残す(強制削除しない)
- デフォルトブランチに既にいた場合はスキップ
4. 完了報告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
デフォルトブランチ同期完了
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
front: stg ← <旧>(削除済み | 変更なし)
back: stg ← <旧>(削除済み | 変更なし)
mobile: main ← <旧>(削除済み | 変更なし)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
既にデフォルトブランチだった場合は (変更なし)、ブランチ削除に失敗した場合は (未マージのため残存) と表示。
コマンド実行制約
cd ... && git ... 禁止
git -C には必ず絶対パス
echo "..." を含む複合コマンドを Bash 一発で書かない
- 個別 Bash 呼び出し(独立コマンドは並列)
注意事項
- 未コミット変更がある場合のみユーザー確認(それ以外は即実行)
- pull 失敗時はエラー内容を報告し、他のサブモジュールは続行