Agent skill
dotnet-htmlhint
Use HTMLHint in .NET repositories that ship static HTML output or standalone frontend templates. Use when a repo needs a focused CLI lint gate for DOM structure, invalid attributes, and basic HTML correctness checks on static pages.
Install this agent skill to your Project
npx add-skill https://github.com/managedcode/dotnet-skills/tree/main/catalog/Tools/HTMLHint/skills/dotnet-htmlhint
SKILL.md
HTMLHint for Static HTML in .NET Repositories
Trigger On
- the repo has static HTML files, generated frontend output, or standalone templates under
wwwroot/,dist/, or other web folders - the user asks for HTML structure checks, invalid attribute detection, or basic DOM-quality linting
- the repo wants a narrow HTML gate separate from JS, CSS, and full-site runtime audits
Do Not Use For
- raw
.cshtmlor.razorsource with server-side directives; lint the rendered or published output instead - JavaScript or TypeScript linting; route that to
dotnet-eslint - runtime performance, accessibility, SEO, or headers; route that to
dotnet-webhint
Inputs
- the nearest
AGENTS.md package.json.htmlhintrcor equivalent config if present- the real static HTML target: source templates, built output, or deployed URL
Workflow
- Choose the right target first:
- static HTML source files
- generated build output such as
dist/ - a reachable URL when the page is already served
- Prefer repo-local installation and checked-in config for repeatable runs.
- Keep HTMLHint focused on static HTML correctness and lightweight policy.
- Add narrow scripts to
package.json, for example:htmlhint "dist/**/*.html"htmlhint "wwwroot/**/*.html"
- If the repo has templating syntax that confuses the parser, lint the rendered output instead of forcing source templates through the tool.
- Use rule overrides deliberately for real project conventions; do not disable broad classes of checks just to make a noisy first pass green.
- Rerun the publish or frontend build flow if fixes touched generated or packaged HTML sources.
Bootstrap When Missing
- Detect current state:
rg --files -g 'package.json' -g '.htmlhintrc*' -g '*.html'rg -n '"htmlhint"' --glob 'package.json' .
- Prefer a repo-local install:
npm install --save-dev htmlhint
- Add or refine
.htmlhintrconly after confirming the actual target files. - Add repeatable commands to
AGENTS.mdandpackage.json, then verify with:npx htmlhint "dist/**/*.html"npx htmlhint https://example.com
- Return
status: configuredif HTMLHint now owns a clear static-HTML gate, orstatus: improvedif the existing setup was tightened. - Return
status: not_applicablewhen the repo's HTML is primarily server-rendered templates that should be validated after rendering instead.
Handle Failures
- Parser noise on Razor, Blazor, or other server-side template syntax is a target-selection problem; lint built output instead of source templates.
- URL-based checks can fail on auth, SPA routing, or environment drift; verify the served target is reachable and stable before trusting the result.
- Large volumes of trivial attribute warnings usually mean the config was copied from another stack and needs to be adapted to the repo's real HTML conventions.
Deliver
- a repeatable static HTML lint gate
- clear targeting rules for source HTML versus rendered output
- checked-in config that matches the repo's actual page structure
Validate
- the lint target contains real static HTML, not unsupported template syntax
- commands are reproducible from repo-local dependencies
- HTMLHint ownership is kept separate from broader site-audit tooling
- fixes were verified on the built or served output that actually ships
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 HTMLHint for the built static site in this repo."
- "Lint the generated HTML before deployment."
- "Why is HTMLHint failing on Razor pages?"
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
dotnet-project-setup
Create or reorganize .NET solutions with clean project boundaries, repeatable SDK settings, and a maintainable baseline for libraries, apps, tests, CI, and local development.
csharp-scripts
Run single-file C# programs as scripts (file-based apps) for quick experimentation, prototyping, and concept testing. Use when the user wants to write and execute a small C# program without creating a full project.
dotnet-pinvoke
Correctly call native (C/C++) libraries from .NET using P/Invoke and LibraryImport. Covers function signatures, string marshalling, memory lifetime, SafeHandle, and cross-platform patterns. USE FOR: writing new P/Invoke or LibraryImport declarations, reviewing or debugging existing native interop code, wrapping a C or C++ library for use in .NET, diagnosing crashes, memory leaks, or corruption at the managed/native boundary. DO NOT USE FOR: COM interop, C++/CLI mixed-mode assemblies, or pure managed code with no native dependencies.
nuget-trusted-publishing
Set up NuGet trusted publishing (OIDC) on a GitHub Actions repo — replaces long-lived API keys with short-lived tokens. USE FOR: trusted publishing, NuGet OIDC, keyless NuGet publish, migrate from NuGet API key, NuGet/login, secure NuGet publishing. DO NOT USE FOR: publishing to private feeds or Azure Artifacts (OIDC is nuget.org only). INVOKES: shell (powershell or bash), edit, create, ask_user for guided repo setup.
dotnet-legacy-aspnet
Maintain classic ASP.NET applications on .NET Framework, including Web Forms, older MVC, and legacy hosting patterns, while planning realistic modernization boundaries.
dotnet-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.
Didn't find tool you were looking for?