xtarterize applies conformance configuration through discrete, independently applicable tasks. Each task detects whether it’s needed and only applies changes if necessary.
Task ID
Description
Applicable When
lint/biome
Install Biome + Ultracite , write biome.json extending Ultracite presets with framework-aware overrides
Non-Vite+ projects (no ESLint/Oxlint detected)
lint/oxlint
Install Oxlint + Ultracite, write oxlint.config.ts or .oxlintrc.json (legacy) extending Ultracite presets
Vite+ projects (no ESLint/Biome detected)
lint/oxfmt
Install Oxfmt + Ultracite, write oxfmt.config.ts or .oxfmtrc.json (legacy) extending Ultracite preset
Vite+ projects (no ESLint/Biome detected)
All three tasks install Ultracite automatically alongside the tool-specific dependency and generate configs that extend/import Ultracite presets. No separate ultracite init step needed.
When Tailwind CSS is detected, the generated biome.json includes:
"tailwindDirectives" : true
This enables Biome to parse Tailwind v4 directives like @theme without errors. See css.parser.tailwindDirectives in Biome’s configuration reference.
For projects using pnpm , CI workflows automatically include pnpm/action-setup@v4 with package_json_file before actions/setup-node@v6 . This ensures reproducible pnpm versions across runs. npm and yarn projects are unaffected.
Task ID
Description
Applicable When
quality/knip
Install Knip , write knip.json with framework-aware entry and project paths
Always (JSON format if no TypeScript)
quality/lint-staged
Install lint-staged , write .lintstagedrc.json running Biome on staged files
Non-Vite+ projects
Task ID
Description
Applicable When
codegen/plop
Install Plop , write plopfile.ts with framework-specific generators
Framework detected
Task ID
Description
Applicable When
monorepo/turbo
Install Turborepo , write turbo.json with pipeline for build/lint/test
Monorepo detected
When .vscode/extensions.json already exists, xtarterize adds its recommended extensions to your existing recommendations array rather than replacing them. Your custom extensions are always preserved.
Task ID
Description
Applicable When
agent/agents-md
Write AGENTS.md with project description and commands
Always
agent/skills-install
Install relevant agent skills via npx skills@latest add for your stack
TypeScript detected
The agent/skills-install task automatically installs agent skills from the open ecosystem based on your detected stack. It reads your existing skills-lock.json and local skill directories to avoid reinstalling already-present skills.
Stack
Skills Installed
Web Frontend (all browser/edge projects)
frontend-design, web-design-guidelines, baseline-ui, fixing-accessibility, fixing-metadata, fixing-motion-performance
React (including Next.js)
vercel-react-best-practices, vercel-composition-patterns, react-dev, react-useeffect
Next.js
next-best-practices, next-cache-components, next-upgrade
Vue
vue, vue-best-practices
Nuxt
nuxt
Expo / React Native
expo-tailwind-setup, expo-cicd-workflows, expo-deployment, expo-dev-client, building-native-ui, native-data-fetching, expo-module, upgrading-expo, vercel-react-native-skills
Shadcn UI
shadcn
Ultracite
ultracite
Vite
vite
Vitest
vitest
tsdown
tsdown
Turborepo
turborepo
Supabase / Postgres
supabase-postgres-best-practices
Drizzle
postgres-drizzle
Redis
redis-best-practices
Better Auth
better-auth-best-practices, create-auth-skill
AI SDK
ai-sdk
Remotion
remotion-best-practices
Task ID
Description
Applicable When
scripts/package-scripts
Patch package.json scripts with lint, format, typecheck, etc.
Always
scripts/npmrc
Write .npmrc with save-exact, strict-peer-dependencies, and auto-install-peers
Always
Each task implements check(), dryRun(), and apply():
check() — Returns new, patch, skip, or conflict based on current state
dryRun() — Returns exact diffs without writing anything
apply() — Writes changes, backing up files first
xtarterize doesn’t just check key names — it also detects when an equivalent value already exists under a different key. This prevents redundant entries:
Scenario
Existing
xtarterize Action
Script name alias
"type:check": "tsc --noEmit"
Skips adding "typecheck": "tsc --noEmit"
Config extends format
"extends": "config:base"
Treats same as "extends": ["config:base"]
VS Code extensions
["biomejs.biome"]
Adds "ms-vscode.vscode-typescript-next", keeps existing
If the exact same command, value, or configuration already exists somewhere, xtarterize skips adding a duplicate.
Tasks only run when their conditions are met:
Vite plugin tasks only run when bundler === 'vite'
Monorepo tasks only run when monorepo === true
CI tasks only run when hasGitHub === true
TypeScript tasks only run when typescript === true
Plop Documentation — Micro-generator framework (only for projects with a detected framework)
Learn how to contribute a new task →