#!/usr/bin/env python3
"""残りのテンプレートファイルとガイドを一括生成するスクリプト"""
import os
BASE = "/home/ubuntu/claude_fullset"
FILES = {}
# ===== 05_guides/FLOW_GUIDE.md =====
FILES["05_guides/FLOW_GUIDE.md"] = """# Claude Code読み込みフロー完全ガイド v3.0
# このファイルを読めば、最初から最後まで何をすればいいかわかります
---
## 全体フロー(7ステップ)
```
新しいプロジェクト開始
↓
STEP 1: ファイルを準備する(5分)
↓
STEP 2: P-00で要件定義する(30〜60分)
↓
STEP 3: P-01で毎日開発する(繰り返し)
↓
STEP 4: P-04でレビューする(フェーズ完了時)
↓
STEP 5: P-05でテストする(フェーズ完了時)
↓
STEP 6: P-08で本番移行する(完成時)
↓
STEP 7: P-14でハーネスを更新する(完了後)
```
---
## STEP 1:ファイルを準備する(5分)
```bash
# プロジェクトフォルダを作る
mkdir my-project && cd my-project && mkdir docs
# コアファイルをコピーする
cp ~/claude_fullset/01_core/CLAUDE.md ./CLAUDE.md
cp ~/claude_fullset/01_core/CONSTRAINTS.md ./CONSTRAINTS.md
cp ~/claude_fullset/01_core/AGENTS.md ./AGENTS.md
cp ~/claude_fullset/01_core/RULES.md ./RULES.md
cp ~/claude_fullset/01_core/docs/progress.md ./docs/progress.md
```
CLAUDE.md の「PART A:プロジェクト情報」だけ書き換える(5分)。
他のPART B〜Mはそのまま使えます。
---
## STEP 2:P-00で要件定義する(30〜60分)
Claude Codeを開いて、`03_prompts/ALL_PROMPTS.md` の「P-00」をコピーして貼り付ける。
Claudeが7つの質問をしてくるので日本語で答えるだけ。
自動生成されるもの:
- docs/SRS_v1.md(要件定義書)
- docs/SDD_v1.md(設計書)
- docs/TEST_PLAN_v1.md(テスト計画書)
- docs/E2E_SCENARIOS_v1.md(E2Eシナリオ)
---
## STEP 3:P-01で毎日開発する
**毎日Claude Codeを開いたら、最初に必ず「P-01」を貼り付ける。**
これをやらないと:
- Claudeが前回の状態を知らない
- 同じことを繰り返す
- 設計が崩壊する
開発中に困ったら:
| 状況 | 使うプロンプト |
|-----|-------------|
| バグが出た | P-02 |
| バグを直す | P-03 |
| ログを見たい | P-06 |
| 会話が50往復を超えた | P-07(必ず実施) |
---
## STEP 4:P-04でレビューする
フェーズが完成したら P-04 でレビューする。
- 🔴が出たら修正する(テストを削除・スキップしない)
- 🟡が出たら修正するかSRSを更新する
- 🟢になったら次のフェーズへ
---
## STEP 5:P-05でテストする
レビューが通ったら P-05 でテストを実行する。
全テスト通過 + カバレッジ80%以上 = 本番移行の準備OK
---
## STEP 6:P-08で本番移行する
本番環境にデプロイするときは必ず P-08 を使う。
チェックリストを全部クリアしてから移行する。
1項目でも🔴があれば移行しない。
---
## STEP 7:P-14でハーネスを更新する
プロジェクトが完了したら P-14 で学びをハーネスに保存する。
次のプロジェクトでこの学びが活かされる。
---
## よくある質問
**Q:どのファイルをClaude Codeに渡せばいいですか?**
A:Claude Codeはプロジェクトルートのファイルを自動的に読みます。
「渡す」操作は不要です。P-01を貼り付けるだけでOKです。
**Q:SRSって難しそうですが、書けますか?**
A:P-00を使えばClaude Codeが質問してくれるので、
日本語で答えるだけでSRSが自動生成されます。
**Q:バグが出たらどうすればいいですか?**
A:P-02を貼り付けて、エラーメッセージをコピーするだけです。
**Q:途中でClaude Codeを閉じても大丈夫ですか?**
A:大丈夫です。docs/progress.mdに進捗が保存されています。
次回のセッション開始時にP-01を使えば続きから開発できます。
---
## トラブルシューティング
**Claudeが「前の会話を覚えていない」と言い始めた**
→ P-07(セッション切り替え)を使う
**同じエラーが何度も出る**
→ P-02(バグ調査)で原因を特定する
→ 3回試しても解決しない場合はアプローチを変える
**実装が迷走している**
→ P-07でセッションを切り替える
→ SRSに戻って要件を確認する
**テストが通らない**
→ テストを削除・スキップしない(CONSTRAINTS.md違反)
→ P-02でバグを調査して実装を修正する
"""
# ===== 02_templates/test/TEST_PLAN_TEMPLATE.md =====
FILES["02_templates/test/TEST_PLAN_TEMPLATE.md"] = """# テスト計画書テンプレート(IEEE 829:2008準拠)v3.0
# 使い方:[角括弧]の部分を書き換えて使う
---
## ドキュメント管理
| 項目 | 内容 |
|-----|------|
| ドキュメントID | TEST-[略称]-v1.0 |
| プロジェクト名 | [プロジェクト名] |
| 対応SRS | SRS-[略称]-v1.0 |
| 作成日 | [YYYY-MM-DD] |
| ステータス | 草稿 |
---
## 1. テスト目的
本テスト計画は、[プロジェクト名]のSRS記載の全要件が正しく実装されていることを検証する。
テスト通過をもってフェーズ完了・本番移行の可否を判断する。
---
## 2. テスト種別と実行タイミング
| テスト種別 | 実行タイミング | ツール | 目標 |
|----------|-------------|-------|-----|
| ユニットテスト | 関数実装のたびに | Jest/Vitest | カバレッジ80%以上 |
| 統合テスト | API実装のたびに | Supertest | 主要APIを全て |
| E2Eテスト | フェーズ完了時 | 手動 | 主要フローを全て |
| セキュリティテスト | 本番移行前 | 手動+OWASP | チェックリスト全項目 |
---
## 3. テストケース一覧
### 3.1 ユニットテスト
| テストID | 対象関数 | 対応要件ID | テスト内容 | 期待結果 |
|--------|--------|----------|---------|--------|
| UT-001 | [関数名] | FR-AUTH-001 | 正常系:有効な入力 | 成功レスポンスが返る |
| UT-002 | [関数名] | FR-AUTH-001 | 異常系:重複データ | エラーが返る |
| UT-003 | [関数名] | FR-AUTH-002 | 正常系:正しい認証 | JWTトークンが返る |
| UT-004 | [関数名] | FR-AUTH-002 | 異常系:誤った認証 | 401エラーが返る |
| UT-005 | [関数名] | [要件ID] | [テスト内容] | [期待結果] |
### 3.2 E2Eテストシナリオ一覧
| シナリオID | シナリオ名 | 対応要件 | 優先度 |
|---------|---------|--------|-------|
| E2E-001 | 新規ユーザー登録からログインまで | FR-AUTH-001〜002 | 高 |
| E2E-002 | メイン機能の基本フロー | FR-XXX-001〜003 | 高 |
| E2E-003 | エラー時の表示確認 | FR-AUTH-002 | 中 |
---
## 4. 合否判定基準
### フェーズ完了の条件(全項目クリアが必要)
- [ ] ユニットテスト:全テスト通過
- [ ] ユニットテスト:カバレッジ80%以上
- [ ] E2Eテスト:全シナリオ通過
- [ ] セキュリティ:チェックリスト全項目グリーン
### 本番移行の条件(全項目クリアが必要)
- [ ] フェーズ完了条件を全て満たしている
- [ ] ステージング環境で24時間以上安定稼働している
- [ ] ロールバック手順が文書化されている
- [ ] バックアップが取得されている
- [ ] 監視・アラートが設定されている
---
## 5. テスト実行ログ
### フェーズ1テスト結果
| 実行日 | ユニットテスト | カバレッジ | E2E | セキュリティ | 判定 |
|-------|-------------|---------|-----|-----------|-----|
| [日付] | XX/XX通過 | XX% | XX/XX通過 | XX/XX | 🟢/🔴 |
"""
# ===== 02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md =====
FILES["02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md"] = """# E2Eテストシナリオテンプレート v3.0
# 使い方:シナリオをコピーして[角括弧]を書き換えて使う
---
## シナリオの書き方
```
E2E-[番号]:[シナリオ名] - [正常系/異常系]
対応要件ID:FR-XXX-XXX
前提条件(Given):
- [テスト開始時の状態]
操作手順(When):
1. [操作1]
2. [操作2]
期待結果(Then):
- [確認すべき結果1]
- [確認すべき結果2]
テストデータ:
- [キー]:[値]
```
---
## サンプルシナリオ
### E2E-001:新規ユーザー登録 - 正常系
対応要件ID:FR-AUTH-001
前提条件(Given):
- アプリケーションが起動している
- test@example.com はまだ登録されていない
操作手順(When):
1. ブラウザで http://localhost:3000/register を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に TestPass123! を入力する
4. 「登録する」ボタンをクリックする
期待結果(Then):
- 「登録が完了しました」というメッセージが表示される
- ダッシュボード(/dashboard)にリダイレクトされる
テストデータ:
- メールアドレス:test@example.com
- パスワード:TestPass123!
---
### E2E-002:ログイン - 正常系
対応要件ID:FR-AUTH-002
前提条件(Given):
- test@example.com が登録済みである
操作手順(When):
1. ブラウザで http://localhost:3000/login を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に TestPass123! を入力する
4. 「ログイン」ボタンをクリックする
期待結果(Then):
- ダッシュボード(/dashboard)にリダイレクトされる
- ナビゲーションに「ログアウト」ボタンが表示される
---
### E2E-003:ログイン失敗 - 異常系
対応要件ID:FR-AUTH-002
前提条件(Given):
- test@example.com が登録済みである
操作手順(When):
1. ブラウザで http://localhost:3000/login を開く
2. メールアドレス欄に test@example.com を入力する
3. パスワード欄に WrongPass999! を入力する
4. 「ログイン」ボタンをクリックする
期待結果(Then):
- 「メールアドレスまたはパスワードが正しくありません」が表示される
- ログインページに留まる
- パスワード欄がクリアされる
"""
# ===== 02_templates/harness/HARNESS_TEMPLATE.md =====
FILES["02_templates/harness/HARNESS_TEMPLATE.md"] = """# 成長型ハーネステンプレート v3.0
## ハーネスとは
プロジェクトをまたいで知識・テンプレート・パターンを蓄積する仕組みです。
新しいプロジェクトを始めるたびに、過去の学びを活用して品質と速度を向上させます。
## ハーネスのディレクトリ構造
```
~/claude-harness/
├── templates/
│ ├── CLAUDE.md.template ← 全プロジェクト共通の設定
│ ├── SRS.template.md ← SRSテンプレート
│ └── TEST_PLAN.template.md ← テスト計画テンプレート
├── learnings/
│ └── [project-name]/
│ ├── bugs_and_fixes.md ← バグと解決方法
│ ├── effective_prompts.md ← 効果的だったプロンプト
│ └── code_snippets/ ← 再利用できるコード
├── patterns/
│ ├── auth_pattern.md ← 認証パターン
│ └── api_pattern.md ← APIパターン
└── harness_index.md ← ハーネス全体の索引
```
---
## H-INIT:ハーネス初期化プロンプト(最初の1回だけ)
```
ハーネスを初期化してください。
以下のコマンドを実行してください:
mkdir -p ~/claude-harness/{templates,learnings,patterns}
次に、以下のファイルをコピーしてください:
cp ~/claude_fullset/01_core/CLAUDE.md ~/claude-harness/templates/CLAUDE.md.template
cp ~/claude_fullset/02_templates/srs/SRS_TEMPLATE.md ~/claude-harness/templates/SRS.template.md
cp ~/claude_fullset/02_templates/test/TEST_PLAN_TEMPLATE.md ~/claude-harness/templates/TEST_PLAN.template.md
最後に ~/claude-harness/harness_index.md を以下の内容で作成してください:
# ハーネスインデックス
作成日:[今日の日付]
プロジェクト数:0
最終更新:[今日の日付]
## 登録済みプロジェクト
(まだありません)
初期化完了後に「ハーネス初期化完了」と報告してください。
```
---
## H-NEW:新プロジェクト開始プロンプト
```
新しいプロジェクト「[プロジェクト名]」を開始します。
1. ~/claude-harness/templates/ からテンプレートをコピーしてください:
cp ~/claude-harness/templates/CLAUDE.md.template ./CLAUDE.md
2. ~/claude-harness/learnings/ に類似プロジェクトがあれば確認してください
3. CLAUDE.md の PART A を今回のプロジェクト情報に書き換えてください:
- プロジェクト名:[プロジェクト名]
- 目的:[目的]
- 技術スタック:[技術スタック]
完了後に「プロジェクト開始準備完了」と報告してください。
```
---
## H-UPDATE:プロジェクト完了後の学習蓄積プロンプト
```
プロジェクト「[プロジェクト名]」が完了しました。
学びをハーネスに蓄積してください。
mkdir -p ~/claude-harness/learnings/[プロジェクト名]
以下のファイルを作成してください:
1. ~/claude-harness/learnings/[プロジェクト名]/bugs_and_fixes.md
- 発生したバグのリスト(要件ID・症状・原因・解決方法)
- 再発防止策
2. ~/claude-harness/learnings/[プロジェクト名]/effective_prompts.md
- 特に効果的だったプロンプト
- 改善したプロンプト
3. ~/claude-harness/learnings/[プロジェクト名]/code_snippets/
- 再利用可能なコードパターン
4. ~/claude-harness/harness_index.md を更新する
- プロジェクト数を+1する
- 登録済みプロジェクトに追加する
完了後に「ハーネス更新完了」と報告してください。
```
---
## H-REVIEW:ハーネスレビュープロンプト(月1回)
```
ハーネスをレビューしてください。
1. ~/claude-harness/harness_index.md を読む
2. ~/claude-harness/learnings/ の全プロジェクトを確認する
3. 共通するバグパターンを特定する(3つ以上あれば patterns/ に追加)
4. テンプレートを最新の学びで更新する
報告内容:
- 蓄積されたプロジェクト数
- 共通バグパターン(あれば)
- テンプレートの更新内容
```
"""
# ===== 00_START/QUICK_START.md(更新版) =====
FILES["00_START/QUICK_START.md"] = """# クイックスタートガイド v3.0
# 非エンジニアの素人でも、これを読めば今日から開発できます
---
## このフルセットに含まれるもの
```
claude_fullset/
├── 00_START/
│ └── QUICK_START.md ← 今読んでいるファイル
├── 01_core/ ← プロジェクトにコピーするコアファイル
│ ├── CLAUDE.md ← 全知識集約(必須)
│ ├── CONSTRAINTS.md ← 禁止事項(必須)
│ ├── AGENTS.md ← エージェント設計(必須)
│ ├── RULES.md ← 開発ルール(必須)
│ └── docs/
│ └── progress.md ← 進捗記録テンプレート
├── 02_templates/ ← 自動生成の元になるテンプレート
│ ├── srs/SRS_TEMPLATE.md ← 要件定義書テンプレート(IEEE 29148)
│ ├── sdd/SDD_TEMPLATE.md ← 設計書テンプレート(IEEE 1016)
│ ├── test/TEST_PLAN_TEMPLATE.md ← テスト計画書テンプレート(IEEE 829)
│ ├── e2e/E2E_SCENARIOS_TEMPLATE.md ← E2Eシナリオテンプレート
│ └── harness/HARNESS_TEMPLATE.md ← 成長型ハーネステンプレート
├── 03_prompts/
│ └── ALL_PROMPTS.md ← 全プロンプト集(P-00〜P-18)
├── 04_examples/
│ └── SRS_EXAMPLE_KEIBA.md ← SRSサンプル(競馬予想システム)
└── 05_guides/
└── FLOW_GUIDE.md ← 詳細フローガイド
```
---
## 今すぐ始める(3ステップ)
### ステップ1:コアファイルをコピーする(2分)
```bash
mkdir my-project && cd my-project && mkdir docs
cp ~/claude_fullset/01_core/CLAUDE.md ./CLAUDE.md
cp ~/claude_fullset/01_core/CONSTRAINTS.md ./CONSTRAINTS.md
cp ~/claude_fullset/01_core/AGENTS.md ./AGENTS.md
cp ~/claude_fullset/01_core/RULES.md ./RULES.md
cp ~/claude_fullset/01_core/docs/progress.md ./docs/progress.md
```
### ステップ2:CLAUDE.mdのPART Aを書き換える(3分)
CLAUDE.md を開いて「PART A:プロジェクト情報」の部分だけ書き換える。
他の部分はそのままでOK。
### ステップ3:P-00を貼り付けて開発開始(30〜60分)
Claude Codeを開いて `03_prompts/ALL_PROMPTS.md` の「P-00」をコピーして貼り付ける。
Claudeが質問してくるので日本語で答えるだけ。
---
## 毎日の開発ルーティン
1. Claude Codeを開く
2. P-01を貼り付ける(毎回必ず)
3. 開発する
4. 50往復を超えたらP-07を使う
5. 終了前にP-07でセッションを切り替える
---
## 困ったときの対処法
| 困りごと | 使うプロンプト |
|--------|-------------|
| バグが出た | P-02 |
| バグを直す | P-03 |
| コードを確認したい | P-04 |
| テストを実行したい | P-05 |
| ログを見たい | P-06 |
| 会話が長くなった | P-07 |
| 本番に移行したい | P-08 |
| 緊急で戻したい | P-09 |
| 進捗を確認したい | P-10 |
| セキュリティを確認したい | P-11 |
| プロジェクトを完了したい | P-12 |
| 週1回のチェック | P-13 |
---
## 世界基準との対応
| ドキュメント | 準拠規格 |
|----------|--------|
| SRS(要件定義書) | IEEE 29148:2018 |
| SDD(設計書) | IEEE 1016:2009 |
| テスト計画書 | IEEE 829:2008 |
| 品質特性 | ISO 25010:2023 |
| 本番移行チェックリスト | Google SRE PRR |
| CLAUDE.md構成 | Anthropic公式SDD |
---
詳細は `05_guides/FLOW_GUIDE.md` を読んでください。
"""
# ファイルを書き込む
for rel, content in FILES.items():
path = f"{BASE}/{rel}"
os.makedirs(os.path.dirname(path), exist_ok=True)
with open(path, "w", encoding="utf-8") as f:
f.write(content)
print(f"OK: {rel} ({len(content):,} chars)")
print("\nALL DONE")
ビルドスクリプト: ガイド類とフローガイドの一括生成
元ファイル: システム要件定義の分析と汎用化方法/gen_templates.py
要約
claude_fullsetの05_guidesなど残りのテンプレート・ガイド文書を生成するPythonスクリプト。FLOW_GUIDE.mdでは新規プロジェクト開始から本番移行・ハーネス更新までの7ステップ運用フローと、P-00/P-01等のプロンプトの使いどころを具体的に記述する。
要点
- FLOW_GUIDE.md(7ステップ全体フロー)を生成
- STEP1ファイル準備のcpコマンド群を例示
- P-00要件定義・P-01日次開発・P-04/05/08/14の使用タイミングを明記
- PART Aだけ書き換える運用方針を文書化
- ファイル内容を文字列辞書で保持しBASE配下に出力