← AI開発 資料アーカイブ
ビルド/生成スクリプト

ビルドスクリプト: claude_fullsetテンプレート一括生成

元ファイル: システム要件定義の分析と汎用化方法/build_fullset.py

要約

claude_fullset配下のSDD/テスト計画/E2Eシナリオ/ハーネスなどのテンプレートMarkdownをPythonの辞書から一括生成するスクリプト。各テンプレートはIEEE 1016/IEEE 829準拠を謳い、要件IDと紐づくテーブル雛形やClaude Code用の実行プロンプトを内包する。

要点

Pythonテンプレート生成SDDテスト計画ハーネス

#!/usr/bin/env python3
"""
claude_fullset の残りファイルを一括生成するスクリプト
"""
import os

BASE = "/home/ubuntu/claude_fullset"

files = {}

# ============================================================
# 02_templates/sdd/SDD_TEMPLATE.md
# ============================================================
files["02_templates/sdd/SDD_TEMPLATE.md"] = """# SDD テンプレート(IEEE 1016:2009準拠)v3.0

## ドキュメント管理
| 項目 | 内容 |
|-----|------|
| ドキュメントID | SDD-[略称]-v1.0 |
| 対応SRS | SRS-[略称]-v1.0 |
| 作成日 | [YYYY-MM-DD] |

## 1. 設計概要

### 1.1 アーキテクチャパターン
採用:[例:MVC / クリーンアーキテクチャ]
選択理由:[理由]

### 1.2 技術スタック
| レイヤー | 技術 | 選択理由 |
|--------|------|---------|
| フロントエンド | [例:React+TypeScript] | [理由] |
| バックエンド | [例:Node.js+Express] | [理由] |
| データベース | [例:PostgreSQL] | [理由] |
| ホスティング | [例:Vercel+Supabase] | [理由] |

## 2. ビュー1:コンテキストビュー(システム全体像)

外部ユーザー → フロントエンド → バックエンド → DB / 外部API

| 外部システム | 通信方式 | 用途 |
|-----------|---------|------|
| [例:外部API名] | REST API | [用途] |

## 3. ビュー2:コンポーネントビュー(モジュール設計)

ディレクトリ構造:
  src/
    controllers/   # HTTPリクエスト処理
    services/      # ビジネスロジック
    repositories/  # データアクセス層
    models/        # 型定義
    middleware/    # 認証・バリデーション
    routes/        # ルーティング
    utils/         # ユーティリティ

## 4. ビュー3:データビュー(データモデル設計)

### usersテーブル
| カラム | 型 | 制約 | 説明 |
|-------|---|------|------|
| id | UUID | PK | ユーザーID |
| email | VARCHAR(255) | UNIQUE, NOT NULL | メール |
| password_hash | VARCHAR(255) | NOT NULL | bcryptハッシュ |
| created_at | TIMESTAMP | NOT NULL | 作成日時 |

### [追加テーブル名]
| カラム | 型 | 制約 | 説明 |
|-------|---|------|------|
| id | UUID | PK | ID |
| user_id | UUID | FK(users.id) | ユーザーID |

## 5. ビュー4:APIインターフェースビュー

| メソッド | パス | 認証 | 説明 | 要件ID |
|--------|-----|------|------|-------|
| POST | /api/auth/register | 不要 | ユーザー登録 | FR-AUTH-001 |
| POST | /api/auth/login | 不要 | ログイン | FR-AUTH-002 |
| GET | /api/[リソース] | 必要 | 一覧取得 | FR-XXX-001 |

レスポンス形式(統一):
  成功: { "success": true, "data": {} }
  エラー: { "success": false, "error": { "code": "CODE", "message": "日本語メッセージ" } }

## 6. セキュリティ設計
| 脅威 | 対策 |
|-----|------|
| SQLインジェクション | パラメータ化クエリ |
| XSS | 入力値サニタイズ |
| ブルートフォース | レートリミット(5回/分) |
| 情報漏洩 | エラーメッセージの抽象化 |
"""

# ============================================================
# 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. テスト範囲

### 2.1 テスト対象(スコープ内)
- [機能1]のユニットテスト
- [機能2]のユニットテスト
- [機能1〜2]の統合テスト
- 主要ユーザーフローのE2Eテスト

### 2.2 テスト対象外(スコープ外)
- [対象外の機能]
- パフォーマンステスト(別途計画)

## 3. テスト種別と実行タイミング

| テスト種別 | 実行タイミング | ツール | 目標カバレッジ |
|----------|-------------|-------|-------------|
| ユニットテスト | 関数実装のたびに | Jest/Vitest | 80%以上 |
| 統合テスト | API実装のたびに | Supertest | 主要APIを全て |
| E2Eテスト | フェーズ完了時 | Playwright | 主要フローを全て |
| セキュリティテスト | 本番移行前 | 手動 + OWASP | チェックリスト全項目 |

## 4. テストケース一覧

### 4.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エラーが返る |

### 4.2 E2Eテストシナリオ一覧

