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

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

テンプレート URL: `https://github.com/rintoHasegawa/programming-template.git`

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

`git status` でワーキングツリーがクリーンか確認する．

**コミットされていない変更がある場合:**

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

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

## ステップ 2: テンプレートを一時ディレクトリにクローン

以下を実行する:

```bash
TEMPLATE_URL="https://github.com/rintoHasegawa/programming-template.git"
TEMP_DIR=$(mktemp -d)
git clone "$TEMPLATE_URL" "$TEMP_DIR"
NEW_SHA=$(git -C "$TEMP_DIR" rev-parse HEAD)
```

## ステップ 3: 変更ファイルの特定

`.claude/template-sync-sha` の有無で処理を分岐する:

**ファイルが存在する場合（2 回目以降の同期）:**

```bash
LAST_SHA=$(cat .claude/template-sync-sha)
```

- `NEW_SHA == LAST_SHA` の場合:
  `rm -rf "$TEMP_DIR"` で一時ディレクトリを削除し，「テンプレートに新しい変更はありません．既に最新です．」と報告して終了する．

- `NEW_SHA != LAST_SHA` の場合:
  ```bash
  git -C "$TEMP_DIR" diff --name-only "$LAST_SHA" HEAD
  ```
  で変更されたファイル一覧を取得する．

**ファイルが存在しない場合（初回同期）:**

テンプレートの全ファイルを対象とする．

## ステップ 4: 変更一覧をユーザーに提示

取り込み対象のファイル一覧と，各ファイルの変更概要をユーザーに提示する:

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

{ファイル一覧}

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

## ステップ 5: ブランチ作成とファイルコピー

1. `git checkout -b chore/sync-template` でブランチを作成する
   - 既に同名のブランチが存在する場合は削除してから作り直す
2. 対象ファイルをテンプレートからプロジェクトにコピーする（既存ファイルは上書き）
3. `echo "$NEW_SHA" > .claude/template-sync-sha` で同期済み SHA を記録する
4. `rm -rf "$TEMP_DIR"` で一時ディレクトリを削除する

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

コピーされた変更を以下のカテゴリに分類する:

- **ルール変更**: コーディング規約，Git 運用ルール，テスト方針等の変更
- **ドキュメント更新**: 手順書やガイドの改善
- **設定変更**: CLAUDE.md や .claude/ 配下の変更
- **その他**: 上記に該当しない変更

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

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

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

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

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

## ステップ 8: 結果報告

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

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

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

`/commit push` でプッシュと PR 作成ができます．」

## 注意事項

- テンプレートリポジトリへの push は行わない
- コード修正はユーザーの確認なしに実行しない
- ファイルコピーによりプロジェクト固有の変更が上書きされる場合は，`git diff` で確認してユーザーに報告する
