diff --git a/.claude/commands/sync-template.md b/.claude/commands/sync-template.md index 0ba681a..c079dea 100644 --- a/.claude/commands/sync-template.md +++ b/.claude/commands/sync-template.md @@ -24,6 +24,16 @@ マージ処理の対象は **既存ファイルが存在する場合のみ**.初回同期(`.claude/template-sync-sha` がない状態)では全ファイルが A 扱いとなるが,これらのファイルはフレームワーク初期化(`flutter create` / `npm init` 等)や `/init` で既にプロジェクトに存在するのが通常なので,そのままマージ処理に入る.既存ファイルがない稀なケースに限り通常の `cp` で配置する. +## 同期対象外ファイル (Skip-on-sync Files) + +以下のファイルはテンプレート紹介専用であり,テンプレートから作られた各プロジェクトには反映しない.コピー・上書き・削除のいずれも行わない. + +| ファイル | 理由 | 方針 | +| --- | --- | --- | +| `README.md` | テンプレートの README は GitHub の repo ページ向けのテンプレート紹介用.各プロジェクトは独自の README を持つべき | プロジェクト側にコピー・上書きしない.テンプレート側の追加・変更・削除も無視する | + +判定はステップ 5.3 のループ内でマージ必須ファイル判定より先に行う. + ## ステップ 1: 事前確認 `git status` でワーキングツリーがクリーンか確認する. @@ -120,6 +130,7 @@ ```bash MERGE_FILES=(".gitignore" "CLAUDE.md" ".gitattributes") +SKIP_FILES=("README.md") is_merge_file() { local t="$1" @@ -128,6 +139,14 @@ done return 1 } + +is_skip_file() { + local t="$1" + for f in "${SKIP_FILES[@]}"; do + [ "$f" = "$t" ] && return 0 + done + return 1 +} ``` ### 5.3 通常コピー対象の反映(マージ必須ファイル以外) @@ -139,6 +158,10 @@ [ -z "$status" ] && continue case "$status" in A|M) + # 同期対象外ファイルは完全にスキップ(コピーも上書きもしない) + if is_skip_file "$file"; then + continue + fi # マージ必須ファイルで既存ファイルがある場合は 5.4 で処理 if is_merge_file "$file" && [ -f "$file" ]; then continue @@ -148,6 +171,9 @@ ;; R*) # file=旧パス, newfile=新パス + if is_skip_file "$newfile"; then + continue + fi if is_merge_file "$newfile" && [ -f "$newfile" ]; then continue fi @@ -273,6 +299,7 @@ - テンプレートリポジトリへの push は行わない - コード修正はユーザーの確認なしに実行しない - マージ必須ファイル(`.gitignore`, `CLAUDE.md`, `.gitattributes`)は必ずステップ 5.4 の手順でマージする.盲目的な `cp` で上書きしない(フレームワーク固有の除外ルールやプロジェクト固有セクションが失われる) +- 同期対象外ファイル(`README.md`)はテンプレート紹介用のためプロジェクトには反映しない.テンプレート側で追加・変更・削除があってもプロジェクトの該当ファイルは触らない - 通常コピー対象でもプロジェクト固有の変更が上書きされうる場合は,`git diff` で確認してユーザーに報告する - テンプレートが管理するのは `.claude/` 配下のうち `agents/`,`commands/`,`hooks/`,`settings.json`,`template-sync-sha` のみ.`.claude/plans/` や `.claude/commit-context.md` 等のプロジェクト固有ファイルはテンプレートに含まれないため同期対象外 - `chore/sync-template` ブランチは他の作業ブランチと混ぜず,作成後は速やかにマージすること.複数の作業ブランチで `/sync-template` を実行すると `.claude/template-sync-sha` がコンフリクトする.コンフリクト時は新しい(HEAD 側の)SHA を採用すること. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a6b5056 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# プログラミングテンプレート + +Claude Code と協働でプロジェクトを立ち上げ・実装するための汎用テンプレート.`/setup` で対話的に立ち上げ,`/implement` で実装を進める. + +## Quick Start + +新規プロジェクトを始めるときは,以下の手順でテンプレートをカレントディレクトリに展開し,履歴を引き継がない新規リポジトリとして初期化する. + +```bash +# 1. プロジェクトディレクトリを作成して移動 +mkdir +cd + +# 2. カレントディレクトリにテンプレートをクローン(末尾の . に注意) +git clone https://github.com/rintoHasegawa/programming-template.git . + +# 3. 現在のテンプレート SHA を記録(以降の /sync-template で差分同期するため) +git rev-parse HEAD > .claude/template-sync-sha + +# 4. テンプレートの git 履歴を削除し,新しいリポジトリとして初期化 +rm -rf .git +git init -b main + +# 5. テンプレート紹介用 README をプロジェクトから削除 +rm README.md +``` + +その後 Claude Code を起動し,`/setup ` でプロジェクト立ち上げを開始する.以降,テンプレートの更新を取り込むときは `/sync-template` を実行する. + +## 主なスラッシュコマンド + +- `/setup ` — GUIDE_01 に従いプロジェクト立ち上げを対話的に進行 +- `/implement <タスク>` — 実装パイプライン(コーディング → テスト → リファクタリング) +- `/commit` / `/commit push` — コミット作成(`push` でプッシュと PR 作成まで) +- `/sync-template` — テンプレートの最新変更を取り込む + +## ドキュメント + +`docs/01_GUIDE/` にプロジェクト運用の規約・ルールが置かれている.`/setup` を実行すれば AI がこれらを順次参照しながら立ち上げを進める. + +- `GUIDE_01_プロジェクト立ち上げフロー.md` — 立ち上げの 7 フェーズ(方針決定 → 実装開始) +- `GUIDE_02_ドキュメント作成ガイド.md` — 設計ドキュメントの書き方 +- `GUIDE_03_ファイル命名規則.md` — ファイル名の規則 +- `GUIDE_04_Git運用ルール.md` — ブランチ・コミット・PR の運用 +- `GUIDE_05_エージェント運用ルール.md` — `/implement` のエージェントチーム運用 diff --git "a/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" "b/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" index b3b8893..acdb976 100644 --- "a/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" +++ "b/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" @@ -38,26 +38,6 @@ - **前提条件**: 以下のツールは全プロジェクト共通で導入する. - `git` — バージョン管理([GUIDE_04](GUIDE_04_Git運用ルール.md) で運用ルールを定義) - `gh` — GitHub CLI(PR 作成・マージ等に使用) -- **テンプレートからのプロジェクト作成**: - 以下の手順でテンプレートをコピーし,履歴を引き継がない新規リポジトリとして初期化する. - - ```bash - # 1. プロジェクトディレクトリを作成して移動 - mkdir - cd - - # 2. カレントディレクトリにテンプレートをクローン(末尾の . に注意) - git clone https://github.com/rintoHasegawa/programming-template.git . - - # 3. 現在のテンプレート SHA を記録(以降の /sync-template で差分同期するため) - git rev-parse HEAD > .claude/template-sync-sha - - # 4. テンプレートの git 履歴を削除し,新しいリポジトリとして初期化 - rm -rf .git - git init -b main - ``` - - 以降,テンプレートの更新を取り込むときは `/sync-template` を実行する. - **基本方針**: 環境の再現性を重視し,手順書だけに頼らず構築を自動化・コード化できる方法を優先する(例: Docker,Dev Containers,Windows Sandbox,IaC ツール等). - **人間が決めること**: 開発マシンの選定,クラウドサービスのアカウント作成,環境構築方法の選択 - **AI に依頼できること**: 環境構築手順書の作成,設定ファイルの生成,`.gitignore` の作成,Dockerfile や devcontainer.json 等の構築用ファイルの作成