| シナリオID | シナリオ名 | 対応要件 | 優先度 |
|---------|---------|--------|-------|
| E2E-001 | 新規ユーザー登録からログインまで | FR-AUTH-001〜002 | 高 |
| E2E-002 | 記事作成から公開まで | FR-ART-001〜003 | 高 |
| E2E-003 | ログイン失敗時のエラー表示 | FR-AUTH-002 | 中 |

## 5. テスト環境

| 環境 | 用途 | URL |
|-----|------|-----|
| ローカル | ユニット・統合テスト | http://localhost:3000 |
| ステージング | E2Eテスト | https://staging.[ドメイン] |

## 6. 合否判定基準

### 6.1 フェーズ完了の条件
- ユニットテスト:全テスト通過、カバレッジ80%以上
- E2Eテスト:全シナリオ通過
- セキュリティ:チェックリスト全項目グリーン

### 6.2 本番移行の条件
- 上記全条件を満たしていること
- ステージング環境で24時間以上安定稼働していること
- ロールバック手順が文書化されていること

## 7. テスト実行プロンプト(Claude Code用)

### ユニットテスト実行
```
AGENT-TESTとして動作してください。
docs/SRS_v1.md のFR-[XXX]-[001]の受け入れ基準をもとに、
以下のユニットテストを作成・実行してください:
1. 正常系テスト(Given-When-Then形式)
2. 異常系テスト(エラーケース)
3. 境界値テスト(最大値・最小値・空値)
テスト結果を報告してください。
```

### E2Eテスト実行
```
AGENT-TESTとして動作してください。
02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md のシナリオE2E-[XXX]を実行してください。
Playwrightを使用して、実際のブラウザ操作でシナリオを検証してください。
結果を報告してください。
```
"""

# ============================================================
# 02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md
# ============================================================
files["02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md"] = """# E2Eテストシナリオテンプレート v3.0
# 使い方:このテンプレートをコピーしてシナリオを追加する

---

## シナリオの書き方

### E2E-[番号]:[シナリオ名] - [正常系/異常系]

**対応要件ID:** FR-XXX-XXX

**前提条件(Given):**
- [テスト開始時の状態1]
- [テスト開始時の状態2]

**操作手順(When):**
1. [操作1:例:ブラウザで http://localhost:3000 を開く]
2. [操作2:例:「登録」ボタンをクリックする]
3. [操作3:例:メールアドレスを入力する]

**期待結果(Then):**
- [確認すべき結果1:例:「登録完了」メッセージが表示される]
- [確認すべき結果2:例:ダッシュボードにリダイレクトされる]

**テストデータ:**
- メールアドレス:test@example.com
- パスワード:TestPass123!

---

## サンプルシナリオ集

### 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」が表示される

**テストデータ:**
- email: test@example.com
- password: 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)にリダイレクトされる
- ナビゲーションに「test@example.com」が表示される

---

### E2E-003:ログイン失敗 - 異常系

**対応要件ID:** FR-AUTH-002

**前提条件(Given):**
- test@example.com が登録済みである

**操作手順(When):**
1. ブラウザで http://localhost:3000/login を開く
2. メールアドレス欄に「test@example.com」を入力する
3. パスワード欄に「WrongPassword」を入力する
4. 「ログイン」ボタンをクリックする

**期待結果(Then):**
- エラーメッセージ「メールアドレスまたはパスワードが正しくありません」が表示される
- ログインページに留まる
- パスワード欄がクリアされる

---

### E2E-004:[機能名] - [正常系/異常系]

**対応要件ID:** FR-[カテゴリ]-[番号]

**前提条件(Given):**
- [前提条件を記入]

**操作手順(When):**
1. [操作1]
2. [操作2]

**期待結果(Then):**
- [期待結果1]
- [期待結果2]
"""

# ============================================================
# 02_templates/harness/HARNESS_TEMPLATE.md
# ============================================================
files["02_templates/harness/HARNESS_TEMPLATE.md"] = """# 成長型ハーネステンプレート v3.0
# 使い方:プロジェクト完了後にこのテンプレートを使ってハーネスを更新する

---

## ハーネスとは

ハーネスとは、プロジェクトをまたいで知識・テンプレート・パターンを蓄積する仕組みです。
新しいプロジェクトを始めるたびに、過去の学びを活用して品質と速度を向上させます。

---

## ハーネスのディレクトリ構造

    ~/claude-harness/
    ├── templates/              # 再利用可能なテンプレート
    │   ├── CLAUDE.md.template  # 最新版CLAUDE.mdテンプレート
    │   ├── 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
    │   └── db_pattern.md
    └── harness_index.md        # ハーネス全体のインデックス

---

## H-INIT:ハーネス初期化プロンプト

新しいPCでハーネスを初期化するときに使う:

```
ハーネスを初期化してください。
以下のディレクトリ構造を ~/claude-harness/ に作成してください:

mkdir -p ~/claude-harness/{templates,learnings,patterns}

次に、以下のファイルをコピーしてください:
- claude_fullset/01_core/CLAUDE.md → ~/claude-harness/templates/CLAUDE.md.template
- claude_fullset/02_templates/srs/SRS_TEMPLATE.md → ~/claude-harness/templates/SRS.template.md
- claude_fullset/02_templates/test/TEST_PLAN_TEMPLATE.md → ~/claude-harness/templates/TEST_PLAN.template.md

最後に ~/claude-harness/harness_index.md を作成してください。
```

