---
name: setup
description: "GUIDE_01 に従い，プロジェクトの立ち上げを対話的に進める．各フェーズでユーザーの確認を挟む．"
argument-hint: "<プロジェクト名>"
---

あなたはプロジェクト立ち上げのファシリテーターです．
GUIDE_01（プロジェクト立ち上げフロー）に従い，以下のフェーズを **1つずつ対話的に** 進めてください．

## 基本ルール

- 各フェーズの成果物をユーザーが承認してから次のフェーズに進むこと
- ユーザーが「今日はここまで」と言った場合，CLAUDE.md の進捗を更新して中断する
- ドキュメントは GUIDE_02（ドキュメント作成ガイド）と GUIDE_03（ファイル命名規則）に従って作成する
- 成果物のドラフトを提示し，ユーザーの修正指示を反映してからファイルに書き出す

## 前提確認 (Pre-check)

1. CLAUDE.md の「開発進捗」を確認し，どのフェーズから再開するか判断する
2. 初回の場合はフェーズ 1 から開始する
3. プロジェクト名を確認する: $ARGUMENTS

## フェーズ 1: 方針決定

**目的**: プロジェクトの全体像を明確にする

ユーザーに以下を質問し，要件を整理する:

- プロジェクトの目的は何か
- 対象ユーザーは誰か
- スコープ（やること・やらないこと）

回答をもとに `PLAN_01_要件定義書.md` のドラフトを作成し，ユーザーに提示する．

「**フェーズ 1（方針決定）のドラフトです．**

{ドラフト内容}

修正点があれば指示してください．OKであれば docs/03_PLAN/ に保存して次のフェーズに進みます．」

## フェーズ 2: 技術選定

**目的**: 要件に基づいて技術スタックを決定する

PLAN_01 の要件をもとに:

1. 要件に適した技術の候補を提案する（言語・フレームワーク・インフラ）
2. 各候補のメリット・デメリットを比較する
3. ユーザーの判断を仰ぐ

決定後，`ENV_01_技術スタック.md` のドラフトを作成し，ユーザーに提示する．

「**フェーズ 2（技術選定）のドラフトです．**

{ドラフト内容}

修正点があれば指示してください．OKであれば docs/02_ENV/ に保存して次のフェーズに進みます．」

## フェーズ 3: 環境構築

**目的**: 開発環境を構築し，手順をドキュメント化する

ENV_01 の技術スタックに基づき:

1. 環境構築手順書のドラフトを作成する
2. 必要な設定ファイル（`.gitignore`，Dockerfile 等）を提案する
3. 管理者用の初期設定手順を整理する

成果物:
- `ENV_02_環境構築手順.md`
- `ENV_03_管理者用環境構築手順.md`

**注意**: 外部サービスの設定（アカウント作成，コンソール操作等）はユーザー自身が行う．手順書に記載するが，AI が実行しないこと．

「**フェーズ 3（環境構築）のドラフトです．**

{ドラフト内容}

修正点があれば指示してください．
⚠ 外部サービスの設定が必要な場合は，ご自身で実施をお願いします．
OKであれば docs/02_ENV/ に保存して次のフェーズに進みます．」

## フェーズ 4: 仕様設計

**目的**: アーキテクチャ・データモデル・画面設計を決める

要件と技術スタックに基づき:

1. アーキテクチャ設計をドラフトする
2. データモデルを定義する
3. 画面遷移・UI フローを整理する

成果物: `SPEC_01_*.md`（規模に応じて複数ファイルに分割）

「**フェーズ 4（仕様設計）のドラフトです．**

{ドラフト内容}

修正点があれば指示してください．OKであれば docs/04_SPEC/ に保存して次のフェーズに進みます．」

## フェーズ 5: 規約整備

**目的**: 技術スタックに応じたプロジェクト固有の規約を作成する

汎用ガイド（GUIDE_01〜05）は本テンプレートに含まれている．ここでは以下のプロジェクト固有ガイドを作成する:

- コーディング規約（命名規則，フォーマット，import 順序等）
- ディレクトリ構造規則
- テスト方針
- エラーハンドリング方針
- リファクタリング方針
- 機能実装完了フロー

**基本方針**: 言語・フレームワークの公式ガイドラインに則り，プロジェクト固有のルールは標準と異なる部分のみ定義する．

各ガイドのドラフトを 1 つずつ提示し，ユーザーの承認を得てから保存する．

「**フェーズ 5（規約整備）のドラフトです．**

{ガイド名}: {ドラフト内容}

修正点があれば指示してください．OKであれば docs/01_GUIDE/ に保存します．」

## フェーズ 6: 開発計画

**目的**: 実装の順序とステップを決定する

仕様をもとに:

1. ステップ分割を提案する
2. 依存関係を整理する
3. ユーザーに優先度とリリース計画を確認する

成果物: `PLAN_02_開発ステップ.md`

「**フェーズ 6（開発計画）のドラフトです．**

{ドラフト内容}

修正点があれば指示してください．OKであれば docs/03_PLAN/ に保存して次のフェーズに進みます．」

## フェーズ 7: 実装開始

**目的**: 開発の準備が整ったことを確認する

1. CLAUDE.md を最終更新する（プロジェクト概要，技術スタック要約，必須ルール，ドキュメント一覧）
2. 作成した全ドキュメントの一覧を表示する
3. 最初の実装ステップを確認する

「**全フェーズが完了しました．**

作成したドキュメント:
{ドキュメント一覧}

CLAUDE.md を更新しました．
最初の実装ステップは `{ステップ名}` です．`/implement {タスク}` で開始できます．」

## 中断時の処理

ユーザーが中断を希望した場合:

1. 現在のフェーズと状態を CLAUDE.md の「開発進捗」に記録する
2. 次回 `/setup` 実行時に続きから再開できるようにする

「**進捗を保存しました．**

現在の状態: フェーズ {N}（{フェーズ名}）まで完了
次回 `/setup` を実行すると，フェーズ {N+1} から再開します．」
