create-ai-project 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.claude/agents-en/investigator.md +131 -0
  2. package/.claude/agents-en/solver.md +145 -0
  3. package/.claude/agents-en/verifier.md +165 -0
  4. package/.claude/agents-ja/investigator.md +131 -0
  5. package/.claude/agents-ja/solver.md +145 -0
  6. package/.claude/agents-ja/verifier.md +165 -0
  7. package/.claude/commands-en/diagnose.md +123 -0
  8. package/.claude/commands-ja/diagnose.md +123 -0
  9. package/README.ja.md +4 -0
  10. package/README.md +4 -0
  11. package/package.json +8 -3
  12. package/.claude/agents/acceptance-test-generator.md +0 -250
  13. package/.claude/agents/code-reviewer.md +0 -187
  14. package/.claude/agents/design-sync.md +0 -221
  15. package/.claude/agents/document-reviewer.md +0 -187
  16. package/.claude/agents/integration-test-reviewer.md +0 -192
  17. package/.claude/agents/prd-creator.md +0 -190
  18. package/.claude/agents/quality-fixer-frontend.md +0 -324
  19. package/.claude/agents/quality-fixer.md +0 -281
  20. package/.claude/agents/requirement-analyzer.md +0 -161
  21. package/.claude/agents/rule-advisor.md +0 -175
  22. package/.claude/agents/task-decomposer.md +0 -285
  23. package/.claude/agents/task-executor-frontend.md +0 -264
  24. package/.claude/agents/task-executor.md +0 -258
  25. package/.claude/agents/technical-designer-frontend.md +0 -444
  26. package/.claude/agents/technical-designer.md +0 -368
  27. package/.claude/agents/work-planner.md +0 -208
  28. package/.claude/commands/build.md +0 -75
  29. package/.claude/commands/design.md +0 -37
  30. package/.claude/commands/front-build.md +0 -103
  31. package/.claude/commands/front-design.md +0 -42
  32. package/.claude/commands/front-plan.md +0 -40
  33. package/.claude/commands/implement.md +0 -73
  34. package/.claude/commands/plan.md +0 -43
  35. package/.claude/commands/project-inject.md +0 -76
  36. package/.claude/commands/refine-skill.md +0 -206
  37. package/.claude/commands/review.md +0 -78
  38. package/.claude/commands/sync-skills.md +0 -116
  39. package/.claude/commands/task.md +0 -13
  40. package/.claude/settings.local.json +0 -94
  41. package/.claude/skills/coding-standards/SKILL.md +0 -246
  42. package/.claude/skills/documentation-criteria/SKILL.md +0 -193
  43. package/.claude/skills/documentation-criteria/references/adr-template.md +0 -64
  44. package/.claude/skills/documentation-criteria/references/design-template.md +0 -242
  45. package/.claude/skills/documentation-criteria/references/plan-template.md +0 -130
  46. package/.claude/skills/documentation-criteria/references/prd-template.md +0 -109
  47. package/.claude/skills/frontend/technical-spec/SKILL.md +0 -147
  48. package/.claude/skills/frontend/typescript-rules/SKILL.md +0 -315
  49. package/.claude/skills/frontend/typescript-testing/SKILL.md +0 -212
  50. package/.claude/skills/implementation-approach/SKILL.md +0 -141
  51. package/.claude/skills/integration-e2e-testing/SKILL.md +0 -146
  52. package/.claude/skills/project-context/SKILL.md +0 -42
  53. package/.claude/skills/subagents-orchestration-guide/SKILL.md +0 -212
  54. package/.claude/skills/task-analyzer/SKILL.md +0 -142
  55. package/.claude/skills/task-analyzer/references/skills-index.yaml +0 -211
  56. package/.claude/skills/technical-spec/SKILL.md +0 -86
  57. package/.claude/skills/typescript-rules/SKILL.md +0 -121
  58. package/.claude/skills/typescript-testing/SKILL.md +0 -155