---

## H-NEW:新プロジェクト開始プロンプト

新しいプロジェクトを始めるときに使う:

```
新しいプロジェクト「[プロジェクト名]」を開始します。
以下を実施してください:

1. ~/claude-harness/templates/ からテンプレートをコピーする
   cp ~/claude-harness/templates/CLAUDE.md.template ./CLAUDE.md
   cp ~/claude-harness/templates/SRS.template.md ./docs/SRS_v1.md

2. 過去の類似プロジェクトの学びを確認する
   cat ~/claude-harness/harness_index.md

3. 関連するパターンを確認する
   ls ~/claude-harness/patterns/

4. CLAUDE.mdのPART Aを今回のプロジェクト情報に書き換える

準備ができたら報告してください。
```

---

## H-UPDATE:プロジェクト完了後の学習蓄積プロンプト

プロジェクト完了後に使う:

```
プロジェクト「[プロジェクト名]」が完了しました。
学んだことをハーネスに蓄積してください:

1. ~/claude-harness/learnings/[プロジェクト名]/ を作成する

2. bugs_and_fixes.md に記録する:
   - 発生したバグのパターン(3つ以上)
   - 各バグの解決方法
   - 今後の予防策

3. effective_prompts.md に記録する:
   - 特に効果的だったプロンプト(3つ以上)
   - どのシーンで使ったか
   - なぜ効果的だったか

4. code_snippets/ に保存する:
   - 再利用できそうなコードスニペット

5. ~/claude-harness/harness_index.md を更新する:
   - このプロジェクトのエントリを追加

6. 汎用パターンが見つかった場合は ~/claude-harness/patterns/ に追加する
```

---

## H-REVIEW:ハーネスレビュープロンプト

月1回、ハーネスを見直すときに使う:

```
ハーネスをレビューしてください:

1. ~/claude-harness/harness_index.md を読む
2. 最近のプロジェクトで共通するバグパターンを特定する
3. テンプレートを最新の学びで更新する
4. 不要になったパターンを削除する
5. レビュー結果を報告する
```
"""

# ============================================================
# 03_prompts/ALL_PROMPTS.md
# ============================================================
files["03_prompts/ALL_PROMPTS.md"] = """# 全プロンプト集(汎用・シーン別・フロー付き)v3.0
# 使い方:状況に合ったプロンプトをコピーして[角括弧]を書き換えて使う

---

## プロンプト早見表

| プロンプトID | 使うタイミング | 所要時間 |
|-----------|-------------|--------|
| P-00 | 新しいプロジェクトを始める(最初の1回) | 30分 |
| P-01 | 毎回のセッション開始時 | 5分 |
| P-02 | バグが発生したとき | 状況による |
| P-03 | バグを修正するとき | 状況による |
| P-04 | コードレビューをするとき | 30分 |
| P-05 | テストを実行するとき | 20分 |
| P-06 | ログを確認するとき | 10分 |
| P-07 | セッションを切り替えるとき | 10分 |
| P-08 | 本番移行するとき | 1時間 |
| P-09 | 緊急ロールバックするとき | 30分 |
| P-10 | 進捗を確認するとき | 10分 |
| P-11 | セキュリティを確認するとき | 30分 |
| P-12 | プロジェクトを完了するとき | 1時間 |
| P-13 | スペックドリフトをチェックするとき(週1回) | 20分 |
| P-14 | ハーネスを更新するとき(プロジェクト完了後) | 30分 |
| P-15 | SRSを自動生成するとき | 1時間 |
| P-16 | SDDを自動生成するとき | 1時間 |
| P-17 | テスト計画を自動生成するとき | 30分 |
| P-18 | E2Eシナリオを自動生成するとき | 30分 |

---

## P-00:新プロジェクト開始プロンプト(最初の1回)

**使うタイミング:** 新しいシステム開発を始めるとき

```
あなたはAGENT-REQ(要件定義エージェント)として動作してください。
以下のファイルを読んでください:
- CLAUDE.md
- CONSTRAINTS.md
- AGENTS.md
- RULES.md
- 02_templates/srs/SRS_TEMPLATE.md

読み終わったら、私に以下の質問をしてください(1つずつ):

1. 何を作りたいですか?(一文で説明してください)
2. 誰が使いますか?(どんな人が使うか教えてください)
3. 何ができれば成功ですか?(完成の定義を教えてください)
4. 絶対に必要な機能は何ですか?(3〜5個)
5. あれば良い機能は何ですか?
6. 使ってはいけない技術・制約はありますか?
7. いつまでに完成させたいですか?

回答をもとにSRS(docs/SRS_v1.md)を作成してください。
SRS完成後、AGENT-ARCHとしてSDD(docs/SDD_v1.md)を作成してください。
SDD完成後、AGENT-TESTとしてテスト計画書(docs/TEST_PLAN_v1.md)を作成してください。
全ドキュメント完成後、実装計画を提示してください。
```

---

## P-01:セッション開始プロンプト(毎回必ず使う)

**使うタイミング:** Claude Codeを開いて最初に送るメッセージ

