Dotnet-skills dotnet-eslint
Use ESLint in .NET repositories that ship JavaScript, TypeScript, React, or other Node-based frontend assets. Use when a repo needs a configurable CLI lint gate for frontend correctness, import hygiene, unsafe patterns, or framework-specific rules.
install
source · Clone the upstream repo
git clone https://github.com/managedcode/dotnet-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/managedcode/dotnet-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/catalog/Tools/ESLint/skills/dotnet-eslint" ~/.claude/skills/managedcode-dotnet-skills-dotnet-eslint && rm -rf "$T"
manifest:
catalog/Tools/ESLint/skills/dotnet-eslint/SKILL.mdsource content
ESLint for Frontend Assets in .NET Repositories
Trigger On
- the repo has
,package.json
,eslint.config.*
,.eslintrc*
, or JS/TS/React frontend filestsconfig.json - 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.json
oreslint.config.*.eslintrc*
when TypeScript or type-aware rules are involvedtsconfig.json
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
, for example:package.json
:linteslint .
:lint:fixeslint . --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
before enabling heavier rules.tsconfig.json - 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
oreslint.config.js
instead of leaving setup implicit.eslint.config.mjs - Add repeatable commands to
andAGENTS.md
, then verify with:package.jsonnpx eslint .npx eslint . --fix
- Return
if the repo now has a working lint gate, orstatus: configured
if existing setup was tightened.status: improved - Return
only when another documented tool already owns JS or TS linting and migration is not requested.status: not_applicable
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
coverage first.tsconfig.json
usually means a missing plugin package or a config targeting a different ESLint major version.Definition for rule ... was not found
usually means the glob is too broad or ignores were left stale after a folder move.File ignored because of a matching ignore pattern- 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
andlintlint: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
with a reason.status: not_applicable
Required Result Format
:status
|complete
|clean
|improved
|configured
|not_applicableblocked
: concise plan and current stepplan
: concrete changes madeactions_taken
: commands, checks, or review evidenceverification
: unresolved items orremainingnone
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."