dotnet-eslint
ESLint for Frontend Assets in .NET Repositories
Trigger On
- the repo has
package.json,eslint.config.*,.eslintrc*,tsconfig.json, or JS/TS/React frontend files - the user asks for JavaScript or TypeScript linting, React rule enforcement, import hygiene, or unsafe frontend patterns
- CI should fail on frontend lint findings instead of relying on editor-only feedback
Do Not Use For
- CSS ownership by itself; route that to
dotnet-stylelint - HTML-only checks on static output; route that to
dotnet-htmlhint - repos that intentionally standardized on Biome as the only JS or TS formatter-linter, unless migration or comparison is explicitly requested
Inputs
- the nearest
AGENTS.md package.jsoneslint.config.*or.eslintrc*tsconfig.jsonwhen TypeScript or type-aware rules are involved
Workflow
- Detect ownership first:
- existing ESLint config
- package manager and workspace layout
- framework packages such as React, Next.js, Vue, or plain TypeScript
- Keep ESLint as the semantic lint owner for JS and TS files when the repo needs rich plugin ecosystems or framework-specific rules.
- Prefer checked-in local devDependencies over global installs so CI and local runs match.
- Add narrow scripts to
package.json, for example:lint:eslint .lint:fix:eslint . --fix
- Scope auto-fix runs before broad rewrites:
- fix a bounded folder or glob first
- rerun the linter
- rerun the frontend build or tests if the repo has them
- If the repo wants type-aware rules, verify the target files are covered by the intended
tsconfig.jsonbefore enabling heavier rules. - Do not hide noise by mass-disabling rules. Fix code, narrow scope, or phase severity deliberately.
Bootstrap When Missing
- Detect current state:
rg --files -g 'package.json' -g 'eslint.config.*' -g '.eslintrc*' -g 'tsconfig.json'rg -n '"eslint"|"@typescript-eslint"|"eslint-plugin-" --glob 'package.json' .
- Prefer a repo-local install:
npm install --save-dev eslint
- Add framework-specific plugins only when the repo actually uses the framework.
- Create or refine
eslint.config.jsoreslint.config.mjsinstead of leaving setup implicit. - Add repeatable commands to
AGENTS.mdandpackage.json, then verify with:npx eslint .npx eslint . --fix
- Return
status: configuredif the repo now has a working lint gate, orstatus: improvedif existing setup was tightened. - Return
status: not_applicableonly when another documented tool already owns JS or TS linting and migration is not requested.
Handle Failures
- Parsing errors on TS or JSX usually mean the config or parser stack does not match the file set; verify framework plugins and
tsconfig.jsoncoverage first. Definition for rule ... was not foundusually means a missing plugin package or a config targeting a different ESLint major version.File ignored because of a matching ignore patternusually means the glob is too broad or ignores were left stale after a folder move.- Huge warning floods should be handled in phases with bounded globs, not by downgrading everything to
off.
Deliver
- explicit ESLint ownership for JS or TS frontend assets
- checked-in commands for
lintandlint:fix - config decisions that match the repo's real frontend stack
Validate
- ESLint is running from repo-local dependencies
- rule ownership is not ambiguous versus Biome or other linters
- the chosen globs match the real frontend folders
- fixes were verified with the repo's normal frontend build or test pass when available
Ralph Loop
- Plan: analyze current state, target outcome, constraints, and risks.
- Execute one step and produce a concrete delta.
- Review the result and capture findings.
- Apply fixes in small batches and rerun checks.
- Update the plan after each iteration.
- Repeat until outcomes are acceptable.
- If a dependency is missing, bootstrap it or return
status: not_applicablewith a reason.
Required Result Format
status:complete|clean|improved|configured|not_applicable|blockedplan: concise plan and current stepactions_taken: concrete changes madeverification: commands, checks, or review evidenceremaining: unresolved items ornone
Example Requests
- "Add ESLint to the React frontend in this ASP.NET Core repo."
- "Make JS and TS lint failures block CI."
- "Fix the current ESLint warnings without hiding them."
More from managedcode/dotnet-skills
dotnet
Primary router skill for broad .NET work. Classify the repo by app model and cross-cutting concern first, then switch to the narrowest matching .NET skill instead of staying at a generic layer.
18dotnet-aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET.
13dotnet-entity-framework-core
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime management for modern .NET applications.
12dotnet-code-review
Review .NET changes for bugs, regressions, architectural drift, missing tests, incorrect async or disposal behavior, and platform-specific pitfalls before you approve or merge them.
11dotnet-architecture
Design or review .NET solution architecture across modular monoliths, clean architecture, vertical slices, microservices, DDD, CQRS, and cloud-native boundaries without over-engineering.
11dotnet-signalr
Implement or review SignalR hubs, streaming, reconnection, transport, and real-time delivery patterns in ASP.NET Core applications.
10