```
新しいセッションを開始します。
以下のファイルを順番に読んでください:

1. CLAUDE.md
2. CONSTRAINTS.md
3. docs/SRS_v1.md(存在する場合)
4. docs/progress.md(存在する場合)

読み終わったら、以下を報告してください:
1. 現在のプロジェクト状態(フェーズ・完了要件数・未完了要件数)
2. 次に実施すべきアクション(優先順位付き)
3. 未解決の問題(あれば)

確認できたら「準備完了」と言ってください。
```

---

## P-02:バグ調査プロンプト

**使うタイミング:** エラーが発生したとき・動作がおかしいとき

```
AGENT-DEBUGとして動作してください。
以下のバグを調査してください:

【バグの症状】
[症状を具体的に記入。例:ログインボタンを押すと画面が白くなる]

【発生条件】
[いつ・どこで発生するか。例:Chromeでのみ発生。Safariでは正常]

【エラーメッセージ】
[エラーメッセージをそのままコピー。なければ「なし」と記入]

【最後に正常だったとき】
[例:昨日の午後まで正常だった。auth.service.tsを変更した後から発生]

調査手順:
1. エラーメッセージから原因を特定する
2. 関連するコードを確認する
3. 修正案を3つ提示する(リスクの低い順)
4. 修正前にgit commitで現在の状態を保存する
5. 最も安全な修正を実施する
6. テストで修正を確認する
```

---

## P-03:バグ修正プロンプト

**使うタイミング:** バグの原因が特定できたとき

```
以下のバグを修正してください:

【バグの原因】
[特定した原因を記入]

【修正方針】
[どのように修正するか]

修正手順:
1. 修正前にgit commitで現在の状態を保存する
   git commit -m "fix: [バグの概要]修正前の状態を保存"

2. 修正を実施する

3. 以下のテストを実行して修正を確認する:
   - 修正した機能の正常系テスト
   - 修正した機能の異常系テスト
   - 関連する機能の回帰テスト

4. 全テスト通過後にコミットする
   git commit -m "fix: [要件ID]: [バグの概要]を修正"

5. docs/bugs_and_fixes.md に記録する

修正完了後に報告してください。
```

---

## P-04:コードレビュープロンプト

**使うタイミング:** 実装が完了したとき・フェーズが完了したとき

```
AGENT-REVIEWとして動作してください。
以下の観点でコードレビューを実施してください:

【レビュー対象】
[例:FR-AUTH-001〜003の実装(src/controllers/auth.controller.ts等)]

レビュー観点:
1. SRS準拠チェック
   - SRSの全Must要件が実装されているか
   - 受け入れ基準(Given-When-Then)を満たしているか
   - SRSにない機能が追加されていないか

2. コード品質チェック(CONSTRAINTS.mdに基づく)
   - 関数が単一責任を守っているか
   - 命名規則を守っているか
   - 関数・ファイルのサイズ制限を守っているか

3. セキュリティチェック(CLAUDE.mdのPART Fに基づく)

4. テストチェック
   - テストカバレッジが80%以上か
   - テストが意味のある検証をしているか

結果を以下の形式で報告してください:
- 🟢 問題なし
- 🟡 軽微な問題あり(内容と修正案)
- 🔴 重大な問題あり(内容と修正案)
```

---

## P-05:テスト実行プロンプト

**使うタイミング:** 機能実装後・フェーズ完了時

```
AGENT-TESTとして動作してください。
以下のテストを実行してください:

【テスト対象】
[例:FR-AUTH-001〜003(ユーザー認証機能)]

実行手順:
1. ユニットテストを実行する
   npm test -- --coverage

2. テスト結果を報告する
   - 通過:XX件 / 全XX件
   - 失敗:[失敗したテスト名と原因]
   - カバレッジ:XX%

3. 失敗したテストがある場合:
   - 原因を特定する
   - テストを修正するのではなく実装を修正する
   - 修正後に再テストする

4. E2Eテストを実行する(フェーズ完了時)
   [E2E-001〜003のシナリオを実行]

全テスト通過後に報告してください。
```

---

## P-06:ログ確認プロンプト

**使うタイミング:** エラーが発生したとき・動作確認したいとき

```
以下のログを確認してください:

【確認したいこと】
[例:ログイン時にエラーが発生しているか確認したい]

確認手順:
1. エラーログを確認する
   tail -100 logs/error.log | grep -i error

2. アクセスログを確認する
   tail -50 logs/access.log

3. 以下を報告する:
   - エラーの発生時刻
   - エラーメッセージ
   - エラーが発生したリクエスト
   - エラーの原因(推測)

ログに問題が見つかった場合は、P-02(バグ調査)に進んでください。
```

---

## P-07:セッション切り替えプロンプト

**使うタイミング:** 会話が50往復を超えたとき・Claudeが迷走し始めたとき

```
セッションを切り替えます。
切り替え前に以下を実施してください:

1. 今日実装した内容をdocs/progress.mdに記録する:
   - 実装した要件ID
   - 完了したこと
   - 未完了のこと
   - 発生した問題と解決方法

2. 次のアクションをdocs/progress.mdに記録する:
   - 次にやること(優先順位付き)
   - 注意すべきこと

3. git commitを実行する:
   git add -A
   git commit -m "chore: セッション切り替え前の状態を保存"

4. 「セッション切り替え準備完了」と報告する

新しいセッションではP-01(セッション開始プロンプト)を使ってください。
```

