Initialization
Initialize a Project
Section titled “Initialize a Project”To apply conformance configuration to a project:
npx xtarterize@latest initpnpm xtarterize@latest inityarn xtarterize@latest initbunx xtarterize@latest initdeno x xtarterize@latest initnlx xtarterize@latest init- Scan your project directory to detect framework, bundler, package manager, monorepo status, and existing configs
- Resolve which conformance tasks are applicable for your stack
- Check each task’s current status (
new,patch,skip, orconflict) - Display a conformance plan table showing what will change
- Prompt you to apply all, select specific tasks, dry-run, or quit
Example Output
Section titled “Example Output”✦ Scanning project...
Detected: Framework: React 18 Bundler: Vite 5 Package Manager: pnpm
Conformance plan:
✔ Biome (lint + format) lint/biome [new] ✔ vite-plugin-checker vite/checker [new] ~ tsconfig - incremental: true ts/incremental [patch] = Turbo monorepo/turbo [skip - no monorepo]
[A] Apply all [S] Select items [D] Dry-run [Q] QuitOptions
Section titled “Options”| Flag | Description |
|---|---|
--dry-run |
Preview all changes without applying anything |
--yes |
Skip all confirmations, apply all changes automatically |
--skip <task-id> |
Exclude a specific task (comma-separated) |
--only <task-id> |
Apply only a specific task (comma-separated) |
--quiet |
Suppress interactive prompts and verbose output |
Examples
Section titled “Examples”npx xtarterize@latest init --dry-runpnpm xtarterize@latest init --dry-runyarn xtarterize@latest init --dry-runbunx xtarterize@latest init --dry-rundeno x xtarterize@latest init --dry-runnlx xtarterize@latest init --dry-runnpx xtarterize@latest init --yespnpm xtarterize@latest init --yesyarn xtarterize@latest init --yesbunx xtarterize@latest init --yesdeno x xtarterize@latest init --yesnlx xtarterize@latest init --yesnpx xtarterize@latest init --skip codegen/plop,agent/skills-installpnpm xtarterize@latest init --skip codegen/plop,agent/skills-installyarn xtarterize@latest init --skip codegen/plop,agent/skills-installbunx xtarterize@latest init --skip codegen/plop,agent/skills-installdeno x xtarterize@latest init --skip codegen/plop,agent/skills-installnlx xtarterize@latest init --skip codegen/plop,agent/skills-installnpx xtarterize@latest init --only lint/biomepnpm xtarterize@latest init --only lint/biomeyarn xtarterize@latest init --only lint/biomebunx xtarterize@latest init --only lint/biomedeno x xtarterize@latest init --only lint/biomenlx xtarterize@latest init --only lint/biomeMonorepo projects
Section titled “Monorepo projects”When you run xtarterize init in a monorepo, the set of offered tasks
depends on where you run it:
-
At the monorepo root - You’ll see root-level tasks: CI/CD workflows, release tooling (commitlint, czg, git hooks), turbo configuration, editor settings, and root package scripts. Package-level tasks (Vite plugin configuration, tsconfig path aliases) are excluded.
-
Inside a workspace package - You’ll see package-level tasks: Vite plugin configuration, tsconfig path aliases, and other per-package tooling. Root-level tasks (CI/CD, release tooling, turbo) are excluded.
This ensures you always see tasks relevant to your current position in the monorepo, without being offered tasks that belong at a different level.
See the Monorepo guide for a complete reference of which tasks are scoped to which level.
What Gets Applied
Section titled “What Gets Applied”The init command applies all tasks that are applicable to your detected stack:
- Linting & Formatting - Biome (non-Vite+) or Oxlint + Oxfmt (Vite+), with Ultracite presets installed automatically and configs extended/imported from Ultracite
- TypeScript -
strict: true,pathsaliases,incremental: true+tsBuildInfoFile,.gitignore*.tsbuildinfoentries and.tsbuildinfo/directory - Vite Plugins -
vite-plugin-checker(checker()for TypeScript),rollup-plugin-visualizer - CI/CD - GitHub Actions workflows (
on.push.tagsfor release,schedule.cronfor auto-updates,on.pull_requestfor CI) withpnpm/action-setup@v4for pnpm projects - Dependencies - Renovate config (
extends: config:base,automerge) - Release - Commitlint (
@commitlint/config-conventional), czg (commitizen), commit-and-tag-version, simple-git-hooks (commit-msg, pre-commit, pre-push hooks) - Quality - Knip (
entry/projectdetection), lint-staged (runs linters on staged files, non-Vite+ projects) - Codegen - Plop (
plopfile.tsscaffolds, only for projects with a detected framework) - Monorepo - Turborepo (
turbo.jsonpipeline) - Editor - VS Code
settings.jsonandextensions.json(additive merging preserves your existing extensions) - Agent -
AGENTS.mdand install relevant agent skills vianpx skills@latest addfor your detected stack - Scripts -
package.jsonscripts(uses Ultracite-aware lint/check/fix scripts when Ultracite is in dependencies),.npmrcwithsave-exact,strict-peer-dependencies, andauto-install-peers
Ultracite
Section titled “Ultracite”Ultracite is installed automatically alongside any lint tool (Biome, Oxlint, or Oxfmt). The generated configs extend or import Ultracite presets by default - no separate ultracite init step needed.
xtarterize overlays its own conventions on top of Ultracite defaults where they differ (e.g., kebab-case filenames, single quotes, generic array types). You can further customize by editing the generated config files directly.
References
Section titled “References”- Biome Configuration - Full
biome.jsonreference - TypeScript tsconfig Reference - All compiler options explained
- Vite Plugin Checker - Type-checking during development
- GitHub Actions Documentation - Workflow syntax and features
- Renovate Configuration Options - Dependency automation reference
- Commitlint Rules - Conventional commit validation
- Knip Documentation - Finding unused files, dependencies, and exports
- Plop Documentation - Code scaffolding and generators
- Turborepo Documentation - Monorepo task orchestration
- Ultracite - Strict Biome preset for code quality
- Agent Skills - Open ecosystem of reusable AI agent capabilities
Init Flow
Section titled “Init Flow”sequenceDiagram
participant U as User
participant CLI as CLI
participant Core as @xtarterize/core
participant Tasks as @xtarterize/tasks
U->>CLI: xtarterize init
CLI->>Core: runPreflight()
Core-->>CLI: valid / errors
CLI->>Core: detectProject()
Core-->>CLI: ProjectProfile
CLI->>Tasks: getAllTasks()
CLI->>Core: resolveTasks(profile)
Core-->>CLI: Applicable tasks
CLI->>Core: resolveTaskStatuses()
Core-->>CLI: Status map
CLI->>U: Display plan
U->>CLI: Confirm
CLI->>Tasks: applyTasks()
Tasks-->>CLI: Result
CLI->>U: Summary