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

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 (129) hide show
  1. package/README.md +87 -80
  2. package/docs/01_overview.md +69 -89
  3. package/docs/02_cli_commands.md +166 -175
  4. package/docs/03_configuration.md +104 -56
  5. package/docs/04_internal_design.md +161 -191
  6. package/package.json +1 -1
  7. package/src/docs/commands/agents.js +106 -263
  8. package/src/docs/commands/changelog.js +30 -46
  9. package/src/docs/commands/data.js +60 -95
  10. package/src/docs/commands/default-project.js +9 -14
  11. package/src/docs/commands/forge.js +119 -184
  12. package/src/docs/commands/init.js +112 -126
  13. package/src/docs/commands/readme.js +62 -89
  14. package/src/docs/commands/review.js +57 -42
  15. package/src/docs/commands/scan.js +54 -95
  16. package/src/docs/commands/setup.js +41 -54
  17. package/src/docs/commands/text.js +133 -467
  18. package/src/docs/commands/translate.js +199 -0
  19. package/src/docs/commands/upgrade.js +12 -79
  20. package/src/docs/data/agents.js +138 -0
  21. package/src/docs/data/docs.js +13 -9
  22. package/src/docs/data/lang.js +109 -0
  23. package/src/docs/lib/command-context.js +170 -0
  24. package/src/docs/lib/concurrency.js +47 -0
  25. package/src/docs/lib/data-source-loader.js +44 -0
  26. package/src/docs/lib/directive-parser.js +76 -0
  27. package/src/docs/lib/resolver-factory.js +14 -36
  28. package/src/docs/lib/review-parser.js +1 -4
  29. package/src/docs/lib/scan-source.js +1 -1
  30. package/src/docs/lib/scanner.js +1 -13
  31. package/src/docs/lib/template-merger.js +289 -160
  32. package/src/docs/lib/text-prompts.js +225 -0
  33. package/src/docs.js +129 -89
  34. package/src/flow.js +12 -31
  35. package/src/help.js +8 -32
  36. package/src/lib/agent.js +71 -83
  37. package/src/lib/agents-md.js +2 -24
  38. package/src/lib/cli.js +31 -0
  39. package/src/lib/config.js +59 -4
  40. package/src/lib/entrypoint.js +23 -0
  41. package/src/lib/flow-state.js +2 -1
  42. package/src/lib/i18n.js +2 -1
  43. package/src/lib/presets.js +1 -0
  44. package/src/lib/progress.js +50 -13
  45. package/src/lib/types.js +39 -23
  46. package/src/locale/en/messages.json +14 -6
  47. package/src/locale/en/prompts.json +1 -3
  48. package/src/locale/en/ui.json +110 -4
  49. package/src/locale/ja/messages.json +14 -6
  50. package/src/locale/ja/prompts.json +1 -3
  51. package/src/locale/ja/ui.json +110 -4
  52. package/src/presets/base/preset.json +7 -1
  53. package/src/presets/base/templates/en/AGENTS.sdd.md +101 -0
  54. package/src/presets/base/templates/en/development.md +40 -0
  55. package/src/presets/base/templates/en/overview.md +33 -0
  56. package/src/presets/base/templates/en/project_structure.md +28 -0
  57. package/src/presets/base/templates/en/stack_and_ops.md +34 -0
  58. package/src/presets/base/templates/ja/AGENTS.sdd.md +28 -17
  59. package/src/presets/cakephp2/scan/assets.js +1 -1
  60. package/src/presets/cli/preset.json +9 -1
  61. package/src/presets/cli/templates/ja/README.md +0 -3
  62. package/src/presets/laravel/scan/config.js +2 -33
  63. package/src/presets/laravel/scan/controllers.js +3 -15
  64. package/src/presets/laravel/scan/models.js +7 -26
  65. package/src/presets/lib/composer-utils.js +61 -0
  66. package/src/presets/library/preset.json +9 -1
  67. package/src/presets/library/templates/ja/README.md +0 -3
  68. package/src/presets/node-cli/preset.json +7 -0
  69. package/src/presets/node-cli/templates/ja/cli_commands.md +23 -0
  70. package/src/presets/node-cli/templates/ja/configuration.md +23 -0
  71. package/src/presets/node-cli/templates/ja/internal_design.md +27 -0
  72. package/src/presets/node-cli/templates/ja/overview.md +23 -0
  73. package/src/presets/symfony/scan/config.js +2 -37
  74. package/src/presets/symfony/scan/controllers.js +3 -15
  75. package/src/presets/symfony/scan/entities.js +8 -21
  76. package/src/presets/symfony/scan/routes.js +7 -15
  77. package/src/presets/webapp/data/controllers.js +10 -0
  78. package/src/presets/webapp/data/shells.js +10 -0
  79. package/src/presets/webapp/preset.json +13 -1
  80. package/src/presets/webapp/templates/ja/README.md +0 -3
  81. package/src/sdd-forge.js +4 -6
  82. package/src/spec.js +1 -3
  83. package/src/specs/commands/gate.js +45 -20
  84. package/src/specs/commands/init.js +31 -32
  85. package/src/templates/config.example.json +1 -2
  86. package/src/templates/skills/sdd-flow-status/SKILL.md +71 -0
  87. package/docs/05_development.md +0 -86
  88. package/src/docs/lib/renderers.js +0 -150
  89. package/src/presets/node-cli/templates/ja/01_overview.md +0 -23
  90. package/src/presets/node-cli/templates/ja/02_cli_commands.md +0 -23
  91. package/src/presets/node-cli/templates/ja/03_configuration.md +0 -23
  92. package/src/presets/node-cli/templates/ja/04_internal_design.md +0 -30
  93. package/src/presets/webapp/templates/ja/chapters.json +0 -4
  94. /package/src/presets/base/templates/ja/{04_development.md → development.md} +0 -0
  95. /package/src/presets/base/templates/ja/{01_overview.md → overview.md} +0 -0
  96. /package/src/presets/base/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
  97. /package/src/presets/base/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
  98. /package/src/presets/cakephp2/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
  99. /package/src/presets/cakephp2/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
  100. /package/src/presets/cakephp2/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
  101. /package/src/presets/cakephp2/templates/ja/{04_development.md → development.md} +0 -0
  102. /package/src/presets/cakephp2/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
  103. /package/src/presets/cakephp2/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
  104. /package/src/presets/cli/templates/ja/{05_commands.md → commands.md} +0 -0
  105. /package/src/presets/cli/templates/ja/{06_config.md → config.md} +0 -0
  106. /package/src/presets/laravel/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
  107. /package/src/presets/laravel/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
  108. /package/src/presets/laravel/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
  109. /package/src/presets/laravel/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
  110. /package/src/presets/laravel/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
  111. /package/src/presets/library/templates/ja/{05_public_api.md → public_api.md} +0 -0
  112. /package/src/presets/library/templates/ja/{06_usage.md → usage.md} +0 -0
  113. /package/src/presets/node-cli/templates/ja/{02_stack_and_ops.md → commands.md} +0 -0
  114. /package/src/presets/node-cli/templates/ja/{03_project_structure.md → config.md} +0 -0
  115. /package/src/presets/node-cli/templates/ja/{04_development.md → development.md} +0 -0
  116. /package/src/presets/node-cli/templates/ja/{05_development.md → development_testing.md} +0 -0
  117. /package/src/presets/node-cli/templates/ja/{05_commands.md → project_structure.md} +0 -0
  118. /package/src/presets/node-cli/templates/ja/{06_config.md → stack_and_ops.md} +0 -0
  119. /package/src/presets/symfony/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
  120. /package/src/presets/symfony/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
  121. /package/src/presets/symfony/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
  122. /package/src/presets/symfony/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
  123. /package/src/presets/symfony/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
  124. /package/src/presets/webapp/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
  125. /package/src/presets/webapp/templates/ja/{10_batch_and_shell.md → batch_and_shell.md} +0 -0
  126. /package/src/presets/webapp/templates/ja/{09_business_logic.md → business_logic.md} +0 -0
  127. /package/src/presets/webapp/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
  128. /package/src/presets/webapp/templates/ja/{06_database_architecture.md → database_architecture.md} +0 -0
  129. /package/src/presets/webapp/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