---

## P-08:本番移行プロンプト

**使うタイミング:** 本番環境にデプロイするとき

```
本番移行を実施します。
CLAUDE.mdのPART G(本番移行チェックリスト)に従って進めてください。

移行前チェック(全項目グリーンになるまで移行しない):
1. 全テストが通過しているか確認する
   npm test

2. ステージング環境で動作確認する
   [ステージングURLで主要機能を確認]

3. ロールバック手順を確認する
   - ロールバックコマンド:git revert HEAD
   - DBロールバック手順:[手順を記入]

4. バックアップを取得する
   [バックアップコマンドを実行]

5. 監視・アラートが設定されているか確認する

全項目グリーンになったら「本番移行準備完了」と報告してください。
移行後24時間は以下を監視してください:
- エラーレート
- レスポンスタイム
- 主要機能の動作
```

---

## P-09:緊急ロールバックプロンプト

**使うタイミング:** 本番環境で重大な問題が発生したとき

```
緊急ロールバックを実施します。

【問題の症状】
[症状を記入]

【発生時刻】
[YYYY-MM-DD HH:MM]

ロールバック手順:
1. 現在の状態を確認する
   git log --oneline -5

2. 前のバージョンに戻す
   git revert HEAD --no-edit
   または
   git checkout [前のコミットハッシュ]

3. 再デプロイする
   [デプロイコマンドを実行]

4. 動作確認する
   [主要機能が正常に動作するか確認]

5. 問題の原因を調査する(ロールバック後に実施)

ロールバック完了後に報告してください。
```

---

## P-10:進捗確認プロンプト

**使うタイミング:** 開発の進捗を確認したいとき

```
現在の進捗を報告してください。

以下のファイルを読んで報告してください:
- docs/SRS_v1.md(全要件リスト)
- docs/progress.md(現在の進捗)

報告内容:
1. 完了した要件(要件ID・機能名)
2. 進行中の要件(要件ID・機能名・進捗率)
3. 未着手の要件(要件ID・機能名)
4. 現在のフェーズとRYGゲートの状態
5. 予定通りに進んでいるか

問題がある場合は、解決策も提示してください。
```

---

## P-11:セキュリティ確認プロンプト

**使うタイミング:** 本番移行前・定期セキュリティチェック

```
AGENT-SECとして動作してください。
CLAUDE.mdのPART F(セキュリティチェックリスト)に基づいて、
セキュリティ確認を実施してください。

確認項目:
1. 全通信がHTTPS化されているか
2. APIキーが環境変数に格納されているか
3. .envが.gitignoreに含まれているか
4. SQLインジェクション対策があるか
5. XSS対策があるか
6. 認証が必要なAPIに認証があるか
7. パスワードがハッシュ化されているか
8. ログに秘密情報が出力されていないか

各項目を確認して、以下の形式で報告してください:
- 🟢 OK:[確認方法]
- 🔴 NG:[問題内容と修正方法]
```

---

## P-12:プロジェクト完了プロンプト

**使うタイミング:** 全要件の実装が完了したとき

```
プロジェクト完了の最終確認を実施してください。

CLAUDE.mdのPART B(完了基準7項目)を全て確認してください:
1. SRSの全Must要件が実装されているか
2. ユニットテストが全て通過しているか(カバレッジ80%以上)
3. E2Eテストシナリオが全て通過しているか
4. セキュリティチェックリストが全項目グリーンか
5. 本番移行チェックリストが全項目グリーンか
6. スペックドリフトチェックで差分ゼロか
7. progress.mdが最新状態に更新されているか

全項目クリアしたら「プロジェクト完了」と宣言してください。
完了後はP-14(ハーネス更新)を実施してください。
```

---

## P-13:スペックドリフトチェックプロンプト(週1回)

**使うタイミング:** 週に1回、月曜日など定期的に実施

```
スペックドリフトチェックを実施してください。

docs/SRS_v1.md と現在の実装を比較して、以下を報告してください:

1. SRSに記載があるが未実装の機能
   - 要件ID・機能名・未実装の理由

2. 実装されているがSRSに記載のない機能
   - 機能名・追加された経緯
   - SRSに追記すべきか、削除すべきか

3. SRSの受け入れ基準を満たしていない機能
   - 要件ID・機能名・不足している点

4. 総合評価
   - 🟢 ドリフトなし
   - 🟡 軽微なドリフトあり(SRS更新が必要)
   - 🔴 重大なドリフトあり(実装修正が必要)
```

---

## P-14:ハーネス更新プロンプト(プロジェクト完了後)

**使うタイミング:** プロジェクトが完了したとき

```
AGENT-HARNESSとして動作してください。
このプロジェクトの学びをハーネスに蓄積してください。

02_templates/harness/HARNESS_TEMPLATE.md のH-UPDATEプロンプトに従って、
以下を ~/claude-harness/ に保存してください:

1. bugs_and_fixes.md(発生したバグと解決方法)
2. effective_prompts.md(効果的だったプロンプト)
3. code_snippets/(再利用可能なコード)
4. harness_index.md の更新

完了後に報告してください。
```

