refactor: remove ESLint and port all lint rules to oxlint (1 of 4)#1559
Merged
jeanduplessis merged 6 commits intomainfrom Mar 26, 2026
Merged
refactor: remove ESLint and port all lint rules to oxlint (1 of 4)#1559jeanduplessis merged 6 commits intomainfrom
jeanduplessis merged 6 commits intomainfrom
Conversation
This was referenced Mar 25, 2026
Contributor
Code Review SummaryStatus: 1 Issue Found | Recommendation: Address before merge Overview
Fix these issues in Kilo Cloud Issue Details (click to expand)CRITICALNone. WARNINGNone. SUGGESTIONNone. Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (1 files)
Reviewed by gpt-5.4-20260305 · 254,007 tokens |
ESLint was causing slowdowns in the pre-push hook for some team members. This replaces it entirely with oxlint, which runs 50-100x faster. - Delete 25 eslint config files, packages/eslint-config, eslint.fallback.config.mjs - Port drizzle enforce-delete/update-with-where rules to a custom oxlint JS plugin - Port type-aware TS rules (no-unsafe-*, await-thenable, etc.) to workspace overrides - Create kilo-app/.oxlintrc.json with react-native jsPlugin, import, promise, unicorn - Simplify pre-push hook from 4 parallel jobs to 3 (lint is now fast enough) - Remove 13 ESLint npm packages, add oxlint-plugin-react-native - Fix pre-existing unused imports in cloudflare-gastown exposed by migration - Update AGENTS.md files and knip.json to reflect new tooling
… caching - Remove lint:oxlint indirection, simplify per-package lint to direct oxlint call - Drop --incremental false from all tsgo typecheck commands - Add scripts/lint-all.sh: centralized lint across all workspaces - Add scripts/typecheck-all.sh: full & incremental typecheck modes - Update pre-push hook to use centralized scripts - Reformat oxlint-plugin-drizzle.js (double -> single quotes)
- Remove ESLint extension and settings from .vscode/ - Remove ESLint package ignores from dependabot.yml - Remove per-workspace lint steps from CI (lint scripts removed in prior commit) - Update kiloclaw docs to reference oxlint instead of eslint - Remove dead eslint-disable comments from tests, configs, and source - Formatting cleanup for oxlint configs - Remove unused COMPANY_TYPES import
…e detection Address review feedback: the --changes-only mode now detects changes to tsconfig*.json and */package.json in addition to .ts/.tsx files, so config-only changes that can break workspace typechecks are not missed.
…ental typecheck - Fix pathspec: use '**/tsconfig*.json' and '**/package.json' so nested workspace configs (e.g. cloud-agent/tsconfig.json) are detected - Fall back to full workspace typecheck when pnpm-workspace.yaml changes, since catalog version bumps can alter the type surface across packages
The catalog fallback path was running workspace typechecks against potentially stale trpc declarations. Ensure trpc is rebuilt first.
7e2f356 to
9a0f8ef
Compare
pandemicsyn
approved these changes
Mar 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR series: 1 of 4 — merge in order: this PR → #1560 CI → #1561 email → #1562 trpc
Remove ESLint entirely from the monorepo and port all lint rules to oxlint:
eslint.config.mjs/eslint.config.jsfiles across 20+ workspacespackages/eslint-configshared config packagepackage.jsonandpnpm-workspace.yaml.oxlintrc.json(root) andkilo-app/.oxlintrc.json(React/RN rules)oxlint-plugin-drizzle.jsto replaceeslint-plugin-drizzlescripts/lint-all.shandscripts/typecheck-all.shfor centralized CI/pre-push usagelintandtypecheckscripts (direct oxlint/tsgo calls)--incremental falsefrom tsgo typecheck commands.vscode/,dependabot.yml, docs, tests, and sourceeslint-disablecomments and per-workspace lint CI stepsCOMPANY_TYPESimport; formatting cleanup on oxlint configspnpm-lock.yaml diff is large (~2200 lines removed) due to dropping all ESLint packages.
Verification
scripts/lint-all.sh— 0 warnings, 0 errorsscripts/typecheck-all.sh --changes-only— all packages passpnpm format:check— passVisual Changes
N/A
Reviewer Notes
oxlint-plugin-drizzle.js) is a custom JS plugin that reimplements the twoenforce-delete-with-where/enforce-update-with-whererules from eslint-plugin-drizzle. This is necessary because oxlint doesn't have a built-in drizzle plugin.kilo-appgets its own.oxlintrc.jsonbecause it uses React/React Native plugins not applicable to the rest of the monorepo.