Skip to content

Conformance Tasks

xtarterize applies conformance configuration through discrete, independently applicable tasks. Each task detects whether it’s needed and only applies changes if necessary.

Task IDDescriptionApplicable When
lint/biomeInstall Biome, write biome.json with framework-aware parser optionsAlways (TS/JS projects)

When Tailwind CSS is detected, the generated biome.json includes:

{
"css": {
"parser": {
"tailwindDirectives": true
}
}
}

This enables Biome to parse Tailwind v4 directives like @theme without errors. See css.parser.tailwindDirectives in Biome’s configuration reference.

Task IDDescriptionApplicable When
ts/strictPatch tsconfig.json with strict: true (skips if explicitly false)TypeScript detected
ts/pathsPatch tsconfig.json with baseUrl and paths aliases (@/*./src/*)TypeScript detected
ts/incrementalPatch tsconfig.json with incremental: true and tsBuildInfoFile: ".tsbuildinfo"TypeScript detected
gitignore/tsbuildinfoAdd *.tsbuildinfo and .tsbuildinfo/ to .gitignoreTypeScript detected
Task IDDescriptionApplicable When
vite/checkerInject vite-plugin-checker (checker()) into vite.config.ts via ASTBundler is Vite
vite/visualizerInject rollup-plugin-visualizer (visualizer()) into vite.config.ts via ASTBundler is Vite
Task IDDescriptionApplicable When
ci/releaseWrite .github/workflows/release.yml — triggers on push.tagsGitHub detected
ci/auto-updateWrite .github/workflows/auto-update.ymlschedule.cron for weekly dependency updatesGitHub detected
ci/ciWrite .github/workflows/ci.yml — lint, typecheck, test on pull_requestGitHub detected

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 IDDescriptionApplicable When
deps/renovateWrite renovate.json with extends: ["config:base"], automerge, and stabilityDays: 2Always
Task IDDescriptionApplicable When
release/commitlintInstall commitlint with @commitlint/config-conventional, write commitlint.config.tsGit detected
release/czgInstall czg (Commitizen adapter), add commit script to package.jsonAlways
release/cat-versionInstall commit-and-tag-version, write .versionrcAlways
release/git-hooksInstall simple-git-hooks, wire commit-msg hook to commitlint, add prepare scriptAlways
Task IDDescriptionApplicable When
quality/knipInstall Knip, write knip.json with framework-aware entry and project pathsAlways (JSON format if no TypeScript)
quality/lint-stagedInstall lint-staged, write .lintstagedrc.json running Biome on staged filesAlways
Task IDDescriptionApplicable When
codegen/plopInstall Plop, write plopfile.ts with framework-specific generatorsAlways
Task IDDescriptionApplicable When
monorepo/turboInstall Turborepo, write turbo.json with pipeline for build/lint/testMonorepo detected
Task IDDescriptionApplicable When
editor/editorconfigWrite .editorconfig with consistent indentation, charset, and line endingsAlways
editor/vscodeWrite/merge .vscode/settings.json and .vscode/extensions.jsonAlways

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 IDDescriptionApplicable When
agent/agents-mdWrite AGENTS.md with framework-specific AI agent instructionsAlways
agent/skillsScaffold .agents/skills/ directory with project contextTypeScript detected
agent/skills-installInstall relevant agent skills via npx skills@latest add for your stackTypeScript 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.

StackSkills 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.jsnext-best-practices, next-cache-components, next-upgrade
Vuevue, vue-best-practices
Nuxtnuxt
Expo / React Nativeexpo-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 UIshadcn
Ultraciteultracite
Vitevite
Vitestvitest
tsdowntsdown
Turborepoturborepo
Supabase / Postgressupabase-postgres-best-practices
Drizzlepostgres-drizzle
Redisredis-best-practices
Better Authbetter-auth-best-practices, create-auth-skill
AI SDKai-sdk
Remotionremotion-best-practices
Task IDDescriptionApplicable When
scripts/package-scriptsPatch package.json scripts with lint, format, typecheck, etc.Always
scripts/nvmrcWrite .nvmrc with lts/* to pin Node.js versionAlways
scripts/npmrcWrite .npmrc with save-exact, strict-peer-dependencies, and auto-install-peersAlways

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:

ScenarioExistingxtarterize 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
Learn how to contribute a new task →