---

## P-15:SRS自動生成プロンプト

**使うタイミング:** 要件定義書を一から作るとき

```
AGENT-REQとして動作してください。
02_templates/srs/SRS_TEMPLATE.md を使って、
私のやりたいことをSRSに変換してください。

私のやりたいこと:
[ここに自由に書く。箇条書きでも文章でもOK]

作成手順:
1. 上記の内容を分析して、不明な点を質問する(最大5つ)
2. 回答をもとにSRSを作成する
3. SRSをdocs/SRS_v1.mdに保存する
4. SRSの要約(要件数・フェーズ構成)を報告する

注意:
- 全要件にGiven-When-Then形式の受け入れ基準を書く
- Must/Should/Could/Won'tで優先度を分類する
- 非機能要件(パフォーマンス・セキュリティ等)も必ず含める
```

---

## P-16:SDD自動生成プロンプト

**使うタイミング:** 設計書を作るとき(SRS完成後)

```
AGENT-ARCHとして動作してください。
docs/SRS_v1.md を読んで、
02_templates/sdd/SDD_TEMPLATE.md を使ってSDDを作成してください。

作成内容(IEEE 1016:2009の4ビュー):
1. ビュー1:コンテキストビュー(システム全体像)
2. ビュー2:コンポーネントビュー(ディレクトリ構造・モジュール設計)
3. ビュー3:データビュー(テーブル定義・ER図)
4. ビュー4:インターフェースビュー(APIエンドポイント一覧)

注意:
- SRSの全要件に対応するAPIエンドポイントを設計する
- セキュリティ設計(認証・認可・入力検証)を必ず含める
- 環境変数一覧を作成する

完成したSDDをdocs/SDD_v1.mdに保存してください。
```

---

## P-17:テスト計画自動生成プロンプト

**使うタイミング:** テスト計画書を作るとき(SRS完成後)

```
AGENT-TESTとして動作してください。
docs/SRS_v1.md を読んで、
02_templates/test/TEST_PLAN_TEMPLATE.md を使ってテスト計画書を作成してください。

作成内容(IEEE 829:2008準拠):
1. テスト対象の全要件リスト
2. ユニットテストケース一覧(全Must要件)
3. E2Eテストシナリオ一覧(主要ユーザーフロー)
4. 合否判定基準
5. テスト実行スケジュール

注意:
- 全テストケースにGiven-When-Then形式を使う
- 正常系・異常系・境界値の3パターンを作る
- テストデータも具体的に記載する

完成したテスト計画書をdocs/TEST_PLAN_v1.mdに保存してください。
```

---

## P-18:E2Eシナリオ自動生成プロンプト

**使うタイミング:** E2Eテストシナリオを作るとき

```
AGENT-TESTとして動作してください。
docs/SRS_v1.md のユーザーストーリーをもとに、
02_templates/e2e/E2E_SCENARIOS_TEMPLATE.md を使って
E2Eテストシナリオを作成してください。

作成するシナリオ:
1. 主要ユーザーフロー(ハッピーパス)
   - 新規ユーザーが最初に使うフロー
   - 既存ユーザーの典型的な使い方

2. エラーフロー(アンハッピーパス)
   - 入力ミスのケース
   - 権限エラーのケース
   - ネットワークエラーのケース

注意:
- 各シナリオはGiven-When-Then形式で書く
- テストデータは具体的な値を使う
- Playwrightで自動実行できる形式で書く

完成したシナリオをdocs/E2E_SCENARIOS_v1.mdに保存してください。
```
"""

# ============================================================
# 04_examples/SRS_EXAMPLE_KEIBA.md
# ============================================================
files["04_examples/SRS_EXAMPLE_KEIBA.md"] = """# SRSサンプル:競馬予想支援システム
# 準拠規格:IEEE 29148:2018 / ISO 25010:2023
# バージョン:v1.0

---

## ドキュメント管理
| 項目 | 内容 |
|-----|------|
| ドキュメントID | SRS-KEIBA-v1.0 |
| プロジェクト名 | 競馬予想支援システム |
| 作成日 | 2026-05-24 |
| ステータス | 草稿 |

---

## 1. はじめに

### 1.1 目的
本ドキュメントは、競馬予想支援システムの機能要件・非機能要件・制約条件を定義する。

### 1.2 スコープ

**システム名:** 競馬予想支援システム(KeibaAssist)

**何をするシステムか:**
過去のレースデータを分析し、ユーザーの予想を支援するWebアプリケーション。
JRA公式データを取得・分析し、馬・騎手・コース別の統計を可視化する。

**スコープ内:**
- 過去レースデータの取得・保存
- 馬・騎手・コース別の統計表示
- 予想メモの作成・管理
- 回収率の計算・記録

**スコープ外:**
- 自動馬券購入
- リアルタイムオッズ取得(JRA APIの制限による)
- 他ユーザーとの情報共有

---

## 2. 全体的な説明

### 2.1 ユーザー像
- 名前:田中さん(50代・競馬歴10年)
- 属性:ITリテラシー低め・スマートフォン利用
- 目的:過去データを参考に予想精度を上げたい
- 課題:データが散らばっていて分析しにくい