package/README.md CHANGED
@@ -1,153 +1,160 @@
1
- # <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
1
+ # {{data: project.name("")}}sdd-forge{{/data}}
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/sdd-forge.svg)](https://www.npmjs.com/package/sdd-forge)
4
4
 
5
- > **Alpha版:** このツールは現在アルファ版です。API・コマンド体系・設定フォーマットは予告なく変更される可能性があります。本番環境での利用はお控えください。
5
+ > **Alpha:** This tool is currently in alpha. The API, command structure, and configuration format may change without notice. Please avoid using it in production environments.
6
6
 
7
- **ソースコード解析 + AI で、プロジェクトドキュメントを自動生成・維持する CLI ツール。**
7
+ **A CLI tool that automatically generates and maintains project documentation using source code analysis + AI.**
8
8
 
9
- コードベースを静的解析し、テンプレートと AI を組み合わせて `docs/` を自動生成します。
10
- さらに Spec-Driven DevelopmentSDD)ワークフローにより、機能追加・修正時のドキュメント更新も自動化します。
9
+ Statically analyzes your codebase and combines templates with AI to auto-generate `docs/`.
10
+ The Spec-Driven Development (SDD) workflow also automates documentation updates when adding features or making changes.
11
11
 
12
12
  ## Features
13
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 に対応
14
+ - **Zero dependencies** Runs on Node.js 18+ only. No npm package dependencies.
15
+ - **Automatic source code analysis** Statically analyzes controllers, models, routes, and config files to extract structural data.
16
+ - **AI document generation** AI automatically expands `{{text}}` directives in templates.
17
+ - **Template inheritance** Four-layer inheritance (base → arch → preset → project-local) for flexible customization.
18
+ - **SDD workflow**Manage the development cycle of spec → gate → implementation → forge → review with simple commands.
19
+ - **Multilingual support**Automatically generate documentation in multiple languages via translate / generate modes.
20
+ - **AI agent integration** Compatible with Claude Code (skills) and Codex CLI.
21
+ - **Multi-preset** — Supports Node.js CLI / CakePHP2 / Laravel / Symfony.
21
22
 
