sdd-forge 0.1.0-alpha.31 → 0.1.0-alpha.361

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 (312) hide show
  1. package/README.md +75 -125
  2. package/package.json +6 -3
  3. package/src/AGENTS.md +420 -0
  4. package/src/docs/commands/agents.js +22 -7
  5. package/src/docs/commands/changelog.js +1 -1
  6. package/src/docs/commands/data.js +15 -13
  7. package/src/docs/commands/enrich.js +28 -12
  8. package/src/docs/commands/forge.js +6 -24
  9. package/src/docs/commands/init.js +21 -19
  10. package/src/docs/commands/readme.js +13 -10
  11. package/src/docs/commands/review.js +45 -92
  12. package/src/docs/commands/scan.js +176 -25
  13. package/src/docs/commands/text.js +204 -49
  14. package/src/docs/commands/translate.js +2 -2
  15. package/src/docs/data/agents.js +5 -4
  16. package/src/docs/data/docs.js +79 -11
  17. package/src/docs/data/lang.js +4 -4
  18. package/src/docs/data/text.js +32 -0
  19. package/src/docs/lib/command-context.js +4 -4
  20. package/src/docs/lib/directive-parser.js +335 -137
  21. package/src/docs/lib/forge-prompts.js +6 -6
  22. package/src/docs/lib/resolver-factory.js +73 -34
  23. package/src/docs/lib/review-parser.js +1 -131
  24. package/src/docs/lib/scanner.js +1 -1
  25. package/src/docs/lib/template-merger.js +299 -89
  26. package/src/docs/lib/text-prompts.js +26 -18
  27. package/src/docs/lib/toml-parser.js +135 -0
  28. package/src/docs.js +24 -11
  29. package/src/flow/commands/cleanup.js +41 -22
  30. package/src/flow/commands/merge.js +104 -6
  31. package/src/flow/commands/resume.js +213 -0
  32. package/src/flow/commands/review.js +16 -6
  33. package/src/flow/commands/start.js +6 -14
  34. package/src/flow/commands/status.js +98 -33
  35. package/src/flow.js +1 -0
  36. package/src/help.js +4 -0
  37. package/src/lib/agent.js +5 -6
  38. package/src/lib/config.js +1 -1
  39. package/src/lib/flow-state.js +457 -35
  40. package/src/lib/i18n.js +4 -3
  41. package/src/lib/json-parse.js +31 -0
  42. package/src/lib/multi-select.js +265 -0
  43. package/src/lib/presets.js +95 -23
  44. package/src/lib/skills.js +96 -0
  45. package/src/lib/types.js +120 -84
  46. package/src/locale/en/messages.json +12 -5
  47. package/src/locale/en/prompts.json +4 -6
  48. package/src/locale/en/ui.json +26 -34
  49. package/src/locale/ja/messages.json +12 -5
  50. package/src/locale/ja/prompts.json +4 -6
  51. package/src/locale/ja/ui.json +26 -34
  52. package/src/presets/api/preset.json +13 -0
  53. package/src/presets/api/templates/en/api_overview.md +22 -0
  54. package/src/presets/api/templates/en/authentication.md +22 -0
  55. package/src/presets/api/templates/ja/api_overview.md +22 -0
  56. package/src/presets/api/templates/ja/authentication.md +22 -0
  57. package/src/presets/architecture/preset.json +6 -0
  58. package/src/presets/base/data/structure.js +87 -0
  59. package/src/presets/base/preset.json +0 -1
  60. package/src/presets/base/templates/en/AGENTS.sdd.md +5 -1
  61. package/src/presets/base/templates/en/development.md +21 -19
  62. package/src/presets/base/templates/en/guardrail.md +20 -0
  63. package/src/presets/base/templates/en/layout.md +10 -0
  64. package/src/presets/base/templates/en/overview.md +22 -18
  65. package/src/presets/base/templates/en/project_structure.md +21 -19
  66. package/src/presets/base/templates/en/stack_and_ops.md +22 -18
  67. package/src/presets/base/templates/ja/AGENTS.sdd.md +5 -1
  68. package/src/presets/base/templates/ja/development.md +21 -19
  69. package/src/presets/base/templates/ja/guardrail.md +20 -0
  70. package/src/presets/base/templates/ja/layout.md +10 -0
  71. package/src/presets/base/templates/ja/overview.md +22 -18
  72. package/src/presets/base/templates/ja/project_structure.md +21 -19
  73. package/src/presets/base/templates/ja/stack_and_ops.md +22 -18
  74. package/src/presets/cakephp2/data/{shells.js → commands.js} +12 -12
  75. package/src/presets/cakephp2/data/config.js +2 -2
  76. package/src/presets/cakephp2/preset.json +1 -1
  77. package/src/presets/cakephp2/scan/{shells-detail.js → commands-detail.js} +9 -8
  78. package/src/presets/cakephp2/templates/en/auth_and_session.md +42 -0
  79. package/src/presets/cakephp2/templates/en/business_logic.md +16 -0
  80. package/src/presets/cakephp2/templates/en/commands.md +16 -0
  81. package/src/presets/cakephp2/templates/en/controller_routes.md +19 -0
  82. package/src/presets/cakephp2/templates/en/database_architecture.md +11 -0
  83. package/src/presets/cakephp2/templates/en/db_tables.md +16 -0
  84. package/src/presets/cakephp2/templates/en/development.md +46 -0
  85. package/src/presets/cakephp2/templates/en/guardrail.md +8 -0
  86. package/src/presets/cakephp2/templates/en/project_structure.md +31 -0
  87. package/src/presets/cakephp2/templates/en/stack_and_ops.md +43 -0
  88. package/src/presets/cakephp2/templates/ja/auth_and_session.md +23 -3
  89. package/src/presets/cakephp2/templates/ja/business_logic.md +16 -0
  90. package/src/presets/cakephp2/templates/ja/commands.md +16 -0
  91. package/src/presets/cakephp2/templates/ja/controller_routes.md +13 -7
  92. package/src/presets/cakephp2/templates/ja/database_architecture.md +11 -0
  93. package/src/presets/cakephp2/templates/ja/db_tables.md +6 -12
  94. package/src/presets/cakephp2/templates/ja/development.md +13 -17
  95. package/src/presets/cakephp2/templates/ja/guardrail.md +8 -0
  96. package/src/presets/cakephp2/templates/ja/project_structure.md +13 -21
  97. package/src/presets/cakephp2/templates/ja/stack_and_ops.md +18 -23
  98. package/src/presets/ci/data/pipelines.js +89 -0
  99. package/src/presets/ci/preset.json +15 -0
  100. package/src/presets/ci/scan/workflows.js +289 -0
  101. package/src/presets/ci/templates/en/ci_cd.md +27 -0
  102. package/src/presets/ci/templates/ja/ci_cd.md +27 -0
  103. package/src/presets/cli/data/commands.js +52 -0
  104. package/src/presets/cli/preset.json +1 -1
  105. package/src/presets/cli/templates/en/README.md +12 -14
  106. package/src/presets/cli/templates/en/commands.md +22 -27
  107. package/src/presets/cli/templates/en/config.md +19 -18
  108. package/src/presets/cli/templates/en/guardrail.md +6 -0
  109. package/src/presets/cli/templates/ja/README.md +12 -14
  110. package/src/presets/cli/templates/ja/commands.md +22 -27
  111. package/src/presets/cli/templates/ja/config.md +19 -18
  112. package/src/presets/cli/templates/ja/guardrail.md +6 -0
  113. package/src/presets/database/data/schema.js +36 -0
  114. package/src/presets/database/preset.json +8 -0
  115. package/src/presets/database/templates/en/database.md +16 -0
  116. package/src/presets/database/templates/ja/database.md +16 -0
  117. package/src/presets/drizzle/data/schema.js +128 -0
  118. package/src/presets/drizzle/preset.json +21 -0
  119. package/src/presets/drizzle/scan/schema.js +114 -0
  120. package/src/presets/drizzle/templates/en/database.md +11 -0
  121. package/src/presets/drizzle/templates/en/schema.md +20 -0
  122. package/src/presets/drizzle/templates/ja/database.md +11 -0
  123. package/src/presets/drizzle/templates/ja/schema.md +20 -0
  124. package/src/presets/edge/data/runtime.js +93 -0
  125. package/src/presets/edge/preset.json +8 -0
  126. package/src/presets/edge/templates/en/edge_runtime.md +20 -0
  127. package/src/presets/edge/templates/ja/edge_runtime.md +20 -0
  128. package/src/presets/graphql/data/schema.js +119 -0
  129. package/src/presets/graphql/preset.json +18 -0
  130. package/src/presets/graphql/scan/schema.js +108 -0
  131. package/src/presets/graphql/templates/en/api_overview.md +8 -0
  132. package/src/presets/graphql/templates/en/authentication.md +15 -0
  133. package/src/presets/graphql/templates/en/schema.md +27 -0
  134. package/src/presets/graphql/templates/ja/api_overview.md +8 -0
  135. package/src/presets/graphql/templates/ja/authentication.md +15 -0
  136. package/src/presets/graphql/templates/ja/schema.md +27 -0
  137. package/src/presets/hono/data/middleware.js +37 -0
  138. package/src/presets/hono/preset.json +19 -0
  139. package/src/presets/hono/scan/middleware.js +68 -0
  140. package/src/presets/hono/templates/en/middleware.md +13 -0
  141. package/src/presets/hono/templates/ja/middleware.md +13 -0
  142. package/src/presets/js-webapp/preset.json +24 -0
  143. package/src/presets/laravel/data/commands.js +8 -14
  144. package/src/presets/laravel/preset.json +1 -1
  145. package/src/presets/laravel/scan/config.js +108 -0
  146. package/src/presets/laravel/scan/routes.js +62 -5
  147. package/src/presets/laravel/templates/en/auth_and_session.md +29 -0
  148. package/src/presets/laravel/templates/en/controller_routes.md +34 -0
  149. package/src/presets/laravel/templates/en/db_tables.md +16 -0
  150. package/src/presets/laravel/templates/en/guardrail.md +8 -0
  151. package/src/presets/laravel/templates/en/project_structure.md +13 -0
  152. package/src/presets/laravel/templates/en/stack_and_ops.md +34 -0
  153. package/src/presets/laravel/templates/ja/auth_and_session.md +13 -13
  154. package/src/presets/laravel/templates/ja/controller_routes.md +18 -28
  155. package/src/presets/laravel/templates/ja/db_tables.md +10 -16
  156. package/src/presets/laravel/templates/ja/guardrail.md +8 -0
  157. package/src/presets/laravel/templates/ja/project_structure.md +7 -7
  158. package/src/presets/laravel/templates/ja/stack_and_ops.md +15 -23
  159. package/src/presets/library/preset.json +1 -1
  160. package/src/presets/library/templates/en/README.md +16 -0
  161. package/src/presets/library/templates/en/guardrail.md +4 -0
  162. package/src/presets/library/templates/en/public_api.md +34 -0
  163. package/src/presets/library/templates/en/usage.md +41 -0
  164. package/src/presets/library/templates/ja/README.md +5 -7
  165. package/src/presets/library/templates/ja/guardrail.md +4 -0
  166. package/src/presets/library/templates/ja/public_api.md +16 -15
  167. package/src/presets/library/templates/ja/usage.md +19 -18
  168. package/src/presets/monorepo/data/monorepo.js +80 -0
  169. package/src/presets/monorepo/preset.json +6 -0
  170. package/src/presets/nextjs/data/components.js +103 -0
  171. package/src/presets/nextjs/data/routes.js +187 -0
  172. package/src/presets/nextjs/preset.json +35 -0
  173. package/src/presets/nextjs/scan/components.js +53 -0
  174. package/src/presets/nextjs/scan/routes.js +175 -0
  175. package/src/presets/nextjs/templates/en/components.md +27 -0
  176. package/src/presets/nextjs/templates/en/middleware.md +13 -0
  177. package/src/presets/nextjs/templates/en/pages_routing.md +27 -0
  178. package/src/presets/nextjs/templates/en/route_handlers.md +13 -0
  179. package/src/presets/nextjs/templates/ja/components.md +27 -0
  180. package/src/presets/nextjs/templates/ja/middleware.md +13 -0
  181. package/src/presets/nextjs/templates/ja/pages_routing.md +27 -0
  182. package/src/presets/nextjs/templates/ja/route_handlers.md +13 -0
  183. package/src/presets/node-cli/preset.json +3 -1
  184. package/src/presets/node-cli/templates/en/README.md +9 -9
  185. package/src/presets/node-cli/templates/en/cli_commands.md +9 -8
  186. package/src/presets/node-cli/templates/en/configuration.md +9 -8
  187. package/src/presets/node-cli/templates/en/development_testing.md +10 -9
  188. package/src/presets/node-cli/templates/en/guardrail.md +4 -0
  189. package/src/presets/node-cli/templates/en/internal_design.md +10 -9
  190. package/src/presets/node-cli/templates/en/overview.md +9 -8
  191. package/src/presets/node-cli/templates/ja/README.md +9 -9
  192. package/src/presets/node-cli/templates/ja/cli_commands.md +9 -8
  193. package/src/presets/node-cli/templates/ja/configuration.md +9 -8
  194. package/src/presets/node-cli/templates/ja/development_testing.md +10 -9
  195. package/src/presets/node-cli/templates/ja/guardrail.md +4 -0
  196. package/src/presets/node-cli/templates/ja/internal_design.md +10 -9
  197. package/src/presets/node-cli/templates/ja/overview.md +9 -8
  198. package/src/presets/php-webapp/preset.json +10 -0
  199. package/src/presets/postgres/data/database.js +19 -0
  200. package/src/presets/postgres/preset.json +6 -0
  201. package/src/presets/postgres/templates/en/database.md +9 -0
  202. package/src/presets/postgres/templates/ja/database.md +9 -0
  203. package/src/presets/principle/preset.json +5 -0
  204. package/src/presets/r2/data/storage.js +69 -0
  205. package/src/presets/r2/preset.json +8 -0
  206. package/src/presets/r2/templates/en/storage.md +11 -0
  207. package/src/presets/r2/templates/ja/storage.md +11 -0
  208. package/src/presets/rest/preset.json +14 -0
  209. package/src/presets/rest/templates/en/api_overview.md +8 -0
  210. package/src/presets/rest/templates/en/authentication.md +15 -0
  211. package/src/presets/rest/templates/en/endpoints.md +20 -0
  212. package/src/presets/rest/templates/ja/api_overview.md +8 -0
  213. package/src/presets/rest/templates/ja/authentication.md +15 -0
  214. package/src/presets/rest/templates/ja/endpoints.md +20 -0
  215. package/src/presets/storage/data/buckets.js +22 -0
  216. package/src/presets/storage/preset.json +8 -0
  217. package/src/presets/storage/templates/en/storage.md +20 -0
  218. package/src/presets/storage/templates/ja/storage.md +20 -0
  219. package/src/presets/symfony/data/commands.js +8 -14
  220. package/src/presets/symfony/preset.json +1 -1
  221. package/src/presets/symfony/scan/controllers.js +4 -6
  222. package/src/presets/symfony/scan/php-attributes.js +72 -0
  223. package/src/presets/symfony/scan/routes.js +4 -6
  224. package/src/presets/symfony/templates/en/auth_and_session.md +29 -0
  225. package/src/presets/symfony/templates/en/business_logic.md +10 -0
  226. package/src/presets/symfony/templates/en/controller_routes.md +32 -0
  227. package/src/presets/symfony/templates/en/db_tables.md +21 -0
  228. package/src/presets/symfony/templates/en/guardrail.md +8 -0
  229. package/src/presets/symfony/templates/en/project_structure.md +13 -0
  230. package/src/presets/symfony/templates/en/stack_and_ops.md +34 -0
  231. package/src/presets/symfony/templates/ja/auth_and_session.md +13 -13
  232. package/src/presets/symfony/templates/ja/business_logic.md +10 -0
  233. package/src/presets/symfony/templates/ja/controller_routes.md +16 -26
  234. package/src/presets/symfony/templates/ja/db_tables.md +13 -21
  235. package/src/presets/symfony/templates/ja/guardrail.md +8 -0
  236. package/src/presets/symfony/templates/ja/project_structure.md +7 -7
  237. package/src/presets/symfony/templates/ja/stack_and_ops.md +15 -23
  238. package/src/presets/web-design/NOTICE +10 -0
  239. package/src/presets/web-design/preset.json +5 -0
  240. package/src/presets/web-design/templates/en/guardrail.md +34 -0
  241. package/src/presets/web-design/templates/ja/guardrail.md +34 -0
  242. package/src/presets/webapp/data/{shells.js → commands.js} +9 -12
  243. package/src/presets/webapp/preset.json +2 -2
  244. package/src/presets/webapp/templates/en/README.md +22 -0
  245. package/src/presets/webapp/templates/en/auth_and_session.md +47 -0
  246. package/src/presets/webapp/templates/en/business_logic.md +45 -0
  247. package/src/presets/webapp/templates/en/commands.md +42 -0
  248. package/src/presets/webapp/templates/en/controller_routes.md +49 -0
  249. package/src/presets/webapp/templates/en/database_architecture.md +41 -0
  250. package/src/presets/webapp/templates/en/db_tables.md +29 -0
  251. package/src/presets/webapp/templates/en/guardrail.md +10 -0
  252. package/src/presets/webapp/templates/ja/README.md +7 -9
  253. package/src/presets/webapp/templates/ja/auth_and_session.md +23 -22
  254. package/src/presets/webapp/templates/ja/business_logic.md +23 -24
  255. package/src/presets/webapp/templates/ja/commands.md +42 -0
  256. package/src/presets/webapp/templates/ja/controller_routes.md +25 -26
  257. package/src/presets/webapp/templates/ja/database_architecture.md +21 -20
  258. package/src/presets/webapp/templates/ja/db_tables.md +15 -18
  259. package/src/presets/webapp/templates/ja/guardrail.md +10 -0
  260. package/src/presets/workers/data/bindings.js +84 -0
  261. package/src/presets/workers/preset.json +23 -0
  262. package/src/presets/workers/scan/bindings.js +129 -0
  263. package/src/presets/workers/templates/en/bindings.md +20 -0
  264. package/src/presets/workers/templates/en/edge_runtime.md +11 -0
  265. package/src/presets/workers/templates/ja/bindings.md +20 -0
  266. package/src/presets/workers/templates/ja/edge_runtime.md +11 -0
  267. package/src/presets-cmd.js +48 -33
  268. package/src/setup.js +353 -358
  269. package/src/spec/commands/gate.js +9 -12
  270. package/src/spec/commands/guardrail.js +277 -64
  271. package/src/spec/commands/init.js +9 -3
  272. package/src/spec/commands/lint.js +164 -0
  273. package/src/spec.js +1 -0
  274. package/src/templates/config.example.json +11 -18
  275. package/src/templates/skills/sdd-forge.flow-finalize/SKILL.en.md +248 -0
  276. package/src/templates/skills/sdd-forge.flow-finalize/SKILL.ja.md +248 -0
  277. package/src/templates/skills/sdd-forge.flow-impl/SKILL.en.md +166 -0
  278. package/src/templates/skills/sdd-forge.flow-impl/SKILL.ja.md +166 -0
  279. package/src/templates/skills/sdd-forge.flow-plan/SKILL.en.md +273 -0
  280. package/src/templates/skills/sdd-forge.flow-plan/SKILL.ja.md +273 -0
  281. package/src/templates/skills/sdd-forge.flow-resume/SKILL.en.md +34 -0
  282. package/src/templates/skills/sdd-forge.flow-resume/SKILL.ja.md +34 -0
  283. package/src/templates/skills/sdd-forge.flow-status/{SKILL.md → SKILL.en.md} +4 -4
  284. package/src/templates/skills/sdd-forge.flow-status/SKILL.ja.md +94 -0
  285. package/src/templates/skills/sdd-forge.flow-sync/SKILL.en.md +42 -0
  286. package/src/templates/skills/sdd-forge.flow-sync/SKILL.ja.md +42 -0
  287. package/src/upgrade.js +3 -98
  288. package/docs/cli_commands.md +0 -259
  289. package/docs/configuration.md +0 -191
  290. package/docs/internal_design.md +0 -359
  291. package/docs/ja/README.md +0 -188
  292. package/docs/ja/cli_commands.md +0 -442
  293. package/docs/ja/configuration.md +0 -238
  294. package/docs/ja/internal_design.md +0 -333
  295. package/docs/ja/overview.md +0 -109
  296. package/docs/ja-translate/README.md +0 -188
  297. package/docs/ja-translate/cli_commands.md +0 -372
  298. package/docs/ja-translate/configuration.md +0 -193
  299. package/docs/ja-translate/internal_design.md +0 -325
  300. package/docs/ja-translate/overview.md +0 -148
  301. package/docs/overview.md +0 -144
  302. package/src/README.md +0 -201
  303. package/src/docs/commands/snapshot.js +0 -208
  304. package/src/presets/node-cli/templates/ja/commands.md +0 -2
  305. package/src/presets/node-cli/templates/ja/config.md +0 -2
  306. package/src/presets/node-cli/templates/ja/development.md +0 -2
  307. package/src/presets/node-cli/templates/ja/project_structure.md +0 -2
  308. package/src/presets/node-cli/templates/ja/stack_and_ops.md +0 -2
  309. package/src/presets/webapp/templates/ja/batch_and_shell.md +0 -43
  310. package/src/templates/skills/sdd-forge.flow-impl/SKILL.md +0 -103
  311. package/src/templates/skills/sdd-forge.flow-merge/SKILL.md +0 -142
  312. package/src/templates/skills/sdd-forge.flow-plan/SKILL.md +0 -176
