The standalone CLI ships two built-in scaffold families only:
solverforge new <name> --standardsolverforge new <name> --list
Domain-specific examples such as employee scheduling and vehicle routing are intentionally out of scope for the built-in scaffold catalog. They belong in quickstarts.
For any generated frontend feature, ask first: does solverforge-ui already provide it?
If yes, the scaffold should use the shipped solverforge-ui surface instead of re-implementing it. In practice that means the generated apps should rely on:
solverforge_ui::routes()for/sf/*assetsSF.createBackend()andSF.createSolver()for solver lifecycleSF.createHeader(),SF.createStatusBar(),SF.createModal(),SF.createApiGuide(),SF.createFooter()SF.createTable()plus view-specific render glueSF.rail.*,SF.gantt.*, or optional modules only when the scaffold actually needs them
The scaffold may still own thin composition code for domain-specific projections that are not yet shipped as turnkey solverforge-ui views.
Both built-in scaffold families should generate:
Cargo.tomlwith publishedsolverforgeandsolverforge-uidependenciessrc/api/exposing the REST/SSE contract expected bysolverforge-uistatic/index.htmlloading/sf/sf.cssand/sf/sf.jsstatic/app.jscontaining only app composition and view-specific renderingstatic/sf-config.jsonas the preserved customization seam
sf-config.json remains the generated UI wiring file. CLI updates must preserve:
- unknown top-level keys
- unknown
viewshapes
The CLI may extend the config only for scaffold-owned rendering concerns. It should not duplicate configuration for behaviors already covered by solverforge-ui primitives.
default_template values should align with the problem-type surface:
"standard""list"