Skip to content

feat: new — the scaffold front door (wraps create-rome-app) - #26

Merged
anil-rome merged 1 commit into
mainfrom
feat-new-scaffold
Jul 23, 2026
Merged

feat: new — the scaffold front door (wraps create-rome-app)#26
anil-rome merged 1 commit into
mainfrom
feat-new-scaffold

Conversation

@anil-rome

Copy link
Copy Markdown
Contributor

Adds rome new <app-name> [--chain <chain>] — the scaffold front door for the bring-your-idea path.

What it does

  1. Scaffolds by shelling out to the canonical create-rome-app (ORCHESTRATE per the SPEC — wrap, never rebuild).
  2. Pre-wires the chain — resolves --chain through the registry (default hadrian) and writes the app's .env with CHAIN_ID set (previously a hand-edit).
  3. Returns the lifecycle in the CLI's own commands: rome fundnpm run deploynpm run demorome verify.

Fails fast (name validation, unknown chain, existing target) before any npx spend.

Capability model

new is CLI-only (MCP never writes to disk) but keyless — it signs nothing. mkCap gains an explicit requiresKey override, and the actions invariant is tightened: the keyless set must equal exactly {new.new} (any other keyless action fails the suite).

Validation

  • Works-gate (live, end-to-end): rome new final-app --chain martius → scaffold via npx→main → CHAIN_ID=121214 in .env + .gitignore present → npm installgen-config resolves chain 121214 from the live registryvite build green.
  • Driving this gate surfaced and fixed two shipped create-rome-app bugs upstream (merged): fix: npx scaffolds copied nothing — filter on paths relative to template/ create-rome-app#3 (npx installs scaffolded nothing) + chore(release): v0.2.0 #4 (documented CHAIN_ID silently ignored).
  • 115 unit tests (+8: engine order, fail-fast validation, env projection incl. append-case, keyless capability + no-key handler run), typecheck/build/MCP smoke clean; new absent from MCP.

Docs

GUIDES "Start an app (rome new)" section + MCP actions blurb · ARCHITECTURE catalog row + file tree + actions banner.

Feature PR, no version bump — next tag pins it. Follow-up (recorded): pin the scaffolder ref once create-rome-app starts tagging.

rome new <app-name> [--chain <chain>]: shell out to the canonical
create-rome-app scaffolder, then add what it can't know — the chain,
resolved from the registry and pre-wired into the app's .env — and
return the lifecycle next-steps in the CLI's own commands (fund →
deploy → demo → verify). Validates name/chain and refuses an existing
target BEFORE any npx spend.

Keyless action: CLI-only (MCP never writes to disk) but requires no
signing key — mkCap gains an explicit requiresKey override, and the
actions invariant is TIGHTENED (the keyless set must equal exactly
{new.new}).

Works-gate (live): scaffold on martius → CHAIN_ID=121214 pre-wired →
npm install → gen-config resolves chain 121214 from the registry →
vite build green. Driving this gate surfaced + fixed two shipped
create-rome-app bugs upstream (#3 npx empty-scaffold, #4 CHAIN_ID
ignored). 115 unit tests; GUIDES "Start an app" + ARCHITECTURE rows.
@anil-rome
anil-rome merged commit fd50bf7 into main Jul 23, 2026
6 checks passed
anil-rome added a commit that referenced this pull request Jul 23, 2026
Pins the released surface to main. Since v0.8.0: rome new (#26) — wraps
create-rome-app with the chain pre-wired from the registry (its works-
gate also drove upstream fixes cra#3/#4). Bumps package.json and the
github install pins 0.8.0 -> 0.9.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant