Newer
Older
programming-template / .claude / commands / sync-template.md

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

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

ステップ 1: 事前確認

以下を確認する:

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

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

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

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 のみ)
  • コンフリクト解決時はプロジェクト固有の変更を優先し,テンプレートの意図を損なわないよう注意する
  • コード修正はユーザーの確認なしに実行しない