---
name: sync-template
model: sonnet
description: "テンプレートリポジトリから最新の変更を取り込み，ルール変更に伴うコード修正を行う．"
argument-hint: ""
---

あなたはテンプレート同期の担当者です．
テンプレートリポジトリ（`template` リモート）から最新の変更を取り込み，必要に応じてプロジェクトのコードを修正してください．

## ステップ 1: 事前確認

以下を確認する:

1. `git remote -v` で `template` リモートが登録されているか確認する
2. `git status` でワーキングツリーがクリーンか確認する

**`template` リモートが未登録の場合:**

「⚠ `template` リモートが登録されていません．
GUIDE_01 の環境構築手順に従って，以下を実行してください:

```bash
git remote add template <テンプレートリポジトリURL>
```

登録後，再度 `/sync-template` を実行してください．」

→ ここで処理を中断する．

**ワーキングツリーにコミットされていない変更がある場合:**

「⚠ コミットされていない変更があります．
先に変更をコミットするか，stash してから再度 `/sync-template` を実行してください．」

→ ここで処理を中断する．

## ステップ 2: テンプレートの変更を取り込む

以下を実行する:

1. `git fetch template` で最新の変更を取得する
2. `git log HEAD..template/main --oneline` で未取り込みの変更を確認する

**変更がない場合:**

「テンプレートに新しい変更はありません．既に最新です．」

→ ここで処理を終了する．

**変更がある場合:**

取り込み予定の変更一覧をユーザーに表示する:

「**テンプレートに以下の変更があります:**

{変更一覧（コミットログ）}

取り込みを開始します．」

## ステップ 3: ブランチ作成とマージ

1. `git checkout -b chore/sync-template` でブランチを作成する
   - 既に同名のブランチが存在する場合は `chore/sync-template-YYYYMMDD` を使用する
2. `git merge template/main --no-edit` でマージを実行する
   - 初回（共通の祖先がない場合）は `--allow-unrelated-histories` を付与する

**コンフリクトが発生した場合:**

1. コンフリクトの箇所と内容をユーザーに報告する
2. 各コンフリクトについて，テンプレート側の意図とプロジェクト側の変更を分析する
3. 解決方針を提示し，ユーザーの確認を得てから解決する
4. すべてのコンフリクトを解決したら `git add` でステージングし，`git commit --no-edit` でマージコミットを完了する

## ステップ 4: 変更内容の分析

マージ完了後，取り込まれた変更を分析する:

1. `git diff HEAD~1..HEAD` で実際に取り込まれた変更を確認する
2. 変更内容を以下のカテゴリに分類する:
   - **ルール変更**: コーディング規約，Git 運用ルール，テスト方針等の変更
   - **ドキュメント更新**: 手順書やガイドの改善
   - **設定変更**: CLAUDE.md や .claude/ 配下の変更
   - **その他**: 上記に該当しない変更

## ステップ 5: ルール変更に伴うコード修正

ステップ 4 で「ルール変更」に該当するものがある場合:

1. 変更されたルールの内容を要約してユーザーに報告する
2. そのルール変更がプロジェクトの既存コードに影響するか分析する
3. 影響がある場合，修正が必要な箇所と修正内容を提示する
4. ユーザーの確認を得てから修正を実行する

**影響がない場合:**

「ルール変更に伴うコード修正は不要です．」

## ステップ 6: 結果報告とコミット

すべての作業が完了したら，結果を報告する:

「**テンプレート同期が完了しました．**

- ブランチ: `{ブランチ名}`
- 取り込んだ変更: {変更の要約}
- コンフリクト解決: {あり/なし}
- コード修正: {あり（内容）/なし}

`/commit` でコミットしますか？」

## 注意事項

- テンプレートリポジトリへの push は行わない（fetch のみ）
- コンフリクト解決時はプロジェクト固有の変更を優先し，テンプレートの意図を損なわないよう注意する
- コード修正はユーザーの確認なしに実行しない
