Start conformant.Stay conformant.
One strict baseline for every JavaScript and TypeScript repo: Biome, strict TypeScript, Git hooks, CI, and editor settings. Start new projects on it, bring existing ones up to it, and approve every change before it's written.
pnpm create xtarter-app@latestpnpx xtarterize@latest checkpnpx xtarterize@latest init --dry-runTwo ways to get conformant
A new project and a five-year-old repo end up on the same baseline, so every project you open is set up the same way.
New projectcreate-xtarter-app
Pick one of four templates. The baseline is in place before your first commit.
pnpm create xtarter-app@latestExisting repoxtarterize
Audit your configs, preview the plan, and apply only what you approve. Originals are backed up first.
pnpx xtarterize@latest initWhat lands in your repo
A dry run on a fresh Vite + React app plans 20 tasks across 25 files. Each one settles a question your team would otherwise argue about in review.
biome.json(new file)Lint and format rules from the Ultracite preset+125 -0tsconfig.json(modified)Incremental builds on top of your strict settings+3 -1vite.config.ts(modified)Type and lint errors in the dev overlay, bundle visualizer+5 -1package.json(modified)Standard scripts and devEngines+21 -1.husky/pre-commit(new file)Checks staged files before every commit+1 -0commitlint.config.ts(new file)Conventional Commits, enforced on every commit+15 -0knip.config.ts(new file)Finds unused files, exports, and dependencies+8 -0.vscode/settings.json(new file)Format and fix on save with Biome+42 -0AGENTS.md(new file)Project rules for AI coding agents+12 -0
…and 16 more files+424 -3 across 25 files
Nothing is written until you approve it
Preview the whole plan
init --dry-run prints every task and per-file diff without writing any config files.
You approve every write
init asks before it applies, and conflicts surface instead of overwriting your configs.
Backups before every change
Originals are copied to .xtarterize/backups/ first, and undo restores the last run.
Stay conformant
Configs drift as tools upgrade and teammates come and go. Catch it before it merges, then pull the repo back to the baseline.
Fail the build on drift
check exits non-zero when a repo falls out of conformance, so a CI step fails the pull request that introduced the drift.
Bring it back with sync
sync offers only the tasks that drifted, with the same dry run, approval, and undo as init.
Only what drifted changes
Tasks that already conform are skipped, so a run touches only the files that fell out of line.
Four templates that start conformant
Next.js or Vite with React, styled with Chakra UI or Tailwind CSS. Each one ships Biome, strict TypeScript, Git hooks, GitHub Actions workflows, VS Code settings, and agent skills before your first commit.
| Template | Stack | Flag |
|---|---|---|
| Next.js + Chakra UINext.js 16 prewired with Chakra UI v3, Biome, Playwright, and Turborepo. | Next.js 16, Chakra UI v3, Biome, Turborepo | -t next-chakra |
| Next.js + TailwindNext.js 16 with Tailwind CSS v4 and Biome, tuned for fast iteration. | Next.js 16, Tailwind CSS v4, Biome | -t next-tailwind |
| Vite + React + ChakraVite+ and React 19 on TanStack Router, styled with Chakra UI v3, tested with Vitest. | Vite+ (Vite 8), React 19, Chakra UI v3, TanStack Router | -t vite-chakra |
| Vite + React + TailwindVite+ and React 19 with Tailwind CSS v4 and TanStack Query caching built in. | Vite+ (Vite 8), React 19, Tailwind CSS v4, TanStack Router | -t vite-tailwind |
Pass the flag to skip the template prompt, or browse all source repositories on GitHub.
How conformant is your repo?
check scores your repo against the baseline and changes nothing. Use npx, yarn dlx, or bunx if you prefer.
pnpx xtarterize@latest check