### 2.2 動作環境
| 項目 | 要件 |
|-----|------|
| ブラウザ | Chrome最新版 / Safari最新版 |
| 画面 | スマートフォン対応(レスポンシブ) |
| インターネット | 必須 |

---

## 3. 機能要件

### 3.1 データ管理

#### FR-DATA-001:レースデータのインポート

| 項目 | 内容 |
|-----|------|
| 優先度 | Must |
| 説明 | CSVファイルからレースデータをインポートできる |

受け入れ基準:
  Given:ユーザーがログイン済みで、CSVファイルを準備している
  When:「データインポート」ボタンをクリックし、CSVファイルを選択する
  Then:データが正常にインポートされ、「XX件のレースを追加しました」と表示される

異常系:
  Given:不正な形式のCSVファイルを選択した
  When:インポートを実行する
  Then:「ファイルの形式が正しくありません」というエラーが表示される

---

#### FR-DATA-002:馬別統計の表示

| 項目 | 内容 |
|-----|------|
| 優先度 | Must |
| 説明 | 馬名で検索して、その馬の過去成績を表示できる |

受け入れ基準:
  Given:レースデータがインポート済みである
  When:馬名「ディープインパクト」で検索する
  Then:その馬の過去レース一覧・勝率・複勝率・コース別成績が表示される

---

### 3.2 予想管理

#### FR-YOSO-001:予想メモの作成

| 項目 | 内容 |
|-----|------|
| 優先度 | Must |
| 説明 | レースごとに予想メモを作成・保存できる |

受け入れ基準:
  Given:ユーザーがログイン済みである
  When:レース一覧から特定のレースを選択し、予想メモを入力して保存する
  Then:メモが保存され、一覧に表示される

---

#### FR-YOSO-002:回収率の計算

| 項目 | 内容 |
|-----|------|
| 優先度 | Should |
| 説明 | 購入金額と払戻金額を入力して回収率を計算できる |

受け入れ基準:
  Given:予想メモが作成済みである
  When:購入金額「1000円」・払戻金額「1500円」を入力する
  Then:回収率「150%」が計算・表示される

---

## 4. 非機能要件

| 要件ID | 種別 | 要件 |
|-------|------|------|
| NFR-PERF-001 | パフォーマンス | 検索結果が3秒以内に表示される |
| NFR-SEC-001 | セキュリティ | ユーザーデータが他ユーザーに見えない |
| NFR-USE-001 | 使用性 | スマートフォンで操作できる |
| NFR-REL-001 | 信頼性 | データが消えない(バックアップ毎日) |

---

## 5. 付録C:Claude Codeへの引き渡し

このSRS(docs/SRS_KEIBA_v1.md)を読んで、以下を実施してください:
1. 不明な点があれば先に質問してください
2. Phase 1(Must要件:FR-DATA-001〜002、FR-YOSO-001)の実装計画を提示してください
3. 承認後、AGENT-ARCHとしてSDDを作成してください
"""

# ============================================================
# 05_guides/FLOW_GUIDE.md
# ============================================================
files["05_guides/FLOW_GUIDE.md"] = """# Claude Code読み込みフロー完全ガイド v3.0
# 非エンジニアが最初から最後まで使えるフローを説明します

---

## 全体フロー図

    [新しいプロジェクト開始]
           ↓
    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:ファイルを準備する

### 1-1:プロジェクトフォルダを作る

    mkdir my-project
    cd my-project
    mkdir docs

### 1-2:コアファイルをコピーする

    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

### 1-3:CLAUDE.mdのPART Aを書き換える

CLAUDE.mdをテキストエディタで開いて、以下の部分だけ書き換える:

    プロジェクト名:[あなたのプロジェクト名]
    目的:[一文で説明]
    技術スタック:[使う技術(分からなければ「未定」でOK)]

---

## STEP 2:P-00で要件定義する

Claude Codeを開いて、03_prompts/ALL_PROMPTS.md の「P-00」をコピーして貼り付ける。

Claudeが質問してくるので、日本語で答えるだけ。
Claudeが自動的にSRS・SDD・テスト計画書を作ってくれる。

---

## STEP 3:P-01で毎日開発する

毎日Claude Codeを開いたら、最初に必ず「P-01」を貼り付ける。
これだけで前回の続きから開発できる。

開発中に困ったら:
- バグが出た → P-02(バグ調査)
- バグを直す → P-03(バグ修正)
- ログを見たい → P-06(ログ確認)
- 会話が長くなった → P-07(セッション切り替え)

---

## STEP 4:P-04でレビューする

フェーズ(Phase 1の全機能)が完成したら、P-04を使ってレビューする。
🔴が出たら修正する。🟢になったら次のフェーズへ。

---

## STEP 5:P-05でテストする

レビューが通ったら、P-05を使ってテストを実行する。
全テスト通過したら本番移行の準備OK。

---

## STEP 6:P-08で本番移行する

本番環境にデプロイするときは必ずP-08を使う。
チェックリストを全部クリアしてから移行する。

---

## STEP 7:P-14でハーネスを更新する

