Use when bootstrapping a new multistakeholder pod-data walkthrough with npx create-solid-demo — choosing flags, editing the generated walkthrough.json, seeding the demo persona, wiring the banned-marks insignia roster, resolving the @jeswr framework deps before their npm publish, or deploying the generated monorepo to Vercel.
Recursos
7Instal·la
npx skillscat add jeswr/solid-sdk/create-solid-demo Instal·la des del registre de SkillsCat.
Bootstrap a walkthrough with create-solid-demo
The scaffolder is domain-generic: your flags carry the ONLY domain content, and
they all land in apps/tour/content/walkthrough.json — the single edit surface.
1. Scaffold
npx create-solid-demo my-demo \
--use-case <slug> --convener "<org>" \
--negation "<full-sentence offer negation>" \
--app <slug>:"<Name>":"<role>" [--app …] \
--modelled-on <slug>="<Organisation>"- The FIRST
--appis the data subject's own custodian seat (ecosystem centre). - App slugs become paths, package names, and zone env vars — pick role-derived,
neutral slugs, never organisation marks (R4). --no-installskipspnpm install;--seedruns the persona seed after
install (needs the seed target env vars).- Until the @jeswr framework packages are on npm,
pnpm installneedspnpm.overridesfile:/git pins for them — the generateddocs/deploy.md § Framework dependency statusshows the exact shape.
2. Edit walkthrough.json
Everything renders from the document: site copy, anchors, registry (apps,
themes, honesty, launcher, zone envs), chapters, optional compliance lens.
After every edit run the gates — pnpm test (the tour's walkthrough test runsparseWalkthrough + editorialFindings). Rules that bite:
- Chapter scenes contiguous from 1; every
tryLive.appa registry key; word
budgets 40 (lead) / 65 (step); ≥2 steps per chapter. persona.descriptormust self-identify as fictional/simulated.branding.bannedMarksstarts EMPTY — add your domain's never-render marks
({"pattern": "\\bMARK\\b", "reason": "…"});pnpm check:insigniathen
scans the whole tree. The framework ships no roster.- Anchors need public, dereferenceable source URLs —
pnpm lint:iris
HEAD-checks them (7-day cache). Add none you cannot cite.
3. Seed
seeds/persona.ts must stay in sync with walkthrough.persona. Configure<PREFIX>_SEED_POD_URL + <PREFIX>_SEED_WEBID (an existing dev-server
account), then pnpm run seed — deterministic, ensure-mode, safe to re-run.
Extend seeds/seed.config.ts + packages/data-model/shapes/ as the walkthrough
grows; keep shape identities in real namespaces or urn:example:.
4. Deploy
Read the generated docs/deploy.md FIRST. Non-negotiables: one Vercel project
per app with rootDirectory=apps/<slug> and CLEARED project-level build
overrides; zone-URL vars on the shell project (build-time);<PREFIX>_TRUST_FORWARDED_HEADERS=1 plus the issuer/origin allowlists on every
pod-route app (the rail fails closed while unset); preview-SSO or the
interstitial, never neither; neutral slugs.
Working on the scaffolder itself
template/ is the source of truth for generated files; per-app files live undertemplate/apps/__app__ with __CSD_*__ tokens. Dotfiles ship as rename shims
(npmrc, gitignore, env.example, github/) — never add a literal dotfile
to the template (npm pack strips it; scripts/build.mjs fails the build).
The bin ships COMPILED (dist/bin.mjs, esbuild) via the EXPLICIT build
script — never move it into a prepack hook (ignore-scripts=true would dropdist/ from the tarball). Keep the domain-generic grep gate green: no use-case
term anywhere, fixtures stay fictional. Slow verify: RUN_SLOW=1 pnpm test.