package/README.md CHANGED
@@ -1,186 +1,136 @@
1
- # <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
1
+ # <!-- {{data("cli.project.name")}} -->sdd-forge<!-- {{/data}} -->
2
2
 
3
- <!-- {{data: docs.langSwitcher("absolute")}} -->
3
+ <!-- {{data("cli.docs.langSwitcher", {labels: "absolute"})}} -->
4
4
  **English** | [日本語](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/ja/README.md)
5
5
  <!-- {{/data}} -->
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/sdd-forge.svg)](https://www.npmjs.com/package/sdd-forge)
8
+ [![license](https://img.shields.io/npm/l/sdd-forge.svg)](https://opensource.org/licenses/MIT)
9
+ [![downloads](https://img.shields.io/npm/dm/sdd-forge.svg)](https://www.npmjs.com/package/sdd-forge)
8
10
 
9
- > **Alpha:** This tool is currently in alpha. APIs, command structure, and configuration formats may change without notice. Not recommended for production use.
11
+ > **Alpha:** APIs, command structure, and configuration formats may change without notice.
10
12
 
11
- **A CLI tool that generates documentation from programmatic source code analysis — based on facts, not AI guesswork.**
13
+ ## Spec-Driven Development Design, implement, and document in a single flow
12
14
 
13
- Mechanical gate checks and structured templates guarantee the reproducibility and accuracy that AI alone cannot deliver.
14
- The Spec-Driven Development (SDD) workflow keeps your documentation in sync as features are added or changed.
15
+ A spec-first development flow manager designed to work with AI coding agents.
15
16
 
16
- ## Why sdd-forge?
17
+ ## The SDD Flow
17
18
 
18
- Most AI documentation tools let AI "read" your code and write docs.
19
- sdd-forge is different.
19
+ Every feature goes through three phases, from spec to merge.
20
20
 
21
- - **Programmatic analysis** — A static analyzer parses controllers, models, routes, and configs instead of asking AI to read them. No hallucinations, no missed files
22
- - **Facts vs. generation** — `{{data}}` directives inject facts extracted mechanically from source code. `{{text}}` directives hold AI-generated explanations. What is trustworthy and what is inferred is structurally clear
23
- - **Mechanical gate checks** — Spec completeness is verified by program logic, not AI judgment. A quality gate you can rely on
24
- - **Structural stability** Directives define what goes where. AI cannot rearrange paragraphs or alter the document structure
25
-
26
- ## Features
27
-
28
- ### Analyze
29
-
30
- `scan` statically analyzes source code and produces `analysis.json`. A program — not AI — reads the structure.
31
-
32
- - Parses controllers, models, routes, and config files to extract structural data
33
- - `enrich` lets AI survey the whole picture and annotate each entry with role, summary, and chapter classification
34
- - Preset system adapts to various frameworks and project structures
21
+ ```
22
+ plan ─────── Specification
23
+ │ ├─ draft Refine requirements through dialogue
24
+ │ ├─ spec Create spec (feature branch + spec.md)
25
+ │ ├─ gate Spec validation + guardrail check
26
+ │ └─ test Review test plan → write test code
27
+
28
+ implement ── Implementation
29
+ │ ├─ code Write code after gate PASS
30
+ │ └─ review AI code review
31
+
32
+ merge ────── Wrap-up
33
+ ├─ docs Auto-update documentation
34
+ ├─ commit Commit changes
35
+ └─ merge Merge to base branch → cleanup
36
+ ```
35
37
 
36
- ### Generate
38
+ ### AI stays in its lane
37
39
 
38
- `{{data}}` injects facts, `{{text}}` injects AI explanations, both into templates. A single `build` command produces `docs/` and `README.md`.
40
+ Source code analysis, spec gate checks, and flow orchestration are all handled by deterministic commands. AI is not in charge of the flow — it assists with spec drafting, code review, and prose generation within well-defined boundaries.
39
41
 
40
- - Template inheritance4-layer override: base arch preset project-local
41
- - Multi-languagetranslate / generate modes for automatic localization
42
- - Zero dependenciesruns on Node.js 18+ only, no npm packages required
42
+ - **Spec gate**Programmatic validation of unresolved items and missing approvals. No PASS, no implementation
43
+ - **Guardrails**Project-specific design principles checked against each spec
44
+ - **Compaction resilience**Flow state and requirements are persisted, so you can resume after context compression
43
45
 
44
- ### Enforce
46
+ ## Automatic Doc Sync
45
47
 
46
- `gate` mechanically validates specs, `review` checks document quality. The SDD workflow keeps documentation fresh.
48
+ Source code is statically analyzed to extract file structure, classes, methods, configuration, and dependencies. The extracted data is injected into templates to produce structured documentation (`docs/`) and `README.md`.
47
49
 
48
- - gate detects unresolved items and missing approvals programmatically. Implementation blocked until PASS
49
- - review — AI checks alignment between docs and source code
50
- - AI agent integration — Claude Code (skills) and Codex CLI supported
50
+ Documentation is automatically refreshed during the merge phase, so docs and code never drift apart. With always-current docs, both humans and AI agents can understand the system without reading every source file.
51
51
 
52
52
  ## Quick Start
53
53
 
54
- ### Installation
54
+ ### Install
55
55
 
56
56
  <pre>
57
- # npm
58
- npm install -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
57
+ npm install -g <!-- {{data("cli.project.name")}} -->sdd-forge<!-- {{/data}} -->
58
+ </pre>
59
59
 
60
- # yarn
61
- yarn global add <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
60
+ ### Setup
62
61
 
63
- # pnpm
64
- pnpm add -g <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} -->
62
+ <pre>
63
+ <!-- {{data("cli.project.name")}} -->sdd-forge<!-- {{/data}} --> setup
65
64
  </pre>
66
65
 
67
- ### Setup & Generate
66
+ An interactive wizard configures your project type (preset) and AI agent.
68
67
 
69
- <pre>
70
- # 1. Register your project (interactive wizard)
71
- <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> setup
68
+ ### Generate docs for an existing project
72
69
 
73
- # 2. Generate all documentation (scan enrich init data text readme agents translate)
74
- <!-- {{data: project.name("")}} -->sdd-forge<!-- {{/data}} --> build
70
+ If you already have source code, generate documentation to get a complete picture of the system. Especially useful for onboarding onto legacy codebases.
71
+
72
+ <pre>
73
+ <!-- {{data("cli.project.name")}} -->sdd-forge<!-- {{/data}} --> docs build
75
74
  </pre>
76
75
 
77
- That's it `docs/` and `README.md` are generated.
76
+ ### Develop with the SDD flow
78
77
 
79
- ## Commands
78
+ **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — run each phase via skills:
80
79
 
81
- ### Documentation Generation
82
-
83
- | Command | Description |
80
+ | Skill | Phase |
84
81
  |---|---|
85
- | `setup` | Register project + generate config |
86
- | `build` | Run the full documentation pipeline |
87
- | `scan` | Analyze source code → `analysis.json` |
88
- | `init` | Initialize `docs/` from templates |
89
- | `data` | Resolve `{{data}}` directives with analysis data |
90
- | `text` | Resolve `{{text}}` directives with AI |
91
- | `readme` | Generate `README.md` from `docs/` |
92
- | `forge` | Iteratively improve docs with AI |
93
- | `review` | Check document quality |
94
- | `translate` | Translate docs (default language → others) |
95
- | `upgrade` | Update preset templates to latest version |
96
-
97
- ### SDD Workflow
82
+ | `/sdd-forge.flow-plan` | plan (specification) |
83
+ | `/sdd-forge.flow-impl` | implement (coding + review) |
84
+ | `/sdd-forge.flow-merge` | merge (wrap-up) |
98
85
 
99
- | Command | Description |
86
+ **[Codex CLI](https://github.com/openai/codex)** invoke via `$` prefix:
87
+
88
+ | Command | Phase |
100
89
  |---|---|
101
- | `spec` | Create spec + feature branch |
102
- | `gate` | Pre-implementation spec check |
103
- | `flow` | Run the SDD workflow automatically |
104
- | `changelog` | Generate change log from specs/ |
105
- | `agents` | Update AGENTS.md |
90
+ | `$sdd-forge flow start` | plan (start specification) |
91
+ | `$sdd-forge flow review` | implement (AI code review) |
92
+ | `$sdd-forge flow merge` | merge (wrap-up) |
106
93
 
107
- ### Other
94
+ ## Commands
108
95
 
109
96
  | Command | Description |
110
97
  |---|---|
98
+ | `setup` | Register project and generate config |
99
+ | `docs build` | Run the full documentation pipeline |
100
+ | `docs readme` | Generate `README.md` from `docs/` |
101
+ | `docs review` | Check documentation quality |
102
+ | `flow start` | Start the SDD flow |
103
+ | `flow status` | Show flow progress |
111
104
  | `presets` | List available presets |
112
- | `help` | Show command list |
113
-
114
- ## SDD Workflow
105
+ | `help` | Show all commands |
115
106
 
116
- Feature development flow:
117
-
118
- ```
119
- spec Create spec (feature branch + spec.md)
120
-
121
- gate Spec gate check ← verified by program (not AI)
122
-
123
- implement Code after gate PASS
124
-
125
- forge AI updates documentation
126
-
127
- review AI quality check (repeat until PASS)
128
- ```
129
-
130
- ### AI Agent Integration
131
-
132
- #### Claude Code
133
-
134
- Run SDD workflows via skills:
135
-
136
- ```
137
- /sdd-flow-start — create spec → gate → start implementation
138
- /sdd-flow-close — forge → review → commit → merge
139
- ```
140
-
141
- #### Codex CLI
142
-
143
- Run workflows from the `$` prompt:
144
-
145
- ```
146
- $sdd-flow-start — create spec → gate → start implementation
147
- $sdd-flow-close — forge → review → commit → merge
148
- ```
107
+ See `sdd-forge help` or the [command reference](docs/cli_commands.md) for the full list.
149
108
 
150
109
  ## Configuration
151
110
 
152
- `sdd-forge setup` generates `.sdd-forge/config.json`:
111
+ `setup` generates `.sdd-forge/config.json`:
153
112
 
154
113
  ```jsonc
155
114
  {
156
115
  "type": "cli/node-cli", // project type (preset selection)
157
- "lang": "en", // documentation language
116
+ "lang": "en", // operating language
158
117
  "defaultAgent": "claude", // AI agent
159
118
  "providers": { ... } // agent settings
160
119
  }
161
120
  ```
162
121
 
163
- ### Customization
164
-
165
- Add project-specific templates and data sources:
166
-
167
- ```
168
- .sdd-forge/
169
- ├── templates/{lang}/
170
- │ ├── docs/ ← chapter template & README overrides
171
- │ └── specs/ ← spec.md / qa.md templates
172
- └── data/ ← custom data source modules
173
- ```
122
+ See the [configuration reference](docs/configuration.md) for details.
174
123
 
175
124
  ## Documentation
176
125
 
177
- <!-- {{data: docs.chapters("Chapter|Summary")}} -->
126
+ <!-- {{data("cli.docs.chapters", {header: "", labels: "Chapter|Summary", ignoreError: true})}} -->
178
127
  | Chapter | Summary |
179
128
  | --- | --- |
180
- | [01. Tool Overview and Architecture](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/overview.md) | This chapter introduces sdd-forge, a CLI tool for Spec-Driven Development that automates technical documentation gene… |
181
- | [02. CLI Command Reference](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/cli_commands.md) | sdd-forge provides 20+ commands organized into four namespaces (`docs`, `spec`, `flow`, and standalone commands) thro… |
182
- | [03. Configuration and Customization](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/configuration.md) | sdd-forge is configured primarily through `.sdd-forge/config.json`, which controls output language, project type, doc… |
183
- | [04. Internal Design](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/internal_design.md) | This chapter describes the internal architecture of sdd-forge, covering its three-layer directory structure (`src/` →… |
129
+ | [Tool Overview and Architecture](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/overview.md) | sdd-forge is a CLI tool that automates technical documentation generation through source code analysis and provides a… |
130
+ | [Technology Stack and Operations](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/stack_and_ops.md) | sdd-forge is a CLI tool built entirely in JavaScript on Node.js, using ES modules with zero external dependencies. |
131
+ | [Project Structure](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/project_structure.md) | The project consists of 1 top-level source directory (src/) containing 157 files across 5 major areas: CLI entry poin… |
132
+ | [CLI Command Reference](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/cli_commands.md) | sdd-forge provides over 25 CLI commands organized into four namespaces docs (12 subcommands), spec (4 subcommands),… |
133
+ | [Configuration and Customization](https://github.com/SpreadWorks/sdd-forge/blob/main/docs/configuration.md) | sdd-forge uses two primary configuration files — .sdd-forge/config.json for project-specific settings and preset.json… |
184
134
  <!-- {{/data}} -->
185
135
 
186
136
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdd-forge",
3
- "version": "0.1.0-alpha.31",
3
+ "version": "0.1.0-alpha.361",
4
4
  "description": "Spec-Driven Development tooling for automated documentation generation",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "files": [
14
14
  "src/",
15
- "docs/"
15
+ "!src/presets/*/tests/"
16
16
  ],
17
17
  "engines": {
18
18
  "node": ">=18.0.0"
@@ -25,7 +25,10 @@
25
25
  "technical-docs"
26
26
  ],
27
27
  "scripts": {
28
- "test": "find tests -name '*.test.js' | xargs node --test"
28
+ "test": "node tests/run.js",
29
+ "test:unit": "node tests/run.js --scope unit",
30
+ "test:e2e": "node tests/run.js --scope e2e",
31
+ "test:acceptance": "node tests/acceptance/run.js"
29
32
  },
30
33
  "license": "MIT"
31
34
  }