Tooling

Shared tooling packages used across the entire monorepo

Introduction

The tooling/ directory contains shared configuration packages used across the entire monorepo. These packages ensure consistency in code style, type checking, formatting, spellcheck, and other development workflows.

All tooling packages are scoped under @repo/* and are consumed by apps and packages via workspace dependencies.

Package overview

Development workflow

Adding a new tooling package

Generate the package using turbo gen:

pnpm turbo gen init

Enter the package name (e.g., my-tool). This creates it in packages/.

Move the package to the tooling/ directory:

mv packages/my-tool tooling/my-tool

Update the package if needed. Tooling packages typically:

  • Export configuration files (not code)
  • May not need a src/ directory
  • Should have appropriate exports in package.json

Run pnpm install to link the workspace package.

Checks

After modifying any tooling package, run the relevant checks:

  • ESLint changes: pnpm lint
  • Prettier changes: pnpm format
  • TypeScript changes: pnpm typecheck
  • Spellcheck changes: pnpm check:spelling
  • Tailwind changes: Test in the docs app, verify theme tokens, and check PostCSS processing

Best practices

  • Keep tooling packages focused: Each package should have a single responsibility
  • Version compatibility: Tooling packages should work together harmoniously
  • Documentation: Update this page when adding new tooling or changing behavior
  • Breaking changes: Coordinate breaking changes across the monorepo
  • Testing: Always test tooling changes in consuming apps before committing

Troubleshooting

Last updated on