22
- ## クイックスタート
23
+ ## Quick Start
23
24
 
24
- ### インストール
25
+ ### Installation
25
26
 
26
27
  <pre>
27
28
  # npm
28
- npm install -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
29
+ npm install -g {{data: project.name("")}}sdd-forge{{/data}}
29
30
 
30
31
  # yarn
31
- yarn global add <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
32
+ yarn global add {{data: project.name("")}}sdd-forge{{/data}}
32
33
 
33
34
  # pnpm
34
- pnpm add -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
35
+ pnpm add -g {{data: project.name("")}}sdd-forge{{/data}}
35
36
  </pre>
36
37
 
37
- ### セットアップ & ドキュメント生成
38
+ ### Setup & Document Generation
38
39
 
39
40
  <pre>
40
- # 1. プロジェクトを登録(インタラクティブウィザード)
41
- <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> setup
41
+ # 1. Register your project (interactive wizard)
42
+ {{data: project.name("")}}sdd-forge{{/data}} setup
42
43
 
43
- # 2. ドキュメントを一括生成(scan → init → data → text → readme
44
- <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> build
44
+ # 2. Generate all documentation at once (scan → init → data → text → readme → agents → translate)
45
+ {{data: project.name("")}}sdd-forge{{/data}} build
45
46
  </pre>
46
47
 
47
- これだけで `docs/` `README.md` が生成されます。
48
+ This is all it takes to generate `docs/` and `README.md`.
48
49
 
49
- ## コマンド一覧
50
+ ## Command Reference
50
51
 
51
- ### ドキュメント生成
52
+ ### Document Generation
52
53
 
