--- name: sync-to-kag description: 一般公開版(marp-agent)の変更を、KAG社内版(marp-agent-kag)へマージで取り込む。公開版を本番へデプロイしたら必ず実行する。「kagにも反映して」「kag環境にも適用して」「同期して」で起動。 allowed-tools: Bash --- # KAG社内版へ取り込む(マージ方式) 公開版 `marp-agent` の変更を、KAG社内版 `marp-agent-kag`(ローカル `../marp-agent-kag`)へ `git merge` で流す。**方向は公開版 → KAG版の一方向だけ。** ## いつ実行するか **公開版を本番へデプロイしたら、その場で実行する。** `deploy-prod` の完了条件に入っている。 みのるんは「本番側を触らせたときに自動で発動すればいい」と明示しているので、 **聞かずに実行する。**「KAGにも反映しますか?」と確認しない。 デプロイを伴わないコード変更でも、公開版の `main` へ push したなら実行してよい。 ## ⚠️ チェリーピックは使わない KAG版は公開版から**280コミット以上先行**している(版設定の抽象化、GHE対応、社内テーマ)。 必要なものを1つずつ拾う方式は破綻するので、`git merge` だけを使う。 両リポジトリの `.githooks/prepare-commit-msg` がチェリーピックを機械的に拒否する。 2026-08-20 に「ディレクトリ構成が食い違うので同期そのものを停止」していたが、 **2026-08-22 のリアーキテクチャで構成が揃い、停止は解除された。** 実測では `agent/` 配下は自動マージで通り、コンフリクトしたのは 両側で別々に育てたドキュメント1件だけだった。 ## 手順 ### 1. 公開版がpush済みか確かめる ```bash git -C ~/git/minorun365/marp-agent status --short git -C ~/git/minorun365/marp-agent log --oneline @{u}..HEAD ``` 未pushのコミットがあれば先にpushする(マージはリモートの `upstream/main` を見るため)。 ### 2. KAG版の作業ツリーが空いているか確かめる ```bash git -C ~/git/minorun365/marp-agent-kag status --short git -C ~/git/minorun365/marp-agent-kag branch --show-current ``` **未コミットの変更があったら、そこで止めてみのるんへ報告する。** みのるんは20本以上の並行セッションを回しており、**別のセッションがKAG版で作業中の可能性がある**。 勝手に stash したりコミットしたりしない。ブランチが `main` でない場合も同じく止める。 ### 3. 取り込む ```bash git -C ~/git/minorun365/marp-agent-kag fetch upstream git -C ~/git/minorun365/marp-agent-kag log --oneline main..upstream/main ``` 差分が無ければ「取り込むものはありません」と報告して終わる。あれば: ```bash git -C ~/git/minorun365/marp-agent-kag merge upstream/main ``` ### 4. コンフリクトしたら **自分の判断で解決してよいのは、次の場合だけ。** | 状況 | 解決 | |---|---| | KAG版固有の設定(ドメイン・モデル・テーマ・デプロイ手順) | **KAG版側を採る** | | 公開版で直したロジック・バグ修正 | **公開版側を採る** | | 両側で別々に書き足したドキュメント | **両方を残す**(並べて統合する) | 判断がつかないものが1つでもあれば、`git merge --abort` して**みのるんへ聞く**。 中途半端に解決してpushしない。 `.gitattributes` で `merge=ours` を指定しているファイル(`cdk.json` `AGENTS.md` `CLAUDE.md` `README.md` `LICENSE`)は、そもそもコンフリクトせずKAG版の内容が残る。 新しくそういうファイルが増えたら `.gitattributes` へ足す。 ### 5. テストを通してからpush ```bash cd ~/git/minorun365/marp-agent-kag/agent && uv run --with pytest python -m pytest ../tests/ -q cd ~/git/minorun365/marp-agent-kag && npm run lint && npm run test ``` **落ちたら push しない。** マージで壊れたということなので、原因を直すか `git merge --abort` する。 通ったら push する。KAG版は `github`(GitHub.com・プライベート)と `origin`(GHE)の 2つのリモートを持つので、**現在のブランチが追跡している側へ push する**(`git push` だけでよい)。 ### 6. 本番へ反映するかは別の判断 **マージしただけではKAG版の本番は変わらない。** 取り込んだ内容がエージェントの挙動や 画面に影響するなら、KAG版のデプロイが要る: ```bash cd ~/git/minorun365/marp-agent-kag && npm run infra:diff # 削除差分が無いことを先に確認 cd ~/git/minorun365/marp-agent-kag && npm run infra:deploy cd ~/git/minorun365/marp-agent-kag && npm run prod:verify cd ~/git/minorun365/marp-agent-kag && npm run prod:smoke ``` ドキュメントだけの取り込みならデプロイは不要。**判断して、やるなら実行し、報告に書く。** ## KAG版で得た知見を公開版へ戻したいとき **この経路では戻さない。** KAG版には社内固有のテーマ・ドメイン・移行元リソースIDが入っており、 逆方向のマージは**公開リポジトリへ社内情報が流れる経路**になる。 公開版にも当てはまる知見は、**公開版側で書き直してコミットする**。 そのため、共通のドキュメント(`docs/knowledge/` など)は**公開版で書き、マージで流す**のが正しい向き。 KAG固有の記述はKAG版の `docs/knowledge/kag-specific.md` と `docs/kag-migration.md` にだけ置く。