#!/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} ファイルを作成しました")
ビルドスクリプト: claude_fullsetテンプレート一括生成
元ファイル: システム要件定義の分析と汎用化方法/build_fullset.py
要約
claude_fullset配下のSDD/テスト計画/E2Eシナリオ/ハーネスなどのテンプレートMarkdownをPythonの辞書から一括生成するスクリプト。各テンプレートはIEEE 1016/IEEE 829準拠を謳い、要件IDと紐づくテーブル雛形やClaude Code用の実行プロンプトを内包する。
要点
- SDD_TEMPLATE.md(IEEE 1016準拠4ビュー)を生成
- TEST_PLAN_TEMPLATE.md(IEEE 829準拠)を生成
- E2E_SCENARIOS_TEMPLATE.md(Given-When-Then雛形+サンプル)を生成
- HARNESS_TEMPLATE.md(成長型ハーネス)を生成
- ファイル内容を文字列辞書で保持しBASE配下へ書き出す