Repository navigation
feat(detect): recognize oxlint alongside eslint, biome and stylelint - #353
Merged
Merged
Conversation
Member
Author
|
@claude /review |
|
Claude finished @theCodeDrift's task in 1m 43s —— View job Review mode: incremental — read 0 prior review thread(s) before reviewing.
AssessmentI found nothing to flag. This is a small, well-scoped addition that follows the existing
No correctness, security, performance, or clarity issues found in the diff. |
Member
Author
Acknowledged: review found no correctness, security, performance, or clarity issues; no changes needed. — AI Coding Agent |
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.
What
taskless detectnow reportsoxlintas a JavaScript/TypeScript linter. A newoxlintentry inLINTER_SIGNALS(packages/cli/src/detect/scan.ts), shaped likebiome: config-file presence on disk, or anoxlintdependency inpackage.json(manifest-only matching honoring the language tag, same as eslint and biome).Also in this PR:
.oxlintrc.jsonalone detects oxlint;oxlintonly indevDependenciesdetects oxlint; an eslint-only repo still reports eslint and not oxlint.detect-oxlint(single PR shape), archived here: thecli-detectexample config list names.oxlintrc.jsonand a new scenario covers oxlint from either signal..changeset/detect-oxlint.md(patch; pre-1.0, an added signal is not a minor).packages/cli/src/agent/detect.mdis untouched: it does not enumerate the JS linters, only shows an eslint example in the JSON shape.Why
A repo that has moved to oxlint reported no JS linter, so
detectoutput and everything downstream (init, therouterecipe) treated the project as unlinted. oxlint's plugin model has no cross-file or type-aware seam for third-party rules, so those are exactly the repos where Taskless runtime rules add something the linter cannot.Config filenames verified against the docs
Source: https://oxc.rs/docs/guide/usage/linter/config.html, which states: "Oxlint automatically looks for a
.oxlintrc.json,.oxlintrc.jsonc,oxlint.config.ts, oroxlint.config.mtsin the current working directory."Included (the auto-discovered set):
.oxlintrc.json.oxlintrc.jsoncoxlint.config.tsoxlint.config.mtsExcluded:
oxlint.config.js,oxlint.config.mjs,oxlint.config.cjs. The issue suggested these, but the docs only accept a JS-extension path when it is passed explicitly with-c/--config("any path with a JS/TS extension (.js,.mjs,.cjs,.ts,.mts,.cts) is accepted"); oxlint never discovers them on its own, so the filename is dead weight in the sweep. The JS plugins page (https://oxc.rs/docs/guide/usage/linter/js-plugins.html) only ever shows.oxlintrc.jsonandoxlint.config.ts. The comment on the signal entry records this so the next person does not re-add them.How verified
pnpm openspec validate detect-oxlint --strictpasses.grep '^#### Scenario' openspec/specs/cli-detect/spec.mdbefore (9) vs after (10); the only diff is the added oxlint scenario, every prior scenario survives and the requirement title is byte-identical. Then archived for real.pnpm build,pnpm typecheck,pnpm lint(includingtaskless checkon the rebuilt CLI),pnpm --filter @taskless/cli test(94 files, 1531 tests) all pass.Fixes #349