create-ai-project 1.11.2
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.
- package/.claude/agents/acceptance-test-generator.md +316 -0
- package/.claude/agents/code-reviewer.md +193 -0
- package/.claude/agents/document-reviewer.md +182 -0
- package/.claude/agents/prd-creator.md +186 -0
- package/.claude/agents/quality-fixer.md +295 -0
- package/.claude/agents/requirement-analyzer.md +161 -0
- package/.claude/agents/rule-advisor.md +194 -0
- package/.claude/agents/task-decomposer.md +291 -0
- package/.claude/agents/task-executor.md +270 -0
- package/.claude/agents/technical-designer.md +343 -0
- package/.claude/agents/work-planner.md +181 -0
- package/.claude/agents-en/acceptance-test-generator.md +256 -0
- package/.claude/agents-en/code-reviewer.md +195 -0
- package/.claude/agents-en/design-sync.md +225 -0
- package/.claude/agents-en/document-reviewer.md +190 -0
- package/.claude/agents-en/integration-test-reviewer.md +195 -0
- package/.claude/agents-en/prd-creator.md +196 -0
- package/.claude/agents-en/quality-fixer-frontend.md +334 -0
- package/.claude/agents-en/quality-fixer.md +291 -0
- package/.claude/agents-en/requirement-analyzer.md +165 -0
- package/.claude/agents-en/rule-advisor.md +194 -0
- package/.claude/agents-en/task-decomposer.md +291 -0
- package/.claude/agents-en/task-executor-frontend.md +276 -0
- package/.claude/agents-en/task-executor.md +272 -0
- package/.claude/agents-en/technical-designer-frontend.md +441 -0
- package/.claude/agents-en/technical-designer.md +371 -0
- package/.claude/agents-en/work-planner.md +216 -0
- package/.claude/agents-ja/acceptance-test-generator.md +256 -0
- package/.claude/agents-ja/code-reviewer.md +195 -0
- package/.claude/agents-ja/design-sync.md +225 -0
- package/.claude/agents-ja/document-reviewer.md +192 -0
- package/.claude/agents-ja/integration-test-reviewer.md +195 -0
- package/.claude/agents-ja/prd-creator.md +194 -0
- package/.claude/agents-ja/quality-fixer-frontend.md +335 -0
- package/.claude/agents-ja/quality-fixer.md +292 -0
- package/.claude/agents-ja/requirement-analyzer.md +164 -0
- package/.claude/agents-ja/rule-advisor.md +194 -0
- package/.claude/agents-ja/task-decomposer.md +291 -0
- package/.claude/agents-ja/task-executor-frontend.md +276 -0
- package/.claude/agents-ja/task-executor.md +272 -0
- package/.claude/agents-ja/technical-designer-frontend.md +442 -0
- package/.claude/agents-ja/technical-designer.md +370 -0
- package/.claude/agents-ja/work-planner.md +213 -0
- package/.claude/commands/build.md +78 -0
- package/.claude/commands/design.md +27 -0
- package/.claude/commands/implement.md +79 -0
- package/.claude/commands/plan.md +43 -0
- package/.claude/commands/project-inject.md +76 -0
- package/.claude/commands/refine-rule.md +206 -0
- package/.claude/commands/review.md +78 -0
- package/.claude/commands/sync-rules.md +116 -0
- package/.claude/commands/task.md +13 -0
- package/.claude/commands-en/build.md +77 -0
- package/.claude/commands-en/design.md +39 -0
- package/.claude/commands-en/front-build.md +103 -0
- package/.claude/commands-en/front-design.md +42 -0
- package/.claude/commands-en/front-plan.md +40 -0
- package/.claude/commands-en/implement.md +75 -0
- package/.claude/commands-en/plan.md +45 -0
- package/.claude/commands-en/project-inject.md +76 -0
- package/.claude/commands-en/refine-rule.md +208 -0
- package/.claude/commands-en/review.md +78 -0
- package/.claude/commands-en/sync-rules.md +116 -0
- package/.claude/commands-en/task.md +13 -0
- package/.claude/commands-ja/build.md +75 -0
- package/.claude/commands-ja/design.md +37 -0
- package/.claude/commands-ja/front-build.md +103 -0
- package/.claude/commands-ja/front-design.md +42 -0
- package/.claude/commands-ja/front-plan.md +40 -0
- package/.claude/commands-ja/implement.md +73 -0
- package/.claude/commands-ja/plan.md +43 -0
- package/.claude/commands-ja/project-inject.md +76 -0
- package/.claude/commands-ja/refine-rule.md +206 -0
- package/.claude/commands-ja/review.md +78 -0
- package/.claude/commands-ja/sync-rules.md +116 -0
- package/.claude/commands-ja/task.md +13 -0
- package/.claude/settings.local.json +74 -0
- package/.husky/pre-commit +1 -0
- package/.husky/pre-push +3 -0
- package/.madgerc +14 -0
- package/.tsprunerc +11 -0
- package/CLAUDE.en.md +102 -0
- package/CLAUDE.ja.md +102 -0
- package/CLAUDE.md +111 -0
- package/LICENSE +21 -0
- package/README.ja.md +233 -0
- package/README.md +243 -0
- package/bin/create-project.js +87 -0
- package/biome.json +51 -0
- package/docs/adr/template-en.md +64 -0
- package/docs/adr/template-ja.md +64 -0
- package/docs/design/template-en.md +281 -0
- package/docs/design/template-ja.md +285 -0
- package/docs/guides/en/quickstart.md +111 -0
- package/docs/guides/en/rule-editing-guide.md +266 -0
- package/docs/guides/en/sub-agents.md +343 -0
- package/docs/guides/en/use-cases.md +308 -0
- package/docs/guides/ja/quickstart.md +112 -0
- package/docs/guides/ja/rule-editing-guide.md +266 -0
- package/docs/guides/ja/sub-agents.md +343 -0
- package/docs/guides/ja/use-cases.md +290 -0
- package/docs/guides/sub-agents.md +306 -0
- package/docs/plans/20250123-integration-test-improvement.md +993 -0
- package/docs/plans/template-en.md +130 -0
- package/docs/plans/template-ja.md +130 -0
- package/docs/prd/template-en.md +109 -0
- package/docs/prd/template-ja.md +109 -0
- package/docs/rules/ai-development-guide.md +260 -0
- package/docs/rules/architecture/implementation-approach.md +136 -0
- package/docs/rules/documentation-criteria.md +180 -0
- package/docs/rules/project-context.md +38 -0
- package/docs/rules/rules-index.yaml +137 -0
- package/docs/rules/technical-spec.md +47 -0
- package/docs/rules/typescript-testing.md +188 -0
- package/docs/rules/typescript.md +166 -0
- package/docs/rules-en/architecture/implementation-approach.md +136 -0
- package/docs/rules-en/coding-standards.md +333 -0
- package/docs/rules-en/documentation-criteria.md +184 -0
- package/docs/rules-en/frontend/technical-spec.md +143 -0
- package/docs/rules-en/frontend/typescript-testing.md +124 -0
- package/docs/rules-en/frontend/typescript.md +131 -0
- package/docs/rules-en/integration-e2e-testing.md +149 -0
- package/docs/rules-en/project-context.md +38 -0
- package/docs/rules-en/rules-index.yaml +211 -0
- package/docs/rules-en/technical-spec.md +86 -0
- package/docs/rules-en/typescript-testing.md +149 -0
- package/docs/rules-en/typescript.md +116 -0
- package/docs/rules-ja/architecture/implementation-approach.md +136 -0
- package/docs/rules-ja/coding-standards.md +333 -0
- package/docs/rules-ja/documentation-criteria.md +180 -0
- package/docs/rules-ja/frontend/technical-spec.md +143 -0
- package/docs/rules-ja/frontend/typescript-testing.md +124 -0
- package/docs/rules-ja/frontend/typescript.md +131 -0
- package/docs/rules-ja/integration-e2e-testing.md +149 -0
- package/docs/rules-ja/project-context.md +38 -0
- package/docs/rules-ja/rules-index.yaml +196 -0
- package/docs/rules-ja/technical-spec.md +86 -0
- package/docs/rules-ja/typescript-testing.md +149 -0
- package/docs/rules-ja/typescript.md +116 -0
- package/package.json +98 -0
- package/scripts/check-unused-exports.js +69 -0
- package/scripts/cleanup-test-processes.sh +32 -0
- package/scripts/post-setup.js +110 -0
- package/scripts/set-language.js +310 -0
- package/scripts/setup-project.js +199 -0
- package/scripts/show-coverage.js +74 -0
- package/src/index.ts +11 -0
- package/templates/.gitignore.template +52 -0
- package/tsconfig.json +50 -0
- package/vitest.config.mjs +47 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# クイックスタート - AIと一緒に開発を始めよう
|
|
2
|
+
|
|
3
|
+
このガイドでは、AI コーディングプロジェクトボイラープレートを使って、最初の機能を実装するまでの手順を説明します。難しいことは後回しにして、まずは動かしてみましょう。
|
|
4
|
+
|
|
5
|
+
## セットアップ(5分で完了)
|
|
6
|
+
|
|
7
|
+
### 新規プロジェクトを始める場合
|
|
8
|
+
|
|
9
|
+
ターミナルを開いて、以下のコマンドを実行するだけです。プロジェクト名は好きなものに変えてください。
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx github:shinpr/ai-coding-project-boilerplate my-awesome-project --lang=ja
|
|
13
|
+
cd my-awesome-project
|
|
14
|
+
npm install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
これで準備完了です。`my-awesome-project` というフォルダが作られ、必要なファイルがすべて揃った状態になります。
|
|
18
|
+
|
|
19
|
+
### 既存のプロジェクトに導入する場合
|
|
20
|
+
|
|
21
|
+
すでにTypeScriptプロジェクトがある場合は、必要なファイルをコピーして使うこともできます。まず、ボイラープレートを別の場所にダウンロードします。
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# 一時的にボイラープレートをダウンロード
|
|
25
|
+
npx github:shinpr/ai-coding-project-boilerplate temp-boilerplate --lang=ja
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
次に、既存プロジェクトのルートディレクトリで以下のファイルをコピーします。
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 既存プロジェクトのディレクトリで実行
|
|
32
|
+
cp -r temp-boilerplate/.claude/agents-ja .claude/agents
|
|
33
|
+
cp -r temp-boilerplate/.claude/commands-ja .claude/commands
|
|
34
|
+
cp -r temp-boilerplate/docs/rules-ja docs/rules
|
|
35
|
+
cp -r temp-boilerplate/docs/adr docs/
|
|
36
|
+
cp -r temp-boilerplate/docs/design docs/
|
|
37
|
+
cp -r temp-boilerplate/docs/plans docs/
|
|
38
|
+
cp -r temp-boilerplate/docs/prd docs/
|
|
39
|
+
cp temp-boilerplate/docs/guides/ja/sub-agents.md docs/guides/sub-agents.md
|
|
40
|
+
cp temp-boilerplate/CLAUDE.md .
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
もしディレクトリ構成を変更したい場合は、サブエージェント(Sub agents)やコマンド定義ファイル内の `@docs/rules/` で始まるパスを調整する必要があります。また、`docs/rules-index.yaml` も同様に修正してください。
|
|
44
|
+
煩雑なため、特に事情がない場合はデフォルトの構成のまま使うことをお勧めします。
|
|
45
|
+
|
|
46
|
+
## Claude Codeを起動して最初の設定
|
|
47
|
+
|
|
48
|
+
プロジェクトディレクトリで Claude Code を起動します。
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
claude
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
起動したら、まずプロジェクト固有の情報を設定しましょう。これは、AIがあなたのプロジェクトを理解するための重要なステップです。
|
|
55
|
+
|
|
56
|
+
Claude Codeに以下のコマンド(カスタムスラッシュコマンド)を入力します。
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
/project-inject
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
対話的に、プロジェクトの情報を明らかにしていきます。この情報は後から変更できるので、気軽に回答をしてみてください。
|
|
63
|
+
質問に答え終わると、プロジェクトの背景情報が `docs/rules/project-context.md` に保存されます。これで、AIはあなたのプロジェクトの目的を理解して、より適切なコードを生成できるようになります。
|
|
64
|
+
|
|
65
|
+
ファイルの内容を確認し、問題がなければ最後に以下のコマンドを入力し、このステップは完了です。
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
/sync-rules
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 最初の機能を実装してみよう
|
|
72
|
+
|
|
73
|
+
さあ、実際に機能を作ってみましょう。Claude Codeに作成したい機能の内容をコマンド付きで入力してみてください。
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
/implement Helloと返す簡単なAPIを作成したいです。
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
/implementコマンドを使うと、設計から実装までの一連の作業を順に進めてくれます。
|
|
80
|
+
|
|
81
|
+
まず、あなたの要求を分析して、どのくらいの規模の機能なのかを判定します。「これは3ファイルくらいの中規模な機能です」といった具合です。規模に応じて、必要な設計書を作成していきます。
|
|
82
|
+
|
|
83
|
+
小さな機能なら簡単な計画書だけ、大きな機能ならPRD(プロダクト要求仕様書)からDesign Doc(技術設計書)まで順次作成していきます。各設計書の作成が終わると、自動的にドキュメントのレビューが実施されます。
|
|
84
|
+
|
|
85
|
+
レビューが終わり設計書ができると、AIが「こんな設計にしましたが、確認してもらえますか?」と聞いてきます。内容を読んで、気になる点があれば修正をお願いできます。問題なければ承認してください。
|
|
86
|
+
利用しているClaude Codeのモデルによっては、レビューの結果が良好であった場合に次の設計書の作成に進むことがあります。どこかのタイミングではあなたに承認を求めてくるので、その場合はまとめて修正指示を出してください。
|
|
87
|
+
|
|
88
|
+
設計が承認されると、次は結合テストのスケルトンと作業計画書が作られます。実装の手順が示されますので、確認(必要に応じて修正依頼)して承認すると、いよいよ実装が始まります。
|
|
89
|
+
|
|
90
|
+
AIは作業計画を1コミットの単位にタスク分解して、1タスクずつTDDアプローチで自律的に実装していきます。各タスクが終わるごとに定められた6ステップの品質チェックを行い、エラーを修正し、問題がなければコミットを作成します。あなたは進捗を眺めているだけで大丈夫です。
|
|
91
|
+
|
|
92
|
+
すべてのタスクが完了すると、「実装が完了しました」と報告してくれます。`git log` を見ると、きれいにコミットが積み重なっているはずです。
|
|
93
|
+
|
|
94
|
+
## このボイラープレートの開発思想
|
|
95
|
+
|
|
96
|
+
最後に、このボイラープレートがどんな考え方で作られているかを説明します。
|
|
97
|
+
|
|
98
|
+
AI活用によるスループットを最大化するためには、極力人間が介入する場面を減らすことが重要です。
|
|
99
|
+
ですが、AIの実行精度を最大化しようとするとコンテキスト管理が非常に重要になるため、適切なタイミングで適切な情報を与えなくてはならず、仕組みを整えなければ人が付き添い実装を進める必要が生じます。そうなってはスループットは最大化できません。
|
|
100
|
+
|
|
101
|
+
そこで、このボイラープレートでは、各フェーズに対して適切なコンテキスト(ルールや要件、仕様)が選択されること、タスクの実行には不要となる情報を制限すること、これらを仕組みで解決しようとしています。
|
|
102
|
+
|
|
103
|
+
まずは設計書を作り、それをユーザーとレビューし、認識を揃える。その設計書をコンテキストとして作業を計画し、タスクを作る。タスクの実行は専用のコンテキストを持つサブエージェントが担うことで、タスクに不要な情報が入らず実装が安定する。このような仕組みにすることで、コーディングエージェント単体ではコンテキストウィンドウに収まらないような規模な開発でも品質を保ちながら進められるようになります(Claude Opus 4.1では200Kトークン、Sonnet 4ではベータ版で1Mトークンまで対応していますが、基本は200Kトークンという制限があります)。
|
|
104
|
+
|
|
105
|
+
詳しい仕組みについては、[こちらの記事](https://qiita.com/shinpr/items/98771c2b8d2e15cafcd5)で解説されています。興味があれば読んでみてください。
|
|
106
|
+
|
|
107
|
+
## トラブルシューティング
|
|
108
|
+
|
|
109
|
+
うまくいかないときは、以下を確認してください。
|
|
110
|
+
|
|
111
|
+
**実装が途中で止まった場合**
|
|
112
|
+
「/implement Design Doc作成まで終わっているので、続きから再開して実装まで完遂してください」のように、現在の状態を伝えて再開を依頼してください。
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# ルール編集ガイド
|
|
2
|
+
|
|
3
|
+
このガイドでは、LLMの特性を踏まえた実行精度を最大化させるための効果的なルール作成について、考え方・ポイントを提供します。
|
|
4
|
+
|
|
5
|
+
## 本ボイラープレートの思想とルールファイルの重要性について
|
|
6
|
+
|
|
7
|
+
このボイラープレートは、「Agentic Coding」「Context Engineering」の概念を元に設計されています。
|
|
8
|
+
- Agentic Coding: LLMが自律的に判断し、実装タスクを遂行すること
|
|
9
|
+
- Context Engineering: LLMが適切な判断を下すために必要な文脈を、適切なタイミングで提供する仕組みを構築すること
|
|
10
|
+
|
|
11
|
+
詳細は[この記事](https://qiita.com/shinpr/items/98771c2b8d2e15cafcd5)を参照してください。
|
|
12
|
+
|
|
13
|
+
これらの概念を実現するためには、適切なルールの管理と[サブエージェント](https://docs.anthropic.com/ja/docs/claude-code/sub-agents)の存在が重要なキーとなります。
|
|
14
|
+
|
|
15
|
+
ルールファイルは後述するLLMの実行精度を最大化する観点で記載されています。
|
|
16
|
+
|
|
17
|
+
サブエージェントはメインエージェントとは異なる専用のコンテキストを持つため、単一責務を果たすために必要なルールファイルのみを読み込みタスクを実行するように設計されています。
|
|
18
|
+
メインエージェントがタスクを実行する際は、「メタ認知(自分の思考や学習プロセスを客観的に把握すること)」の概念を用い、タスクの背景を理解し、ルールファイル群からタスクに必要なルールをピックアップし、タスクを実行します。
|
|
19
|
+
適切なタイミングで過不足ないルールを取得することで、実行精度を最大化しようというアプローチです。
|
|
20
|
+
|
|
21
|
+
LLMの出力を完全に制御することは不可能ですが、仕組みを整備することで、実行精度を最大化することは可能です。
|
|
22
|
+
裏を返すと、ルールファイルの内容によって、LLMの実行精度は容易に低下してしまいます。
|
|
23
|
+
|
|
24
|
+
完全に制御することはできないという前提を持った上でタスクを実行させ、生じた課題を振り返り、仕組みにフィードバックをしていくことで、実行精度の維持向上が実現します。
|
|
25
|
+
実際のプロジェクトで活用し、思ったような結果にならなかった時は、ルールファイルの改善を検討してみてください。
|
|
26
|
+
|
|
27
|
+
## どのファイルに記載するべきかの判断基準
|
|
28
|
+
|
|
29
|
+
### ファイルごとの役割と適用範囲
|
|
30
|
+
|
|
31
|
+
| ファイル | 適用範囲 | 適用タイミング | 記載する内容の例 |
|
|
32
|
+
|---------|----------|--------------|--------------|
|
|
33
|
+
| **CLAUDE.md** | 全タスク | 常時適用 | Edit/Write前の承認必須、5ファイル以上変更で停止 |
|
|
34
|
+
| **ルールファイル** | 特定技術領域 | その技術使用時 | 具体的な型を使用、エラーハンドリング必須、関数30行以内 |
|
|
35
|
+
| **ガイドライン** | 特定作業 | その作業実施時 | サブエージェントの使い分け方 |
|
|
36
|
+
| **Design Doc** | 特定機能 | その機能開発時 | その機能の必須要件、APIの仕様、セキュリティ制約 |
|
|
37
|
+
|
|
38
|
+
### 判断フローチャート
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
いつこのルールが必要か?
|
|
42
|
+
├─ 常に必要 → CLAUDE.md
|
|
43
|
+
├─ 特定機能の開発時のみ → Design Doc
|
|
44
|
+
├─ 特定技術を使用する時 → ルールファイル
|
|
45
|
+
└─ 特定の作業を行う時 → ガイドライン
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## LLMの実行精度を最大化する9つのルール原則
|
|
49
|
+
|
|
50
|
+
LLMの特性と本ボイラープレートの設計思想を踏まえた、ルール作成の原則を9つ紹介します。
|
|
51
|
+
`/refine-rule`コマンドというルールの変更を支援するカスタムスラッシュコマンドも提供していますが、LLMの特性として「生成後に出力と考え方を突き合わせなければ課題に到達しづらい傾向」があるため、コマンドを用いず対話的にルールの修正を行うことを最終的には推奨します。
|
|
52
|
+
|
|
53
|
+
### 1. 最小記述で最大精度を実現する(コンテキスト圧迫 vs 実行精度)
|
|
54
|
+
|
|
55
|
+
コンテキストは貴重なリソースです。冗長な説明を避け、本質的な情報のみを記述します。
|
|
56
|
+
一方で、ただ短くすればいいという訳ではなく、判断に迷わない最小限の記述でなければいけません。
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
❌ 冗長な記述(24文字)
|
|
60
|
+
エラーが発生した場合は必ずログに記録してください
|
|
61
|
+
|
|
62
|
+
✅ 簡潔な記述(12文字)
|
|
63
|
+
エラーは全てログ記録必須
|
|
64
|
+
|
|
65
|
+
❌ 省略しすぎた記述(8文字)
|
|
66
|
+
エラーは全て記録
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
同じ意味なら短い表現を心がけてください。ただし、曖昧さが生じるほど短くしないよう心がけてください。
|
|
70
|
+
|
|
71
|
+
### 2. 表記を完全に統一する
|
|
72
|
+
|
|
73
|
+
同じ概念には常に同じ用語を使います。表記のブレはLLMの理解を妨げます。
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
# 用語定義(プロジェクト全体で統一)
|
|
77
|
+
- API応答/返り値 → `レスポンス`で統一
|
|
78
|
+
- 利用者/顧客 → `ユーザー`で統一
|
|
79
|
+
- 誤り/異常 → `エラー`で統一(例外/障害は文脈によっては使い分ける)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 3. 重複を徹底的に排除する
|
|
83
|
+
|
|
84
|
+
同じ内容を複数箇所に書くのはコンテキストの無駄遣いです。1箇所にまとめます。
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
❌ 複数箇所に同じ内容が記載されている
|
|
88
|
+
# docs/rules/base.md
|
|
89
|
+
標準エラー形式:{ success: false, error: string, code: number }
|
|
90
|
+
|
|
91
|
+
# docs/rules/api.md
|
|
92
|
+
エラーレスポンスは `{ success: false, error: string, code: number }` の標準エラー形式に従う
|
|
93
|
+
|
|
94
|
+
✅ 1箇所に集約されている
|
|
95
|
+
# docs/rules/base.md
|
|
96
|
+
標準エラー形式:{ success: false, error: string, code: number }
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
ファイル間の重複もチェックし、矛盾や冗長性を排除します。
|
|
100
|
+
更新漏れによる表記揺れのリスクもあるため、重複の排除はメンテナンスコストの低下にもつながります。
|
|
101
|
+
|
|
102
|
+
### 4. 責務を適切に集約する
|
|
103
|
+
|
|
104
|
+
関連する内容は1つのファイルにまとめることで単一責務を維持でき、タスクに不要なコンテキストの混入を防げます。
|
|
105
|
+
|
|
106
|
+
```markdown
|
|
107
|
+
# 認証関連は1ファイルに集約
|
|
108
|
+
docs/rules/auth.md
|
|
109
|
+
├── JWT仕様
|
|
110
|
+
├── 認証フロー
|
|
111
|
+
├── エラーハンドリング
|
|
112
|
+
└── セキュリティ要件
|
|
113
|
+
|
|
114
|
+
# ❌ 責務を分散させる
|
|
115
|
+
docs/rules/auth.md
|
|
116
|
+
├── JWT仕様
|
|
117
|
+
├── エラーハンドリング
|
|
118
|
+
└── セキュリティ要件
|
|
119
|
+
docs/rules/flow.md
|
|
120
|
+
├── ユーザー登録フロー
|
|
121
|
+
└── 認証フロー
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
ただし、1ファイルが巨大になりすぎると読み込みコストが高くなるため、300行前後(約1,500トークン)を目安に論理的な単位での分割やルールの厳選を行なってください。
|
|
125
|
+
|
|
126
|
+
### 5. 測定可能な判断基準を設定する
|
|
127
|
+
|
|
128
|
+
曖昧な指示は解釈のブレを生みます。数値や具体的な条件で判断基準を明確化します。
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
✅ 測定可能な基準
|
|
132
|
+
- 関数の行数:30行以下
|
|
133
|
+
- 循環的複雑度:10以下
|
|
134
|
+
- レスポンスタイム:p95で200ms以内
|
|
135
|
+
- テストカバレッジ:80%以上
|
|
136
|
+
|
|
137
|
+
❌ 曖昧な基準
|
|
138
|
+
- 読みやすいコード
|
|
139
|
+
- 高速な処理
|
|
140
|
+
- 十分なテスト
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
注意点として、LLMは時間を理解でないため「30分以内に完了する粒度でタスク分解をする」といった記載は効果的に作用しません。
|
|
144
|
+
|
|
145
|
+
### 6. NGパターンを推奨・背景としてのNG形式で示す
|
|
146
|
+
|
|
147
|
+
禁止事項の羅列より、推奨パターンとその理由を示す方が効果的です。
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
✅ 推奨形式での記述
|
|
151
|
+
【状態管理】
|
|
152
|
+
推奨:Zustandまたは Context API を使用
|
|
153
|
+
理由:グローバル変数はテスト困難、状態追跡が複雑
|
|
154
|
+
NG例:window.globalState = { ... }
|
|
155
|
+
|
|
156
|
+
❌ 禁止の羅列
|
|
157
|
+
- グローバル変数を使うな
|
|
158
|
+
- window オブジェクトに値を保存するな
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
禁止事項は背景情報として活用しましょう。
|
|
162
|
+
|
|
163
|
+
### 7. 暗黙の前提を言語化する
|
|
164
|
+
|
|
165
|
+
プロジェクト内では当然な内容でも、LLMには明示しなければ伝わりません。
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
## 前提条件
|
|
169
|
+
- 実行環境:Node.js 20.x on AWS Lambda
|
|
170
|
+
- 最大実行時間:15分(Lambda制限)
|
|
171
|
+
- メモリ上限:3GB
|
|
172
|
+
- 同時実行数:1000(アカウント制限)
|
|
173
|
+
- タイムゾーン:全てUTC
|
|
174
|
+
- 文字コード:UTF-8のみ
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
プロジェクト開始時や、プロジェクトの前提が変わった際は`/project-inject`コマンドを使い、プロジェクトのコンテキストをルールとして明文化しましょう。
|
|
178
|
+
|
|
179
|
+
### 8. 重要度順に記述を配置する
|
|
180
|
+
|
|
181
|
+
LLMは冒頭の情報により注意を払います。最重要ルールを先頭に、例外的なケースは末尾に配置します。
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
# APIルール
|
|
185
|
+
|
|
186
|
+
## 最重要原則(必ず守る)
|
|
187
|
+
1. 全APIはJWT認証必須
|
|
188
|
+
2. レート制限:100req/分
|
|
189
|
+
3. タイムアウト:30秒
|
|
190
|
+
|
|
191
|
+
## 標準仕様
|
|
192
|
+
- メソッド:REST原則に従う
|
|
193
|
+
- ボディ:JSON形式
|
|
194
|
+
- 文字コード:UTF-8
|
|
195
|
+
|
|
196
|
+
## 例外ケース(特殊な場合のみ)
|
|
197
|
+
- ファイルアップロード時のみ multipart/form-data 許可
|
|
198
|
+
- WebSocket接続は /ws エンドポイントのみ
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 9. スコープ境界を明確にする
|
|
202
|
+
|
|
203
|
+
何を扱い、何を扱わないかを明示することで、不要な処理や誤解を防ぎます。
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
## このルールの適用範囲
|
|
207
|
+
|
|
208
|
+
### 対象
|
|
209
|
+
- REST API全般
|
|
210
|
+
- GraphQLエンドポイント
|
|
211
|
+
- WebSocket通信
|
|
212
|
+
|
|
213
|
+
### 対象外
|
|
214
|
+
- 静的ファイル配信
|
|
215
|
+
- ヘルスチェックエンドポイント(/health)
|
|
216
|
+
- メトリクスエンドポイント(/metrics)
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## 参考:効率的なルール記述
|
|
220
|
+
|
|
221
|
+
`docs/rules`配下に、これらの原則を意識したルールファイルが存在します。
|
|
222
|
+
それぞれ重複が無く、単一責務で、最小限の記述を心がけて作成しているので、ルールを追加・新設する際の参考にしてください。
|
|
223
|
+
|
|
224
|
+
### 各ルールファイルと適用原則の対応
|
|
225
|
+
|
|
226
|
+
| ルールファイル | 主な内容 | 適用されている原則の例 |
|
|
227
|
+
|------------|---------|-------------------|
|
|
228
|
+
| **typescript.md** | TypeScriptコード作成・修正・リファクタリング、モダンな型機能活用 | **原則2**: 表記統一(any型完全禁止など用語を統一)<br>**原則5**: 測定可能な基準(フィールド数20個まで、ネスト深さ3階層まで) |
|
|
229
|
+
| **typescript-testing.md** | テスト作成、品質チェック、開発ステップ | **原則5**: 測定可能な基準(カバレッジ70%以上)<br>**原則8**: 重要度順の配置(品質要件を冒頭に配置) |
|
|
230
|
+
| **ai-development-guide.md** | 技術的判断基準、アンチパターン検出、ベストプラクティス | **原則6**: NGパターンを推奨形式で示す(アンチパターン集)<br>**原則3**: 重複排除(Rule of Threeによる共通化判断) |
|
|
231
|
+
| **technical-spec.md** | 技術設計、環境設定、ドキュメント作成プロセス | **原則4**: 責務の集約(技術設計関連を1ファイルに)<br>**原則7**: 暗黙の前提を言語化(セキュリティルール明文化) |
|
|
232
|
+
| **project-context.md** | プロジェクト固有情報、実装原則 | **原則7**: 暗黙の前提を言語化(プロジェクト特性の明文化)<br>**原則1**: 最小記述で最大精度(簡潔な箇条書き形式) |
|
|
233
|
+
| **documentation-criteria.md** | 規模判定、ドキュメント作成基準 | **原則5**: 測定可能な基準(作成判定マトリクス)<br>**原則9**: スコープ境界を明確化(含むもの/含まないものを明記) |
|
|
234
|
+
| **implementation-approach.md** | 実装戦略選択、タスク分解、大規模変更計画 | **原則8**: 重要度順の配置(Phase順の構成)<br>**原則6**: NGパターンを推奨形式で示す(リスク分析) |
|
|
235
|
+
|
|
236
|
+
これらのファイル全体で9つの原則すべてが実践されており、実際のルール作成時の参考になります。
|
|
237
|
+
|
|
238
|
+
## トラブルシューティング
|
|
239
|
+
|
|
240
|
+
### 問題:ルールが長すぎてコンテキストを圧迫
|
|
241
|
+
|
|
242
|
+
**対策**
|
|
243
|
+
1. 重複を探して削除
|
|
244
|
+
2. 例を最小限に絞る
|
|
245
|
+
3. 参照形式を活用
|
|
246
|
+
4. 優先度の低いルールを別ファイルへ
|
|
247
|
+
|
|
248
|
+
### 問題:生成結果が一貫しない
|
|
249
|
+
|
|
250
|
+
**対策**
|
|
251
|
+
1. 用語・表記を統一
|
|
252
|
+
2. 判断基準を数値化
|
|
253
|
+
3. 優先順位を明確化
|
|
254
|
+
4. 矛盾するルールを排除
|
|
255
|
+
|
|
256
|
+
### 問題:重要なルールが守られない
|
|
257
|
+
|
|
258
|
+
**対策**
|
|
259
|
+
1. ファイル冒頭に移動
|
|
260
|
+
2. 【必須】【重要】タグを付与
|
|
261
|
+
3. 具体例を1つ追加
|
|
262
|
+
4. 否定形を肯定形に変換
|
|
263
|
+
|
|
264
|
+
## まとめ
|
|
265
|
+
|
|
266
|
+
効果的なルールはLLMの生成を安定させます。9つの原則を意識し、継続的に最適化することでLLMの能力を最大限に引き出すことができます。定期的な実装結果の振り返りと改善を繰り返し、プロジェクトに最適なルールセットを構築していきましょう。
|