sdd-forge 0.1.0-alpha.22 → 0.1.0-alpha.23
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/README.md +81 -74
- package/docs/01_overview.md +12 -99
- package/docs/02_cli_commands.md +12 -268
- package/docs/03_configuration.md +12 -74
- package/docs/04_internal_design.md +14 -217
- package/package.json +1 -1
- package/src/docs/commands/agents.js +106 -263
- package/src/docs/commands/changelog.js +30 -46
- package/src/docs/commands/data.js +60 -95
- package/src/docs/commands/default-project.js +9 -14
- package/src/docs/commands/forge.js +119 -184
- package/src/docs/commands/init.js +112 -126
- package/src/docs/commands/readme.js +62 -89
- package/src/docs/commands/review.js +57 -42
- package/src/docs/commands/scan.js +54 -95
- package/src/docs/commands/setup.js +41 -54
- package/src/docs/commands/text.js +133 -467
- package/src/docs/commands/translate.js +199 -0
- package/src/docs/commands/upgrade.js +12 -79
- package/src/docs/data/agents.js +138 -0
- package/src/docs/data/docs.js +13 -9
- package/src/docs/data/lang.js +109 -0
- package/src/docs/lib/command-context.js +170 -0
- package/src/docs/lib/concurrency.js +47 -0
- package/src/docs/lib/data-source-loader.js +44 -0
- package/src/docs/lib/directive-parser.js +76 -0
- package/src/docs/lib/resolver-factory.js +14 -36
- package/src/docs/lib/review-parser.js +1 -4
- package/src/docs/lib/scan-source.js +1 -1
- package/src/docs/lib/scanner.js +1 -13
- package/src/docs/lib/template-merger.js +289 -160
- package/src/docs/lib/text-prompts.js +225 -0
- package/src/docs.js +129 -89
- package/src/flow.js +12 -31
- package/src/help.js +8 -32
- package/src/lib/agent.js +71 -83
- package/src/lib/agents-md.js +2 -24
- package/src/lib/cli.js +31 -0
- package/src/lib/config.js +59 -4
- package/src/lib/entrypoint.js +23 -0
- package/src/lib/flow-state.js +2 -1
- package/src/lib/i18n.js +2 -1
- package/src/lib/presets.js +1 -0
- package/src/lib/progress.js +50 -13
- package/src/lib/types.js +39 -23
- package/src/locale/en/messages.json +14 -6
- package/src/locale/en/prompts.json +1 -3
- package/src/locale/en/ui.json +110 -4
- package/src/locale/ja/messages.json +14 -6
- package/src/locale/ja/prompts.json +1 -3
- package/src/locale/ja/ui.json +110 -4
- package/src/presets/base/preset.json +7 -1
- package/src/presets/base/templates/en/AGENTS.sdd.md +101 -0
- package/src/presets/base/templates/en/development.md +40 -0
- package/src/presets/base/templates/en/overview.md +33 -0
- package/src/presets/base/templates/en/project_structure.md +28 -0
- package/src/presets/base/templates/en/stack_and_ops.md +34 -0
- package/src/presets/base/templates/ja/AGENTS.sdd.md +28 -17
- package/src/presets/cakephp2/scan/assets.js +1 -1
- package/src/presets/cli/preset.json +9 -1
- package/src/presets/cli/templates/ja/README.md +0 -3
- package/src/presets/laravel/scan/config.js +2 -33
- package/src/presets/laravel/scan/controllers.js +3 -15
- package/src/presets/laravel/scan/models.js +7 -26
- package/src/presets/lib/composer-utils.js +61 -0
- package/src/presets/library/preset.json +9 -1
- package/src/presets/library/templates/ja/README.md +0 -3
- package/src/presets/node-cli/preset.json +7 -0
- package/src/presets/node-cli/templates/ja/cli_commands.md +23 -0
- package/src/presets/node-cli/templates/ja/configuration.md +23 -0
- package/src/presets/node-cli/templates/ja/internal_design.md +27 -0
- package/src/presets/node-cli/templates/ja/overview.md +23 -0
- package/src/presets/symfony/scan/config.js +2 -37
- package/src/presets/symfony/scan/controllers.js +3 -15
- package/src/presets/symfony/scan/entities.js +8 -21
- package/src/presets/symfony/scan/routes.js +7 -15
- package/src/presets/webapp/data/controllers.js +10 -0
- package/src/presets/webapp/data/shells.js +10 -0
- package/src/presets/webapp/preset.json +13 -1
- package/src/presets/webapp/templates/ja/README.md +0 -3
- package/src/sdd-forge.js +4 -6
- package/src/spec.js +1 -3
- package/src/specs/commands/gate.js +45 -20
- package/src/specs/commands/init.js +31 -32
- package/src/templates/config.example.json +1 -2
- package/src/templates/skills/sdd-flow-status/SKILL.md +71 -0
- package/docs/05_development.md +0 -86
- package/src/docs/lib/renderers.js +0 -150
- package/src/presets/node-cli/templates/ja/01_overview.md +0 -23
- package/src/presets/node-cli/templates/ja/02_cli_commands.md +0 -23
- package/src/presets/node-cli/templates/ja/03_configuration.md +0 -23
- package/src/presets/node-cli/templates/ja/04_internal_design.md +0 -30
- package/src/presets/webapp/templates/ja/chapters.json +0 -4
- /package/src/presets/base/templates/ja/{04_development.md → development.md} +0 -0
- /package/src/presets/base/templates/ja/{01_overview.md → overview.md} +0 -0
- /package/src/presets/base/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
- /package/src/presets/base/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{04_development.md → development.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
- /package/src/presets/cakephp2/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
- /package/src/presets/cli/templates/ja/{05_commands.md → commands.md} +0 -0
- /package/src/presets/cli/templates/ja/{06_config.md → config.md} +0 -0
- /package/src/presets/laravel/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
- /package/src/presets/laravel/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
- /package/src/presets/laravel/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
- /package/src/presets/laravel/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
- /package/src/presets/laravel/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
- /package/src/presets/library/templates/ja/{05_public_api.md → public_api.md} +0 -0
- /package/src/presets/library/templates/ja/{06_usage.md → usage.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{02_stack_and_ops.md → commands.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{03_project_structure.md → config.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{04_development.md → development.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{05_development.md → development_testing.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{05_commands.md → project_structure.md} +0 -0
- /package/src/presets/node-cli/templates/ja/{06_config.md → stack_and_ops.md} +0 -0
- /package/src/presets/symfony/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
- /package/src/presets/symfony/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
- /package/src/presets/symfony/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
- /package/src/presets/symfony/templates/ja/{03_project_structure.md → project_structure.md} +0 -0
- /package/src/presets/symfony/templates/ja/{02_stack_and_ops.md → stack_and_ops.md} +0 -0
- /package/src/presets/webapp/templates/ja/{05_auth_and_session.md → auth_and_session.md} +0 -0
- /package/src/presets/webapp/templates/ja/{10_batch_and_shell.md → batch_and_shell.md} +0 -0
- /package/src/presets/webapp/templates/ja/{09_business_logic.md → business_logic.md} +0 -0
- /package/src/presets/webapp/templates/ja/{08_controller_routes.md → controller_routes.md} +0 -0
- /package/src/presets/webapp/templates/ja/{06_database_architecture.md → database_architecture.md} +0 -0
- /package/src/presets/webapp/templates/ja/{07_db_tables.md → db_tables.md} +0 -0
package/README.md
CHANGED
|
@@ -2,26 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/sdd-forge)
|
|
4
4
|
|
|
5
|
-
> **Alpha
|
|
5
|
+
> **Alpha:** This tool is currently in alpha. APIs, command structures, and configuration formats may change without notice. Not recommended for production use.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**A CLI tool that automatically generates and maintains project documentation using source code analysis + AI.**
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
Statically analyzes your codebase and combines templates with AI to auto-generate `docs/`.
|
|
10
|
+
Spec-Driven Development (SDD) workflows further automate documentation updates when adding features or making changes.
|
|
11
11
|
|
|
12
12
|
## Features
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- **AI
|
|
17
|
-
-
|
|
18
|
-
- **SDD
|
|
19
|
-
- **
|
|
20
|
-
-
|
|
14
|
+
- **Zero dependencies** — Runs on Node.js 18+ only. No npm packages required
|
|
15
|
+
- **Automatic source 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** — Customizable via 4-layer inheritance: base → arch → preset → project-local
|
|
18
|
+
- **SDD workflow** — Manage the spec → gate → implement → forge → review cycle with commands
|
|
19
|
+
- **Multi-language support** — Auto-generate documentation in multiple languages via translate / generate modes
|
|
20
|
+
- **AI agent integration** — Supports 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
|
|
@@ -34,120 +35,126 @@ yarn global add <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
|
|
|
34
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
|
+
# 1. Register your project (interactive wizard)
|
|
41
42
|
<!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> setup
|
|
42
43
|
|
|
43
|
-
# 2.
|
|
44
|
+
# 2. Generate all documentation at once (scan → init → data → text → readme → agents → translate)
|
|
44
45
|
<!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> build
|
|
45
46
|
</pre>
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
This alone generates `docs/` and `README.md`.
|
|
48
49
|
|
|
49
|
-
##
|
|
50
|
+
## Commands
|
|
50
51
|
|
|
51
|
-
###
|
|
52
|
+
### Document Generation
|
|
52
53
|
|
|
53
|
-
|
|
|
54
|
+
| Command | Description |
|
|
54
55
|
|---|---|
|
|
55
|
-
| `setup` |
|
|
56
|
-
| `build` |
|
|
57
|
-
| `scan` |
|
|
58
|
-
| `init` |
|
|
59
|
-
| `data` | `{{data}}`
|
|
60
|
-
| `text` | `{{text}}`
|
|
61
|
-
| `readme` |
|
|
62
|
-
| `forge` | AI
|
|
63
|
-
| `review` |
|
|
64
|
-
|
|
65
|
-
|
|
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 analysis 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` | Multi-language translation (default language → other languages) |
|
|
66
|
+
| `upgrade` | Update preset templates to the latest version |
|
|
67
|
+
|
|
68
|
+
### SDD Workflow
|
|
69
|
+
|
|
70
|
+
| Command | Description |
|
|
68
71
|
|---|---|
|
|
69
|
-
| `spec` |
|
|
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 spec |
|
|
74
|
+
| `flow` | Automatically run the SDD workflow |
|
|
75
|
+
| `changelog` | Generate change history from specs/ |
|
|
76
|
+
| `agents` | Update AGENTS.md |
|
|
74
77
|
|
|
75
|
-
|
|
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 feature addition / change flow:
|
|
78
89
|
|
|
79
90
|
```
|
|
80
|
-
spec
|
|
91
|
+
spec Create a spec (feature branch + spec.md)
|
|
81
92
|
↓
|
|
82
|
-
gate
|
|
93
|
+
gate Spec gate check (PASS when no open issues)
|
|
83
94
|
↓
|
|
84
|
-
|
|
95
|
+
implement Write code after gate PASS
|
|
85
96
|
↓
|
|
86
|
-
forge
|
|
97
|
+
forge Auto-update documentation
|
|
87
98
|
↓
|
|
88
|
-
review
|
|
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
|
-
|
|
106
|
+
Run the SDD workflow with skills:
|
|
96
107
|
|
|
97
108
|
```
|
|
98
|
-
/sdd-flow-start — spec
|
|
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 prompts:
|
|
105
116
|
|
|
106
117
|
```
|
|
107
|
-
$sdd-flow-start — spec
|
|
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`
|
|
124
|
+
Running `sdd-forge setup` generates `.sdd-forge/config.json`.
|
|
114
125
|
|
|
115
126
|
```jsonc
|
|
116
127
|
{
|
|
117
|
-
"type": "cli/node-cli", //
|
|
118
|
-
"lang": "
|
|
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/ ←
|
|
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.
|
|
142
|
-
| [02. CLI
|
|
143
|
-
| [03.
|
|
144
|
-
| [04.
|
|
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) | |
|
|
153
|
+
| [02. CLI Command Reference](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/02_cli_commands.md) | |
|
|
154
|
+
| [03. Configuration and Customization](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/03_configuration.md) | |
|
|
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 -->
|
package/docs/01_overview.md
CHANGED
|
@@ -1,110 +1,23 @@
|
|
|
1
|
-
# 01.
|
|
1
|
+
# 01. System Overview
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Description
|
|
4
4
|
|
|
5
|
-
<!-- {{text:
|
|
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
|
-
|
|
7
|
+
## Content
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### Architecture Diagram
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<!-- {{text: Generate a mermaid flowchart showing the project architecture. Include data flows between major components. Output only the mermaid code block.}} -->
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
### Component Responsibilities
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
<!-- {{text: Describe the major components with their location, responsibilities, and I/O in table format.}} -->
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
### External Integrations
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
<!-- {{text: If there are external system integrations, describe their purpose and connection method in table format.}} -->
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
### Environment Differences
|
|
22
22
|
|
|
23
|
-
|
|
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 ブロックに補足情報を追記することで、自動生成と手動記述を組み合わせた知識ベースを構築できます。
|
|
23
|
+
<!-- {{text: Describe the configuration differences across environments (local/staging/production).}} -->
|
package/docs/02_cli_commands.md
CHANGED
|
@@ -1,279 +1,23 @@
|
|
|
1
|
-
# 02. CLI
|
|
1
|
+
# 02. CLI Command Reference
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Description
|
|
4
4
|
|
|
5
|
-
<!-- {{text:
|
|
5
|
+
<!-- {{text: Write a 1–2 sentence overview of this chapter. Cover the total number of commands, whether global options exist, and the subcommand structure.}} -->
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Contents
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### Command List
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<!-- {{text: List all commands in a table, including command name, description, and main options. Commands can be identified from the modules list in the analysis data. Include both commands routed through dispatchers (docs.js, spec.js) and directly executed commands (flow, presets). Note that build is a composite command (scan → init → data → text → readme → agents → translate pipeline). Be sure to include translate (multi-language translation), upgrade (template update), and default (default project configuration).}} -->
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
### Global Options
|
|
14
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 | 利用可能なプリセット一覧を表示 | なし |
|
|
15
|
+
<!-- {{text: Describe the global options common to all commands in a table. Include --project, --help/-h, and --version/-v/-V. Also note that setup, default, help, and presets skip project context resolution.}} -->
|
|
35
16
|
|
|
36
|
-
###
|
|
17
|
+
### Command Details
|
|
37
18
|
|
|
38
|
-
<!-- {{text:
|
|
19
|
+
<!-- {{text: Describe the usage, options, and examples for each command in detail. Create a #### subsection for each command. For the build pipeline, list all steps: scan → init → data → text → readme → agents → translate. The translate command has --lang, --force, and --dry-run options.}} -->
|
|
39
20
|
|
|
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 のバージョン番号を表示して終了します。 |
|
|
21
|
+
### Exit Codes and Output
|
|
45
22
|
|
|
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` に出力されます。
|
|
23
|
+
<!-- {{text: Describe exit code definitions (0=success, 1=general error, etc.) and the rules for stdout/stderr usage in a table. Include the point that gate and review PASS/FAIL results are printed to stdout.}} -->
|