sdd-forge 0.1.0-alpha.2 → 0.1.0-alpha.22

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 (202) hide show
  1. package/README.md +135 -27
  2. package/docs/01_overview.md +110 -0
  3. package/docs/02_cli_commands.md +279 -0
  4. package/docs/03_configuration.md +85 -0
  5. package/docs/04_internal_design.md +230 -0
  6. package/docs/05_development.md +86 -0
  7. package/package.json +15 -7
  8. package/src/README.md +201 -0
  9. package/src/docs/commands/agents.js +363 -0
  10. package/src/docs/commands/changelog.js +260 -0
  11. package/src/{engine/populate.js → docs/commands/data.js} +74 -51
  12. package/src/docs/commands/default-project.js +56 -0
  13. package/src/docs/commands/forge.js +552 -0
  14. package/src/docs/commands/init.js +266 -0
  15. package/src/docs/commands/readme.js +177 -0
  16. package/src/docs/commands/review.js +162 -0
  17. package/src/docs/commands/scan.js +251 -0
  18. package/src/docs/commands/setup.js +694 -0
  19. package/src/docs/commands/text.js +866 -0
  20. package/src/docs/commands/upgrade.js +252 -0
  21. package/src/docs/data/docs.js +77 -0
  22. package/src/docs/data/project.js +47 -0
  23. package/src/docs/lib/data-source.js +64 -0
  24. package/src/docs/lib/directive-parser.js +219 -0
  25. package/src/docs/lib/forge-prompts.js +174 -0
  26. package/src/docs/lib/resolver-factory.js +140 -0
  27. package/src/docs/lib/review-parser.js +175 -0
  28. package/src/docs/lib/scan-source.js +49 -0
  29. package/src/docs/lib/scanner.js +226 -0
  30. package/src/docs/lib/template-merger.js +252 -0
  31. package/src/docs.js +142 -0
  32. package/src/{flow/flow.js → flow.js} +67 -17
  33. package/src/help.js +90 -42
  34. package/src/lib/agent.js +237 -0
  35. package/src/lib/agents-md.js +47 -0
  36. package/src/lib/cli.js +35 -0
  37. package/src/lib/config.js +70 -2
  38. package/src/lib/flow-state.js +56 -0
  39. package/src/lib/i18n.js +137 -0
  40. package/src/lib/presets.js +80 -0
  41. package/src/lib/progress.js +155 -0
  42. package/src/{projects → lib}/projects.js +46 -10
  43. package/src/lib/types.js +217 -0
  44. package/src/locale/en/messages.json +87 -0
  45. package/src/locale/en/prompts.json +66 -0
  46. package/src/locale/en/ui.json +140 -0
  47. package/src/locale/ja/messages.json +87 -0
  48. package/src/locale/ja/prompts.json +66 -0
  49. package/src/locale/ja/ui.json +140 -0
  50. package/src/presets/base/preset.json +5 -0
  51. package/src/presets/base/templates/ja/01_overview.md +33 -0
  52. package/src/presets/base/templates/ja/02_stack_and_ops.md +34 -0
  53. package/src/presets/base/templates/ja/03_project_structure.md +28 -0
  54. package/src/presets/base/templates/ja/04_development.md +40 -0
  55. package/src/presets/base/templates/ja/AGENTS.sdd.md +90 -0
  56. package/src/presets/cakephp2/data/config.js +176 -0
  57. package/src/presets/cakephp2/data/controllers.js +123 -0
  58. package/src/presets/cakephp2/data/docker.js +17 -0
  59. package/src/presets/cakephp2/data/email.js +37 -0
  60. package/src/presets/cakephp2/data/libs.js +99 -0
  61. package/src/presets/cakephp2/data/models.js +113 -0
  62. package/src/presets/cakephp2/data/shells.js +42 -0
  63. package/src/presets/cakephp2/data/tables.js +119 -0
  64. package/src/presets/cakephp2/data/tests.js +32 -0
  65. package/src/presets/cakephp2/data/views.js +81 -0
  66. package/src/presets/cakephp2/preset.json +30 -0
  67. package/src/presets/cakephp2/scan/assets.js +68 -0
  68. package/src/presets/cakephp2/scan/base-classes.js +170 -0
  69. package/src/presets/cakephp2/scan/business.js +102 -0
  70. package/src/presets/cakephp2/scan/config.js +129 -0
  71. package/src/{analyzers/analyze-models.js → presets/cakephp2/scan/models.js} +1 -1
  72. package/src/presets/cakephp2/scan/notifications.js +78 -0
  73. package/src/presets/cakephp2/scan/security.js +85 -0
  74. package/src/presets/cakephp2/scan/shells-detail.js +56 -0
  75. package/src/presets/cakephp2/scan/testing.js +37 -0
  76. package/src/presets/cakephp2/scan/views.js +228 -0
  77. package/src/presets/cakephp2/templates/ja/02_stack_and_ops.md +47 -0
  78. package/src/presets/cakephp2/templates/ja/03_project_structure.md +50 -0
  79. package/src/presets/cakephp2/templates/ja/04_development.md +61 -0
  80. package/src/presets/cakephp2/templates/ja/05_auth_and_session.md +22 -0
  81. package/src/presets/cakephp2/templates/ja/07_db_tables.md +22 -0
  82. package/src/presets/cakephp2/templates/ja/08_controller_routes.md +13 -0
  83. package/src/presets/cli/data/modules.js +49 -0
  84. package/src/presets/cli/preset.json +5 -0
  85. package/src/presets/cli/templates/ja/05_commands.md +33 -0
  86. package/src/presets/cli/templates/ja/06_config.md +33 -0
  87. package/src/presets/cli/templates/ja/README.md +37 -0
  88. package/src/presets/laravel/data/commands.js +24 -0
  89. package/src/presets/laravel/data/config.js +86 -0
  90. package/src/presets/laravel/data/controllers.js +69 -0
  91. package/src/presets/laravel/data/models.js +71 -0
  92. package/src/presets/laravel/data/routes.js +47 -0
  93. package/src/presets/laravel/data/tables.js +76 -0
  94. package/src/presets/laravel/preset.json +29 -0
  95. package/src/presets/laravel/scan/config.js +124 -0
  96. package/src/presets/laravel/scan/controllers.js +86 -0
  97. package/src/presets/laravel/scan/migrations.js +147 -0
  98. package/src/presets/laravel/scan/models.js +173 -0
  99. package/src/presets/laravel/scan/routes.js +121 -0
  100. package/src/presets/laravel/templates/ja/02_stack_and_ops.md +40 -0
  101. package/src/presets/laravel/templates/ja/03_project_structure.md +11 -0
  102. package/src/presets/laravel/templates/ja/05_auth_and_session.md +25 -0
  103. package/src/presets/laravel/templates/ja/07_db_tables.md +22 -0
  104. package/src/presets/laravel/templates/ja/08_controller_routes.md +43 -0
  105. package/src/presets/library/preset.json +5 -0
  106. package/src/presets/library/templates/ja/05_public_api.md +27 -0
  107. package/src/presets/library/templates/ja/06_usage.md +33 -0
  108. package/src/presets/library/templates/ja/README.md +18 -0
  109. package/src/presets/node-cli/preset.json +13 -0
  110. package/src/presets/node-cli/templates/ja/01_overview.md +23 -0
  111. package/src/presets/node-cli/templates/ja/02_cli_commands.md +23 -0
  112. package/src/presets/node-cli/templates/ja/02_stack_and_ops.md +0 -0
  113. package/src/presets/node-cli/templates/ja/03_configuration.md +23 -0
  114. package/src/presets/node-cli/templates/ja/03_project_structure.md +0 -0
  115. package/src/presets/node-cli/templates/ja/04_development.md +0 -0
  116. package/src/presets/node-cli/templates/ja/04_internal_design.md +30 -0
  117. package/src/presets/node-cli/templates/ja/05_commands.md +0 -0
  118. package/src/presets/node-cli/templates/ja/05_development.md +49 -0
  119. package/src/presets/node-cli/templates/ja/06_config.md +0 -0
  120. package/src/presets/node-cli/templates/ja/README.md +31 -0
  121. package/src/presets/symfony/data/commands.js +24 -0
  122. package/src/presets/symfony/data/config.js +82 -0
  123. package/src/presets/symfony/data/controllers.js +64 -0
  124. package/src/presets/symfony/data/entities.js +62 -0
  125. package/src/presets/symfony/data/routes.js +64 -0
  126. package/src/presets/symfony/data/tables.js +61 -0
  127. package/src/presets/symfony/preset.json +29 -0
  128. package/src/presets/symfony/scan/config.js +136 -0
  129. package/src/presets/symfony/scan/controllers.js +105 -0
  130. package/src/presets/symfony/scan/entities.js +152 -0
  131. package/src/presets/symfony/scan/migrations.js +149 -0
  132. package/src/presets/symfony/scan/routes.js +207 -0
  133. package/src/presets/symfony/templates/ja/02_stack_and_ops.md +40 -0
  134. package/src/presets/symfony/templates/ja/03_project_structure.md +11 -0
  135. package/src/presets/symfony/templates/ja/05_auth_and_session.md +25 -0
  136. package/src/presets/symfony/templates/ja/07_db_tables.md +29 -0
  137. package/src/presets/symfony/templates/ja/08_controller_routes.md +41 -0
  138. package/src/presets/webapp/data/controllers.js +63 -0
  139. package/src/presets/webapp/data/models.js +85 -0
  140. package/src/presets/webapp/data/routes.js +70 -0
  141. package/src/presets/webapp/data/shells.js +54 -0
  142. package/src/presets/webapp/data/tables.js +60 -0
  143. package/src/presets/webapp/preset.json +5 -0
  144. package/src/presets/webapp/templates/ja/05_auth_and_session.md +39 -0
  145. package/src/presets/webapp/templates/ja/06_database_architecture.md +35 -0
  146. package/src/presets/webapp/templates/ja/07_db_tables.md +29 -0
  147. package/src/presets/webapp/templates/ja/08_controller_routes.md +45 -0
  148. package/src/presets/webapp/templates/ja/09_business_logic.md +40 -0
  149. package/src/presets/webapp/templates/ja/10_batch_and_shell.md +38 -0
  150. package/src/presets/webapp/templates/ja/README.md +23 -0
  151. package/src/presets/webapp/templates/ja/chapters.json +4 -0
  152. package/src/presets-cmd.js +65 -0
  153. package/src/sdd-forge.js +117 -0
  154. package/src/spec.js +31 -0
  155. package/src/{spec → specs/commands}/gate.js +19 -4
  156. package/src/specs/commands/init.js +318 -0
  157. package/src/templates/config.example.json +38 -0
  158. package/src/templates/skills/sdd-flow-close/SKILL.md +84 -0
  159. package/src/templates/skills/sdd-flow-start/SKILL.md +76 -0
  160. package/src/analyzers/analyze-controllers.js +0 -85
  161. package/src/analyzers/analyze-extras.js +0 -944
  162. package/src/analyzers/analyze-routes.js +0 -50
  163. package/src/analyzers/analyze-shells.js +0 -75
  164. package/src/analyzers/scan.js +0 -116
  165. package/src/bin/sdd-forge.js +0 -129
  166. package/src/engine/directive-parser.js +0 -72
  167. package/src/engine/init.js +0 -253
  168. package/src/engine/readme.js +0 -174
  169. package/src/engine/resolver.js +0 -568
  170. package/src/engine/tfill.js +0 -617
  171. package/src/forge/forge.js +0 -684
  172. package/src/projects/add.js +0 -73
  173. package/src/projects/setdefault.js +0 -37
  174. package/src/spec/spec.js +0 -198
  175. package/src/templates/checks/check-controller-coverage.sh +0 -46
  176. package/src/templates/checks/check-db-coverage.sh +0 -87
  177. package/src/templates/checks/check-node-cli-docs.sh +0 -125
  178. package/src/templates/checks/check-temp-docs.sh +0 -100
  179. package/src/templates/checks/generate-change-log.sh +0 -142
  180. package/src/templates/checks/self-review-temp-docs.sh +0 -18
  181. package/src/templates/locale/ja/messages.json +0 -9
  182. package/src/templates/locale/ja/node-cli/01_overview.md +0 -23
  183. package/src/templates/locale/ja/node-cli/02_cli_commands.md +0 -23
  184. package/src/templates/locale/ja/node-cli/03_configuration.md +0 -23
  185. package/src/templates/locale/ja/node-cli/04_internal_design.md +0 -30
  186. package/src/templates/locale/ja/node-cli/05_development.md +0 -49
  187. package/src/templates/locale/ja/node-cli/README.md +0 -41
  188. package/src/templates/locale/ja/php-mvc/01_architecture.md +0 -23
  189. package/src/templates/locale/ja/php-mvc/02_stack_and_ops.md +0 -45
  190. package/src/templates/locale/ja/php-mvc/03_project_structure.md +0 -46
  191. package/src/templates/locale/ja/php-mvc/04_development.md +0 -69
  192. package/src/templates/locale/ja/php-mvc/05_auth_and_session.md +0 -48
  193. package/src/templates/locale/ja/php-mvc/06_database_architecture.md +0 -23
  194. package/src/templates/locale/ja/php-mvc/07_db_tables.md +0 -31
  195. package/src/templates/locale/ja/php-mvc/08_controller_routes.md +0 -33
  196. package/src/templates/locale/ja/php-mvc/09_business_logic.md +0 -27
  197. package/src/templates/locale/ja/php-mvc/10_batch_and_shell.md +0 -25
  198. package/src/templates/locale/ja/php-mvc/README.md +0 -34
  199. package/src/templates/locale/ja/prompts.json +0 -4
  200. package/src/templates/locale/ja/sections.json +0 -6
  201. /package/src/{analyzers → docs}/lib/php-array-parser.js +0 -0
  202. /package/src/{engine → docs/lib}/renderers.js +0 -0
