Stack Builder
Compose a stack, then export the truth
The Stack Builder lets you choose web, backend, runtime, data, auth, UI, AI, MCP, deploy, and tooling layers with live compatibility checks.
Stable
KICKOFF.md and stack.json.What it produces
Every artifact is derived from the same resolved stack, so docs, setup intent, and agent instructions stay aligned.
Preview command
A deterministic command contract generated from the resolved stack.
KICKOFF.md
An agent briefing that records the mission, stack truth, repo map, commands, guardrails, and definition of done.
stack.json
A machine-readable snapshot that pins the schema version, sanitized name, generator, and resolved category selections.
Generator truth
The builder currently emits a command for the intended generator package, but this repository only contains the UI, token, theme, and registry CLI packages.
Package: cooud-stack
Repo status: generator package is not present
User-facing status: Stable
stack.json fields
The snapshot schema is intentionally small: root metadata plus resolved category values.
$schema
Pins the snapshot to the current Stack Builder schema.
version
Version number for migrations when the snapshot contract changes.
name
Sanitized project slug used by the preview command and kickoff docs.
generator
Always cooud-stack-builder for artifacts emitted by this builder.
stack
Resolved category selections after all requires, conflicts, and defaults apply.
Example snapshot
This mirrors the shape emitted by the builder output panel.
{"$schema": "https://cooud.dev/schema/stack-1.json","version": 1,"name": "my-cooud-app","generator": "cooud-stack-builder","stack": {"web": "web-next","backend": "backend-none","runtime": "runtime-bun","api": "api-none","database": "db-none","orm": "orm-none","dbSetup": "dbsetup-basic","auth": "auth-none","payments": "pay-none","ui": "ui-cooud","assistants": ["ai-claude-code"],"mcp": [],"skills": [],"vibe": false,"deploy": "deploy-none","packageManager": "pm-bun","addons": [],"git": true,"install": true}}
Schema artifact
The schema lives in source so docs and future generator validation can share one contract.
{"$schema": "https://json-schema.org/draft/2020-12/schema","$id": "https://cooud.dev/schema/stack-1.json","title": "Cooud Stack Builder snapshot","description": "A machine-readable snapshot emitted by the Cooud Stack Builder.","type": "object","additionalProperties": false,"required": ["$schema","version","name","generator","stack"],"properties": {"$schema": {"const": "https://cooud.dev/schema/stack-1.json","description": "Schema identifier for this Stack Builder snapshot."},"version": {"const": 1,"description": "Schema version for the emitted stack.json file."},"name": {"type": "string","pattern": "^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$","description": "Sanitized project slug."},"generator": {"const": "cooud-stack-builder","description": "The product surface that emitted this snapshot."},"stack": {"type": "object","additionalProperties": false,"required": ["web","backend","runtime","api","database","orm","dbSetup","auth","payments","ui","assistants","mcp","skills","vibe","deploy","packageManager","addons","git","install","naming","structure","importAlias","commitStyle","tsStrict"],"properties": {"web": {"type": "string","description": "The web client framework.","enum": ["web-none","web-next","web-tanstack-start","web-tanstack-router","web-react-router","web-nuxt","web-svelte","web-solid","web-astro"]},"backend": {"type": "string","description": "The server framework that hosts your API.","enum": ["backend-none","backend-fullstack-next","backend-fullstack-tanstack","backend-hono","backend-elysia","backend-express","backend-fastify","backend-convex"]},"runtime": {"type": "string","description": "Where the server code executes.","enum": ["runtime-bun","runtime-node","runtime-cloudflare","runtime-none"]},"api": {"type": "string","description": "Type-safe client/server contract.","enum": ["api-none","api-trpc","api-orpc"]},"database": {"type": "string","description": "Your primary data store.","enum": ["db-none","db-sqlite","db-postgres","db-mysql","db-mongodb"]},"orm": {"type": "string","description": "How you talk to the database.","enum": ["orm-none","orm-drizzle","orm-prisma","orm-mongoose"]},"dbSetup": {"type": "string","description": "Hosted provider / local setup for the database.","enum": ["dbsetup-basic","dbsetup-turso","dbsetup-neon","dbsetup-supabase","dbsetup-planetscale","dbsetup-d1","dbsetup-atlas"]},"auth": {"type": "string","description": "Authentication strategy.","enum": ["auth-none","auth-better-auth","auth-clerk"]},"payments": {"type": "string","description": "Billing & monetization.","enum": ["pay-none","pay-polar","pay-stripe"]},"ui": {"type": "string","description": "Component system for the frontend.","enum": ["ui-cooud","ui-shadcn","ui-heroui","ui-aceternity","ui-tailwind","ui-none"]},"assistants": {"type": "array","description": "Coding agents wired into the repo.","uniqueItems": true,"items": {"type": "string","enum": ["ai-claude-code","ai-cursor","ai-windsurf","ai-copilot","ai-cline"]}},"mcp": {"type": "array","description": "Model Context Protocol servers available to agents.","uniqueItems": true,"items": {"type": "string","enum": ["mcp-cooud-ui","mcp-postgres","mcp-playwright","mcp-github","mcp-sentry"]}},"skills": {"type": "array","description": "Reusable agent skill packs to install.","uniqueItems": true,"items": {"type": "string","enum": ["skill-frontend","skill-db","skill-security-review","skill-a11y","skill-testing"]}},"vibe": {"type": "boolean","description": "Looser guardrails, faster iteration for prototyping."},"deploy": {"type": "string","description": "Where the app ships.","enum": ["deploy-none","deploy-vercel","deploy-cloudflare","deploy-docker","deploy-fly"]},"packageManager": {"type": "string","description": "Dependency & workspace tool.","enum": ["pm-bun","pm-pnpm","pm-npm"]},"addons": {"type": "array","description": "Optional tooling & capabilities.","uniqueItems": true,"items": {"type": "string","enum": ["addon-pwa","addon-tauri","addon-biome","addon-turborepo","addon-husky","addon-starlight"]}},"git": {"type": "boolean","description": "Initialize a git repository."},"install": {"type": "boolean","description": "Run the package manager install after scaffolding."},"naming": {"type": "string","description": "How files and folders are cased.","enum": ["naming-kebab","naming-camel","naming-pascal","naming-snake"]},"structure": {"type": "string","description": "Where application code lives.","enum": ["structure-src","structure-root"]},"importAlias": {"type": "string","description": "How modules reference each other.","enum": ["import-alias","import-relative"]},"commitStyle": {"type": "string","description": "Commit message convention.","enum": ["commit-conventional","commit-plain"]},"tsStrict": {"type": "string","description": "Type-checking strictness.","enum": ["ts-strict","ts-standard"]}}}}}