ワンクリックで
markuplint-configure
// Add, remove, or adjust Markuplint rules for specific files or elements. Analyzes violations, proposes scope-appropriate configuration changes, and confirms with the user.
// Add, remove, or adjust Markuplint rules for specific files or elements. Analyzes violations, proposes scope-appropriate configuration changes, and confirms with the user.
Triage one nu-only fixture from tests/external/snapshots/diff/nu-only.json by reading the spec, then drive its verdict to match-error, match-clean, or nu-over by either fixing markuplint or recording an excluded-ids.json entry. The core operation of the nu-validator coverage benchmark. Use when reducing the nu-only backlog, when checking a coverage-claim ("markuplint misses X" / "over-detects Y") against the bench, or when classifying a specific fixture. Trigger keywords: nu-only, ml-only, coverage gap, bench triage, verdict, match-error, match-clean, nu-over, excluded-ids, declare nu over-detection, claim audit, audit fixture, reduce nu-only, mark-up valid per spec, spec-cited exclusion.
Enable an existing or newly-added markuplint rule on the nu-validator bench by editing tests/external/bench/config.ts. Covers the flat-rule case (rules: { '<name>': true }) and the severity override case (rules: { '<name>': { severity: 'error' } }) that bench-virtual-rule does not. Use when a rule exists in the registry but the relevant nu fixtures stay nu-only because the rule is not enabled in the bench config, or when a rule's default severity is warning but the spec text it mirrors is a MUST / MUST NOT. Trigger keywords: enable bench rule, bench config flat rule, severity override bench, rule not flagging on bench, warning vs error in bench, escalate severity bench, wai-aria-implicit-props bench, bench coverage missing rule.
Set up the nu-validator benchmark environment — initialise the validator submodule, ensure Docker is running, populate the gitignored raw snapshots via yarn bench:update. Also covers Docker / nu-runner troubleshooting. Use when bench commands fail with "no snapshots found", "Docker daemon not reachable", port 28888 conflicts, or healthcheck timeouts; or when refreshing the bench after a long break. Trigger keywords: bench setup, bench Docker, validator submodule, no snapshots found, Docker daemon not reachable, healthcheck times out, port 28888, yarn bench:update first time, bench install, fresh clone bench.
Mirror a preset virtual rule (selectors under `nodeRules` in preset.html-standard.jsonc and similar) into bench/config.ts so the benchmark exercises it. Use when a new disallowed-element / similar selector lands in a preset and the matching nu fixtures remain stuck at nu-only despite the new rule existing in markuplint. Trigger keywords: virtual rule, nodeRules, disallowed-element, preset html-standard, bench config mirror, rule does not fire on bench, preset rule not exercised.
Sync benchmark cross-reference blocks onto GitHub Issue bodies via `yarn bench:xref`, manage `tests/external/bench/issue-xref.config.ts` mappings, and run the pre-release checklist. Use when adding / removing / updating a primary or secondary mapping, when an issue closes upstream, when the xref CLI's output disagrees with what's on the issue body, or before cutting a release that touches a rule the benchmark covers. Trigger keywords: bench-xref, issue-xref, xref CLI, GitHub issue body, primary mapping, secondary mapping, umbrella block, pre-release checklist, bench-xref-audit workflow, marker version.
A skill for performing code reviews and test quality checks as a QA engineer. Improves code coverage, detects test-faking code, catches swallowed exceptions, flags conditional logic in tests, promotes hardcoded assertions, and checks cross-platform/cross-runtime compatibility (Windows, Deno, Bun). Language- and framework-agnostic — works with any repository. Trigger this skill on keywords: code review, test, coverage, QA, quality check, test generation, refactoring, review, test, coverage, refactor. Always use this skill when the user requests a PR review or test improvement.
| name | markuplint-configure |
| description | Add, remove, or adjust Markuplint rules for specific files or elements. Analyzes violations, proposes scope-appropriate configuration changes, and confirms with the user. |
| disable-model-invocation | true |
| argument-hint | [file:line or rule-name] |
Add, remove, or adjust Markuplint rules.
Determine the documentation site based on the installed markuplint version:
npx markuplint --version
alpha, beta, or rc (e.g., 5.0.0-alpha.1) → use https://next.markuplint.dev as the doc basehttps://markuplint.dev as the doc baseUse the determined doc base for all documentation URLs in subsequent steps.
If $ARGUMENTS contains a file path or line reference, read that file first.
Run Markuplint on the target to see current violations:
npx markuplint "path/to/file.html" --format JSON
If no specific file, run on the project and summarize.
Determine the intent:
If unclear, use AskUserQuestion to clarify.
Use AskUserQuestion to confirm the intended scope.
| User intent | Scope | Where to configure |
|---|---|---|
| "I don't want this rule anywhere" | Project-wide | rules in config |
| "I don't want this in certain files" | File-level | excludeFiles or overrides |
| "I don't want this on specific elements" | Element-level | nodeRules or childNodeRules |
Important distinction for file-level scope — ask the user:
excludeFiles: Markuplint completely ignores the file. VS Code extension won't show warnings either. Use when the file should never be linted.overrides with overrideMode: "merge": Markuplint still processes the file but with different rules. VS Code shows remaining warnings. Use when you want partial coverage.If the scope is element-level, choose between:
nodeRules — applies to the matched element itselfchildNodeRules — applies to children of the matched element. Add "inheritance": true to affect all descendants, not just direct children.The AI agent should propose a CSS selector based on the code context. Use the element's class, ID, tag name, or attributes to build the selector.
For rule details, fetch the rule's documentation:
{doc-base}/docs/rules/{rule-id} (where {doc-base} is determined in Step 1)
Show the user the exact configuration change before applying.
Always explain:
Example proposals:
{
"rules": {
"a11y/specific-rule": false
}
}
{
"nodeRules": [
{
"selector": ".legacy-component",
"rules": {
"class-naming": false
}
}
]
}
{
"childNodeRules": [
{
"selector": ".legacy-section",
"inheritance": true,
"rules": {
"wai-aria": false
}
}
]
}
{
"excludeFiles": ["./src/legacy/**/*"]
}
{
"overrideMode": "merge",
"overrides": {
"./src/legacy/**/*": {
"rules": {
"character-reference": false
}
}
}
}
Never modify the config file without user confirmation.
.markuplintrc using Edit toolThese are frequently requested. Propose them directly when relevant:
{
"nodeRules": [
{
"selector": "meta[property]",
"rules": {
"invalid-attr": {
"options": {
"allowAttrs": ["property"]
}
}
}
}
]
}
{
"rules": {
"invalid-attr": {
"options": {
"allowAttrs": ["data-testid"]
}
}
}
}
:is(nav *) (NOT :closest() — it is deprecated){doc-base}/docs/guides/selectors{doc-base}/docs/configuration/properties