feat: support managed linter configs and aqua-backed tool keys#228
Merged
zeitlinger merged 30 commits intomainfrom Apr 25, 2026
Merged
feat: support managed linter configs and aqua-backed tool keys#228zeitlinger merged 30 commits intomainfrom
zeitlinger merged 30 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds managed linter config support via FLINT_CONFIG_DIR (including new Taplo and cargo-fmt handling), strengthens “unsupported config” rollout guardrails, and formalizes Biome as a root-config exception (biome.jsonc only).
Changes:
- Introduce
LinterConfig(file vs “dir-if-any”) and support{CONFIG_ARGS}templating for command construction. - Expand registry metadata: baseline trigger becomes singular (
baseline_config), add new unsupported-config fixtures, and broaden managed-config coverage across multiple linters. - Update
flint initto generate Taplo + rustfmt managed configs and migrate Biomebiome.json→biome.jsonc, with corresponding docs updates.
Reviewed changes
Copilot reviewed 63 out of 66 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/e2e.rs | Updates fake Biome script to understand --config-path and validate expected config presence. |
| tests/cases/ruff/clean/test.toml | Runs Ruff case with FLINT_CONFIG_DIR set. |
| tests/cases/ruff/clean/files/main.py | Adjusts fixture to rely on managed Ruff config (ignore unused import). |
| tests/cases/ruff/clean/files/.github/config/ruff.toml | Adds managed Ruff config file under config dir. |
| tests/cases/hadolint/clean/test.toml | Runs hadolint case with FLINT_CONFIG_DIR set. |
| tests/cases/hadolint/clean/files/Dockerfile | Adjusts fixture to rely on managed hadolint config ignores. |
| tests/cases/hadolint/clean/files/.github/config/.hadolint.yaml | Adds managed hadolint config under config dir. |
| tests/cases/golangci-lint/clean/test.toml | Runs golangci-lint case with FLINT_CONFIG_DIR set. |
| tests/cases/golangci-lint/clean/files/main.go | Adjusts fixture to rely on managed golangci-lint config disables. |
| tests/cases/golangci-lint/clean/files/.github/config/.golangci.yml | Adds managed golangci-lint config under config dir. |
| tests/cases/general/unsupported-taplo-config/test.toml | New fixture asserting Taplo rejects unsupported config locations. |
| tests/cases/general/unsupported-taplo-config/files/taplo.toml | Adds unsupported Taplo config in project root. |
| tests/cases/general/unsupported-taplo-config/files/mise.toml | Declares Taplo tool for the unsupported-config fixture. |
| tests/cases/general/unsupported-rustfmt-config/test.toml | New fixture asserting cargo-fmt rejects unsupported rustfmt configs. |
| tests/cases/general/unsupported-rustfmt-config/files/rustfmt.toml | Adds unsupported rustfmt config in project root. |
| tests/cases/general/unsupported-rustfmt-config/files/mise.toml | Declares rust tool + rustfmt component for the fixture. |
| tests/cases/general/unsupported-ruff-config/test.toml | New fixture asserting Ruff rejects .ruff.toml. |
| tests/cases/general/unsupported-ruff-config/files/mise.toml | Declares Ruff tool for the fixture. |
| tests/cases/general/unsupported-ruff-config/files/.ruff.toml | Adds unsupported Ruff config file. |
| tests/cases/general/unsupported-hadolint-config/test.toml | New fixture asserting hadolint rejects .hadolint.yml. |
| tests/cases/general/unsupported-hadolint-config/files/mise.toml | Declares hadolint tool for the fixture. |
| tests/cases/general/unsupported-hadolint-config/files/.hadolint.yml | Adds unsupported hadolint config file. |
| tests/cases/general/unsupported-golangci-lint-config/test.toml | New fixture asserting golangci-lint rejects .golangci.yaml. |
| tests/cases/general/unsupported-golangci-lint-config/files/mise.toml | Declares golangci-lint tool for the fixture. |
| tests/cases/general/unsupported-golangci-lint-config/files/.golangci.yaml | Adds unsupported golangci-lint config file. |
| tests/cases/general/unsupported-editorconfig-checker-config/test.toml | New fixture asserting editorconfig-checker rejects .ecrc. |
| tests/cases/general/unsupported-editorconfig-checker-config/files/mise.toml | Declares editorconfig-checker tool for the fixture. |
| tests/cases/general/unsupported-editorconfig-checker-config/files/.ecrc | Adds unsupported editorconfig-checker config file. |
| tests/cases/general/unsupported-codespell-config/test.toml | New fixture asserting codespell rejects setup.cfg config. |
| tests/cases/general/unsupported-codespell-config/files/setup.cfg | Adds unsupported codespell config via setup.cfg. |
| tests/cases/general/unsupported-codespell-config/files/mise.toml | Declares codespell tool for the fixture. |
| tests/cases/general/unsupported-biome-config/test.toml | New fixture asserting Biome rejects biome.json. |
| tests/cases/general/unsupported-biome-config/files/mise.toml | Declares biome tool for the fixture. |
| tests/cases/general/unsupported-biome-config/files/biome.json | Adds unsupported legacy Biome config name. |
| tests/cases/general/unsupported-actionlint-config/test.toml | New fixture asserting actionlint rejects legacy config location. |
| tests/cases/general/unsupported-actionlint-config/files/mise.toml | Declares actionlint tool for the fixture. |
| tests/cases/general/unsupported-actionlint-config/files/.github/actionlint.yml | Adds unsupported legacy actionlint config location. |
| tests/cases/general/init-rust/test.toml | Updates init output expectations (rustfmt + biome.jsonc). |
| tests/cases/general/init-idempotent/files/biome.jsonc | Adds idempotent-case Biome root JSONC config. |
| tests/cases/general/init-idempotent/files/.github/config/rustfmt.toml | Adds idempotent-case managed rustfmt config. |
| tests/cases/general/init-idempotent/files/.github/config/.taplo.toml | Adds idempotent-case managed Taplo config. |
| tests/cases/editorconfig-checker/clean/test.toml | Runs editorconfig-checker case with FLINT_CONFIG_DIR set. |
| tests/cases/editorconfig-checker/clean/files/hello.txt | Fixture change for editorconfig-checker behavior under managed config. |
| tests/cases/editorconfig-checker/clean/files/.github/config/.editorconfig-checker.json | Adds managed editorconfig-checker config under config dir. |
| tests/cases/codespell/clean/test.toml | Runs codespell case with FLINT_CONFIG_DIR set. |
| tests/cases/codespell/clean/files/README.md | Fixture change for codespell ignore-words behavior. |
| tests/cases/codespell/clean/files/.github/config/.codespellrc | Adds managed codespell config under config dir. |
| tests/cases/actionlint/clean/test.toml | Runs actionlint case with FLINT_CONFIG_DIR set. |
| tests/cases/actionlint/clean/files/.github/workflows/ci.yml | Fixture change for actionlint self-hosted runner labels. |
| tests/cases/actionlint/clean/files/.github/config/actionlint.yml | Adds managed actionlint config under config dir. |
| src/runner.rs | Adds {CONFIG_ARGS} support, introduces LinterConfig-aware resolution, and tests for new behavior. |
| src/registry/types.rs | Introduces LinterConfig enum and makes baseline trigger singular (baseline_config). |
| src/registry/tests.rs | Extends unsupported-key detection tests and updates registry docs table generation for LinterConfig. |
| src/registry/obsolete.rs | Adds legacy npm:markdownlint-cli to unsupported tool keys. |
| src/registry/mod.rs | Re-exports LinterConfig. |
| src/registry/checks.rs | Adds Taplo and cargo-fmt managed config handling, Biome root-config baseline, and new unsupported-config definitions. |
| src/main.rs | Updates unsupported-config error messaging, baseline detection logic, and JSON output to account for new config metadata. |
| src/init/mod.rs | Generates Taplo + rustfmt configs during init when relevant checks are selected. |
| src/init/config_files.rs | Implements config generation for Taplo and rustfmt; migrates Biome biome.json → biome.jsonc. |
| docs/linters.md | Documents Biome root-config exception and adds config rows for cargo-fmt and Taplo. |
| docs/cli.md | Clarifies flint run config behavior and notes Biome exception. |
| biome.jsonc | Adds root Biome config to the repo. |
| README.md | Updates config-dir documentation (including Biome exception) and reflows formatting. |
| AGENTS-V2.md | Adds guidance to treat root biome.jsonc as the only supported Biome config. |
| .markdownlint.json | Removes legacy markdownlint config file. |
| .github/agents/knowledge/linters.md | Updates guidance to treat Biome as a root-discovery exception rather than config-dir injected. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
8bd54e4 to
aa17b0f
Compare
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
6a262fb to
dcee158
Compare
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
martincostello
approved these changes
Apr 25, 2026
This was referenced Apr 25, 2026
Closed
Merged
zeitlinger
added a commit
that referenced
this pull request
Apr 27, 2026
### Added - add flint setup preflight migrations ([#233](#233)) - support managed linter configs and aqua-backed tool keys ([#228](#228)) - switch xmloxide to github backend ([#229](#229)) - add taplo formatter check ([#224](#224)) - *(init)* configure line length during init ([#218](#218)) ### Fixed - support renovate v43.136.3 ([#223](#223)) - switch yaml-lint to ryl ([#226](#226)) - *(ruff)* install via github releases ([#227](#227)) - resolve init rollout regressions ([#220](#220)) ### Other - reduce fake-bin fixture coverage ([#240](#240)) - *(deps)* update dependency npm:renovate to v43.141.1 ([#221](#221)) - guard fixture case groups ([#238](#238)) - *(deps)* update dependency grafana/flint to v0.20.4 ([#235](#235)) - *(deps)* lock file maintenance ([#237](#237)) - *(deps)* update dependency mise to v2026.4.19 ([#236](#236)) - *(deps)* update rust crate json5 to v1 ([#232](#232)) - *(deps)* update taiki-e/install-action digest to 787505c ([#219](#219)) - *(deps)* update dependency grafana/flint to v0.20.3 ([#225](#225)) > [!IMPORTANT] > Close and reopen this PR to trigger CI checks. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Gregor Zeitlinger <[email protected]>
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
biome.jsonc, reject legacybiome.json, and tighten rollout guards around unsupported repo-local configs and legacy tool keysmisekeys where available, includingtaplo,ruff, andktlint, plusaqua:owenlamont/rylforyaml-lintshellcheckback togithub:koalaman/shellcheckuntil the Windows aqua fix lands inaquaproj/aqua-registry#52699rumdlconfig with aligned Markdown table formatting by defaultflint run --fixoutcomes explicitNotes
ruff-formatnow resolves through theruffinstall key instead of pretending to be a separate installable toolxmllintstays ongithub:jonwiggins/xmloxidefor now andgoogle-java-formatstays ongithub:google/google-java-format--fixfollow-up from fix: model --fix outcomes explicitly #222Verification
mise exec -- cargo test -qmise run lint:fix