better-t-stack
Skill5.9k starsChanged 4 months agoMITView on GitHub
Create or extend an end-to-end type-safe TypeScript project with Better-T-Stack (create-better-t-stack). Use when the user wants to start, scaffold or bootstrap an app, API, fullstack project or monorepo with any of Next.js, TanStack Router or Start, React Router, Nuxt, Svelte, Solid, Astro, React Native, Hono, Express, Fastify, Elysia, Convex, tRPC, oRPC, Drizzle, Prisma, Better Auth or Clerk. Also use when a project has a `bts.jsonc` file and the user wants to add addons or a workspace package. Prefer it over hand-writing package.json, configs and folder layout.
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 3 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Use the first one you have:
- Very specific: line 30
If the folder already has a bts.jsonc, the project exists.
- Distinctive: line 32
Settle the stack: If the user left out a major choice (frontend, backend or database), ask one short question or propose defaults and …
- Very specific: line 35
Plan before you write: Call bts_plan_project, or run create-json with "dryRun": true.
- Very specific: line 43
Prove it runs: Run <packageManager> install in the new folder.
- Very specific: line 52
Read
bts.jsoncfirst: If it's missing, add can't run. - Very specific: line 53
Plan: Call bts_plan_addons, or run add-json with "dryRun": true.
- Very specific: line 54
Apply: after the user agrees: bts_add_addons, or add-json without dryRun.
- Very specific: line 63
Never pass --yolo. It skips the compatibility checks.
- Distinctive: line 64
Don't infer addons or app surfaces from a template name or a styling preference.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Better-T-Stack
Better-T-Stack generates a type-safe TypeScript project from the parts the user picks: frontend, backend, runtime, API layer, database, ORM, auth, payments, addons and deploy targets. It rejects combinations that don't work, so let it build the project instead of writing the setup by hand.
Pick the interface
Use the first one you have:
| You have | Interface | It can |
bts_create_project tool | Local MCP server | Plan, create and add, on disk |
| A shell | CLI: create-json and add-json | Plan, create and add, on disk |
bts_get_create_command tool | Hosted MCP server, https://www.better-t-stack.dev/mcp | Plan and preview files, then return a command for the user to run |
| None of these | Stack Builder link | Prefill the visual builder for the user |
The hosted MCP server can't write files, can't change an existing project and doesn't accept addonOptions or dbSetupOptions. If the user needs any of those, give them the CLI command instead.
Create a project
If the folder already has a bts.jsonc, the project exists. Go to Change an existing project.
- Settle the stack. If the user left out a major choice (frontend, backend or database), ask one short question or propose defaults and confirm them. Don't add app surfaces, addons, examples or database provisioning the user didn't ask for.
- Get valid values from the tool, not from memory. Call
bts_get_schema, or runnpx create-better-t-stack@latest schema --name createInput. When the user has to choose, offer every valid option, not a subset. references/options.md lists the values and the compatibility rules that come up most, but the schema wins if they differ. - Build a full explicit config. Set every field. Use
"none",[],trueorfalseinstead of leaving a field out. - Plan before you write. Call
bts_plan_project, or runcreate-jsonwith"dryRun": true. If the plan fails, its error names the conflict. Fix the config and plan again. Show the user the planned stack and get a yes. Create.
- Local MCP server:
bts_create_projectwithinstall: false. - CLI: the same
create-jsonpayload withoutdryRun, withinstall: false. - Hosted MCP server:
bts_get_create_command. Give the user the command to run in a terminal and stop here.
Installs can outlast tool timeouts, so create with
install: falseand install as a separate step.- Local MCP server:
- Prove it runs. Run
<packageManager> installin the new folder. With the user's OK, run the project's typecheck or build script from itspackage.json. If a step fails, report the exact error. - Report. Give the stack and the next commands (
dev, database setup such asdb:push), taken from the generatedREADME.mdandpackage.json, not from memory.
references/cli.md has the full create-json payload, the flag form for a command the user pastes, and the Stack Builder URL keys.
Change an existing project
bts.jsonc at the project root records the stack chosen at creation and a reproducibleCommand that recreates it. The add command reads it to detect the stack.
- Read
bts.jsoncfirst. If it's missing,addcan't run. Tell the user instead of recreating the file. Never edit it by hand.addupdates it. - Plan. Call
bts_plan_addons, or runadd-jsonwith"dryRun": true. Passaddons, a workspacepackagename, or both. Show the user what will change. - Apply after the user agrees:
bts_add_addons, oradd-jsonwithoutdryRun. - Prove it runs and report, as in steps 6 and 7 above.
axiom can't be added later. It sets up deployment infrastructure, so it must be chosen at creation. A workspace package (package: "shared") scaffolds packages/shared with a manifest, the shared tsconfig and src/index.ts.
Rules
- Plan before every create or add.
- Send full explicit configs to MCP tools. Never send a partial payload.
- Never pass
--yolo. It skips the compatibility checks. - Don't infer addons or app surfaces from a template name or a styling preference.
Trending
More talk lately.about the whole repository
Who's talking about AmanVarshney01/create-better-t-stack
- @yug1224.com“必要な部分だけを選んで、TypeScriptプロジェクトを型安全に構築できるCLIツールらしい。最小構成で最新の依存関係を使えるのが良いかも。 yug1224 starred …”Bluesky · Sep 5, 2025 · 2 likes
- @technews4869.bsky.social“github.com/AmanVarshney01/... GitHub - AmanVarshney01/create-better-t-stack: A modern CLI tool for …”Bluesky · Sep 6, 2025 · 1 likes
- sudosubin/agents.nix“claude-code-plugins.github.amanvarshney01.create-better-t-stack: init at 3.49.0”GitHub · Oct 28, 2026
- sudosubin/agents.nix“claude-code-marketplaces.github.amanvarshney01.create-better-t-stack: init at 3.49.0”GitHub · Oct 28, 2026
- sudosubin/agents.nix“codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.48.0 → 3.49.0”GitHub · Oct 24, 2026
The biggest 5 of 39 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 39
Talked about on GitHub and Bluesky (39 times).
On GitHub · 37
- Oct 28, 2026claude-code-plugins.github.amanvarshney01.create-better-t-stack: init at 3.49.0 — sudosubin/agents.nix0 reactions
- Oct 28, 2026claude-code-marketplaces.github.amanvarshney01.create-better-t-stack: init at 3.49.0 — sudosubin/agents.nix0 reactions
- Oct 24, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.48.0 → 3.49.0 — sudosubin/agents.nix0 reactions
- Oct 24, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.48.0 → 3.49.0 — sudosubin/agents.nix0 reactions
- Oct 22, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.47.0 → 3.48.0 — sudosubin/agents.nix0 reactions
32 more on GitHub
- Oct 22, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.47.0 → 3.48.0 — sudosubin/agents.nix0 reactions
- Oct 16, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.46.1 → 3.47.0 — sudosubin/agents.nix0 reactions
- Oct 16, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.46.1 → 3.47.0 — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.46.0 → 3.46.1 — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.46.0 → 3.46.1 — sudosubin/agents.nix0 reactions
- Oct 14, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.45.0 → 3.46.0 — sudosubin/agents.nix0 reactions
- Oct 13, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.45.0 → 3.46.0 — sudosubin/agents.nix0 reactions
- Oct 13, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.44.3 → 3.45.0 — sudosubin/agents.nix0 reactions
- Oct 13, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.44.3 → 3.45.0 — sudosubin/agents.nix0 reactions
- Oct 6, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: 3.44.2 → 3.44.3 — sudosubin/agents.nix0 reactions
- Oct 6, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: 3.44.2 → 3.44.3 — sudosubin/agents.nix0 reactions
- Oct 4, 2026codex-plugins.github.amanvarshney01.create-better-t-stack: init at 3.44.2 — sudosubin/agents.nix0 reactions
- Oct 4, 2026codex-marketplaces.github.amanvarshney01.create-better-t-stack: init at 3.44.2 — sudosubin/agents.nix0 reactions
- Oct 1, 2026docs: run a Better-T-Stack monorepo (web + server) as TDK bring-your-own resources — flisk-sh/flisk0 reactions
- May 30, 2026chore(deps): bump the production-dependencies group across 1 directory with 5 updates — byldpartners/byld.cli0 reactions · 2 comments
- May 9, 2026chore(deps): bump the production-dependencies group across 1 directory with 4 updates — byldpartners/byld.cli0 reactions · 2 comments
- Apr 25, 2026chore(deps): bump the production-dependencies group across 1 directory with 3 updates — byldpartners/byld.cli0 reactions · 2 comments
- Apr 10, 2026@cloudflare/vite-plugin: HMR extremely slow (~30-40s) — SSR re-bundles virtual:cloudflare/worker-entry on every file change — cloudflare/workers-sdk0 reactions · 4 comments
- Mar 21, 2026chore(deps): bump the production-dependencies group with 5 updates — byldpartners/byld.cli0 reactions · 2 comments
- Mar 15, 2026fix: add react jsxImportSource pragma to email templates — Marve10s/Better-Fullstack0 reactions · 1 comment
- Mar 14, 2026chore(deps): bump the production-dependencies group with 5 updates — byldpartners/byld.cli0 reactions · 2 comments
- Feb 7, 2026chore(deps): bump the production-dependencies group across 1 directory with 4 updates — byldpartners/byld.cli0 reactions · 2 comments
- Jan 31, 2026chore(deps): bump the production-dependencies group across 1 directory with 3 updates — byldpartners/byld.cli0 reactions · 2 comments
- Jan 17, 2026chore(deps): bump the production-dependencies group across 1 directory with 2 updates — byldpartners/byld.cli0 reactions · 2 comments
- Jan 10, 2026chore(deps): bump create-better-t-stack from 3.13.2 to 3.14.2 in the production-dependencies group — byldpartners/byld.cli0 reactions · 2 comments
- Jan 3, 2026feat: added support for 'claude' hook integration and updated related tests — haydenbleasel/ultracite0 reactions · 3 comments
- Nov 25, 2025panic(main thread): Internal assertion failure — oven-sh/bun0 reactions · 1 comment
- Nov 12, 2025ERROR [Better Auth]: Failed to create user BSONVersionError: Unsupported BSON version, bson types must be from bson 6.x.x — nextauthjs/next-auth0 reactions · 2 comments
- Sep 28, 2025[breaking change] switch to esm + test on node 18 — mmkal/trpc-cli0 reactions · 2 comments
- Aug 24, 2025enhancement(types): end-to-end type safety — CedarCopilot/cedar-OS0 reactions
- Jun 25, 2025Bug: Localhost URL isn't clickable in Terminal (Ghostty) — vercel/turborepo0 reactions
- May 19, 2025Add create-better-t-stack to Best of JS — michaelrambeau/bestofjs0 reactions · 2 comments
On Bluesky · 2
- Sep 5, 2025必要な部分だけを選んで、TypeScriptプロジェクトを型安全に構築できるCLIツールらしい。最小構成で最新の依存関係を使えるのが良いかも。 yug1224 starred AmanVarshney01/create-better-t-stack… — @yug1224.com2 likes and reposts
- Sep 6, 2025github.com/AmanVarshney01/... GitHub - AmanVarshney01/create-better-t-stack: A modern CLI tool for scaffolding end-to-end type... — @technews4869.bsky.social1 likes and repost
In this repositoryOne other file it gives its agents.
- AGENTS.mdAGENTS.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