53
- | コマンド | 説明 |
54
+ | Command | Description |
54
55
  |---|---|
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
- | コマンド | 説明 |
56
+ | `setup` | Register project + generate config file |
57
+ | `build` | Run the full document generation pipeline |
58
+ | `scan` | Analyze source code → `analysis.json` |
59
+ | `init` | Initialize `docs/` from templates |
60
+ | `data` | Resolve `{{data}}` directives with analyzed data |
61
+ | `text` | Resolve `{{text}}` directives with AI |
62
+ | `readme` | Auto-generate `README.md` from `docs/` |
63
+ | `forge` | Iteratively improve documentation with AI |
64
+ | `review` | Check documentation quality |
65
+ | `translate` | Multilingual translation (default language → others) |
66
+ | `upgrade` | Update preset templates to the latest version |
67
+
68
+ ### SDD Workflow
69
+
70
+ | Command | Description |
68
71
  |---|---|
69
- | `spec` | 仕様書 + feature ブランチを作成 |
70
- | `gate` | 仕様書の実装前チェック |
71
- | `flow` | SDD ワークフローを自動実行 |
72
- | `changelog` | specs/ から変更履歴を生成 |
73
- | `agents` | AGENTS.md を更新 |
72
+ | `spec` | Create a spec document + feature branch |
73
+ | `gate` | Pre-implementation check for the spec |
74
+ | `flow` | Automatically run the SDD workflow |
75
+ | `changelog` | Generate change history from specs/ |
76
+ | `agents` | Update AGENTS.md |
74
77
 
75
- ## SDD ワークフロー
78
+ ### Project Management
76
79
 
77
- 機能追加・修正の流れ:
80
+ | Command | Description |
81
+ |---|---|
82
+ | `default` | Set the default project |
83
+ | `presets` | List available presets |
84
+ | `help` | Show command list |
85
+
86
+ ## SDD Workflow
87
+
88
+ The flow for adding features or making changes:
78
89
 
79
90
  ```
80
- spec 仕様書を作成(feature ブランチ + spec.md
91
+ spec Create a spec (feature branch + spec.md)
81
92
 
82
- gate 仕様ゲートチェック(未解決事項がなければ PASS
93
+ gate Spec gate check (PASS when no unresolved items)
83
94
 
84
- 実装 gate PASS 後にコーディング
95
+ implement Write code after gate PASS
85
96
 
86
- forge ドキュメントを自動更新
97
+ forge Auto-update documentation
87
98
 
88
- review 品質チェック(PASS するまで繰り返し)
99
+ review Quality check (repeat until PASS)
89
100
  ```
90
101
 
91
- ### AI エージェントとの連携
102
+ ### AI Agent Integration
92
103
 
93
104
  #### Claude Code
94
105
 
95
- スキルで SDD ワークフローを実行できます:
106
+ Run the SDD workflow with skills:
96
107
 
97
108
  ```
98
- /sdd-flow-start — spec 作成 → gate → 実装を開始
99
- /sdd-flow-close — forge → review → commit → merge で終了
109
+ /sdd-flow-start — Start spec creation → gate → implementation
110
+ /sdd-flow-close — Finish with forge → review → commit → merge
100
111
  ```
101
112
 
102
113
  #### Codex CLI
103
114
 
104
- `$` プロンプトからワークフローを実行できます:
115
+ Run the workflow from a prompt:
105
116
 
106
117
  ```
107
- $sdd-flow-start — spec 作成 → gate → 実装を開始
108
- $sdd-flow-close — forge → review → commit → merge で終了
118
+ $sdd-flow-start — Start spec creation → gate → implementation
119
+ $sdd-flow-close — Finish with forge → review → commit → merge
109
120
  ```
110
121
 
111
- ## 設定
122
+ ## Configuration
112
123
 
113
- `sdd-forge setup` `.sdd-forge/config.json` が生成されます。
124
+ Running `sdd-forge setup` generates `.sdd-forge/config.json`.
114
125
 
