---
title: "2026-08-27 Infrastructure TypeScript lint consistency audit"
description: "Audited Nx, Biome, Oxlint, Lefthook, and CI lint wiring across all TypeScript projects."
image: "https://docs.virdx.dev/img/virdx-social-card.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.virdx.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-08-27 Infrastructure TypeScript lint consistency audit

## Work Done

- Audited all seven TypeScript projects in the mono `chore/linters` worktree.
- Confirmed that current Nx lint runs Biome and Oxlint complexity for six projects, with the intentional Oxlint-only `apps/docs` exception for external/generated Astro content.
- Ran all seven TypeScript Nx lint targets without cache; all passed.
- Identified incomplete Nx cache inputs, missing Biome pre-commit coverage, mixed Biome `lint`/`check` semantics, and parse-error skipping.
- Reported exact findings and recommended a shared `typescriptLint` named input.

## Lessons Learned: Pitfalls

- A project being selected by `nx affected` does not prove its lint cache key includes every file that the lint command reads.
- Root linter configuration files must be explicit Nx inputs for `nx affected` and cache invalidation to work reliably.
- The branch's committed dashboard lint script omitted Biome; the current worktree fixed it with an uncommitted edit.

## Lessons Learned: Improvements

- Document the intended TypeScript lint contract: Biome plus Oxlint for normal projects, and Oxlint only for generated/external docs.
- Provide one shared Nx lint input that covers project lint files and both root linter configs.
- State whether Biome formatting and assist checks belong in the lint target or a separate CI format-check target.

Source: https://docs.virdx.dev/knowledge/inbox/2026-08-27-infrastructure-typescript-lint-consistency-audit/index.mdx