package/README.md CHANGED
@@ -1,45 +1,153 @@
1
- # {{PROJECT_NAME}}
1
+ # <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
2
2
 
3
- {{PROJECT_DESCRIPTION}}
3
+ [![npm version](https://img.shields.io/npm/v/sdd-forge.svg)](https://www.npmjs.com/package/sdd-forge)
4
4
 
5
- ## 技術スタック
5
+ > **Alpha版:** このツールは現在アルファ版です。API・コマンド体系・設定フォーマットは予告なく変更される可能性があります。本番環境での利用はお控えください。
6
6
 
7
- | カテゴリ | 技術 |
8
- |----------|------|
9
- | 言語 | Node.js (ES Modules) |
10
- | 配布 | npm |
11
- | テスト | — |
7
+ **ソースコード解析 + AI で、プロジェクトドキュメントを自動生成・維持する CLI ツール。**
8
+
9
+ コードベースを静的解析し、テンプレートと AI を組み合わせて `docs/` を自動生成します。
10
+ さらに Spec-Driven Development(SDD)ワークフローにより、機能追加・修正時のドキュメント更新も自動化します。
11
+
12
+ ## Features
13
+
14
+ - **ゼロ依存** — Node.js 18+ のみで動作。npm 依存パッケージなし
15
+ - **ソースコード自動解析** — コントローラ・モデル・ルート・設定ファイルを静的解析し、構造データを抽出
16
+ - **AI ドキュメント生成** — テンプレートの `{{text}}` ディレクティブを AI が自動展開
17
+ - **テンプレート継承** — base → arch → preset → project-local の 4 層継承でカスタマイズ可能
18
+ - **SDD ワークフロー** — spec → gate → 実装 → forge → review の開発サイクルをコマンドで管理
19
+ - **AI エージェント連携** — Claude Code(スキル)・Codex CLI に対応
20
+ - **マルチプリセット** — Node.js CLI / CakePHP2 / Laravel / Symfony に対応
12
21
 
13
22
  ## クイックスタート
14
23
 
15
- ```bash
16
- npm install -g {{PACKAGE_NAME}}
17
- {{PACKAGE_NAME}} help
24
+ ### インストール
25
+
26
+ <pre>
27
+ # npm
28
+ npm install -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
29
+
30
+ # yarn
31
+ yarn global add <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
32
+
33
+ # pnpm
34
+ pnpm add -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
35
+ </pre>
36
+
37
+ ### セットアップ & ドキュメント生成
38
+
39
+ <pre>
40
+ # 1. プロジェクトを登録(インタラクティブウィザード)
41
+ <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> setup
42
+
43
+ # 2. ドキュメントを一括生成(scan → init → data → text → readme)
44
+ <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> build
45
+ </pre>
46
+
47
+ これだけで `docs/` と `README.md` が生成されます。
48
+
49
+ ## コマンド一覧
50
+
51
+ ### ドキュメント生成
52
+
53
+ | コマンド | 説明 |
54
+ |---|---|
55
+ | `setup` | プロジェクト登録 + 設定ファイル生成 |
56
+ | `build` | ドキュメント生成パイプラインを一括実行 |
57
+ | `scan` | ソースコード解析 → `analysis.json` |
58
+ | `init` | テンプレートから `docs/` を初期化 |
59
+ | `data` | `{{data}}` ディレクティブを解析データで解決 |
60
+ | `text` | `{{text}}` ディレクティブを AI で解決 |
61
+ | `readme` | `docs/` から `README.md` を自動生成 |
62
+ | `forge` | AI によるドキュメント反復改善 |
63
+ | `review` | ドキュメント品質チェック |
64
+
65
+ ### SDD ワークフロー
66
+
67
+ | コマンド | 説明 |
68
+ |---|---|
69
+ | `spec` | 仕様書 + feature ブランチを作成 |
70
+ | `gate` | 仕様書の実装前チェック |
71
+ | `flow` | SDD ワークフローを自動実行 |
72
+ | `changelog` | specs/ から変更履歴を生成 |
73
+ | `agents` | AGENTS.md を更新 |
74
+
75
+ ## SDD ワークフロー
76
+
77
+ 機能追加・修正の流れ:
78
+
79
+ ```
80
+ spec 仕様書を作成(feature ブランチ + spec.md)
81
+
82
+ gate 仕様ゲートチェック(未解決事項がなければ PASS)
83
+
84
+ 実装 gate PASS 後にコーディング
85
+
86
+ forge ドキュメントを自動更新
87
+
88
+ review 品質チェック(PASS するまで繰り返し)
18
89
  ```
19
90
 
20
- ## ドキュメント
91
+ ### AI エージェントとの連携
21
92
 
22
- | | 概要 |
23
- |----|------|
24
- | [01. ツール概要とアーキテクチャ](docs/01_overview.md) | `sdd-forge` は、PHP-MVC プロジェクト(CakePHP 等)における「仕様と実装の乖離」および「技術ドキュメントの作成・維持コスト」という課題を解決するための Node.js CLI ツールである。ソースコード静的解析(`scan`)・テンプレート駆動のドキュメント生成(`init` / `populate` / `tfill`)・仕様ゲート管理(`spec` / `gate`)・反復改善ループ(`forge`)を単一パッケージに統合し、Spec-Driven Development(SDD)ワークフローをコマンドラインから一貫して実行できる。 |
25
- | [02. CLI コマンドリファレンス](docs/02_cli_commands.md) | `SCRIPTS` オブジェクトから `scan:all` を含めると 19 コマンド(エントリは 18 だが `scan:all` は別処理)が確認できます。正確な数を数えます。 |
26
- | [03. 設定とカスタマイズ](docs/03_configuration.md) | sdd-forge の動作は `.sdd-forge/config.json` を中心とした複数の JSON 設定ファイルによって制御され、言語・テンプレートタイプ・AIプロバイダー・タイムアウト・テキスト生成挙動など幅広い項目をカスタマイズできる。プロジェクトごとのテンプレート差し替えは `project-overrides.json`、解析結果の表現上書きは `overrides.json` で行い、関心ごとに設定を分離できる構成になっている。 |
27
- | [04. 内部設計](docs/04_internal_design.md) | `src/bin/sdd-forge.js` がサブコマンドを各モジュール(`analyzers/`・`engine/`・`spec/`・`forge/`・`flow/`)へディスパッチし、共通ユーティリティ `lib/` を底辺として解析→生成→改善の方向で一方向に依存が流れる設計になっている。PHPソースを `analyzers/` `analysis.json` へ変換し、`engine/populate` と `engine/tfill` がそのデータをテンプレートと組み合わせて `docs/` へ展開するパイプラインが中心的な処理フローである。 |
28
- | [05. 開発・テスト・配布](docs/05_development.md) | `npm link` を使ったビルド不要のローカル開発環境、外部依存ゼロの Node.js 実装、および `npm version` と `npm publish` による npm レジストリへのリリースフローを中心に構成された章である。テストフレームワークは現時点では導入されておらず、動作確認はコマンド直接実行による手動テストで行う。 |
93
+ #### Claude Code
94
+
95
+ スキルで SDD ワークフローを実行できます:
96
+
97
+ ```
98
+ /sdd-flow-start — spec 作成 gate 実装を開始
99
+ /sdd-flow-close — forge review commit merge で終了
100
+ ```
29
101
 
30
- ## 開発ワークフロー(SDD)
102
+ #### Codex CLI
31
103
 
32
- 本プロジェクトは Spec-Driven Development(SDD)を採用しています。
104
+ `$` プロンプトからワークフローを実行できます:
33
105
 
34
106
  ```
35
- 1. sdd-forge spec --title "..." — 仕様ファイル作成
36
- 2. sdd-forge gate --spec ... — 仕様ゲート(未解決事項がなければ PASS)
37
- 3. 実装
38
- 4. sdd-forge forge --prompt "..." — ドキュメント自動更新
39
- 5. sdd-forge review — ドキュメントレビュー
107
+ $sdd-flow-start — spec 作成 gate → 実装を開始
108
+ $sdd-flow-close — forge review commit → merge で終了
40
109
  ```
41
110
 
42
- 詳細は [CLAUDE.md](CLAUDE.md) の「SDDフロー」セクションを参照してください。
111
+ ## 設定
112
+
113
+ `sdd-forge setup` で `.sdd-forge/config.json` が生成されます。
114
+
115
+ ```jsonc
116
+ {
117
+ "type": "cli/node-cli", // プロジェクトタイプ(プリセット選択)
118
+ "lang": "ja", // ドキュメント言語
119
+ "defaultAgent": "claude", // AI エージェント
120
+ "providers": { ... } // エージェント設定
121
+ }
122
+ ```
123
+
124
+ ### カスタマイズ
125
+
126
+ プロジェクト固有のテンプレートやデータソースを追加できます:
127
+
128
+ ```
129
+ .sdd-forge/
130
+ ├── templates/{lang}/
131
+ │ ├── docs/ ← 章テンプレート・README のオーバーライド
132
+ │ └── specs/ ← spec.md / qa.md テンプレート
133
+ └── data/ ← カスタムデータソースモジュール
134
+ ```
135
+
136
+ ## ドキュメント
137
+
138
+ <!-- {{data: docs.chapters("章|概要")}} -->
139
+ | 章 | 概要 |
140
+ | --- | --- |
141
+ | [01. ツール概要とアーキテクチャ](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/01_overview.md) | sdd-forge は、ソースコードを解析してプロジェクトドキュメントを自動生成する Node.js CLI ツールです。 |
142
+ | [02. CLI コマンドリファレンス](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/02_cli_commands.md) | sdd-forge は `help`・`setup`・`build`・`scan`・`data`・`text`・`init`・`forge`・`review`・`changelog`・`agents`・`readme`・`spec`・… |
143
+ | [03. 設定とカスタマイズ](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/03_configuration.md) | 本章では、sdd-forge が読み込む設定ファイルの構成と各設定項目の意味、AIプロバイダーやドキュメントスタイルといったカスタマイズポイントについて説明します。 |
144
+ | [04. 内部設計](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/04_internal_design.md) | 本章では sdd-forge の内部設計として、ディレクトリ・モジュール構成、モジュール間の依存関係、および代表的なコマンド実行時の処理フローを説明します。 |
145
+ | [05. 開発・テスト・配布](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/05_development.md) | 本章では、ローカル開発環境の構築方法からテストの実行手順、npm レジストリへのリリースまでの一連の開発サイクルを説明します。 |
146
+ <!-- {{/data}} -->
147
+
148
+ ## License
149
+
150
+ MIT
43
151
 
44
152
  <!-- MANUAL:START -->
45
153
  <!-- MANUAL:END -->
@@ -0,0 +1,110 @@
1
+ # 01. ツール概要とアーキテクチャ
2
+
3
+ ## 説明
4
+
5
+ <!-- {{text: この章の概要を1〜2文で記述してください。ツールの目的・解決する課題・主要なユースケースを踏まえること。}} -->
6
+
7
+ sdd-forge は、ソースコードを解析してプロジェクトドキュメントを自動生成する Node.js CLI ツールです。また、機能追加・改修時に Spec-Driven Development(SDD)ワークフローに沿って仕様策定から実装・レビューまでを一貫してサポートします。
8
+
9
+ ## 内容
10
+
11
+ ### ツールの目的
12
+
13
+ <!-- {{text: このCLIツールが解決する課題と、ターゲットユーザーを説明してください。}} -->
14
+
15
+ ソフトウェア開発において「ドキュメントが陳腐化する」「仕様と実装が乖離する」という課題を解決するために作られたツールです。ソースコードを静的解析して docs/ 配下のドキュメントを自動生成・更新することで、常にコードと同期されたドキュメントを維持できます。また、機能追加・改修の際には SDD フローに従って spec(仕様書)を作成し、ゲートチェックをパスしてから実装に進む規律ある開発プロセスを提供します。
16
+
17
+ 主なターゲットユーザーは、レガシーコードベースを抱えるチームや、ドキュメント管理コストを削減したい開発チームです。CakePHP 2.x・Laravel・Symfony・Node.js CLI などのプリセットが用意されており、対象フレームワークにあわせてすぐに利用を開始できます。
18
+
19
+ ### アーキテクチャ概要
20
+
21
+ <!-- {{text: ツール全体のアーキテクチャを mermaid flowchart で生成してください。入力・処理・出力の流れ、主要モジュールの関係を含めること。出力は mermaid コードブロックのみ。}} -->
22
+
23
+ ```mermaid
24
+ flowchart TD
25
+ CLI["sdd-forge CLI\nsdd-forge.js"]
26
+
27
+ CLI --> DOCS["docs.js\nbuild / scan / init / data / text\nreadme / forge / review / changelog / agents / setup"]
28
+ CLI --> SPEC["spec.js\nspec / gate"]
29
+ CLI --> FLOW["flow.js\nSDD フロー自動実行"]
30
+
31
+ DOCS --> SCANNER["scanner.js\nソースコード解析"]
32
+ DOCS --> DP["directive-parser.js\n{{data}} / {{text}} 解決"]
33
+ DOCS --> TM["template-merger.js\nテンプレートマージ"]
34
+ DOCS --> AGENT["agent.js\nAI エージェント呼び出し"]
35
+
36
+ SCANNER --> ANALYSIS[".sdd-forge/output/analysis.json\nsummary.json"]
37
+ DP --> RESOLVER["resolver-factory.js\nプリセット固有データ解決"]
38
+ RESOLVER --> ANALYSIS
39
+
40
+ AGENT --> AI["外部 AI CLI\n(providers 設定)"]
41
+ AI --> DOCS_OUT["docs/\n自動生成ドキュメント"]
42
+
43
+ SPEC --> GATE["gate.js\nゲートチェック"]
44
+ SPEC --> SPECINIT["init.js\nspec.md 作成"]
45
+
46
+ FLOW --> SPEC
47
+ FLOW --> DOCS
48
+ FLOW --> AGENT
49
+
50
+ CONFIG[".sdd-forge/config.json\ncontext.json"] --> CLI
51
+ PRESETS["src/presets/\nFW 別プリセット"] --> RESOLVER
52
+ PRESETS --> SCANNER
53
+ ```
54
+
55
+ ### 主要コンセプト
56
+
57
+ <!-- {{text: このツールを理解するうえで重要なコンセプト・用語を表形式で説明してください。}} -->
58
+
59
+ | コンセプト・用語 | 説明 |
60
+ |---|---|
61
+ | SDD(Spec-Driven Development) | 仕様書(spec.md)を先に作成し、ゲートチェックをパスしてから実装に進む開発手法。仕様と実装の乖離を防ぐ |
62
+ | spec | 機能追加・改修ごとに作成される仕様書ファイル(`specs/NNN-xxx/spec.md`)。`sdd-forge spec` コマンドで生成される |
63
+ | gate | spec の品質チェック。未解決事項がある場合は FAIL となり、実装に進めない |
64
+ | docs/ | プロジェクトの設計・構造・ビジネスロジックをまとめた知識ベース。sdd-forge により自動生成・維持される |
65
+ | `{{data}}` ディレクティブ | docs テンプレート内に記述する、ソースコード解析結果を埋め込む指示子 |
66
+ | `{{text}}` ディレクティブ | docs テンプレート内に記述する、AI が説明文を生成する指示子 |
67
+ | MANUAL ブロック | `<!-- MANUAL:START -->〜<!-- MANUAL:END -->` で囲まれた手動記述領域。自動生成では上書きされない |
68
+ | プリセット | フレームワーク別の解析設定・テンプレートセット(`src/presets/` 配下)。`type` 値で指定する |
69
+ | forge | docs を反復改善するコマンド(`sdd-forge forge`)。AI がソース解析結果をもとにドキュメントを更新する |
70
+ | analysis.json / summary.json | `sdd-forge scan` が出力するソースコード解析結果。summary.json は AI 入力用の軽量版 |
71
+ | provider | AI エージェントの設定。使用する CLI コマンド・引数・systemPromptFlag などを `config.json` で定義する |
72
+
73
+ ### 典型的な利用フロー
74
+
75
+ <!-- {{text: ユーザーがインストールしてから最初の成果物を得るまでの典型的な手順をステップ形式で説明してください。}} -->
76
+
77
+ **1. インストール**
78
+
79
+ ```bash
80
+ npm install -g sdd-forge
81
+ ```
82
+
83
+ **2. プロジェクトのセットアップ**
84
+
85
+ ドキュメント化したいプロジェクトのルートディレクトリで `setup` コマンドを実行します。プロジェクト種別(`type`)・言語(`lang`)・使用する AI エージェントなどの設定が対話形式で生成されます。
86
+
87
+ ```bash
88
+ cd /path/to/your-project
89
+ sdd-forge setup
90
+ ```
91
+
92
+ **3. ソースコード解析**
93
+
94
+ ソースコードを解析し、`.sdd-forge/output/analysis.json` と `summary.json` を生成します。
95
+
96
+ ```bash
97
+ sdd-forge scan
98
+ ```
99
+
100
+ **4. docs の一括生成**
101
+
102
+ テンプレート初期化・データ解決・AI によるテキスト生成・README 更新までを一括で実行します。
103
+
104
+ ```bash
105
+ sdd-forge build
106
+ ```
107
+
108
+ **5. 生成されたドキュメントを確認**
109
+
110
+ `docs/` ディレクトリに `01_overview.md` などのドキュメントファイルが生成されています。内容を確認し、MANUAL ブロックに補足情報を追記することで、自動生成と手動記述を組み合わせた知識ベースを構築できます。
@@ -0,0 +1,279 @@
1
+ # 02. CLI コマンドリファレンス
2
+
3
+ ## 説明
4
+
5
+ <!-- {{text: この章の概要を1〜2文で記述してください。コマンド総数・グローバルオプションの有無・サブコマンド体系を踏まえること。}} -->
6
+
7
+ sdd-forge は `help`・`setup`・`build`・`scan`・`data`・`text`・`init`・`forge`・`review`・`changelog`・`agents`・`readme`・`spec`・`gate`・`flow`・`upgrade`・`default`・`presets` の 18 コマンドを提供します。全コマンドに共通する `--project` グローバルオプションによりマルチプロジェクト対応を実現し、docs 系・scan 系・spec 系・flow 系の 4 系統にサブコマンドが分類されます。
8
+
9
+ ## 内容
10
+
11
+ ### コマンド一覧
12
+
13
+ <!-- {{text: 全コマンドの一覧を表形式で記述してください。コマンド名・説明・主なオプションを含めること。}} -->
14
+
15
+ | コマンド | カテゴリ | 説明 | 主なオプション |
16
+ |---|---|---|---|
17
+ | `help` | — | コマンド一覧を表示 | なし |
18
+ | `setup` | Project | プロジェクト登録と `config.json` 生成ウィザード | `--name`, `--path`, `--type`, `--agent`, `--dry-run` |
19
+ | `upgrade` | Project | プロジェクト設定をアップグレード | なし |
20
+ | `default` | Project | デフォルトプロジェクトを設定 | なし |
21
+ | `build` | Build | scan → init → data → text → readme を一括実行 | なし |
22
+ | `init` | Docs | テンプレートから `docs/` を初期化 | `--force` |
23
+ | `forge` | Docs | プロンプト起点で `docs/` を反復改善 | `--prompt`, `--spec`, `--agent`, `--mode`, `--max-runs`, `--dry-run` |
24
+ | `review` | Docs | `docs/` 章ファイルの品質チェック | なし |
25
+ | `changelog` | Docs | `specs/` から `change_log.md` を生成 | なし |
26
+ | `agents` | Docs | `AGENTS.md` の PROJECT セクションを更新 | `--sdd`, `--project`, `--dry-run` |
27
+ | `readme` | Docs | `README.md` を自動生成 | なし |
28
+ | `scan` | Scan | ソースコードを解析し `analysis.json` を生成 | `--stdout`, `--dry-run` |
29
+ | `data` | Scan | `{{data}}` ディレクティブを解析データで解決 | なし |
30
+ | `text` | Scan | `{{text}}` ディレクティブを AI で解決 | `--agent`, `--dry-run`, `--timeout`, `--id`, `--per-directive` |
31
+ | `spec` | Spec | feature ブランチと `spec.md` を作成 | `--title`, `--base`, `--no-branch`, `--worktree`, `--dry-run` |
32
+ | `gate` | Spec | `spec.md` の未解決項目をチェック | `--spec` |
33
+ | `flow` | Flow | spec 作成 → gate → forge の SDD フローを自動実行 | `--request`, `--spec`, `--agent`, `--forge-mode`, `--max-runs`, `--dry-run` |
34
+ | `presets list` | Info | 利用可能なプリセット一覧を表示 | なし |
35
+
36
+ ### グローバルオプション
37
+
38
+ <!-- {{text: 全コマンドに共通するグローバルオプションを表形式で記述してください。}} -->
39
+
40
+ | オプション | 説明 |
41
+ |---|---|
42
+ | `--project <name>` | マルチプロジェクト環境で操作対象プロジェクトを指定します。`projects.json` に登録済みのプロジェクト名を渡すと、対応するソースルートと作業ルートが環境変数 `SDD_SOURCE_ROOT` / `SDD_WORK_ROOT` に自動設定されます。省略時はデフォルトプロジェクトを使用します。`default`・`help`・`setup`・`presets` ではプロジェクトコンテキストの解決がスキップされるため、このオプションは無効です。 |
43
+ | `-h`, `--help` | 各コマンドの使用方法とオプション一覧を表示して終了します。 |
44
+ | `-v`, `--version`, `-V` | sdd-forge のバージョン番号を表示して終了します。 |
45
+
46
+ ### 各コマンドの詳細
47
+
48
+ <!-- {{text: 各コマンドの使用方法・オプション・実行例を詳しく記述してください。コマンドごとにサブセクションを立てること。}} -->
49
+
50
+ #### setup
51
+
52
+ プロジェクトを sdd-forge に登録し、`.sdd-forge/config.json` を生成するインタラクティブウィザードです。全オプションを CLI で指定した場合は非対話モードで動作します。実行後、`AGENTS.md` の生成・注入と `CLAUDE.md` シンボリックリンクの作成、スキル(`sdd-flow-start`・`sdd-flow-close`)のデプロイも行います。
53
+
54
+ ```
55
+ sdd-forge setup [options]
56
+
57
+ オプション:
58
+ --name <name> プロジェクト名
59
+ --path <path> ソースコードのパス(デフォルト: カレントディレクトリ)
60
+ --work-root <path> ドキュメント出力先ディレクトリ
61
+ --type <type> プロジェクト種別(例: webapp/cakephp2, cli/node-cli)
62
+ --purpose <purpose> ドキュメント用途(developer-guide | user-guide | api-reference)
63
+ --tone <tone> 文体(polite | formal | casual)
64
+ --agent <agent> デフォルト AI エージェント(claude | codex)
65
+ --project-context <text> プロジェクト概要テキスト
66
+ --lang <lang> 出力言語(カンマ区切り、例: ja,en)
67
+ --ui-lang <lang> UI 言語(en | ja)
68
+ --set-default デフォルトプロジェクトに設定する
69
+ --no-default デフォルトプロジェクトに設定しない
70
+ --dry-run ファイルを書き込まず内容を表示する
71
+ ```
72
+
73
+ ```bash
74
+ # インタラクティブモード
75
+ sdd-forge setup
76
+
77
+ # 非対話モード
78
+ sdd-forge setup --name myapp --path /path/to/src --type webapp/laravel \
79
+ --purpose developer-guide --tone polite --agent claude --lang ja
80
+ ```
81
+
82
+ #### scan
83
+
84
+ ソースコードを解析し、`.sdd-forge/output/analysis.json` と `.sdd-forge/output/summary.json` を生成します。`config.json` の `type` フィールドに対応するプリセットの DataSource を読み込み、プリセット固有のスキャンを実行します。
85
+
86
+ ```
87
+ sdd-forge scan [options]
88
+
89
+ オプション:
90
+ --stdout 結果を stdout に出力(ファイル書き込みしない)
91
+ --dry-run --stdout と同じ(ファイル書き込みしない)
92
+ ```
93
+
94
+ ```bash
95
+ sdd-forge scan
96
+ sdd-forge scan --stdout | jq .controllers.summary
97
+ ```
98
+
99
+ #### init
100
+
101
+ テンプレート継承チェーンを解決し、`docs/` 配下に章ファイル(`NN_*.md`)を生成します。既存ファイルがある場合は `--force` を付与しないと上書きされません。
102
+
103
+ ```
104
+ sdd-forge init [--force]
105
+ ```
106
+
107
+ #### data
108
+
109
+ `docs/` の章ファイルに含まれる `{{data: ...}}` ディレクティブを `analysis.json` の解析データで解決し、表やリストを自動挿入します。
110
+
111
+ ```
112
+ sdd-forge data
113
+ ```
114
+
115
+ #### text
116
+
117
+ `docs/` の章ファイルに含まれる `{{text: ...}}` ディレクティブを AI エージェントで解決し、説明文を生成・挿入します。デフォルトはファイル単位バッチモード(1 ファイル = 1 呼び出し)で、`--per-directive` で 1 ディレクティブ = 1 呼び出しに切り替えられます。
118
+
119
+ ```
120
+ sdd-forge text [options]
121
+
122
+ オプション:
123
+ --agent <name> AI エージェント名(必須。config.json の providers キー)
124
+ --id <id> 指定 ID の {{text}} ディレクティブのみ処理
125
+ --dry-run 変更内容を表示するだけでファイル書き込みしない
126
+ --per-directive 1 ディレクティブ = 1 呼び出しモード
127
+ --timeout <ms> タイムアウト ms(デフォルト: 180000)
128
+ ```
129
+
130
+ ```bash
131
+ sdd-forge text --agent claude
132
+ sdd-forge text --agent claude --dry-run
133
+ sdd-forge text --agent claude --id overview
134
+ ```
135
+
136
+ #### forge
137
+
138
+ `docs/` の反復改善を実行します。`--prompt` で変更内容を指定し、`--spec` で対応する spec.md を渡すことで SDD フロー内での利用も可能です。`review` が PASS するまで最大 `--max-runs` 回繰り返します。
139
+
140
+ ```
141
+ sdd-forge forge [options]
142
+
143
+ オプション:
144
+ --prompt <text> 開始プロンプト(必須)
145
+ --prompt-file <path> プロンプトをファイルから読み込む
146
+ --spec <path> 入力仕様書(spec.md)へのパス
147
+ --max-runs <n> 反復回数(デフォルト: 3)
148
+ --review-cmd <cmd> review コマンド(デフォルト: sdd-forge review)
149
+ --agent <name> AI エージェント名
150
+ --mode <mode> 実行モード(local | assist | agent、デフォルト: local)
151
+ --dry-run ファイル書き込み・review・agent 呼び出しをスキップ
152
+ --auto-update-context review 成功後に context.json を自動更新
153
+ -v, --verbose エージェントログを逐次表示
154
+ ```
155
+
156
+ ```bash
157
+ sdd-forge forge --prompt "コントローラー一覧セクションを更新する"
158
+ sdd-forge forge --prompt "API リファレンスを追加" --spec specs/005-api-ref/spec.md --agent claude --mode agent
159
+ ```
160
+
161
+ #### review
162
+
163
+ `docs/` 配下の章ファイル(`NN_*.md`)の品質チェックを実行します。各ファイルについて行数・H1 見出し・未解決の `{{data}}`/`{{text}}` ディレクティブ・MANUAL ブロックの整合性を検証します。`analysis.json` の鮮度も確認し、古い場合は警告を出します。
164
+
165
+ ```
166
+ sdd-forge review [<docs-dir>]
167
+ ```
168
+
169
+ ```bash
170
+ sdd-forge review
171
+ sdd-forge review docs/
172
+ ```
173
+
174
+ #### changelog
175
+
176
+ `specs/` ディレクトリを走査し、各 `spec.md` のメタ情報から `change_log.md` を生成します。既存ファイルの `MANUAL` ブロックは保持されます。
177
+
178
+ ```
179
+ sdd-forge changelog
180
+ ```
181
+
182
+ #### agents
183
+
184
+ `AGENTS.md` の `SDD` セクションをテンプレートで差し替え、`PROJECT` セクションを `analysis.json` から生成・AI で精査します。
185
+
186
+ ```
187
+ sdd-forge agents [options]
188
+
189
+ オプション:
190
+ --sdd SDD セクションのみテンプレートで差し替え(AI なし)
191
+ --project PROJECT セクションのみ生成・AI 精査
192
+ --dry-run ファイルに書き込まず結果を標準出力に表示
193
+ ```
194
+
195
+ #### readme
196
+
197
+ `docs/` の内容をもとに `README.md` を自動生成します。
198
+
199
+ ```
200
+ sdd-forge readme
201
+ ```
202
+
203
+ #### spec
204
+
205
+ 連番の feature ブランチと `specs/NNN-<slug>/spec.md`・`qa.md` を作成します。worktree 内で実行された場合は自動的に `--no-branch` が適用されます。
206
+
207
+ ```
208
+ sdd-forge spec [options]
209
+
210
+ オプション:
211
+ --title <name> 連番の後ろに付与する短い名前(必須)
212
+ --base <branch> ブランチ作成元(デフォルト: 現在のブランチ)
213
+ --no-branch ブランチを作成せず spec のみ作成する
214
+ --worktree git worktree を作成して spec を配置する
215
+ --dry-run 変更せず結果のみ表示
216
+ --allow-dirty ワークツリーが dirty でも続行する
217
+ ```
218
+
219
+ ```bash
220
+ sdd-forge spec --title "user-authentication"
221
+ sdd-forge spec --title "export-csv" --no-branch
222
+ ```
223
+
224
+ #### gate
225
+
226
+ `spec.md` の未解決項目を検出します。TBD・TODO・未チェックタスク・必須セクション不足・ユーザー確認未承認をチェックし、問題があれば一覧を表示して終了コード 1 で終了します。
227
+
228
+ ```
229
+ sdd-forge gate --spec <path>
230
+ ```
231
+
232
+ ```bash
233
+ sdd-forge gate --spec specs/005-export-csv/spec.md
234
+ ```
235
+
236
+ #### flow
237
+
238
+ spec 作成 → gate → forge の SDD フローを自動実行します。gate が FAIL した場合は未解決事項を表示して終了コード 2 で停止し、実装を行いません。
239
+
240
+ ```
241
+ sdd-forge flow [options]
242
+
243
+ オプション:
244
+ --request <text> 実装要求(必須)
245
+ --title <text> spec 用タイトル(省略時は request 先頭を利用)
246
+ --spec <path> 既存 spec.md を使う
247
+ --agent <name> AI エージェント名
248
+ --max-runs <n> forge 反復回数(デフォルト: 5)
249
+ --forge-mode <mode> forge モード(local | assist | agent、デフォルト: local)
250
+ --no-branch ブランチを作成せず spec のみ作成する
251
+ --worktree git worktree を作成して spec を配置する
252
+ --dry-run 全サブコマンドを dry-run で実行する
253
+ ```
254
+
255
+ ```bash
256
+ sdd-forge flow --request "ユーザー一覧画面に CSV エクスポート機能を追加する"
257
+ sdd-forge flow --request "メール通知を実装" --agent claude --forge-mode agent
258
+ ```
259
+
260
+ ### 終了コードと出力
261
+
262
+ <!-- {{text: 終了コードの定義(0=成功 等)と、stdout/stderr の使い分けルールを表形式で記述してください。}} -->
263
+
264
+ #### 終了コード
265
+
266
+ | コード | 意味 | 主な発生コマンド |
267
+ |---|---|---|
268
+ | `0` | 正常終了 | すべてのコマンド |
269
+ | `1` | エラー終了(設定不正・ファイル未検出・レビュー FAIL 等) | 全コマンド共通 |
270
+ | `2` | NEEDS_INPUT(gate FAIL または forge が情報不足で停止) | `gate`, `flow`, `forge` |
271
+
272
+ #### stdout / stderr の使い分け
273
+
274
+ | ストリーム | 出力内容 |
275
+ |---|---|
276
+ | `stdout` | 通常の進捗ログ・コマンド実行結果・生成されたファイルパス・AI 出力など |
277
+ | `stderr` | エラーメッセージ・不明なコマンド通知(`sdd-forge: unknown command '...'`)・gate FAIL 理由の一覧 |
278
+
279
+ `review` および `gate` は PASS/FAIL を `stdout` に出力し、エラー詳細(`-` で始まる項目一覧)は `stderr` に出力します。`scan` で `--stdout` を指定した場合、解析結果の JSON は `stdout` に出力されます。
@@ -0,0 +1,85 @@
1
+ # 03. 設定とカスタマイズ
2
+
3
+ ## 説明
4
+
5
+ <!-- {{text: この章の概要を1〜2文で記述してください。設定ファイルの種類・設定可能な項目の範囲・カスタマイズポイントを踏まえること。}} -->
6
+
7
+ 本章では、sdd-forge が読み込む設定ファイルの構成と各設定項目の意味、AIプロバイダーやドキュメントスタイルといったカスタマイズポイントについて説明します。設定ファイルはすべてプロジェクトルート直下の `.sdd-forge/` ディレクトリに配置され、プロジェクト種別・出力言語・AI連携など幅広い動作をコントロールできます。
8
+
9
+ ## 内容
10
+
11
+ ### 設定ファイル
12
+
13
+ <!-- {{text: このツールが読み込む設定ファイルの一覧と、それぞれの配置場所・役割を表形式で記述してください。}} -->
14
+
15
+ | ファイル | 配置場所 | 役割 |
16
+ |---|---|---|
17
+ | `config.json` | `.sdd-forge/config.json` | プロジェクト全体の設定(種別・言語・AIプロバイダー・フロー動作など) |
18
+ | `context.json` | `.sdd-forge/context.json` | AI に渡すプロジェクトコンテキスト文字列(`projectContext` フィールド) |
19
+ | `projects.json` | `.sdd-forge/projects.json` | マルチプロジェクト登録情報(`--project` フラグで参照) |
20
+ | `current-spec` | `.sdd-forge/current-spec` | 現在作業中の spec ファイルパス(SDD フロー終了時に削除) |
21
+ | `analysis.json` | `.sdd-forge/output/analysis.json` | `sdd-forge scan` が出力するソースコード解析結果(コンパクト JSON) |
22
+ | `summary.json` | `.sdd-forge/output/summary.json` | `analysis.json` の軽量版。AI 入力用に優先使用され、存在しない場合は `analysis.json` にフォールバックします |
23
+
24
+ ### 設定項目リファレンス
25
+
26
+ <!-- {{text: 設定ファイルの全フィールドを表形式で記述してください。フィールド名・型・デフォルト値・説明を含めること。}} -->
27
+
28
+ 以下は `config.json` の主要フィールド一覧です。
29
+
30
+ | フィールド | 型 | デフォルト値 | 説明 |
31
+ |---|---|---|---|
32
+ | `type` | `string` | — | プロジェクト種別。プリセットを特定するキーとして使用されます(例: `webapp/cakephp2`, `cli/node-cli`)。エイリアス(短縮形)も使用可能です |
33
+ | `lang` | `string` | `"ja"` | ドキュメント出力言語(`ja` または `en`) |
34
+ | `uiLang` | `string` | `"ja"` | CLI のメッセージ表示言語(`ja` または `en`) |
35
+ | `defaultAgent` | `string` | — | `providers` に定義したエージェント名のうち、デフォルトで使用するもの |
36
+ | `providers` | `object` | — | AI エージェント定義のマップ。各エントリに `command`・`args`・`systemPromptFlag` を指定します |
37
+ | `providers.<name>.command` | `string` | — | AI CLI の実行コマンド |
38
+ | `providers.<name>.args` | `string[]` | `[]` | AI CLI に渡す追加引数 |
39
+ | `providers.<name>.systemPromptFlag` | `string` | — | システムプロンプトを渡すフラグ名(例: `--system-prompt`) |
40
+ | `documentStyle.purpose` | `string` | — | ドキュメントの目的・用途を記述するフィールド |
41
+ | `documentStyle.tone` | `string` | — | ドキュメントのトーン・文体指定 |
42
+ | `documentStyle.customInstruction` | `string` | — | AI 生成時に追加するカスタム指示文 |
43
+ | `flow.merge` | `string` | `"squash"` | SDD フローでのマージ戦略(`squash` / `ff-only` / `merge`) |
44
+
45
+ ### カスタマイズポイント
46
+
47
+ <!-- {{text: ユーザーがカスタマイズできる項目(プロバイダー・テンプレート・コマンド等)を説明してください。カスタマイズ例を含めること。}} -->
48
+
49
+ **AIプロバイダーの切り替え**
50
+
51
+ `config.json` の `providers` に複数のエージェントを定義し、`defaultAgent` で使用するものを指定できます。`sdd-forge text --agent <name>` でコマンド単位に切り替えることも可能です。
52
+
53
+ ```json
54
+ {
55
+ "defaultAgent": "claude",
56
+ "providers": {
57
+ "claude": {
58
+ "command": "claude",
59
+ "args": [],
60
+ "systemPromptFlag": "--system-prompt"
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ **ドキュメントスタイルの調整**
67
+
68
+ `documentStyle` フィールドを使うと、AI が生成するドキュメントのトーンや目的を統一できます。たとえば利用者向けの操作ガイドであれば `tone` に `"丁寧・です・ます調"` を指定し、`purpose` に `"エンドユーザー向け操作手順"` と記述することで、AI 生成テキスト全体に一貫したスタイルを適用できます。
69
+
70
+ **テンプレートのカスタマイズ**
71
+
72
+ `sdd-forge init` が参照するドキュメントテンプレートは `src/templates/` 以下にバンドルされています。プリセットごとのテンプレートを上書きしたい場合は、プロジェクトの `docs/` ディレクトリ内に対応するファイルを配置することで差し替えが可能です。手動で追記・変更したい箇所は必ず `<!-- MANUAL:START -->` 〜 `<!-- MANUAL:END -->` ブロック内に記述してください。ブロック外の内容は `sdd-forge forge` 実行時に上書きされます。
73
+
74
+ **マージ戦略の変更**
75
+
76
+ `flow.merge` を変更することで、SDD フロー完了時の git マージ動作を切り替えられます。チームのブランチ運用ポリシーに合わせて `squash`・`ff-only`・`merge` から選択してください。
77
+
78
+ ### 環境変数
79
+
80
+ <!-- {{text: ツールが参照する環境変数の一覧と用途を表形式で記述してください。}} -->
81
+
82
+ | 環境変数 | 用途 |
83
+ |---|---|
84
+ | `SDD_SOURCE_ROOT` | 解析対象プロジェクトのソースコードルートディレクトリパス。`--project` フラグ使用時にプロジェクトコンテキストとして伝播されます |
85
+ | `SDD_WORK_ROOT` | sdd-forge の作業ディレクトリパス(`.sdd-forge/` の親)。マルチプロジェクト構成で複数プロジェクトを切り替える際に参照されます |