Repository navigation
fix(route): name every detected linter, and add an Oxlint guide - #617
Conversation
route printed "The linters detect found here" and listed only linters with a guide paragraph, so a repository running Oxlint read as though it did not. With Oxlint alone it said steps 1 and 2 of the legacy ladder did not apply, which contradicts the requirement that step 1 is taken whenever a detected linter could host the rule. route now names every detected tool that can host a rule, and sends one with no paragraph to the generic recipe. Formatters and Taskless's own engines stay out. Oxlint gets its own create-legacy-rule recipe.
|
@claude /review |
|
Claude finished @theCodeDrift's task in 2m 43s —— View job Review mode: incremental — read 0 prior review thread(s) before reviewing.
SummaryThis is the first review of this PR; everything below is [New]. The core fix in Tests ( The new I didn't find any correctness bugs in the diff itself. No inline comments to post. |
Under an agent or GitHub Actions, Oxlint picks an output format with no rule list, so `oxlint --rules` prints nothing and exits 0. The guide's confirm step would have read as "this rule does not exist". Pass `--format default`, which the contract check now pins. Drop the claim that `--print-config` shows which config governs a file: it prints the root config. Also cover `route` with only unguided linters.
Added the missing test for a repository where only unguided tools are detected, in a6f9a3e. No other findings to act on. — AI Coding Agent |
routeprints "The lintersdetectfound here", then lists only linters that have a guide paragraph. On NoMercyLabs/nomnomzbot,detectcorrectly reports ESLint and Oxlint, butrouteshowed ESLint alone. With Oxlint as the only linter, it said steps 1 and 2 of the legacy ladder did not apply, which contradicts the spec.What changed
routenames every detected tool that can host a rule. A tool with no paragraph is named and sent to the generic recipe, so this can't recur for the next linter.prettier,black,pint,php-cs-fixer) and Taskless's own engines (ast-grep,vale) stay out of that list.routenow saysdetectrecognizes a fixed list of tools, so a repository may run others.create-legacy-rule --tool=oxlintrecipe, and an Oxlint paragraph inroute.routeis now topic v9.Worth a close look
oxlint --rules --format default. Under an agent or GitHub Actions, Oxlint picks an output format with no rule list, so a bareoxlint --rulesprints nothing and exits 0 (linter:oxlint --rulesprints nothing when an AI agent is detected (agent format) oxc-project/oxc#27569). The contract check caught this.oxlint@1.82.0, confirms both catch-all rules exist and thatno-restricted-syntaxdoes not. It does not cover nested configs replacing their parent.eslint-plugin-oxlintnote is not from those docs. The recipe saysbuildFromOxlintConfigFileturns off in ESLint the rules the Oxlint config enables. nomnomzbot does call it, but the behavior itself is from prior knowledge.NOT_A_LEGACY_HOSTlives inrecipes.ts, becauseLINTER_SIGNALSis inscan.tsand the prompts bundle must not import host capabilities.Verification
Typecheck and lint pass, and the CLI suite passes with 2,939 tests.
routewas run against a nomnomzbot clone and an Oxlint-only fixture. The archive dropped no scenarios: 38 → 41 incli-rule-routing, 12 → 12 incli-legacy-rule-recipes.Not in this PR
C# language detection, the ESLint custom-rule count reading
unknownfrom a repository root, and.githooks/missing fromhooks.