Journey
Fresh CommandBox user follows the package's own README: empty dir → box install wheels-base-template → box server start.
Repro
mkdir myapp && cd myapp
box install wheels-base-template # installs 4.0.3 + wheels-core 4.0.3 into vendor/wheels (good)
box server start
Expected
Server starts on a default engine; app boots to the welcome page.
Actual
Contacting ForgeBox to determine the latest & greatest version of [|cfmlEngine| stable]...
ERROR: Invalid slug detected. Slugs can only contain letters, numbers, underscores, and hyphens.
The shipped files contain literal legacy-CLI placeholders that nothing on this install path substitutes:
server.json: "name":"|appName|", "cfengine":"|cfmlEngine|"
config/settings.cfm: set(dataSourceName="|datasourceName|"), set(coreTestDataSourceName="|datasourceName|"), set(reloadPassword="|reloadPassword|")
config/app.cfm: this.name = "|appName|"
The package README documents box install wheels-base-template in an empty directory as the canonical install and never mentions editing these. After hand-replacing all 5 placeholders (cfengine=lucee) the app boots fine on Lucee 7.0.4.34 and renders the 4.0 welcome page.
Root cause
tools/build/scripts/prepare-base.sh copies tools/build/base/{server.json,box.json,config/app.cfm,config/settings.cfm} verbatim into the package. The |x| tokens were only ever substituted by the retired CommandBox cfwheels-cli (wheels create app) flow; the direct-install path the README sells is left with raw tokens.
Suggested fix
Ship working defaults instead of placeholders: cfengine pinned to the supported default (e.g. lucee@7), app/datasource name defaulting to the folder-name convention the settings comment already describes (just leave those set() lines commented out), and reloadPassword from env like the LuCLI template (set(reloadPassword=env("WHEELS_RELOAD_PASSWORD",""))). Alternatively a postInstall script could prompt/substitute, but inert defaults are simpler and match wheels new behavior.
Ancillary: the box.json postInstall script references env.example, which is not in the package (.env ships pre-made instead) — dead reference worth cleaning while in here.
Evidence from audit journey j1-template-install (CommandBox 6.3.3 docker, wheels-base-template 4.0.3, 2026-06-12).
Journey
Fresh CommandBox user follows the package's own README: empty dir →
box install wheels-base-template→box server start.Repro
Expected
Server starts on a default engine; app boots to the welcome page.
Actual
The shipped files contain literal legacy-CLI placeholders that nothing on this install path substitutes:
server.json:"name":"|appName|","cfengine":"|cfmlEngine|"config/settings.cfm:set(dataSourceName="|datasourceName|"),set(coreTestDataSourceName="|datasourceName|"),set(reloadPassword="|reloadPassword|")config/app.cfm:this.name = "|appName|"The package README documents
box install wheels-base-templatein an empty directory as the canonical install and never mentions editing these. After hand-replacing all 5 placeholders (cfengine=lucee) the app boots fine on Lucee 7.0.4.34 and renders the 4.0 welcome page.Root cause
tools/build/scripts/prepare-base.shcopiestools/build/base/{server.json,box.json,config/app.cfm,config/settings.cfm}verbatim into the package. The|x|tokens were only ever substituted by the retired CommandBoxcfwheels-cli(wheels create app) flow; the direct-install path the README sells is left with raw tokens.Suggested fix
Ship working defaults instead of placeholders:
cfenginepinned to the supported default (e.g.lucee@7), app/datasource name defaulting to the folder-name convention the settings comment already describes (just leave thoseset()lines commented out), and reloadPassword from env like the LuCLI template (set(reloadPassword=env("WHEELS_RELOAD_PASSWORD",""))). Alternatively a postInstall script could prompt/substitute, but inert defaults are simpler and matchwheels newbehavior.Ancillary: the box.json postInstall script references
env.example, which is not in the package (.envships pre-made instead) — dead reference worth cleaning while in here.Evidence from audit journey j1-template-install (CommandBox 6.3.3 docker, wheels-base-template 4.0.3, 2026-06-12).