Changelog
Release history for Astro Doctor and its integrations. This page is generated directly from each package changelog and updates on the next documentation build after Changesets publishes a version.
Astro Doctor CLI and GitHub Action
Package: @santi020k/astro-doctor
@santi020k/astro-doctor
1.5.0
Minor Changes
-
#58
77aab01Thanks @santi020k! - Improve project discovery, diagnostic safety, and installed CLI setup:- Preserve Unicode and whitespace in Git filenames and resolve changes relative to the selected project directory.
- Detect insecure session cookies in supported Astro config export forms and read only the workspace packages list.
- Package the agent skill with the CLI, report installation failures, and generate a workflow that checks config-only changes.
- Escape GitHub annotation properties, clean up failed baseline snapshots, and clear failed telemetry request timers.
- Offer line suppression actions only where JavaScript frontmatter supports them.
Refresh the pending dependency branches and compatible security fixes. Existing CLI flags and skill destinations remain supported.
Refresh the documentation with Lumen v4, the project’s orange brand palette, accessible mobile navigation, page and theme transitions, readable rule examples, and accurate score explanations. Remove unused documentation dependencies and code, expand unused-code checks to the docs, and add browser and dependency-security regression checks.
Add safe fix previews with
--fix-dry-run, effective configuration explanations withexplain-config <file>, and baseline progress with full-scan pruning. Preview reports and JSON include projected fix results; partial scans never claim resolved findings. Baseline pruning preserves existing debt without accepting new findings and writes atomically. Parser failures block previews and baseline comparisons/pruning without changing valid scan behavior. Existing JSON fields and the baseline format remain compatible.Parse TypeScript frontmatter consistently in the CLI, ESLint plugin, editor diagnostics and safe line suppressions. Fail ordinary lint scans on parser errors instead of returning a false clean health score, and keep parser error diagnostics visible in the editor. Ship the parser and its TypeScript runtime dependency for standalone installations.
Keep workspace config explanations and scans aligned with project presets, disambiguate fix-preview patch paths, and retain editor diagnostics when malformed files are present at startup.
Honor explicit CLI presets over workspace configuration and revalidate current main immediately before publishing, release metadata writes, and deployment.
Recount preview diagnostics after baseline filtering, reject config explanations for files excluded by selected workspace projects, and emit bounded, Git-applicable hunks for distant fixes.
Fail closed when recovering published-version metadata without a matching registry publishing SHA. Require full or files scope for fix previews, and mark unsupported file types excluded in config explanations.
Align .env.example secret-token matching with template diagnostics. Let the GitHub Action apply its own score threshold and keep project-audit config explanations consistent with template-only ignores.
Require editor recovery and registry publication to use the package-tagged release source. Resolve config explanation discovery from actual configured project audit paths instead of conservative changed-file extensions.
Patch Changes
-
#58
77aab01Thanks @santi020k! - Correct secret-env detection for static bracket access and destructuring while avoiding substring false positives. Recognize aliased Astro asset image imports, ignore unrelated custom components, check static source expressions, and reject disabled size inference.Harden the GitHub Action with validated inputs, literal environment-based argument handling, isolated temporary reports, strict report checks, and failure propagation. Gate releases and documentation deployment on successful CI for the exact current main commit; manual runs reuse the full validation workflow.
-
Updated dependencies [
77aab01]:- @santi020k/eslint-plugin-astro-doctor@1.5.0
1.4.0
Minor Changes
- #45
4171c72Thanks @santi020k! - Add Astro 7 migration audits for removed experimental flags and invalid advanced-routing entrypoints.
Patch Changes
- Updated dependencies [
4171c72]:- @santi020k/eslint-plugin-astro-doctor@1.4.0
1.3.2
Patch Changes
-
#32
bc4a9f3Thanks @santi020k! - Match uppercase and mixed-case script tags when auditing ClientRouter lifecycle handlers. -
Updated dependencies [
bc4a9f3]:- @santi020k/eslint-plugin-astro-doctor@1.3.2
1.3.1
Patch Changes
-
#25
29d3a0aThanks @santi020k! - Pin the composite GitHub Action’s runtime dependencies to reviewed commit SHAs and refresh vulnerable transitive build dependencies. -
Updated dependencies [
29d3a0a]:- @santi020k/eslint-plugin-astro-doctor@1.3.1
1.3.0
Minor Changes
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts, including the dependencies bundled with the VS Code extension.
Patch Changes
- Updated dependencies [
0695440]:- @santi020k/eslint-plugin-astro-doctor@1.3.0
1.2.2
Patch Changes
-
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts. -
Updated dependencies [
0695440]:- @santi020k/eslint-plugin-astro-doctor@1.2.2
1.2.1
Patch Changes
-
#16
f7fa4a3Thanks @santi020k! - Remove the incompatibleeslint-plugin-jsx-a11ydependency and align the runtime witheslint-plugin-astro3 andastro-eslint-parser3. Astro Doctor’s proprietary accessibility diagnostics and official Astro rules remain enabled. -
Updated dependencies [
f7fa4a3]:- @santi020k/eslint-plugin-astro-doctor@1.2.1
1.2.0
Minor Changes
- #14
b2f1ddaThanks @santi020k! - Make the GitHub Action skip comments for fork and Dependabot pull requests, add a nativemin-scorequality gate, and remove its unused changed-files manifest.
Patch Changes
- Updated dependencies [
b2f1dda]:- @santi020k/eslint-plugin-astro-doctor@1.2.0
1.1.0
Minor Changes
-
#12
e5bb5a7Thanks @santi020k! - Compose Astro Doctor with the official Astro ESLint ecosystem. The recommended preset now includes official recommended rules, strict adds accessibility, security, and best-practice checks, and the new all preset enables every non-deprecated upstream rule with automatic overlap deduplication. -
#12
c538858Thanks @santi020k! - Add project-aware audits for missing Astro Action input schemas, insecure session cookie overrides, and ClientRouter scripts that incorrectly rely onDOMContentLoaded. -
#12
d71e1d1Thanks @santi020k! - Add safe automatic fixes and suggestions to the CLI and editor, official eslint-plugin-astro rule presets, baseline-aware changed scope, persistent baseline files, content-based scan caching, glob-based config overrides, SARIF output, strict CLI validation, verbose phase timings, and versioned JSON and baseline schemas. Harden the LSP with incremental document sync, debounced stale-result protection, configuration watching, workspace caching, and path-safe project selection. Category filters now score only visible diagnostics, GitHub workflows receive annotations, unresolved errors or unhealthy workspace projects cannot receive misleadingly high scores, and package-manager preference is opt-in.
Patch Changes
-
#12
a7e3981Thanks @santi020k! - Ignore diagnostics from ESLint rules that are not part of Astro Doctor’s standalone scanner, and inherit pnpm package-manager configuration from a workspace root when auditing included nested projects. Package-manager audits now recognize npm, Yarn, and Bun lockfiles. -
#12
c538858Thanks @santi020k! - Fix current-file scanning and conflict-safe automatic fixes in the language server, restart the VS Code client when extension settings change, and escape dynamic sidebar content. -
#12
7269d52Thanks @santi020k! - Make GitHub Action releases reproducible by running the matching CLI package version with a supported Node.js runtime, automate the floatingv1action tag, and correct package metadata for the Node.js requirement already introduced by the Astro parser dependency in 1.0.3. The VS Code extension now requires VS Code 1.125 or newer, launches its bundled language server with the supported Node.js executable from the user’s environment instead of VS Code’s embedded runtime, and includes the cross-platform WASI compiler required by Astro Parser 3. Reduce false positives for explicit inline scripts, JSON-LD structured data, and runtime-populated images, and restore audit mode on ESLint 10.7. -
Updated dependencies [
e5bb5a7,d71e1d1]:- @santi020k/eslint-plugin-astro-doctor@1.1.0
1.0.4
Patch Changes
-
#9
9501d73Thanks @santi020k! - Make GitHub Action releases reproducible by running the matching CLI package version with a supported Node.js runtime, automate the floatingv1action tag, and correct package metadata for the Node.js requirement already introduced by the Astro parser dependency in 1.0.3. The VS Code extension now requires VS Code 1.125 or newer, launches its bundled language server with the supported Node.js executable from the user’s environment instead of VS Code’s embedded runtime, and includes the cross-platform WASI compiler required by Astro Parser 3. Reduce false positives for explicit inline scripts, JSON-LD structured data, and runtime-populated images, and restore audit mode on ESLint 10.7. -
Updated dependencies []:
- @santi020k/eslint-plugin-astro-doctor@1.0.4
1.0.3
Patch Changes
-
#7
2584508Thanks @santi020k! - Update dependencies and support the JSX-shaped Astro AST introduced byastro-eslint-parser3. -
Updated dependencies [
2584508]:- @santi020k/eslint-plugin-astro-doctor@1.0.3
1.0.2
Patch Changes
-
#5
faeaf66Thanks @santi020k! - Fix post-launch documentation and plugin meta accuracy- eslint-plugin: plugin
meta.versionnow reads dynamically frompackage.jsoninstead of being hardcoded to0.1.0 - docs/README/llms.txt: corrected score formula description — each file is scored independently (errors cost 25 pts, warnings cost 10 pts, clamped per-file then averaged); previous docs described the old global density formula
- docs/README/action.yml: updated score grade references from
A–FtoS, A–Fto reflect that a perfect score of 100 returns theSgrade; clarified thatSmeans zero diagnostics — no issues found anywhere in the codebase (not just “high score” but truly clean); docs homepage grade cards now show a description label for each grade - console reporter: added missing
S: '🌟'entry toSCORE_EMOJI— previously a perfect score would fall through to the🟡fallback - GitHub Action PR comment: same fix —
scoreEmojimap now includesS: '🌟'so PR comments show the correct emoji for a clean codebase
- eslint-plugin: plugin
-
Updated dependencies [
faeaf66]:- @santi020k/eslint-plugin-astro-doctor@1.0.2
1.0.1
Patch Changes
-
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions -
Updated dependencies [
ac335ba]:- @santi020k/eslint-plugin-astro-doctor@1.0.1
1.0.0
Major Changes
-
f1af77dThanks @santi020k! - Six improvements: per-file scoring, smarter client:load rule, derived rule categories,--quietflag, scan error handling, and a better--changed-files-fromwarning.Breaking changes
computeScoresignature changed (@santi020k/astro-doctor)The exported
computeScorefunction now takes(diagnostics: readonly Diagnostic[], fileCount: number)instead of(errorCount: number, warningCount: number, fileCount: number). Update any direct calls to pass the diagnostics array.no-client-load-overusedefault behaviour changed (@santi020k/eslint-plugin-astro-doctor)The rule now allows one
client:loadper file by default (max: 1). Previously it warned on every occurrence. To restore the old strict behaviour, add"astro-doctor/no-client-load-overuse": ["warn", { "max": 0 }]to your ESLint config.New features
Per-file scoring —
computeScorenow scores each file independently (errors −10 pts, warnings −3 pts, clamped to [0, 100]) and averages the results. A single heavily-broken file in a large project no longer drags the overall score below its actual impact.no-client-load-overuse: configurablemaxoption — Set{ "max": N }to allow up to Nclient:loadusages per file before warning.max: 0reports every occurrence individually (old behaviour).max: 1(default) allows one per file and reports a single file-level message when exceeded, including the usage count.Rule categories derived from plugin metadata — The scanner no longer maintains a separate hard-coded
RULE_CATEGORY_MAP. Categories are read directly from each rule’smeta.docs.category, so new rules are automatically classified without any extra bookkeeping. This also fixesprefer-content-collectionswhich was silently missing from the old map.--quietflag — Pass--quietto suppress warning diagnostics from console output. Errors are still shown, and the health score / exit-code thresholds still reflect all diagnostics.Scan error handling — If ESLint throws during a scan (e.g. a malformed
.astrofile), the CLI now prints a friendly error message and exits with code 1 instead of crashing with an unhandled exception.--changed-files-fromempty-list warning — When the changed files list is non-empty but contains no.astrofiles, the CLI now prints a clear message and exits cleanly instead of silently returning a perfect score of 100.
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.
Patch Changes
ESLint plugin
Package: @santi020k/eslint-plugin-astro-doctor
@santi020k/eslint-plugin-astro-doctor
1.5.0
Patch Changes
-
#58
77aab01Thanks @santi020k! - Correct secret-env detection for static bracket access and destructuring while avoiding substring false positives. Recognize aliased Astro asset image imports, ignore unrelated custom components, check static source expressions, and reject disabled size inference.Harden the GitHub Action with validated inputs, literal environment-based argument handling, isolated temporary reports, strict report checks, and failure propagation. Gate releases and documentation deployment on successful CI for the exact current main commit; manual runs reuse the full validation workflow.
1.4.0
Minor Changes
- #45
4171c72Thanks @santi020k! - Add Astro 7 migration audits for removed experimental flags and invalid advanced-routing entrypoints.
1.3.2
Patch Changes
- #32
bc4a9f3Thanks @santi020k! - Match uppercase and mixed-case script tags when auditing ClientRouter lifecycle handlers.
1.3.1
Patch Changes
- #25
29d3a0aThanks @santi020k! - Pin the composite GitHub Action’s runtime dependencies to reviewed commit SHAs and refresh vulnerable transitive build dependencies.
1.3.0
Minor Changes
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts, including the dependencies bundled with the VS Code extension.
1.2.2
Patch Changes
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts.
1.2.1
Patch Changes
- #16
f7fa4a3Thanks @santi020k! - Remove the incompatibleeslint-plugin-jsx-a11ydependency and align the runtime witheslint-plugin-astro3 andastro-eslint-parser3. Astro Doctor’s proprietary accessibility diagnostics and official Astro rules remain enabled.
1.2.0
Patch Changes
- #14
b2f1ddaThanks @santi020k! - Restore Node.js 20 support with the compatible Astro parser and plugin line. Align the ESLint peer range with@santi020k/eslint-config-basicv2, include the accessibility plugin required by thestrictpreset, and derive deprecated upstream rules from plugin metadata so theallpreset stays current.
1.1.0
Minor Changes
-
#12
e5bb5a7Thanks @santi020k! - Compose Astro Doctor with the official Astro ESLint ecosystem. The recommended preset now includes official recommended rules, strict adds accessibility, security, and best-practice checks, and the new all preset enables every non-deprecated upstream rule with automatic overlap deduplication. -
#12
d71e1d1Thanks @santi020k! - Add safe automatic fixes and suggestions to the CLI and editor, official eslint-plugin-astro rule presets, baseline-aware changed scope, persistent baseline files, content-based scan caching, glob-based config overrides, SARIF output, strict CLI validation, verbose phase timings, and versioned JSON and baseline schemas. Harden the LSP with incremental document sync, debounced stale-result protection, configuration watching, workspace caching, and path-safe project selection. Category filters now score only visible diagnostics, GitHub workflows receive annotations, unresolved errors or unhealthy workspace projects cannot receive misleadingly high scores, and package-manager preference is opt-in.
1.0.4
1.0.3
Patch Changes
- #7
2584508Thanks @santi020k! - Update dependencies and support the JSX-shaped Astro AST introduced byastro-eslint-parser3.
1.0.2
Patch Changes
-
#5
faeaf66Thanks @santi020k! - Fix post-launch documentation and plugin meta accuracy- eslint-plugin: plugin
meta.versionnow reads dynamically frompackage.jsoninstead of being hardcoded to0.1.0 - docs/README/llms.txt: corrected score formula description — each file is scored independently (errors cost 25 pts, warnings cost 10 pts, clamped per-file then averaged); previous docs described the old global density formula
- docs/README/action.yml: updated score grade references from
A–FtoS, A–Fto reflect that a perfect score of 100 returns theSgrade; clarified thatSmeans zero diagnostics — no issues found anywhere in the codebase (not just “high score” but truly clean); docs homepage grade cards now show a description label for each grade - console reporter: added missing
S: '🌟'entry toSCORE_EMOJI— previously a perfect score would fall through to the🟡fallback - GitHub Action PR comment: same fix —
scoreEmojimap now includesS: '🌟'so PR comments show the correct emoji for a clean codebase
- eslint-plugin: plugin
1.0.1
Patch Changes
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions
1.0.0
Major Changes
-
f1af77dThanks @santi020k! - Six improvements: per-file scoring, smarter client:load rule, derived rule categories,--quietflag, scan error handling, and a better--changed-files-fromwarning.Breaking changes
computeScoresignature changed (@santi020k/astro-doctor)The exported
computeScorefunction now takes(diagnostics: readonly Diagnostic[], fileCount: number)instead of(errorCount: number, warningCount: number, fileCount: number). Update any direct calls to pass the diagnostics array.no-client-load-overusedefault behaviour changed (@santi020k/eslint-plugin-astro-doctor)The rule now allows one
client:loadper file by default (max: 1). Previously it warned on every occurrence. To restore the old strict behaviour, add"astro-doctor/no-client-load-overuse": ["warn", { "max": 0 }]to your ESLint config.New features
Per-file scoring —
computeScorenow scores each file independently (errors −10 pts, warnings −3 pts, clamped to [0, 100]) and averages the results. A single heavily-broken file in a large project no longer drags the overall score below its actual impact.no-client-load-overuse: configurablemaxoption — Set{ "max": N }to allow up to Nclient:loadusages per file before warning.max: 0reports every occurrence individually (old behaviour).max: 1(default) allows one per file and reports a single file-level message when exceeded, including the usage count.Rule categories derived from plugin metadata — The scanner no longer maintains a separate hard-coded
RULE_CATEGORY_MAP. Categories are read directly from each rule’smeta.docs.category, so new rules are automatically classified without any extra bookkeeping. This also fixesprefer-content-collectionswhich was silently missing from the old map.--quietflag — Pass--quietto suppress warning diagnostics from console output. Errors are still shown, and the health score / exit-code thresholds still reflect all diagnostics.Scan error handling — If ESLint throws during a scan (e.g. a malformed
.astrofile), the CLI now prints a friendly error message and exits with code 1 instead of crashing with an unhandled exception.--changed-files-fromempty-list warning — When the changed files list is non-empty but contains no.astrofiles, the CLI now prints a clear message and exits cleanly instead of silently returning a perfect score of 100.
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.
VS Code extension
Extension: santi020k.vscode-astro-doctor
Astro Doctor for VS Code
1.5.0
Bundle the 1.5.0 language-server improvements: consistent TypeScript frontmatter parsing, visible parser-error diagnostics, responsive startup with malformed files, and safer line suppressions. See the CLI changelog for the shared diagnostic changes.
1.4.0
Minor Changes
- #45
4171c72Thanks @santi020k! - Add Astro 7 migration audits for removed experimental flags and invalid advanced-routing entrypoints.
1.3.2
Patch Changes
- #32
bc4a9f3Thanks @santi020k! - Match uppercase and mixed-case script tags when auditing ClientRouter lifecycle handlers.
1.3.1
Patch Changes
- #25
29d3a0aThanks @santi020k! - Pin the composite GitHub Action’s runtime dependencies to reviewed commit SHAs and refresh vulnerable transitive build dependencies.
1.3.0
Minor Changes
0695440Thanks @santi020k! - Improve package export and packed-install validation for published artifacts, including the dependencies bundled with the VS Code extension.
1.2.2
1.2.1
Improved
- Updated the bundled Astro linting stack for compatibility with
eslint-plugin-astro3 andastro-eslint-parser3. - Kept Astro Doctor’s accessibility diagnostics and official Astro rules enabled without relying on an incompatible JSX accessibility dependency.
1.2.0
Improved
- Updated the bundled diagnostic engine and its release dependencies for more reliable marketplace installs.
1.1.0
Added
- Added safe automatic fixes and suggestions directly in the editor.
- Added official
eslint-plugin-astrorule presets and broader accessibility, security, and best-practice diagnostics. - Added incremental document sync, configuration watching, workspace caching, and debounced diagnostics.
Fixed
- Fixed current-file scanning and conflict-safe automatic fixes.
- Restarted the language client when extension settings change.
- Escaped dynamic sidebar content.
1.0.4
Improved
- Added support for the Astro Parser 3 runtime used by the bundled language server.
- The extension now resolves a supported Node.js executable from the user’s environment instead of relying on VS Code’s embedded runtime.
- Included the cross-platform WASI compiler required to analyze Astro files.
Fixed
- Reduced false positives for explicit inline scripts, JSON-LD structured data, and runtime-populated images.
1.0.3
Fixed
- Added support for the JSX-shaped Astro syntax tree produced by
astro-eslint-parser3.
1.0.2
Fixed
- Corrected score and grade metadata shown by Astro Doctor.
- Kept bundled plugin version information synchronized with the extension.
1.0.1
Fixed
- Fixed marketplace publishing and aligned bundled package versions.
1.0.0
Initial release of Astro Doctor for VS Code.
Highlights
- Live Astro diagnostics, hovers, and quick fixes.
- Workspace and current-file scans.
- A sidebar health report with per-category results.
- Performance, accessibility, security, architecture, and best-practice rules.
- Per-file health scoring that prevents one heavily broken file from distorting an entire project.
- Configurable
client:loadoveruse detection.
Oxlint configuration
Package: @santi020k/oxlint-config-astro-doctor
@santi020k/oxlint-config-astro-doctor
1.5.0
No changes in this release.
1.4.0
Minor Changes
- #45
4171c72Thanks @santi020k! - Add Astro 7 migration audits for removed experimental flags and invalid advanced-routing entrypoints.
1.3.2
Patch Changes
- #32
bc4a9f3Thanks @santi020k! - Match uppercase and mixed-case script tags when auditing ClientRouter lifecycle handlers.
1.3.1
Patch Changes
- #25
29d3a0aThanks @santi020k! - Pin the composite GitHub Action’s runtime dependencies to reviewed commit SHAs and refresh vulnerable transitive build dependencies.
1.3.0
1.2.2
1.2.1
1.2.0
1.1.0
Patch Changes
- #12
49f6b59Thanks @santi020k! - Add package installation and usage documentation.
1.0.4
1.0.3
1.0.2
1.0.1
Patch Changes
ac335baThanks @santi020k! - Fix VS Code extension publish and align package versions
0.1.0
Minor Changes
-
b070540Thanks @santi020k! - Add four new ESLint rules covering performance, accessibility, and best practices.no-blocking-script(performance · warn) — Detects<script src="...">tags withoutdefer,async, ortype="module". Render-blocking scripts delay First Contentful Paint and stall HTML parsing. Usedeferto preserve execution order,asyncfor independent scripts, ortype="module"for always-deferred ES modules.no-missing-lang(accessibility · error) — Requires alangattribute on the root<html>element. Missinglangis a WCAG 2.1 Level A failure (SC 3.1.1) that breaks screen reader language detection and search engine indexing.no-process-env(best-practices · warn) — Flagsprocess.envusage in.astrofiles.process.envis Node.js-only and doesn’t work in client-side code or respect Astro’sPUBLIC_prefix visibility rules. Useimport.meta.envinstead.prefer-content-collections(best-practices · warn) — FlagsAstro.glob()usage for content files.Astro.glob()returns untyped frontmatter objects. UsegetCollection()fromastro:contentinstead for TypeScript types, build-time validation, and caching.