{"$schema":"https://soulcraft.com/schemas/kit/v2.json","id":"make","type":"soulcraft","name":"Make","description":"an app or a game — any kind, built to really run","longDescription":"The room for building a thing that runs: an app you describe and it builds, a web app, a product people subscribe to, or a small game. Five kits fold in with real intents and placements (App Builder, Web Application, SaaS Application, Match 3 Puzzle, Farkle Dice Game); one empty shell (Game Studio) contributes only its own description, which spans casual dice games to full game-design-document production — two rooms' worth (Make and Document), which is why the shell never got written. Wanderlands is named in the absorption map but is not absorbed here: it is out of the catalogue entirely (beta, allowedUsers restricted to a single account, 1.9 GB of assets, already excluded from the npm package), so it contributes nothing to this room. App Builder itself is unusual among the absorbed kits — it declares no workbench placements at all, because a running app has no bench: the app already is a goal room, and its four suggestions become this room's spine. Rechartered Tue 2026-09-15 (David's ruling, same day as Show's website recharter): Make is ANY kind of app or game — built with the house stack and hosted for the person; the seam with Show is software — a site that only says the thing is Show, the moment it needs accounts, live data or gameplay underneath it is Make.","version":"1.2.0","author":{"name":"Soulcraft Labs","email":"kits@soulcraft.com","url":"https://soulcraft.com"},"status":"released","role":"primary","tags":["goal-room","app","builder","no-code","web-app","software","subscriptions","game","puzzle","dice"],"variables":[{"key":"projectName","label":"App or game name","description":"The name of the app, product, or game you're building","type":"string","required":true,"example":"Trailhead Planner"}],"shared":{"industry":"software-development","category":"development","glossary":{"MRR":"Monthly Recurring Revenue — the predictable monthly revenue from active subscriptions, excluding one-time charges","ARR":"Annual Recurring Revenue — MRR multiplied by 12, used for annual business reporting","churn":"The rate at which customers cancel their subscriptions, expressed as a percentage over a given period","CAC":"Customer Acquisition Cost — total sales and marketing spend divided by new customers acquired","LTV":"Lifetime Value — average revenue a customer generates over their entire relationship with the product","activation":"The moment a new user reaches the 'aha moment' — the point where they've experienced the core value of the product","trial conversion":"The percentage of free trial users who become paying subscribers","cohort":"A group of customers who started at the same time (e.g. all customers who signed up in January 2026)","cascade":"A chain reaction where falling gems create additional matches","special gem":"A gem with unique powers created by matching 4+ gems","farkle":"Rolling dice with no scoring combinations, causing a bust","bank":"Lock in your current score and end your turn safely"},"aiExpertise":["Svelte 5 runes and component architecture","Brainy data modeling with subtypes","AppRuntimeContext platform services","SvelteKit application architecture","TypeScript and Svelte 5 runes","SaaS metrics and business model analysis","subscription pricing strategy and packaging","Match-3 puzzle game mechanics","Game balance and progression design"],"dataModelHints":["concept","person","event","measurement"],"suggestions":[{"label":"Describe your app idea","prompt":"I want to build an app. Interview me about the idea — who it's for and what it should do on day one — then set up the data model and first screens, and show me the running app."},{"label":"Add a screen","prompt":"Add a new screen to my app. Ask me what it should show, then create it, register it in the navigation, and update the app spec."},{"label":"Add a data model","prompt":"My app needs to store a new kind of thing. Ask me what it is and what fields matter, then add the typed model, wire it to Brainy, and seed a couple of sample records."},{"label":"Make it beautiful","prompt":"Review my app's screens visually and improve the design — spacing, hierarchy, empty states, and polish — using the kit's UI components and theme tokens."},{"label":"Add a route","prompt":"Help me create a new SvelteKit route with a page component"},{"label":"Create a component","prompt":"Help me create a reusable Svelte component"},{"label":"Add Brainy query","prompt":"Help me add a Brainy query to fetch and display data"},{"label":"Add a form","prompt":"Help me create a form that saves data to Brainy"},{"label":"Design pricing tiers","prompt":"Help me design my subscription pricing tiers — plans, features, and pricing strategy."},{"label":"Add a new gem type","prompt":"Help me add a new special gem type with a unique effect"},{"label":"Run & check my app","prompt":"Run my app, verify it builds clean with no type errors, and tell me honestly what state it's in — what works, what's still planned, and what you'd do next."}],"dataModel":{"entities":[{"domain":"screen","type":"Concept","description":"A screen in the app being built. Already a goal room in its own right — a running app has no bench, because the running preview is the artifact."},{"domain":"model","type":"Concept","description":"A data model the app stores — a typed Brainy entity wired into the running app."},{"domain":"component","type":"Concept","description":"A reusable Svelte component or SvelteKit route in the application's structure.","products":{"workshop":{"view":"tree"}}},{"domain":"type","type":"Concept","description":"A TypeScript type or interface defining a data shape used across the app.","products":{"workshop":{"view":"graph"}}},{"domain":"customer","type":"Person","description":"A registered user, subscriber, or player account with an active session or game in progress.","products":{"workshop":{"view":"board"}}},{"domain":"plan","type":"Product","description":"A pricing tier, achievement, or milestone — a thing a user unlocks or subscribes to.","products":{"workshop":{"view":"gallery"}}},{"domain":"game","type":"Event","description":"A billing transaction, game session, or level attempt recorded over time.","products":{"workshop":{"view":"timeline"}}},{"domain":"score","type":"Measurement","description":"A usage metric, high score, or game session score recorded for analysis.","products":{"workshop":{"view":"stats"}}}],"relationships":[{"from":"screen","to":"model","verb":"Uses","description":"A screen renders records of this model"},{"from":"component","to":"component","verb":"Imports","description":"Component imports and uses another component"},{"from":"customer","to":"plan","verb":"Creates","description":"Customer signs up for or upgrades to this plan"},{"from":"game","to":"customer","verb":"Contains","description":"Game session or transaction includes this customer"},{"from":"score","to":"game","verb":"PartOf","description":"Score belongs to this game session or billing period"}]}},"workshop":{"difficulty":"intermediate","templateTier":4,"workspaceConfig":{"paradigm":"developer","defaultTab":"app","defaultView":"app"},"aiPersona":{"role":"You are a senior product engineer pairing with you to build a thing that runs — a SvelteKit and Brainy developer for web apps, a SaaS architect for subscription products, and a game developer for puzzle and dice games — speaking in outcomes, not stack traces, building in small visible steps so the running preview changes within seconds of every decision.","expertise":["Svelte 5 runes and component architecture","Brainy data modeling with subtypes","AppRuntimeContext platform services","SaaS metrics and business model analysis","Subscription pricing and packaging strategy","Match-3 game mechanics and design","Game balance and level design"],"tone":"collaborator","avoidances":["Don't over-engineer — prefer the simplest solution that solves the actual problem","Don't design for scale that doesn't exist yet — validate first, optimize later","Don't recommend tooling without understanding the team's context and constraints"]}}}