プロジェクトが完了したら、P-14を使って学びをハーネスに保存する。
次のプロジェクトでこの学びが活かされる。

---

## よくある質問

### Q:どのファイルをClaude Codeに渡せばいいですか?

A:毎回のセッション開始時に以下の4ファイルをClaude Codeが自動的に読みます:
- CLAUDE.md(プロジェクトルートに置く)
- CONSTRAINTS.md(プロジェクトルートに置く)
- docs/SRS_v1.md(自動生成される)
- docs/progress.md(自動更新される)

Claude Codeはプロジェクトルートのファイルを自動的に読むので、
「渡す」操作は不要です。P-01を貼り付けるだけでOKです。

### Q:SRSって難しそうですが、書けますか?

A:P-00を使えばClaude Codeが質問してくれるので、
日本語で答えるだけでSRSが自動生成されます。
難しい用語を知る必要はありません。

### Q:テストって何をすればいいですか?

A:P-05を貼り付けるだけでClaude Codeが自動的にテストを実行します。
「全テスト通過」と報告されれば完了です。

### Q:バグが出たらどうすればいいですか?

A:P-02を貼り付けて、エラーメッセージをコピーするだけです。
Claude Codeが原因を調査して修正方法を提示します。

### Q:途中でClaude Codeを閉じても大丈夫ですか?

A:大丈夫です。docs/progress.mdに進捗が保存されています。
次回のセッション開始時にP-01を使えば、続きから開発できます。

---

## トラブルシューティング

### Claudeが「前の会話を覚えていない」と言い始めた
→ P-07(セッション切り替え)を使う

### 同じエラーが何度も出る
→ P-02(バグ調査)で原因を特定する
→ 3回試しても解決しない場合は、アプローチを変える

### 実装が迷走している(同じ場所を何度も修正している)
→ P-07でセッションを切り替える
→ P-01で新しいセッションを開始する
→ SRSに戻って要件を確認する

### テストが通らない
→ テストを削除・スキップしない(CONSTRAINTS.md違反)
→ P-02でバグを調査する
→ 実装を修正する
"""

# ============================================================
# 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       ← 全プロンプト集(18種類)
    ├── 04_examples/
    │   └── SRS_EXAMPLE_KEIBA.md ← SRSサンプル(競馬予想システム)
    └── 05_guides/
        └── FLOW_GUIDE.md        ← Claude Code読み込みフロー完全ガイド

---

## 今すぐ始める(3ステップ)

### ステップ1:ファイルをコピーする(2分)

    # プロジェクトフォルダを作る
    mkdir [プロジェクト名]
    cd [プロジェクト名]
    mkdir docs

    # コアファイルをコピーする
    cp [このパッケージのパス]/01_core/CLAUDE.md ./CLAUDE.md
    cp [このパッケージのパス]/01_core/CONSTRAINTS.md ./CONSTRAINTS.md
    cp [このパッケージのパス]/01_core/AGENTS.md ./AGENTS.md
    cp [このパッケージのパス]/01_core/RULES.md ./RULES.md
    cp [このパッケージのパス]/01_core/docs/progress.md ./docs/progress.md

### ステップ2:CLAUDE.mdのPART Aを書き換える(3分)

CLAUDE.mdをテキストエディタで開いて、
「PART A:プロジェクト情報」の[角括弧]の部分を書き換える。
他の部分は書き換えない。

### ステップ3:P-00をClaude Codeに貼り付ける(30〜60分)

03_prompts/ALL_PROMPTS.md を開いて「P-00」をコピーする。
Claude Codeに貼り付ける。
Claudeが質問してくるので日本語で答えるだけ。

---

## 毎日の使い方(1分)

Claude Codeを開いたら、03_prompts/ALL_PROMPTS.md の「P-01」をコピーして貼り付ける。
これだけ。

---

## 困ったときのプロンプト早見表

| 困ったこと | 使うプロンプト |
|----------|-------------|
| 最初に何をすればいいか分からない | P-00 |
| 毎日の開発を始めたい | P-01 |
| バグが出た | 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 |
| プロジェクト完了後の整理 | P-14 |
| 要件定義書を作りたい | P-15 |
| 設計書を作りたい | P-16 |
| テスト計画書を作りたい | P-17 |
| E2Eシナリオを作りたい | P-18 |

---

## 世界基準への準拠

このパッケージは以下の国際規格に準拠しています:

| ドキュメント | 準拠規格 |
|-----------|--------|
| SRS(要件定義書) | IEEE 29148:2018 |
| SDD(設計書) | IEEE 1016:2009 |
| テスト計画書 | IEEE 829:2008 |
| 品質特性 | ISO 25010:2023 |
| 本番移行 | Google SRE PRR |
| CLAUDE.md | Anthropic公式SDD |
"""

# ============================================================
# ファイルを書き出す
# ============================================================
created = 0
for rel_path, content in files.items():
    full_path = os.path.join(BASE, rel_path)
    os.makedirs(os.path.dirname(full_path), exist_ok=True)
    with open(full_path, 'w', encoding='utf-8') as f:
        f.write(content)
    print(f"✅ {rel_path}")
    created += 1

print(f"\n合計 {created} ファイルを作成しました")

↑ トップへ戻る