| name | project-init |
| description | プロジェクト初期化。CLAUDE.mdや.claude/がない場合にテンプレートを適用し、PJ固有設定を促す。 |
プロジェクト初期化
トリガー条件
以下のいずれかの場合に使用:
- プロジェクトルートにCLAUDE.mdが存在しない
- .claude/ディレクトリが存在しない
- ユーザーがプロジェクト初期化を要求した
実行手順
1. テンプレートの確認
ls ~/.claude/templates/project/
2. CLAUDE.mdの作成
PJルートに以下の内容でCLAUDE.mdを作成(~/.claude/templates/project/CLAUDE.md と同期):
# <プロジェクト名>
## 変数
MEMORY_DIR=.local/
BASE_BRANCH=develop
## 品質チェック
```bash
npm run lint # または適切なコマンド
npm run format
npm run typecheck
npm test
検証方針
AIエージェントには検証機構の供給が最も効果が高い。PJで以下を整備:
- テストコード: 主要ロジックのユニット/統合テスト
- E2Eテスト: PJに応じてPlaywright/Cypress等
- スクリーンショット: UI変更時は
docs/screenshots/ に変更前後を保存
- 期待出力: 主要コマンド/APIの fixture を
tests/fixtures/ 等に配置
- Stop Hook: 必要に応じて
.claude/settings.json の Stop でテスト自動実行
PJ固有ルール
### 3. コンテキスト除外設定(必要な場合のみ)
`.claudeignore`という公式機能は存在しない(@context/claude-customization-guide.md §6 参照)。除外が必要な場合は公式機構を使う:
- **秘匿ファイル・読ませたくないパス**: `.claude/settings.json` の `permissions.deny` に `Read()` ルールを追加(例: `"Read(secrets/**)"`、`"Read(*.pem)"`)
- **モノレポで他チームのCLAUDE.mdを除外**: `claudeMdExcludes` 設定
lockファイル・ビルド成果物は通常Claudeが自発的に読まないため、実際に無駄読みが観測された場合のみ設定する。
### 4. gitignore設定
`.local/`がgitに追跡されないよう設定:
```bash
# global gitignoreに.local/があるか確認
if git config --global core.excludesfile &>/dev/null; then
GLOBAL_GITIGNORE=$(git config --global core.excludesfile)
if grep -q "^\.local/$" "$GLOBAL_GITIGNORE" 2>/dev/null; then
echo "global gitignoreで.local/は除外済み"
else
if git rev-parse --git-dir &>/dev/null; then
echo ".local/" >> "$(git rev-parse --git-dir)/info/exclude"
echo ".git/info/excludeに.local/を追加"
else
echo "gitリポジトリ外のため、gitignore設定をスキップ"
fi
fi
fi
5. ユーザーへの確認
ユーザーに選択肢を提示して以下を確認(Claude Code: AskUserQuestion ツール):
- メモリディレクトリの場所(モノレポの場合は調整が必要)
- 品質チェックコマンド
- ベースブランチ
- PJ固有のルール
- 読ませたくないパス(あれば permissions.deny の Read ルールに反映)
6. 設定の調整
ユーザーの回答に基づいてCLAUDE.mdと.claude/settings.jsonを調整。
モノレポの場合
モノレポでは、メモリディレクトリの場所を明確に指定:
## 変数
MEMORY_DIR=<monorepo-root>/.local/
複数gitリポジトリの親ディレクトリで作業する場合
親ディレクトリ自体がgitリポジトリでない場合、gitignore設定は不要(各子リポジトリで個別対応)。
.claude/rules/の活用(オプション)
パス固有のルールがある場合、.claude/rules/を作成:
mkdir -p .claude/rules
---
paths:
- "src/api/**/*.ts"
---
- すべてのAPIエンドポイントに入力バリデーションを含めること