Dotnet-skills 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
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/HTMLHint/skills/dotnet-htmlhint" ~/.claude/skills/managedcode-dotnet-skills-dotnet-htmlhint && rm -rf "$T"
manifest: catalog/Tools/HTMLHint/skills/dotnet-htmlhint/SKILL.md
source content

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
    .cshtml
    or
    .razor
    source 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
  • .htmlhintrc
    or equivalent config if present
  • the real static HTML target: source templates, built output, or deployed URL

Workflow

  1. Choose the right target first:
    • static HTML source files
    • generated build output such as
      dist/
    • a reachable URL when the page is already served
  2. Prefer repo-local installation and checked-in config for repeatable runs.
  3. Keep HTMLHint focused on static HTML correctness and lightweight policy.
  4. Add narrow scripts to
    package.json
    , for example:
    • htmlhint "dist/**/*.html"
    • htmlhint "wwwroot/**/*.html"
  5. If the repo has templating syntax that confuses the parser, lint the rendered output instead of forcing source templates through the tool.
  6. Use rule overrides deliberately for real project conventions; do not disable broad classes of checks just to make a noisy first pass green.
  7. Rerun the publish or frontend build flow if fixes touched generated or packaged HTML sources.

Bootstrap When Missing

  1. Detect current state:
    • rg --files -g 'package.json' -g '.htmlhintrc*' -g '*.html'
    • rg -n '"htmlhint"' --glob 'package.json' .
  2. Prefer a repo-local install:
    • npm install --save-dev htmlhint
  3. Add or refine
    .htmlhintrc
    only after confirming the actual target files.
  4. Add repeatable commands to
    AGENTS.md
    and
    package.json
    , then verify with:
    • npx htmlhint "dist/**/*.html"
    • npx htmlhint https://example.com
  5. Return
    status: configured
    if HTMLHint now owns a clear static-HTML gate, or
    status: improved
    if the existing setup was tightened.
  6. Return
    status: not_applicable
    when 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

  1. Plan: analyze current state, target outcome, constraints, and risks.
  2. Execute one step and produce a concrete delta.
  3. Review the result and capture findings.
  4. Apply fixes in small batches and rerun checks.
  5. Update the plan after each iteration.
  6. Repeat until outcomes are acceptable.
  7. If a dependency is missing, bootstrap it or return
    status: not_applicable
    with a reason.

Required Result Format

  • status
    :
    complete
    |
    clean
    |
    improved
    |
    configured
    |
    not_applicable
    |
    blocked
  • plan
    : concise plan and current step
  • actions_taken
    : concrete changes made
  • verification
    : commands, checks, or review evidence
  • remaining
    : unresolved items or
    none

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?"