Skip to content

Initialization

To apply conformance configuration to a project:

Terminal window
npx xtarterize@latest init
  1. Scan your project directory to detect framework, bundler, package manager, monorepo status, and existing configs
  2. Resolve which conformance tasks are applicable for your stack
  3. Check each task’s current status (new, patch, skip, or conflict)
  4. Display a conformance plan table showing what will change
  5. Prompt you to apply all, select specific tasks, dry-run, or quit
✦ 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] Quit
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
Preview
npx xtarterize@latest init --dry-run
Apply all
npx xtarterize@latest init --yes
Skip tasks
npx xtarterize@latest init --skip codegen/plop,agent/skills-install
Only specific
npx xtarterize@latest init --only lint/biome

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.

The init command applies all tasks that are applicable to your detected stack:

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.

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