115
126
  ```jsonc
116
127
  {
117
- "type": "cli/node-cli", // プロジェクトタイプ(プリセット選択)
118
- "lang": "ja", // ドキュメント言語
119
- "defaultAgent": "claude", // AI エージェント
120
- "providers": { ... } // エージェント設定
128
+ "type": "cli/node-cli", // Project type (preset selection)
129
+ "lang": "en", // Documentation language
130
+ "defaultAgent": "claude", // AI agent
131
+ "providers": { ... } // Agent configuration
121
132
  }
122
133
  ```
123
134
 
124
- ### カスタマイズ
135
+ ### Customization
125
136
 
126
- プロジェクト固有のテンプレートやデータソースを追加できます:
137
+ You can add project-specific templates and data sources:
127
138
 
128
139
  ```
129
140
  .sdd-forge/
130
141
  ├── templates/{lang}/
131
- │ ├── docs/ ← 章テンプレート・README のオーバーライド
132
- │ └── specs/ ← spec.md / qa.md テンプレート
133
- └── data/ ← カスタムデータソースモジュール
142
+ │ ├── docs/ ← Chapter templates / README overrides
143
+ │ └── specs/ ← spec.md / qa.md templates
144
+ └── data/ ← Custom data source modules
134
145
  ```
135
146
 
136
- ## ドキュメント
147
+ ## Documentation
137
148
 
