Codebase

Formatting and linting

Oxfmt owns formatting and Oxlint owns linting. ESLint and Prettier are deliberately absent — do not add them.

Oxfmt owns formatting and Oxlint owns linting. ESLint and Prettier are deliberately absent — do not add them.

Commands

aube run format          # format the repository with Oxfmt
aube run format:check    # verify formatting without writing
aube run lint            # type-aware Oxlint across the workspace
aube run lint:fix        # type-aware Oxlint across the workspace, applying fixes
aube run knip            # find unused files, exports, and dependencies
aube run lint:ci         # format:check + lint + knip, the CI gate
aube run typecheck       # TypeScript checks across the project graph
aube run check:repo      # community files and Agent Skills conventions

Use the smallest relevant check while iterating, then run the complete set before opening a pull request:

aube run check:repo
aube run lint:ci
aube run typecheck
aube test
aube run build

Tools

  • Oxfmt formats every source and markdown file, configured by tooling/oxc/.oxfmtrc.json. Avoid unrelated formatting churn in pull requests.
  • Oxlint runs with type-aware checks, configured by tooling/oxc/base.oxlintrc.json (shared rules) and extended per workspace scope by tooling/oxc/packages.oxlintrc.json (adds the node plugin) and tooling/oxc/apps.oxlintrc.json (adds the vue plugin); both extend the base and are referenced from each package's own lint/lint:fix scripts. The base config is extended with @e18e/eslint-plugin for modernization, module-replacement, and performance rules, plus the vendored anti-slop rules under tools/oxlint/anti-slop for low-evidence TypeScript patterns.
  • Knip detects unused files, exports, and dependencies; per-workspace entry points are declared in knip.jsonc.

Git hooks

aube install installs Git hooks through the prepare script (skipped in CI and production):

  • pre-commit runs nano-staged, which formats staged files with Oxfmt and re-stages them. If it fails, fix the reported error and commit again; formatting fixes are applied automatically.
  • commit-msg runs commitlint, which enforces Conventional Commit messages.

Conventional Commits

Use Conventional Commit-style messages and pull-request titles:

feat(cli): add machine-readable doctor output
fix(runner): reject paths outside the checkout
docs(contributing): document release verification
test(agent): cover failed verification transition
Copyright © 2026