新規プロジェクトを AI と協働で立ち上げる際の手順を定義する. 各フェーズを順番に進め,成果物を確定させてから次のフェーズに移ること.
| フェーズ | やること | 成果物 |
|---|---|---|
| 方針決定 | プロジェクトの目的・スコープを決める | PLAN_01_要件定義書.md |
| 技術選定 | 言語・フレームワーク・インフラを決める | ENV_01_技術スタック.md |
| 環境構築 | 開発環境のセットアップ手順を整備する | ENV_02_環境構築手順.md,ENV_03_管理者用環境構築手順.md,ENV_04_開発コマンド.md(任意) |
| 仕様設計 | アーキテクチャ・データモデル・画面設計を決める | SPEC_01_*.md |
| 規約整備 | 技術スタックに応じたコーディング規約を作る | .claude/rules/*.md |
| 開発計画 | ステップを分割し,開発順序を決める | PLAN_02_開発ステップ.md |
| 実装開始 | 開発計画に沿って実装を進める | ソースコード |
※ 立ち上げフローで作成するのは 02_ENV / 03_PLAN / 04_SPEC カテゴリの成果物と,規約整備フェーズの .claude/rules/*.md のみ.05_TECH(技術設計)・06_TEST(テスト)は実装フェーズで必要になった時点で作成し,立ち上げ時に空フォルダを作らない.
プロジェクトは個人開発(solo)とチーム開発(team)の 2 モードで運用できる.モードは /setup の冒頭で選択し,.claude/project-mode に記録される(後からの切り替えは /set-mode <solo|team>).
| レイヤ | 対象 | 存在するモード |
|---|---|---|
| 共通層 | GUIDE_01・GUIDE_02,.claude/rules/ のすべて,.claude/agents/,.claude/template-overrides.md(雛形),skills(commit(+ reference.md)・implement・setup(+ reference.md)・sync-template(+ reference.md)・set-mode・auto-refactor・auto-audit・deps-update(+ reference.md)・verify(+ profile-template.md)・task-create・task-start(+ reference.md)・task-handoff) | solo・team 両方 |
| team 層 | GUIDE_03,.claude/hooks/check_sync.sh,settings.json の SessionStart 配線 | team のみ |
.claude/rules/ はすべて共通層だが,進捗記録ルール(progress-log)だけは team モードで運用上上書きされる(進捗は CLAUDE.md/docs/PROGRESS.md ではなく GitHub Issues と git 履歴で追う.GUIDE_03)./set-mode が一括で行い,/sync-template は .claude/project-mode を見て team 層の同期可否を判定する.team 層ファイルの正確なリストは /set-mode・/sync-template の定義に持たせており,増減時は両者を一致させること..claude/template-overrides.md(テンプレート改変台帳)に方針(keep / merge / ask)と理由を記録する(.claude/rules/template-customization.md)./sync-template は台帳を読み,登録ファイルをテンプレート版で上書きせず方針に従って処理する.未登録でも前回同期版から改変されたファイルは上書き前に確認される.立ち上げ作業は専用ブランチ chore/project-setup の上で行う(ブランチの作成は /setup が行う)./setup は各フェーズの成果物を最初から保存先のファイルとして書き出し,チャットには書き出したファイルの一覧と要確認点(判断してほしい点・Claude が決めた点)だけを示す.人間はエディタでファイルを読んで修正点をチャットで伝え,/setup はファイルを直接直す(差分は git diff で追える).
/commit で行う(フェーズごとに 1 コミットを推奨)./setup はコミット・push・PR 作成・マージを行わず,コミットメッセージ例の提示(.claude/skills/setup/reference.md「フェーズごとのコミット」)とコミット済みの確認だけを行う/setup は次のフェーズに進む前に作業ツリーがクリーン(コミット済み)であることを確認し,未コミットのまま進むかは人間に確認するmain への取り込みはユーザーが /commit push(PR 作成まで)または /commit merge(マージまで)で行うプロジェクトの全体像を明確にする.
PLAN_01_要件定義書.md要件に基づいて技術スタックを決定する.
ENV_01_技術スタック.md開発環境を構築し,手順をドキュメント化する.初回のみの管理者作業と,メンバーが繰り返し行う構築手順を分けて整備する.
git — バージョン管理(運用ルールは .claude/rules/git-conventions.md で定義)gh — GitHub CLI(PR 作成・マージ等に使用)bash — .claude/settings.json のフック(リポジトリ外アクセス制限・通知)の実行に使用.フックは bash .claude/hooks/run_python.sh 経由で起動し,python3 → python → py の順に実際に起動できるものを使う(いずれか 1 つで起動できればよい.Windows では Git for Windows 付属の bash を使う).※ Python が見つからないとアクセス制限フックが対象ツール(Read・Write・Edit・NotebookEdit・Glob・Grep・Bash・PowerShell)をすべてブロックする(通知フックは何もせず素通りする)/setup がその手順に従って実際に環境を構築し,実行して分かった誤り・前提の抜けを手順書に反映してから人間のレビューを受ける(未検証の手順書は誤りを含みやすく,最初に詰まるのがその場のユーザーになるため).区分は次の 3 つ(詳細は .claude/skills/setup/reference.md「環境構築の実行」)
gh でのリポジトリ設定)はそのまま実行するdocker build,dev container の起動)は実行するコマンド・バージョン・入る場所を提示して都度承認を得てから実行するgh auth login 等)・クレデンシャルの発行はユーザーが行う.gitignore の作成,Dockerfile や devcontainer.json 等の構築用ファイルの作成,GitHub リポジトリのセキュリティ設定・.github/dependabot.yml の生成(後述),検証プロファイル(.claude/verify-profile.md.任意.後述)の記入/setup が gh api で有効化・検証する(コマンド・検証・トラブル対応は .claude/skills/setup/reference.md「GitHub リポジトリのセキュリティ設定」)./setup 時点でリポジトリが無い場合は,ENV_03_管理者用環境構築手順.md に転記した同じコマンドをリポジトリ作成後に実行する./setup が技術スタックに合わせて .github/dependabot.yml を必ず生成する(週 1 回・マイナー/パッチをまとめる・[update] プレフィックス.エコシステム対応表と雛形は .claude/skills/setup/reference.md「依存バージョン更新の設定」).Dependabot が作る PR と alert の処理は /deps-update で行う(ゲートを満たす PR を自動マージし,メジャー更新等は分析付きで報告.GUIDE_02「コミットルール」の例外)..claude/settings.json): テンプレート同梱の permissions.allow(Bash(gh pr merge:*))は,auto mode で ops-runner に /commit merge・/deps-update のマージを実行させるために必要なので削除しない(変更はセッション再起動後に反映).マージが分類器に止められた場合の切り分けと対処は .claude/skills/commit/reference.md「gh コマンドが実行される前にブロックされた場合」を参照..claude/hooks/restrict_repo_access.py): 目的は「リポジトリ外のファイルの削除と既存ファイルの上書き(取り返しのつかない操作)だけを確実に止める」こと.テンプレート同梱の .claude/settings.json が PreToolUse で呼ぶ.
位置づけ: 新規ファイルの作成・ダウンロード・ディレクトリ作成・追記は止めない(環境構築でのダウンロード・mkdir・~/.bashrc への追記等を自動で進められるようにするため).それ以外のグレーな操作の判断は権限モード(auto mode の分類器・コマンドごとの承認等)に任せ,フックは最後の砦として削除・上書きだけを止める
削除(常に拒否): Bash の rm・rmdir・unlink・shred・truncate・find -delete/-exec rm・mv の移動元・rsync --delete の書き込み先,PowerShell の Remove-Item とそのエイリアス・Clear-Content・Move-Item/Rename-Item の移動元・[IO.File]::Delete 等,cmd /c del 等.python -c・node -e・ヒアドキュメント等のインライン実行は,削除系の呼び出し(rmtree・os.remove・unlink・fs.rm 等)があり,かつコード中にリポジトリ外のパスがある場合に拒否する.Edit・NotebookEdit(既存ファイルの書き換え)も拒否する
上書き(書き込み先が既に存在する場合だけ拒否.無ければ新規作成として許可): >・>|・&>,cp・mv・install・rsync・scp・ln -f・Copy-Item・Move-Item の書き込み先(既存ディレクトリへのコピー・移動は <ディレクトリ>/<コピー元の名前> で判定),sed -i・perl -i,tee(-a 無し)・Set-Content・Out-File/Tee-Object/Export-Csv(-Append 無し)・New-Item -Force,dd of=,curl -o・wget -O・Invoke-WebRequest -OutFile 等の保存先,Expand-Archive -Force・Compress-Archive -Force,Write ツール,インライン実行の open(..., 'w')・writeFile 等
許可: 新規作成・ダウンロード・mkdir/New-Item -ItemType Directory・touch・追記(>>・tee -a・Add-Content・Out-File -Append).chmod・chown・Set-Acl も中身が失われないため許可する
cd・pushd・Set-Location を追跡し,~ と $HOME を展開してから判定する.基準はリポジトリのルート(CLAUDE_PROJECT_DIR)で,システム一時ディレクトリ(/tmp・%TEMP%.スクラッチパッドを含む)と /dev/null・$null 等は削除・上書きも許可する
読み取り: Read・Glob・Grep,Bash・PowerShell の読み取りはリポジトリ外も許可する.読んだファイルの内容は Claude の API に送信されるため,リポジトリ外を読ませることの是非はプロジェクトごとに判断する.読ませたくない場所(~/.ssh・~/.aws・他案件のフォルダ等)は禁止リスト .claude/repo-access.json に書く(任意.無ければ禁止リストは空).禁止リストに該当するパスは読み取り・書き込みとも拒否する.Glob・Grep・再帰的に読むコマンド(grep -r・find・Get-ChildItem 等)は,リポジトリ外の検索起点の配下に禁止パスがある場合も拒否する
{
"deny_read": ["~/.ssh", "~/.aws", "C:/Users/me/source/other-project", "secrets"]
}
~ 始まり・リポジトリルート相対で書く.ファイルが壊れている(JSON として読めない等)場合は禁止リストを空として扱い,警告を出す/sync-template で上書きされない.人によって守りたい場所が違う場合は各自の場所も含めて書くか,各自が後述の permissions.deny を .claude/settings.local.json に書く限界: コマンド文字列の静的解析のため原理的に完全には防げない.変数展開($DIR 等.~・$HOME・$env:USERPROFILE・一時ディレクトリ系以外は解決しない),スクリプトファイル経由の操作,xargs 等パイプで渡したパス,エイリアス・関数,エンコードされたコマンド,未対応コマンドによる削除・上書き,インライン実行中の未対応の書き方(変数に入れたパス・Perl の open 等)は検出できない.既存かどうかはフック実行時点で判定するため,同じコマンド内で先に作ったファイルを上書きする場合等は許可される.逆に,インライン実行で削除系の呼び出しとリポジトリ外のパス(文字列やコメント中のものも含む)が同時に現れると,削除対象でなくても拒否されることがある.cmd /c の引数のうち /opt のように / の後に要素が 1 つだけのパスは,スイッチ(/mir 等)と区別できないため判定の対象外になる.また Glob・Grep を省略した検索起点(リポジトリ内)では,リポジトリ内の禁止パスを含む検索までは止めない
拒否されたときの運用: リポジトリ外の削除・上書きの最終判断は人間が持つ.フックに拒否されても,Claude は別の書き方(変数経由・スクリプトファイル経由・python -c 等)で迂回しない.必要な操作であれば,Claude は実行するコマンドをそのまま提示して依頼するので,ユーザーが内容を確認し,プロンプトで ! <コマンド> として自分で実行する.フックが検出できない書き方であっても,リポジトリ外のファイルの削除・上書き(既存ファイルの移動を含む)は同じ扱いとする(CLAUDE.md「手動確認が必要な作業」).禁止リストによる読み取りの拒否は「読ませたくない場所」の指定なので,Claude は迂回して読まず,! での実行依頼もしない
! で実行したコマンドにはこのフックはかからない(実機で確認済み).Claude が提示したコマンドは,削除・上書きの対象が意図どおりかを確認してから実行する
確実性が必要な場合は以下を併用する
settings.json の permissions.deny(例: "Read(~/.ssh/**)"・"Edit(~/.ssh/**)".Claude Code 本体が Read・Edit 系ツールを確実に止める)--dangerously-skip-permissions を使わず,コマンドごとに承認する).claude/settings.json は,作業完了(Stop)・許可待ち(Notification)・質問(PreToolUse の AskUserQuestion)で .claude/hooks/notify.py を呼び,ntfy 経由でスマホに通知する(ホスト OS・dev container のどちらでも動く).送信先トピックが未設定なら何もしないため,受け取りたい人だけ以下を行う.
claude- +ランダムな英数字)を購読する.トピック名を知っていれば誰でも購読・送信できるため,パスワードと同様に扱いリポジトリには書かない{ "env": { "NTFY_TOPIC": "<トピック名>" } } を以下のいずれかに書く(既存の設定がある場合は env にキーを追加する.反映されない場合はセッションを再起動する)
~/.claude/settings.json に書く.デバイスごとに 1 回でよく,全プロジェクトで共通のトピックに通知される(フックの無いプロジェクトでは何も起きない).プロジェクトフォルダがクラウド同期(OneDrive 等)されていてもトピック名が同期されない.claude/settings.local.json(gitignore 済み)に書く.ホストの ~/.claude は通常コンテナから見えないが,ワークスペースはコンテナに共有されるため,プロジェクトごとに 1 回でよい.claude/settings.local.json が優先される/implement の coder 等)やワークフローに依頼して待っているだけのターン終了では黙り,依頼した作業が終わって本当に手が空いたときだけ「処理が完了しました」を送る(フックが Stop の入力 background_tasks を見て判定する).一方,バックグラウンドのシェル(開発サーバー等)は動かし続けるのが普通で,対象にすると通知が永久に止まるため判定から除いているENV_02_環境構築手順.md — メンバーの参加時や環境の再構築時に使う手順ENV_03_管理者用環境構築手順.md — プロジェクト作成時に一度だけ行う初期設定(リポジトリ作成,GitHub リポジトリのセキュリティ設定,外部サービスの設定等)ENV_04_開発コマンド.md(任意)— アプリの起動・テスト・lint・ビルド等,日常の開発で使うコマンド一覧.人間とエージェント(tester・coder,/auto-refactor・/auto-audit)がコマンドを推測せずに済むようにするための唯一の参照先とする
/implement の Phase 4 で自動的に見直される).claude/verify-profile.md(任意)— 検証プロファイル.Claude(verifier エージェント)がアプリを操作して動作確認できるようにするための,プロジェクト固有の情報(検証手段・検証対象の環境・実行コマンドと出力先・前提条件・認証/ロール・テストデータの規約・既知のノイズ・禁止操作・シナリオのテンプレート)をまとめたファイル
/verify と /implement の Phase 1b が動き,人間の動作確認の前段としてエッジケース等を Claude が先に潰す(人間の確認は無くならない.GUIDE_02).用意しなければ Phase 1b はスキップされ,従来どおり人間が動作確認する.claude/skills/verify/profile-template.md を .claude/verify-profile.md にコピーして記入する.シナリオを実行するランナー(起動・実行・集計・後始末)はプロジェクト側に用意する(要件は雛形の「実行基盤の要件」,Web アプリ向けの実装例は同「参考実装」のリンク先)/sync-template で上書き・削除されない.検証結果の出力先は .gitignore に追加するアプリケーションの設計を行う.
SPEC_01_*.md(プロジェクトの規模に応じて複数ファイルに分割)技術スタックに応じたプロジェクト固有の規約を作成する.
汎用の規約(Git 運用・ドキュメント書式・ファイル命名・進捗記録・テンプレート改変記録)はテンプレートの .claude/rules/ に含まれているため,ここでは技術スタック固有の規約を追加する.
.claude/rules/*.md の frontmatter に paths: を付けたもの)として作成する.該当ファイルの編集時に自動ロードされるため,規約の読ませ忘れが起きない.アーキテクチャの背景説明や設計判断の記録など「読み物・参照資料」は従来どおり docs(04_SPEC/05_TECH)に置く.paths はプロジェクトの実際のディレクトリ構成に合わせて設定する):
.claude/rules/coding-style.md — 命名規則,フォーマット,import 順序,型の使い方,コメントの書き方,コード内ドキュメントの規則(例: paths: ["src/**", "lib/**"]).claude/rules/project-structure.md — プロジェクトのディレクトリ構成とファイル配置ルール(paths はソースディレクトリ全般).claude/rules/testing.md — テストの種類,粒度,実行タイミング,カバレッジ基準,モック方針,テストファイルの配置規則(例: paths: ["test/**", "**/*.test.*"]).claude/rules/error-handling.md — エラーの分類,処理方法,ログ出力の方針(paths はソースディレクトリ全般).claude/agents/refactorer.md の判断基準を共通ルールとして使用する/implement で定義済みのため,別途作成しないdocs/01_GUIDE/ に追加する場合は,team 層の GUIDE_03 との衝突を避けるため GUIDE_04 以降の番号を使う実装の順序とステップを決定する.
PLAN_02_開発ステップ.md開発計画に沿って AI と協働で実装を進める.
.claude/rules/git-conventions.md)に従ってコミット・PR を作成する(ドキュメント書式は .claude/rules/markdown-style.md が自動適用される).CLAUDE.md は AI が会話開始時に最初に読むファイルであり,プロジェクトの引継ぎ情報を一元管理する.
AI は毎回新しい会話で始まるため,このファイルが唯一の継続的な文脈となる.
docs/PROGRESS.md に追記する(進捗記録ルール .claude/rules/progress-log.md 参照)docs/PROGRESS.md は末尾に追記)docs/PROGRESS.md = 追記型フルログ)で管理する.詳細は .claude/rules/progress-log.md を参照.