Skip to content

Conformance Tasks

xtarterize applies configuration through discrete tasks. Each task detects whether it is needed and applies changes only when necessary. Use --only <task-id> or --skip <task-id> to select tasks.

In monorepos, tasks are filtered by scope: root tasks appear only at the monorepo root, and package tasks only inside workspace packages. See the monorepo guide.

Task What it does
lint/biome Install Biome and Ultracite, write biome.json
lint/oxlint Install Oxlint and Ultracite when Vite+ or an existing Oxlint config is detected; write oxlint.config.ts or update an existing oxlint.config.* (legacy .oxlintrc.json is detected but not rewritten)
lint/oxfmt Install Oxfmt and Ultracite when Vite+ or an existing Oxfmt config is detected; write oxfmt.config.ts (legacy .oxfmtrc.json is detected but not rewritten)
Task What it does
ts/strict Enable strict compiler options in tsconfig.json
ts/paths Add the @/* path alias to tsconfig.json, plus baseUrl outside Next.js
ts/incremental Enable incremental and tsBuildInfoFile
gitignore/tsbuildinfo Ignore *.tsbuildinfo in .gitignore
Task What it does
vite/checker Add vite-plugin-checker to vite.config.ts
vite/visualizer Add rollup-plugin-visualizer to vite.config.ts
Task What it does
ci/ci Write a GitHub Actions workflow for lint, typecheck, and test
ci/release Write a release workflow triggered by tags, or by branch/PR when Changesets is detected
ci/auto-update Write a weekly dependency update workflow
Task What it does
deps/renovate Write renovate.json
Task What it does
release/commitlint Write commitlint.config.ts; the git hook runs commitlint via dlx
release/czg Install czg and add a commit script
release/cat-version Install commit-and-tag-version and write .versionrc
release/git-hooks Install husky and wire the commit-msg, prepare-commit-msg, pre-commit, and pre-push hooks
release/versionrc Write .versionrc.json with changelog sections
Task What it does
quality/knip Write knip.config.ts; Knip is installed by scripts/package-scripts when it adds the knip script
quality/lint-staged Install lint-staged and write .lintstagedrc.json
quality/package-engines Add devEngines to package.json
Task What it does
codegen/plop Install Plop and write plopfile.ts with framework-specific generators
Task What it does
monorepo/turbo Install Turborepo and write turbo.json
workspace/pnpm-workspace Add workspace globs to pnpm-workspace.yaml
Task What it does
editor/vscode Write or merge .vscode/settings.json and .vscode/extensions.json
Task What it does
agent/agents-md Write AGENTS.md with project description and commands
agent/skills-install Install agent skills for the detected stack

The skills task selects skills using detected project capabilities. Web UI projects receive interface and motion guidance from emilkowalski/skills, jakubkrehel/skills, and addyosmani/agent-skills; Expo and React Native projects receive animate-expo, and Sonner projects receive ask-sonner. Test runner dependencies select testing skills, while API, auth, or database dependencies select security guidance from cloudflare/security-audit-skill and addyosmani/agent-skills. Detected Git, GitHub workflows, and agent instructions select matching development workflow skills. Engineering guidance from agustinusnathaniel/skills follows its signal: server-rendered frameworks select hydration-safe-state, routed web apps url-state, browser code using a backend-as-a-service or auth client client-trust-boundary, admin UI libraries admin-panel-engineering, payment or webhook SDKs webhook-integration, money, decimal, or time zone libraries calculation-correctness, CSV, spreadsheet, or IndexedDB libraries bulk-import-engineering, GitHub repositories github-actions-authoring, release tooling release-notes, and Expo or React Native mobile-app-shell. New candidates that require an explicit user request or an undetected tool are left for manual installation. Installing security-audit does not start an audit; that workflow still requires an explicit request.

In interactive runs, the skills task asks how to proceed: Install all installs every missing applicable skill, Choose… shows the missing skills grouped by category so individual skills can be picked (selecting a group header toggles the whole group), and Skip leaves the task out. Runs with --yes, JSON output, or without a terminal install all applicable skills.

Task What it does
scripts/package-scripts Add lint, check, fix, typecheck, and similar scripts to package.json
scripts/npmrc Write .npmrc with save-exact and peer dependency settings

All tasks are idempotent: a second run makes no changes. Each task reports one of new, patch, skip, or conflict.

Patches tsconfig.json with four options:

Option Purpose
strict Enable all strict type-checking options
noUnusedLocals Error on unused local variables
noUnusedParameters Error on unused function parameters
verbatimModuleSyntax Require import type for type-only imports

Each option is checked independently. An existing option with a different value is reported as a conflict instead of being overwritten, so intentional settings are never loosened. Use --skip ts/strict to leave this task out; the other TypeScript tasks still apply.

Writes or merges .vscode/settings.json and .vscode/extensions.json.

Base settings: Biome formats TS, JS, JSON, and JSONC, with format on save enabled and format on paste disabled; Biome fix and organize imports run as explicit code actions on save; non-relative import specifiers (@/ paths) with update imports on file move for TS and JS.

Detected tools add settings:

Detected Added
Monorepo typescript.tsdk from the workspace; search.exclude for node_modules, .turbo, dist
Vite files.associations maps .css to Tailwind CSS
Vue vue.server.hybridMode; Vue formatter
React Native typescript.tsserver.watchOptions for fs events
Next.js typescript.tsdk; Emmet JSX languages
TanStack Router files.exclude hides routeTree.gen.ts
Tailwind CSS CVA/CN class regex patterns for IntelliSense
TypeScript typescript.disableAutomaticTypeAcquisition; typescript.enablePromptUseWorkspaceTsdk

Extensions: recommends biomejs.biome and ms-vscode.vscode-typescript-next, plus framework-specific extensions for Tailwind CSS, Vue, or React Native. Existing recommendations are kept and merged, never removed.

Adds a devEngines field to package.json with the expected Node.js version and package manager, for example:

{
"devEngines": {
"runtime": { "name": "node", "version": ">=22" },
"packageManager": { "name": "pnpm", "version": ">=11" }
}
}

The Node version comes from .nvmrc, engines.node, or a default of 22 (written as >=22). packageManager.version defaults to >=11 for pnpm (the minimum pnpm/setup can install) and >=10 for npm, yarn, or bun, and uses an existing packageManager field when present. Existing devEngines values take precedence during the merge.

Ensures pnpm-workspace.yaml declares the workspace globs pnpm needs; in a single-package project it creates the file with only a comment placeholder:

packages:
- 'apps/*'
- 'packages/*'

When the file exists with a packages: list, only missing globs are inserted. Comments, other keys such as catalog: and overrides:, key order, indentation, quote style, and line endings stay untouched. A file without a packages: key is left alone. Layouts that cannot be edited safely, such as a flow-style packages: list missing a glob, are reported as a conflict. The task applies only when pnpm is the detected package manager.

Installs husky and wires four Git hooks:

Hook Action
commit-msg Run commitlint --edit on the commit message
prepare-commit-msg Run cz --hook when czg or commitizen is installed; otherwise a no-op
pre-commit Run lint-staged, or biome check --write when lint-staged is not installed
pre-push Run typecheck and test, or check:turbo in Turborepo projects

Hooks are written to .husky/. In Vite+ projects they go to .vite-hooks/ instead, and vp staged replaces the pre-commit hook without installing husky.

Writes .versionrc.json for commit-and-tag-version and compatible tools. The file maps conventional commit types to changelog sections and sets bumpFiles to package.json.

  • Visible: feat, fix, refactor, perf
  • Hidden: docs, style, test, chore, ci, build, revert

The separate release/cat-version task installs the commit-and-tag-version dependency and writes the legacy .versionrc file. Use both together, or versionrc alone if you install the tool yourself.

Learn how to contribute a task