Skip to content

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

This repository does not currently contain a cooud-stack generator package, so the CLI command is a preview contract until that package ships. Treat the generated command as a preview artifact; the stable artifacts today are 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.

json
{
"$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.

json
{
"$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"
]
}
}
}
}
}