138
- <!-- {{data: docs.chapters("章|概要")}} -->
139
- | | 概要 |
149
+ <!-- {{data: docs.chapters("Chapter|Overview")}} -->
150
+ | Chapter | Overview |
140
151
  | --- | --- |
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 レジストリへのリリースまでの一連の開発サイクルを説明します。 |
152
+ | [01. System Overview](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/01_overview.md) | This chapter provides a high-level view of `sdd-forge`, a Node.js CLI tool that automates documentation generation th… |
153
+ | [02. CLI Command Reference](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/02_cli_commands.md) | This chapter documents all 17 subcommands available in `sdd-forge`, organized across three dispatcher layers (`docs.j… |
154
+ | [03. Configuration and Customization](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/03_configuration.md) | This chapter covers the configuration files and customization options available in sdd-forge, including project setti… |
155
+ | [04. Internal Design](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/04_internal_design.md) | |
146
156
  <!-- {{/data}} -->
147
157
 
148
158
  ## License
149
159
 
150
160
  MIT
151
-
152
- <!-- MANUAL:START -->
153
- <!-- MANUAL:END -->
@@ -1,110 +1,90 @@
1
- # 01. ツール概要とアーキテクチャ
1
+ # 01. System Overview
2
2
 
3
- ## 説明
3
+ ## Description
4
4
 
5
- <!-- {{text: この章の概要を12文で記述してください。ツールの目的・解決する課題・主要なユースケースを踏まえること。}} -->
5
+ <!-- {{text: Write a 1-2 sentence overview of this chapter. Include the project's architecture and whether it integrates with external systems.}} -->
6
6
 
7
- sdd-forge は、ソースコードを解析してプロジェクトドキュメントを自動生成する Node.js CLI ツールです。また、機能追加・改修時に Spec-Driven DevelopmentSDD)ワークフローに沿って仕様策定から実装・レビューまでを一貫してサポートします。
7
+ This chapter provides a high-level view of `sdd-forge`, a Node.js CLI tool that automates documentation generation through source code analysis and drives feature development via a Spec-Driven Development (SDD) workflow. The tool integrates with externally configured AI agents (such as Claude CLI) to produce and refine project documentation, while relying solely on Node.js built-in modules for all other operations.
8
8
 
9
- ## 内容
9
+ ## Content
10
10
 
11
- ### ツールの目的
11
+ ### Architecture Diagram
12
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 コードブロックのみ。}} -->
13
+ <!-- {{text: Generate a mermaid flowchart showing the project architecture. Include data flows between major components. Output only the mermaid code block.}} -->
22
14
 
23
15
  ```mermaid
24
16
  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
17
+ User([User / CI]) -->|CLI invocation| Entry[sdd-forge.js\nEntry Point]
18
+
19
+ Entry -->|docs subcommands| DocsDispatcher[docs.js\nDispatcher]
20
+ Entry -->|spec / gate| SpecDispatcher[spec.js\nDispatcher]
21
+ Entry -->|flow| Flow[flow.js\nSDD Flow Runner]
22
+ Entry -->|presets| Presets[presets-cmd.js]
23
+ Entry -->|help| Help[help.js]
24
+
25
+ DocsDispatcher --> Scan[scan\nSource Analysis]
26
+ DocsDispatcher --> Data[data\nDirective Resolver]
27
+ DocsDispatcher --> Text[text\nAI Text Fill]
28
+ DocsDispatcher --> Forge[forge\nDocs Refinement]
29
+ DocsDispatcher --> Review[review\nQuality Check]
30
+ DocsDispatcher --> Readme[readme\nREADME Generator]
31
+
32
+ SpecDispatcher --> SpecInit[spec init\nSpec Creation]
33
+ SpecDispatcher --> Gate[gate\nGate Check]
34
+
35
+ Scan -->|analysis.json\nsummary.json| OutputDir[.sdd-forge/output/]
36
+ Data -->|reads| OutputDir
37
+ Text -->|reads| OutputDir
38
+ Forge -->|reads| OutputDir
39
+
40
+ Text -->|prompt| AgentLib[lib/agent.js\nAI Agent Caller]
41
+ Forge -->|prompt| AgentLib
42
+ Review -->|prompt| AgentLib
43
+ AgentLib -->|configured command| ExternalAI([External AI Agent\ne.g. Claude CLI])
44
+
45
+ OutputDir -->|resolved directives| DocsDir[docs/\nGenerated Documentation]
53
46
  ```
54
47
 
55
- ### 主要コンセプト
48
+ ### Component Responsibilities
56
49
 
57
- <!-- {{text: このツールを理解するうえで重要なコンセプト・用語を表形式で説明してください。}} -->
50
+ <!-- {{text: Describe the major components with their location, responsibilities, and I/O in table format.}} -->
58
51
 
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` で定義する |
52
+ | Component | Location | Responsibility | Input | Output |
53
+ |---|---|---|---|---|
54
+ | CLI Entry Point | `src/sdd-forge.js` | Parses top-level subcommand and resolves project context via environment variables | CLI arguments, `.sdd-forge/projects.json` | Routes to dispatcher with `SDD_SOURCE_ROOT` / `SDD_WORK_ROOT` set |
55
+ | Docs Dispatcher | `src/docs.js` | Routes docs-related subcommands (`build`, `scan`, `data`, `text`, `forge`, `review`, etc.) | Subcommand string | Delegates to `src/docs/commands/*.js` |
56
+ | Spec Dispatcher | `src/spec.js` | Routes spec-related subcommands (`spec`, `gate`) | Subcommand string | Delegates to `src/specs/commands/*.js` |
57
+ | Scanner | `src/docs/lib/scanner.js` | Traverses source files and extracts structural information (PHP, JS, YAML) | Source root path, scan config | `.sdd-forge/output/analysis.json`, `summary.json` |
58
+ | Directive Parser | `src/docs/lib/directive-parser.js` | Parses `{{data}}`, `{{text}}`, `@block`, and `@extends` directives in Markdown templates | Markdown template files | Parsed directive AST |
59
+ | Data Resolver | `src/docs/lib/resolver-factory.js` | Resolves `{{data}}` directives by binding analysis data to named data sources | Parsed directives, `analysis.json` | Rendered Markdown sections |
60
+ | AI Agent Caller | `src/lib/agent.js` | Executes configured external AI agent commands synchronously or asynchronously | Prompt string, agent config | AI-generated text streamed or returned as string |
61
+ | Config Manager | `src/lib/config.js` | Loads and validates `.sdd-forge/config.json`; manages context and path resolution | `.sdd-forge/` directory | Typed config object, resolved paths |
62
+ | Flow State Manager | `src/lib/flow-state.js` | Persists and retrieves SDD workflow state (current spec, branch, worktree info) | Work root path, state object | `.sdd-forge/current-spec` JSON file |
63
+ | Preset System | `src/lib/presets.js` | Auto-discovers `preset.json` files under `src/presets/` and registers available project types | `src/presets/` directory tree | `PRESETS` constant used across all consumers |
64
+ | SDD Flow Runner | `src/flow.js` | Orchestrates the full SDD cycle (spec → gate → implement → forge → review) automatically | `--request` argument, flow state | Sequential command execution with user interaction |
72
65
 
73
- ### 典型的な利用フロー
66
+ ### External Integrations
74
67
 
75
- <!-- {{text: ユーザーがインストールしてから最初の成果物を得るまでの典型的な手順をステップ形式で説明してください。}} -->
68
+ <!-- {{text: If there are external system integrations, describe their purpose and connection method in table format.}} -->
76
69
 
77
- **1. インストール**
70
+ | System | Purpose | Connection Method | Configuration |
71
+ |---|---|---|---|
72
+ | AI Agent (e.g. Claude CLI) | Generates and refines documentation text, performs quality review, and evaluates spec gate checks | Spawned as a child process via `child_process.execFileSync` (sync) or `spawn` (async) | Defined in `.sdd-forge/config.json` under `providers` and `defaultAgent`; supports `command`, `args`, `timeoutMs`, and `systemPromptFlag` |
73
+ | Git | Branch creation, worktree isolation, and repository root resolution for SDD workflows | Invoked via `child_process` shell commands (`git rev-parse`, `git worktree`, etc.) | Resolved automatically from the working directory; worktree support detected via `.git` file presence |
78
74
 
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. ソースコード解析**
75
+ `sdd-forge` has no network-based external dependencies. All integrations are process-level and operate entirely within the local development environment.
93
76
 
94
- ソースコードを解析し、`.sdd-forge/output/analysis.json` `summary.json` を生成します。
77
+ ### Environment Differences
95
78
 
96
- ```bash
97
- sdd-forge scan
98
- ```
99
-
100
- **4. docs の一括生成**
101
-
102
- テンプレート初期化・データ解決・AI によるテキスト生成・README 更新までを一括で実行します。
103
-
104
- ```bash
105
- sdd-forge build
106
- ```
79
+ <!-- {{text: Describe the configuration differences across environments (local/staging/production).}} -->
107
80
 
108
- **5. 生成されたドキュメントを確認**
81
+ `sdd-forge` is a local developer CLI tool and does not have traditional deployment environments (staging, production). Configuration is driven entirely by `.sdd-forge/config.json` in each project's working directory.
109
82
 
110
- `docs/` ディレクトリに `01_overview.md` などのドキュメントファイルが生成されています。内容を確認し、MANUAL ブロックに補足情報を追記することで、自動生成と手動記述を組み合わせた知識ベースを構築できます。
83
+ | Aspect | Local Development | CI / Automated Pipeline |
84
+ |---|---|---|
85
+ | Agent invocation | Interactive; supports streaming output callbacks for live feedback | Non-interactive; `callAgentAsync()` with `stdin: "ignore"` to prevent hangs |
86
+ | `CLAUDECODE` env var | May be set if running inside Claude Code | Must be unset before spawning AI agent subprocess (handled automatically by `agent.js`) |
87
+ | Project context | Resolved via `.sdd-forge/projects.json` `default` entry or `--project` flag | Set explicitly via `SDD_SOURCE_ROOT` and `SDD_WORK_ROOT` environment variables |
88
+ | AI agent timeout | Defaults: 120 s / 180 s / 300 s depending on command | Same defaults apply; increase via `config.limits.designTimeoutMs` if needed |
89
+ | Concurrency | Default 5 parallel file processes; tunable via `config.limits.concurrency` | Same; reduce if CPU-constrained in CI runners |
90
+ | Output language | Controlled by `config.output.default` and `config.lang` | Same; no environment-specific overrides exist |