@@ -1,78 +0,0 @@
1
- ---
2
- description: Design Doc準拠検証と必要に応じた自動修正
3
- ---
4
-
5
- **コマンドコンテキスト**: 実装完了後の品質保証専用コマンド
6
-
7
- Design Doc(省略時は直近のもの): $ARGUMENTS
8
-
9
- **Think deeply** 準拠検証の本質を理解し、以下のステップで実行:
10
-
11
- ## 実行フロー
12
-
13
- ### 1. 前提確認
14
- ```bash
15
- # Design Docの特定
16
- ls docs/design/*.md | grep -v template | tail -1
17
-
18
- # 実装ファイル確認
19
- git diff --name-only main...HEAD
20
- ```
21
-
22
- ### 2. code-reviewer実行
23
- Design Doc準拠率を検証:
24
- - 受入条件の充足確認
25
- - コード品質チェック
26
- - 実装完全性の評価
27
-
28
- ### 3. 判定と対応
29
-
30
- **判定基準(プロジェクト段階を考慮)**:
31
- - プロトタイプ: 70%以上で合格
32
- - 本番実装: 90%以上推奨
33
- - 重要項目(セキュリティ等): 準拠率に関わらず必須
34
-
35
- **準拠率に基づく対応**:
36
-
37
- 準拠率が低い場合(本番で90%未満):
38
- ```
39
- 検証結果: 準拠率 [X]%
40
- 未充足項目:
41
- - [項目リスト]
42
-
43
- 修正を実行しますか? (y/n):
44
- ```
45
-
46
- ユーザーが `y` を選択した場合:
47
-
48
- ## 🧠 修正実行前のメタ認知
49
- **必須**: `rule-advisor → TodoWrite → task-executor → quality-fixer`
50
-
51
- 1. **rule-advisor実行**: 修正の本質を理解(表面的な対症療法 vs 根本解決)
52
- 2. **TodoWrite更新**: 修正タスクを構造化 → `docs/plans/tasks/review-fixes-YYYYMMDD.md`
53
- 3. **task-executor実行**: 自動修正を段階的実行(5ファイル超過で停止)
54
- 4. **quality-fixer実行**: 品質ゲート通過を確認
55
- 5. **再検証**: code-reviewerで改善度を測定
56
-
57
- ### 4. 最終レポート
58
- ```
59
- 初回準拠率: [X]%
60
- 最終準拠率: [Y]%(修正実行時)
61
- 改善度: [Y-X]%
62
-
63
- 残存課題:
64
- - [手動対応が必要な項目]
65
- ```
66
-
67
- ## 自動修正可能な項目
68
- - 単純な未実装の受入条件
69
- - エラーハンドリング追加
70
- - 型定義の修正
71
- - 関数分割(長さ・複雑度の改善)
72
-
73
- ## 自動修正不可能な項目
74
- - ビジネスロジックの根本的変更
75
- - アーキテクチャレベルの修正
76
- - Design Doc自体の不備
77
-
78
- **スコープ**: Design Doc準拠検証と自動修正まで。
@@ -1,116 +0,0 @@
1
- ---
2
- description: スキル修正後のメタデータ同期とrule-advisor精度最適化
3
- ---
4
-
5
- **コマンドコンテキスト**: スキルファイル編集後のメンテナンス作業
6
-
7
- **Think deeply** rule-advisorの実行精度を最大化するための同期作業:
8
-
9
- ## 実行フロー
10
-
11
- ### 1. スキルファイルのスキャン
12
- ```bash
13
- # 実行時のスキルディレクトリ
14
- SKILLS_DIR=".claude/skills"
15
- INDEX_FILE=".claude/skills/task-analyzer/references/skills-index.yaml"
16
-
17
- # 全スキルファイルを解析
18
- find "${SKILLS_DIR}" -name "SKILL.md" -type f | sort
19
- ```
20
-
21
- ### 2. メタデータ同期と最適化
22
-
23
- #### セクション自動同期
24
- - 各SKILL.mdの`## `セクションを抽出
25
- - skills-index.yamlのsectionsを自動更新
26
-
27
- #### タグの最適化
28
- - ファイル内容からキーワードを分析
29
- - 適切なタグの追加提案
30
- - 不要なタグの削除提案
31
-
32
- #### typical-useの更新
33
- - ファイルの変更内容から使用場面を推測
34
- - より具体的な利用シーンの記述を提案
35
-
36
- #### key-referencesの補完
37
- - 新しく追加された概念や手法を検出
38
- - 関連する参考文献の追加を提案
39
-
40
- ### 3. rule-advisor向け最適化
41
-
42
- メタデータの質を向上させ、rule-advisorが正確にスキルを選択できるよう調整:
43
-
44
- ```
45
- === スキルメタデータ同期 ===
46
- 対象: .claude/skills
47
-
48
- 実行した更新:
49
- ✅ sections同期
50
- - typescript-testing: 2セクション追加
51
- - coding-standards: 1セクション更新
52
-
53
- ✅ tags最適化
54
- - typescript-rules: [functional-programming]タグ追加を提案
55
- - technical-spec: [deprecated]タグ削除を提案
56
-
57
- ✅ typical-use改善
58
- - 3スキルの説明をより具体的に更新
59
-
60
- 最終結果: rule-advisor精度向上のための最適化完了
61
- ```
62
-
63
- ## 🧠 メタ認知ポイント
64
-
65
- **本質的な目的**:
66
- - 単なる整合性維持ではなく、rule-advisorの選択精度向上
67
- - スキル編集作業の仕上げとしてのメタデータ最適化
68
-
69
- **品質基準**:
70
- - sectionsは100%同期必須
71
- - tagsは内容を正確に反映
72
- - typical-useは具体的な利用場面を明示
73
- - key-referencesは最新の手法を網羅
74
-
75
- ## 変更要否の判断
76
-
77
- 以下の順序で評価:
78
- - sectionsが100%同期済み → 「同期確認完了、更新不要」と報告して終了
79
- - 内容とタグが適切に一致 → 更新不要と判断
80
- - 改善の余地がある場合のみ → 具体的な修正提案を提示
81
-
82
- **注意**: 毎回変更する必要はありません。変更不要な場合はその旨を明確に報告して終了してください。
83
-
84
- ## 実行タイミング
85
-
86
- - スキルファイル編集後(必須)
87
- - 新しいスキルファイル追加時
88
- - 大規模なスキル改訂後
89
- - rule-advisorの選択精度が低下したと感じた時
90
-
91
- ## 出力例
92
-
93
- ```
94
- === スキルメタデータ同期開始 ===
95
- 対象: .claude/skills (13スキル)
96
-
97
- [1/13] typescript-rules
98
- ✅ sections: 7件同期完了
99
- 💡 tags提案: +[functional-programming, dependency-injection]
100
- 💡 typical-use: "TypeScript実装全般" → "型安全性重視の実装とモダンTypeScript機能活用"
101
-
102
- [2/13] typescript-testing
103
- ✅ sections: 2件追加(テストの粒度、モックの型安全性)
104
- ✅ tags: 変更なし
105
- ✅ typical-use: 現状維持
106
-
107
- ...
108
-
109
- === 同期完了 ===
110
- 更新: 3スキル
111
- 提案: 5件(承認してください)
112
-
113
- rule-advisor精度向上: 推定15%改善
114
- ```
115
-
116
- **スコープ**: スキル修正作業後のメタデータ同期とrule-advisor精度最適化。
@@ -1,13 +0,0 @@
1
- ---
2
- description: タスクを適切なルールに従って実行
3
- ---
4
-
5
- タスク: $ARGUMENTS
6
-
7
- 実行前に、以下を明確にしてください:
8
-
9
- 1. **適用ルール**: このタスクに該当する開発ルールは?
10
- 2. **初動**: ルールに基づく最初のアクションは?
11
- 3. **スコープ境界**: このタスクの完了条件と責務範囲は?
12
-
13
- 上記を明示してから作業を開始します。
@@ -1,94 +0,0 @@
1
- {
2
- "$schema": "https://json.schemastore.org/claude-code-settings.json",
3
- "permissions": {
4
- "allow": [
5
- "Bash(npm run check:unused:*)",
6
- "Read(/Users/kagawashinsuke/Documents/tacoms-ai-bot/scripts/**)",
7
- "WebSearch",
8
- "Bash(npx ts-prune:*)",
9
- "Bash(git checkout:*)",
10
- "Bash(git pull:*)",
11
- "Bash(chmod:*)",
12
- "Bash(git add:*)",
13
- "Bash(git commit:*)",
14
- "Bash(gh api:*)",
15
- "Bash(git branch:*)",
16
- "WebFetch(domain:github.com)",
17
- "Bash(npm install:*)",
18
- "Bash(git reset:*)",
19
- "WebFetch(domain:qiita.com)",
20
- "Bash(cat:*)",
21
- "Bash(git push:*)",
22
- "WebFetch(domain:mermaid.js.org)",
23
- "Bash(gh pr view:*)",
24
- "Bash(gh pr diff:*)",
25
- "Read(//tmp/**)",
26
- "Bash(gh repo clone:*)",
27
- "Bash(git stash:*)",
28
- "Bash(npm run lang:ja:*)",
29
- "Bash(find:*)",
30
- "Bash(awk:*)",
31
- "Bash(grep:*)",
32
- "Bash(xargs basename:*)",
33
- "WebFetch(domain:dev.to)",
34
- "Bash(gh pr checks:*)",
35
- "WebFetch(domain:www.anthropic.com)",
36
- "Read(//Users/kagawashinsuke/Documents/agentic-code/**)",
37
- "Read(//Users/kagawashinsuke/Documents/claude-code-workflows/**)",
38
- "Bash(git -C /Users/kagawashinsuke/Documents/claude-code-workflows diff agents/acceptance-test-generator.md)",
39
- "Read(//Users/kagawashinsuke/Documents/project-qb/**)",
40
- "Bash(git rm:*)",
41
- "Bash(git ls-tree:*)",
42
- "Bash(node bin/create-project.js:*)",
43
- "Bash(node:*)",
44
- "WebFetch(domain:martinfowler.com)",
45
- "Bash(test:*)",
46
- "WebFetch(domain:www.agileconnection.com)",
47
- "Bash(git log:*)",
48
- "Bash(git mv:*)",
49
- "Bash(gh pr create:*)",
50
- "Bash(xargs git branch -D)",
51
- "Bash(ls:*)",
52
- "Bash(git clone:*)",
53
- "WebFetch(domain:support.atlassian.com)",
54
- "WebFetch(domain:community.atlassian.com)",
55
- "WebFetch(domain:www.velir.com)",
56
- "WebFetch(domain:scottspence.com)",
57
- "WebFetch(domain:arxiv.org)",
58
- "WebFetch(domain:dl.acm.org)",
59
- "Bash(gh issue create:*)",
60
- "Bash(git fetch:*)",
61
- "Bash(git diff:*)",
62
- "Bash(fi)",
63
- "Bash(done)",
64
- "WebFetch(domain:www.npmjs.com)",
65
- "Bash(npm pack:*)",
66
- "Bash(npm view:*)",
67
- "Bash(npx:*)",
68
- "WebFetch(domain:zenn.dev)",
69
- "Bash(npm version:*)",
70
- "Bash(xargs -I {} sh -c 'echo \"\"\"\"=== {} ===\"\"\"\" && head -60 \"\"\"\"{}\"\"\"\"')",
71
- "Bash(npm run lang:status:*)",
72
- "Bash(npm run lang:en:*)",
73
- "Bash(gh pr list:*)",
74
- "Bash(xargs:*)",
75
- "Bash(npm pkg:*)",
76
- "Bash(head:*)",
77
- "Bash(for agent in acceptance-test-generator code-reviewer design-sync document-reviewer integration-test-reviewer prd-creator quality-fixer quality-fixer-frontend requirement-analyzer rule-advisor task-decomposer task-executor task-executor-frontend technical-designer technical-designer-frontend work-planner)",
78
- "Bash(do)",
79
- "Bash(echo:*)",
80
- "Bash(while read skill)",
81
- "Bash(do if [ -f \".claude/skills-en/$skill/SKILL.md\" ])",
82
- "Bash(then echo \"✅ $skill\" else echo \"❌ $skill \\(NOT FOUND\\)\" fi done)",
83
- "Bash(for agent in acceptance-test-generator document-reviewer)",
84
- "Bash(__NEW_LINE__ echo \"\")",
85
- "WebFetch(domain:docs.anthropic.com)",
86
- "Bash(git tag:*)",
87
- "Bash(npm run build:*)",
88
- "Bash(npm run check:*)"
89
- ],
90
- "deny": [],
91
- "ask": [],
92
- "defaultMode": "acceptEdits"
93
- }
94
- }
@@ -1,246 +0,0 @@
1
- ---
2
- name: coding-standards
3
- description: 保守性、可読性、品質のための言語非依存コーディング原則。機能実装、リファクタリング、コードレビュー時に使用。
4
- ---
5
-
6
- # 普遍的コーディング規約
7
-
8
- ## 技術的アンチパターン(赤信号パターン)
9
-
10
- 以下のパターンを検出したら即座に停止し、設計を見直すこと:
11
-
12
- ### コード品質のアンチパターン
13
- 1. **同じようなコードを3回以上書いた** - Rule of Threeに違反
14
- 2. **単一ファイルに複数の責務が混在** - 単一責任原則(SRP)違反
15
- 3. **同じ内容を複数ファイルで定義** - DRY原則違反
16
- 4. **依存関係を確認せずに変更** - 予期しない影響の可能性
17
- 5. **コメントアウトでコード無効化** - バージョン管理を活用すべき
18
- 6. **エラーの握りつぶし** - 問題の隠蔽は技術的負債
19
- 7. **型アサーション(as)の多用** - 型安全性の放棄
20
-
21
- ### 設計のアンチパターン
22
- - **「一旦動くように」という思考** - 技術的負債の蓄積
23
- - **継ぎ足し実装** - 既存コードへの無計画な追加
24
- - **不確実技術の楽観的実装** - 未知要素を「たぶん動く」前提で設計
25
- - **対処療法的修正** - 根本原因を解決しない表面的な修正
26
- - **無計画な大規模変更** - 段階的アプローチの欠如
27
-
28
- ## 基本原則
29
-
30
- - **積極的なリファクタリング** - 技術的負債を防ぎ、健全性を維持
31
- - **使われない「念のため」のコード禁止** - YAGNI原則(Kent Beck)に反する
32
-
33
- ## コメント記述ルール
34
-
35
- - **機能説明重視**: コードが「何をするか」を記述
36
- - **履歴情報禁止**: 開発履歴は記載しない
37
- - **タイムレス**: いつ読んでも有効な内容のみ記述
38
- - **簡潔性**: 必要最小限の説明にとどめる
39
-
40
- ## エラーハンドリングの基本原則
41
-
42
- ### Fail-Fast原則
43
- エラー時は速やかに失敗させ、不正な状態での処理継続を防ぐ。エラーの握りつぶしは禁止。
44
-
45
- 詳細な実装方法(Result型、カスタムエラークラス、層別エラー処理など)は各言語・フレームワークのルールを参照。
46
-
47
- ## Rule of Three - コード重複の判断基準
48
-
49
- Martin Fowler「Refactoring」に基づく重複コードの扱い方:
50
-
51
- | 重複回数 | 対応 | 理由 |
52
- |---------|------|------|
53
- | 1回目 | インライン実装 | 将来の変化が予測できない |
54
- | 2回目 | 将来の統合を意識 | パターンが見え始める |
55
- | 3回目 | 共通化実施 | パターンが確立された |
56
-
57
- ### 共通化の判断基準
58
-
59
- **共通化すべきケース**
60
- - ビジネスロジックの重複
61
- - 複雑な処理アルゴリズム
62
- - 一括変更が必要になる可能性が高い箇所
63
- - バリデーションルール
64
-
65
- **共通化を避けるべきケース**
66
- - 偶然の一致(たまたま同じコード)
67
- - 将来異なる方向に進化する可能性
68
- - 共通化により可読性が著しく低下
69
- - テストコード内の簡単なヘルパー
70
-
71
- ## よくある失敗パターンと回避方法
72
-
73
- ### パターン1: エラー修正の連鎖
74
- **症状**: エラーを修正すると新しいエラーが発生
75
- **原因**: 根本原因を理解せずに表面的な修正
76
- **回避方法**: 5 Whysで根本原因を特定してから修正
77
-
78
- ### パターン2: 型安全性の放棄
79
- **症状**: any型やasの多用
80
- **原因**: 型エラーを回避したい衝動
81
- **回避方法**: unknown型と型ガードで安全に処理
82
-
83
- ### パターン3: テスト不足での実装
84
- **症状**: 実装後にバグ多発
85
- **原因**: Red-Green-Refactorプロセスの無視
86
- **回避方法**: 必ず失敗するテストから開始
87
-
88
- ### パターン4: 技術的不確実性の無視
89
- **症状**: 新技術導入時の想定外エラー多発
90
- **原因**: 事前調査なしで「公式ドキュメント通りなら動くはず」
91
- **回避方法**:
92
- - タスクファイル冒頭に確実性評価を記載
93
- - 確実性lowの場合、最初に最小限の動作確認コードを作成
94
-
95
- ### パターン5: 既存コード調査不足
96
- **症状**: 重複実装、アーキテクチャ不整合、結合時の障害
97
- **原因**: 実装前の既存コード理解不足
98
- **回避方法**:
99
- - 実装前に類似機能の存在を必ず検索(同じドメイン、責務、設定パターンをキーワードに)
100
- - 類似機能を発見 → その実装を使用する(新規実装は行わない)
101
- - 類似機能が技術的負債 → ADRで改善提案を作成してから実装
102
- - 類似機能が存在しない → 既存の設計思想に沿って新規実装
103
- - すべての判断と根拠をDesign Docの「既存コードベース分析」セクションに記録
104
-
105
- ## デバッグ手法
106
-
107
- ### 1. エラー分析手順
108
- 1. エラーメッセージ(最初の行)を正確に読む
109
- 2. スタックトレースの最初と最後に注目
110
- 3. 自分のコードが現れる最初の行を特定
111
-
112
- ### 2. 5 Whys - 根本原因分析
113
- ```
114
- 症状: TypeScriptのビルドエラー
115
- Why1: 型定義が一致しない → Why2: インターフェースが更新された
116
- Why3: 依存関係の変更 → Why4: パッケージ更新の影響
117
- Why5: 破壊的変更を含むメジャーバージョンアップ
118
- 根本原因: package.jsonでのバージョン指定が不適切
119
- ```
120
-
121
- ### 3. 最小再現コード
122
- 問題を切り分けるため、最小限のコードで再現を試みる:
123
- - 関連のない部分を削除
124
- - モックで外部依存を置き換え
125
- - 問題が再現する最小構成を作成
126
-
127
- ## 型安全性の基礎
128
-
129
- **型安全の原則**: `unknown`型と型ガードを使用する。`any`型は型チェックを無効化し、実行時エラーの原因となる。
130
-
131
- **any型の代替手段(優先順位順)**
132
- 1. **unknown型 + 型ガード**: 外部入力の検証に使用
133
- 2. **ジェネリクス**: 型の柔軟性が必要な場合
134
- 3. **ユニオン型・インターセクション型**: 複数の型の組み合わせ
135
- 4. **型アサーション(最終手段)**: 型が確実な場合のみ
136
-
137
- **型ガードの実装パターン**
138
- ```typescript
139
- function isUser(value: unknown): value is User {
140
- return typeof value === 'object' && value !== null && 'id' in value && 'name' in value
141
- }
142
- ```
143
-
144
- **型の複雑性管理**
145
- - フィールド数: 20個まで(超えたら責務で分割、外部API型は例外)
146
- - オプショナル率: 30%まで(超えたら必須/任意で分離)
147
- - ネスト深さ: 3階層まで(超えたらフラット化)
148
- - 型アサーション: 3回以上使用したら設計見直し
149
- - **外部API型の扱い**: 制約を緩和し、実態に合わせて定義(内部では適切に変換)
150
-
151
- ## リファクタリング手法
152
-
153
- **基本方針**
154
- - 小さなステップ: 段階的改善により、常に動作する状態を維持
155
- - 安全な変更: 一度に変更する範囲を最小限に抑制
156
- - 動作保証: 既存の動作を変えないことを確認しながら進める
157
-
158
- **実施手順**: 現状把握 → 段階的変更 → 動作確認 → 最終検証
159
-
160
- **優先順位**: 重複コード削除 > 長大な関数分割 > 複雑な条件分岐簡素化 > 型安全性向上
161
-
162
- ## 実装作業の完全性担保
163
-
164
- ### 影響範囲調査の必須手順
165
-
166
- **完了定義**: 以下3段階すべての完了
167
-
168
- #### 1. 検索(Discovery)
169
- ```bash
170
- Grep -n "TargetClass\|TargetMethod" -o content
171
- Grep -n "DependencyClass" -o content
172
- Grep -n "targetData\|SetData\|UpdateData" -o content
173
- ```
174
-
175
- #### 2. 読解(Understanding)
176
- **必須**: 発見した全ファイルを読み込み、作業に必要な部分をコンテキストに含める:
177
- - 呼び出し元の目的と文脈
178
- - 依存関係の方向
179
- - データフロー: 生成→変更→参照
180
-
181
- #### 3. 特定(Identification)
182
- 影響範囲の構造化報告(必須):
183
- ```
184
- ## 影響範囲分析
185
- ### 直接影響: ClassA、ClassB(理由明記)
186
- ### 間接影響: SystemX、PrefabY(連携経路明記)
187
- ### 処理フロー: 入力→処理1→処理2→出力
188
- ```
189
-
190
- **重要**: 検索のみで完了とせず、3段階すべてを実行すること
191
-
192
- ### 未使用コード削除ルール
193
-
194
- 未使用コード検出時 → 使用予定?
195
- - Yes → 即実装(保留禁止)
196
- - No → 即削除(Git履歴に残る)
197
-
198
- 対象: コード・ドキュメント・設定ファイル
199
-
200
- ## Red-Green-Refactorプロセス(テストファースト開発)
201
-
202
- **推奨原則**: コード変更は必ずテストから始める
203
-
204
- **開発ステップ**:
205
- 1. **Red**: 期待する動作のテストを書く(失敗する)
206
- 2. **Green**: 最小限の実装でテストを通す
207
- 3. **Refactor**: テストが通る状態を維持しながらコード改善
208
-
209
- **NGケース(テストファースト不要)**:
210
- - 純粋な設定ファイル変更(.env、config等)
211
- - ドキュメントのみの更新(README、コメント等)
212
- - 緊急本番障害対応(ただし事後テスト必須)
213
-
214
- ## テスト設計原則
215
-
216
- ### テストケースの構造
217
- - テストは「準備(Arrange)」「実行(Act)」「検証(Assert)」の3段階で構成
218
- - 各テストの目的が明確に分かる命名
219
- - 1つのテストケースでは1つの振る舞いのみを検証
220
-
221
- ### テストデータ管理
222
- - テストデータは専用ディレクトリで管理
223
- - 環境変数はテスト用の値を定義
224
- - 機密情報は必ずモック化
225
- - テストデータは最小限に保ち、テストケースの検証目的に直接関連するデータのみ使用
226
-
227
- ### モックとスタブの使用方針
228
-
229
- **推奨: 単体テストでの外部依存モック化**
230
- - メリット: テストの独立性と再現性を確保
231
- - 実践: DB、API、ファイルシステム等の外部依存をモック化
232
-
233
- **避けるべき: 単体テストでの実際の外部接続**
234
- - 理由: テスト速度が遅くなり、環境依存の問題が発生するため
235
-
236
- ### テスト失敗時の対応判断基準
237
-
238
- **テストを修正**: 間違った期待値、存在しない機能参照、実装詳細への依存、テストのためだけの実装
239
- **実装を修正**: 妥当な仕様、ビジネスロジック、重要なエッジケース
240
- **判断に迷ったら**: ユーザーに確認
241
-
242
- ## テストの粒度原則
243
-
244
- ### 原則:観測可能な振る舞いのみ
245
- **テスト対象**:公開API、戻り値、例外、外部呼び出し、永続化された状態
246
- **テスト対象外**:privateメソッド、内部状態、アルゴリズム詳細