Overview
xtarterize is a CLI tool that detects your JavaScript/TypeScript project stack automatically, then applies curated production-grade configurations for linting, type checking, CI workflows, code generation, editor settings, and more — all without destructively overwriting your existing setup.
Run npx xtarterize init and your project gets Biome, TypeScript incremental builds, Renovate, commitlint, VS Code settings, GitHub Actions, and more — tailored to your specific stack.
Why I Built This
I found myself repeatedly copying configuration files between projects — ESLint configs, Prettier setups, GitHub Actions workflows, TypeScript settings. Each new project required the same boilerplate setup, and keeping all those configs in sync across dozens of repos was unmaintainable.
Rather than maintaining templates that quickly go stale, I wanted a tool that could inspect any existing project and apply the right configurations dynamically. xtarterize solves this by detecting your stack and applying only what you need.
Key Features
Stack Detection
Reads package.json, lockfiles, and existing config files to build a ProjectProfile. Supports React, React Native, Vue, Svelte, Solid, Node.js, Vite, Next.js, Expo, TanStack Start, Tailwind, and more.
Non-Destructive Application
All configurations are applied using deep merge and AST patching. Existing content is preserved, and every modified file is backed up to .xtarterize/backups/.
Dry-Run First
Always see exactly what will change before applying anything. No surprises.
Idempotent
Running xtarterize init twice changes nothing on the second run. Safe to run in CI or on cron.
Task Categories
Covers linting (Biome), TypeScript (incremental builds, strict mode), CI/CD (GitHub Actions), dependencies (Renovate), release (commitlint, czg), quality (Knip), codegen (Plop), monorepo (Turborepo), editor settings, and AI agent configs (AGENTS.md).
Build Notes
Monorepo Architecture
Built as a pnpm workspace monorepo with three core packages: @xtarterize/core for detection and task interface, @xtarterize/patchers for config file manipulation, and @xtarterize/tasks for all task implementations. The CLI itself lives in apps/cli using citty and @clack/prompts.
Real Templates from Production
Every configuration template is derived from actual production projects, not theoretical examples. This ensures the configs work in real-world scenarios with real dependency versions.
Modular Task System
Each task implements a simple interface: applicable(profile), check(cwd, profile), dryRun(cwd, profile), and apply(cwd, profile). Adding new tasks is straightforward — implement the interface and export it.