Install Anti-Slop Oxlint Rules
dmmulroy/anti-slop
Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.
Incrementally make Panache's CST shape for HTML-block / raw-HTML conform to pandoc's AST shape under Flavor::Pandoc, so downstream consumers (linter, salsa anchor index, LSP, formatter) see the same…
$ npx skills add jolars/panache --skill html-conformance -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jolars/panache html-conformance --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/html-conformance .claude/skills/html-conformance && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .claude/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jolars/panache/tree/main/.agents/skills/html-conformanceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jolars/panache --skill html-conformance -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jolars/panache html-conformance --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/html-conformance .agents/skills/html-conformance && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .agents/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jolars/panache --skill html-conformance -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jolars/panache html-conformance --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/html-conformance .cursor/skills/html-conformance && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .cursor/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jolars/panache.git --path .agents/skills/html-conformance--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jolars/panache --skill html-conformance -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jolars/panache html-conformance --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/html-conformance .gemini/skills/html-conformance && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .gemini/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jolars/panache html-conformanceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jolars/panache --skill html-conformance -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/html-conformance .github/skills/html-conformance && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .github/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jolars/panache --skill html-conformance -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jolars/panache html-conformance --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jolars/panache.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/html-conformance .opencode/skills/html-conformance && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "html-conformance" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/html-conformance into .opencode/skills/html-conformance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-conformance", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
html-conformanceIncrementally make Panache's CST shape for HTML-block / raw-HTML conform to pandoc's AST shape under Flavor::Pandoc, so downstream consumers (linter, salsa anchor index, LSP, formatter) see the same…
HTML Conformance is an agent skill from jolars/panache. Incrementally make Panache's CST shape for HTML-block / raw-HTML conform to pandoc's AST shape under Flavor::Pandoc, so downstream consumers (linter, salsa anchor index, LSP, formatter) see the same structural decisions pandoc would have made. The pandoc -f markdown -t native projector at crates/panache-parser/src/pandocast.rs is a test-only diagnostic - divergence from pandoc-native points at a wrong CST, not a fix-it-here problem. Lift HTML structure into the CST by tokenizing existing source bytes at finer…
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `AUDIT.md` and `RECAP.md`).
It sits in Development, covering Linting and formatting. It works with Pandoc. The repository describes itself as: Language server, formatter, and linter for Markdown, Quarto, and R Markdown. The licence is MIT.
10 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e28d49b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cargopandocFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
HTML Conformance loads about 5.6k tokens when it runs. Until then it costs about 197 tokens; SKILL.md has 2,538 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jolars/panache at commit e28d49b, republished under its MIT licence (© jolars). 2,538 words, ~5,551 tokens.
.claude/skills/html-conformance/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Use this skill when asked to advance Panache's HTML conformance, unblock a regression that involves raw HTML attributes (issue #263 and its descendants), or pick "the next best phase" of the HTML lift.
crates/panache-parser/src/pandoc_ast.rs is a
test-only diagnostic — its job is to reveal CST shape problems by
diffing against pandoc-native. Putting logic there to make a test
pass while the CST stays wrong destroys the diagnostic value. The
consumers of structural HTML decisions (linter, salsa, LSP,
formatter) read the CST, not the projector output.If a session's diff is mostly in pandoc_ast.rs (other than removing
existing compensation), that's a smell. The fix probably belongs in
the parser.
Flavor::Pandoc.
Block-level: crates/panache-parser/src/parser/blocks/html_blocks.rsblock_dispatcher.rs. Inline-level:
crates/panache-parser/src/parser/inlines/inline_html.rs. Projection:
crates/panache-parser/src/pandoc_ast.rs. Salsa indexer:
src/salsa.rs.Flavor::Pandoc only. CommonMark dialect must stay byte-identical
in CST and pandoc-native projection. Dialect::CommonMark keeps
the opaque HTML_BLOCK shape; lifts are gated on
Dialect::Pandoc.pandoc -f markdown -t native) is the behavioral
reference. Existing parser fixtures and projector output are not
the reference — when they disagree with pandoc-native, fix toward
pandoc-native.crates/panache-parser/tests/fixtures/pandoc-conformance/corpus/<NNNN>-<section>-<slug>/
with section prefix html-block (block-level) or html-inline
(inline-level). The pandoc allowlist
(crates/panache-parser/tests/pandoc/allowlist.txt) gets new
section header comments # html-block / # html-inline.crates/panache-parser/tests/pandoc/blocked.txt:
markdown="1" / markdown="0" (Ext_markdown_attribute, default
off in pandoc-flavored markdown); <a id> / <a name> legacy
anchor lift (pandoc does NOT lift these in default markdown —
treat as opaque RawInline); malformed/unbalanced tags (fall back
to opaque HTML_BLOCK / INLINE_HTML).Follow the Pandoc conformance, parser, and formatter invariants in the
repository's root AGENTS.md.
The HTML lift is bounded by 5 phases. Pick one (or part of one) per
session. Latest phase status lives in RECAP.md.
Phase 1 — Block-level <div> lift (Pandoc dialect). Parser emits
HTML_BLOCK_DIV for matched <div ...>...</div>; projector consumes
it and emits Block::Div(attrs, blocks); salsa indexer extracts
id from the open tag and registers it in
crossref_declarations. Unblocks issue #263.
Phase 2 — Inline <span> lift (Pandoc dialect). Mirrors Phase 1
on the inline side. Coordinate with pandoc-ir-migrate Phase 1 —
<span> is already a ConstructKind::PandocOpaque event in
inline_ir.rs, so the lift must not double-handle the byte range.
Phase 3 — Sectioning (<section>, <article>, <aside>,
<nav>) and verbatim (<pre>, <style>, <script>, <textarea>)
parity. Negative-space work: confirm pandoc-native keeps these
as RawBlock "html" with no markdown parsing inside, and pin that
behavior in the corpus. No CST shape change expected; verify the
projector emits exactly what pandoc does.
Phase 4 — Comments, processing instructions, declarations, CDATA
projection. Pin RawBlock "html" / RawInline "html" for each
case. CST already correct — this is mostly seeding the corpus and
verifying projection output.
Phase 5 — markdown_in_html_blocks interaction edge cases:
nested div-in-div; div-around-list; div-with-blank-lines (Plain vs
Para promotion); block-tag-on-same-line shapes
(<div>foo</div>); div-as-list-item-content. The hardest phase —
expect parser-side fixes to support pandoc's recursive parse.
crates/panache-parser/src/parser/blocks/html_blocks.rs — block
HTML state machine. try_parse_html_block_start recognizes the 7
CommonMark types; parse_html_block walks lines and emits the
CST. Phase 1 adds a use_div_kind: bool parameter that retags
the wrapper from HTML_BLOCK to HTML_BLOCK_DIV when a
matched <div>...</div> is recognized under Pandoc.crates/panache-parser/src/parser/block_dispatcher.rs — calls
try_parse_html_block_start and parse_html_block. Phase 1 adds
the matched-</div> pre-scan and passes the result down.crates/panache-parser/src/parser/inlines/inline_html.rs —
inline raw HTML. Phase 2's <span> lift adds an
INLINE_HTML_SPAN shape gated on Pandoc dialect.crates/panache-parser/src/syntax/kind.rs — new SyntaxKinds.
Phase 1 adds HTML_BLOCK_DIV. Phase 2 adds INLINE_HTML_SPAN.crates/panache-parser/src/pandoc_ast.rs — projector. Phase 1
adds an HTML_BLOCK_DIV match arm in block_from /
collect_block that walks the structural CST instead of
re-tokenizing bytes. The legacy try_div_html_block byte-level
re-tokenizer can stay as a fallback for HTML_BLOCK (when the
parser hasn't lifted, e.g. malformed input under Pandoc), or be
deleted once all matched divs are lifted at parse time.parse_html_attrs (already in pandoc_ast.rs) — reused to extract
attributes from the open tag's verbatim text.src/salsa.rs — anchor index. Phase 1 adds a walk for
HTML_BLOCK_DIV that reads the first HTML_BLOCK_TAG child,
extracts attributes via parse_html_attrs, and registers the
id in crossref_declarations. Phase 2 adds the same for
INLINE_HTML_SPAN.src/linter/rules/undefined_anchor.rs — consumer of the index.
No code change expected, just integration tests confirming that
<div id> no longer produces false positives.crates/panache-formatter/src/formatter/core.rs — has multiple
match arms keyed on SyntaxKind::HTML_BLOCK. Phase 1 needs to
also accept HTML_BLOCK_DIV at each site (text emission is
identical). Likewise crates/panache-formatter/src/utils.rs,
formatter/lists.rs, and directives.rs for any HTML_BLOCK
match.crates/panache-parser/tests/fixtures/pandoc-conformance/corpus/
— corpus, section prefix html-block / html-inline.crates/panache-parser/tests/pandoc/allowlist.txt — new
# html-block / # html-inline section comments.crates/panache-parser/tests/pandoc/blocked.txt — deferrals.crates/panache-parser/tests/fixtures/cases/ — paired parser
golden fixtures (CommonMark vs Pandoc) when CST shape diverges
by dialect.tests/fixtures/cases/ — formatter golden fixtures when Phase N
produces a new round-trip behavior. Required when CST shape
changes — <div> must format back as <div>, not :::.The CST must be byte-equal to the input. The right way to expose
HTML attributes structurally is to tokenize the existing source
bytes at finer granularity, not to add synthetic tokens. Phase 1
demonstrates the pattern for <div>:
The open-tag bytes <div id="x" class="y"> previously lived in a
single TEXT token. Phase 1 splits them into
`TEXT("<div") + WHITESPACE + HTML_ATTRS{TEXT("id="x" class="y"")}
. Source bytes are unchanged — the structural node HTML_ATTRSjust *groups* the existing attribute bytes soAttributeNode::cast can recognize them. This mirrors how fenced divs already work (DIV_INFOgroups the{#id .class}bytes after:::`).For Phase 2 (<span>), do the same thing inline:
<span id="x">...</span> should tokenize the open tag's attribute
region into an HTML_ATTRS node so the same AttributeNode walk
finds it automatically.
Phase 1 established the reusable pattern: retag matched Pandoc wrappers,
tokenize their existing attribute bytes as HTML_ATTRS, and let the standard
AttributeNode walk expose them. Inner block content and multi-line open tags
remain Phase 5 work. Phase 2 mirrors this shape for matched <span> wrappers.
Every failing HTML conformance case is one of:
pandoc_ast.rs.HTML_BLOCK for a
construct that should lift, or vice versa. Fix in
html_blocks.rs / inline_html.rs. Add a paired parser fixture
pinning the CST shape under both dialects when behavior
diverges.src/salsa.rs.Ext_native_divs,
Ext_native_spans, Ext_markdown_in_html_blocks); panache's
default disagrees. Tighten in
crates/panache-parser/src/options.rs::pandoc_defaults().<aside> with markdown="1"). Add to blocked.txt with reason
unless the construct is a clear next-phase target.Read RECAP.md for current phase, deferred targets, traps.
If the user named a target, prefer it.
Establish the test baseline:
cargo test -p panache-parser --test pandoc pandoc_allowlist
cargo test -p panache-parser --test commonmark commonmark_allowlist
cargo test --workspace --no-fail-fast 2>&1 | grep -E "^test " | grep "FAILED" | sort -uSave the failing-test set; "no regression" means a strict subset.
Regenerate the conformance report (skip if last entry is stale by less than 24h):
cargo test -p panache-parser --test pandoc pandoc_full_report \
-- --ignored --nocaptureLook at crates/panache-parser/tests/pandoc/report.txt for the
# html-block and # html-inline slices.
Pick a target:
Probe the case(s):
pandoc <case>/input.md -f markdown -t native
pandoc <case>/input.md -f commonmark -t native # if dialect-divergentFor batch triage, drop a throwaway probe test in
crates/panache-parser/tests/pandoc.rs (the same template as
pandoc-conformance.md describes) and delete it before
finishing the session.
Classify into a failure bucket, then apply the smallest fix. Verify the change is parser-side rather than projector-side only when downstream consumers (salsa, LSP, formatter) need the structure — projector-only fixes are fine when the structure is already in the CST.
Add fixtures before allowlisting:
crates/panache-parser/tests/fixtures/cases/.
Required when adding a new CST shape.tests/fixtures/cases/ when the
change produces a new block sequence or different
idempotency behavior. Pandoc is the default flavor — no
panache.toml needed.Verify each new corpus case appears in the regenerated
report.txt before adding to the allowlist:
grep -E '^(N1|N2|N3)$' \
crates/panache-parser/tests/pandoc/report.txtEach id must show up in the passing list. Add under the
# html-block / # html-inline section header.
Run guardrails:
cargo test -p panache-parser --test pandoc pandoc_allowlist
cargo test -p panache-parser --test commonmark commonmark_allowlist
cargo test -p panache-parser
cargo test --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo fmt -- --check
cargo test -p panache-parser --test pandoc pandoc_full_report \
-- --ignored --nocaptureThe CommonMark allowlist must stay green; CST losslessness (parser-crate's tree-text-equals-input check) must stay green.
Update RECAP.md with the session outcome: phase touched,
pass-rate before/after for the html-block / html-inline
slices, files changed, new traps, ranked next targets.
printf '<div id="anchor-c">Content.</div>\n\nSee [link](#anchor-c).\n' \
| cargo run -- lint /dev/stdinShould report zero undefined-anchor diagnostics after Phase 1.
printf '<div id="x">**Hi**</div>\n' | cargo run -- parse --to pandoc-astShould emit Div ("x", [], []) [Plain [Strong [Str "Hi"]]] —
byte-identical to pandoc -f markdown -t native.
pandoc -f markdown -t native and
pandoc -f commonmark -t native before changing parser
behavior.try_div_html_block projector path as
legacy — Phase 1 makes it redundant for matched divs; later
phases may delete it once parser-side lifting covers the cases.HTML_BLOCK_DIV
wrapper contains only the original tag bytes (HTML_BLOCK_TAG
open, content, HTML_BLOCK_TAG close) — no synthetic attribute
tokens.<div> parsed → <div> formatted. Never :::.<div>/<span> tags without
pandoc-native verification. Sectioning and verbatim tags stay
raw.expected.native files by hand. Generate via
pandoc -f markdown -t native input.md > expected.native or
crates/panache-parser/scripts/update-pandoc-conformance-corpus.sh.report.txt.pandoc-ir-migrate (Phase 1) treats <span>...</span> as a
ConstructKind::PandocOpaque event in
crates/panache-parser/src/parser/inlines/inline_ir.rs. The IR's
role is purely to keep emphasis from pairing across the span's
bytes — it does not emit a CST node. Phase 2 of THIS skill
(<span> lift) emits a structural INLINE_HTML_SPAN for the
same byte range; the two are complementary, not conflicting.
Concretely:INLINE_HTML_SPAN retag when
try_parse_inline_html matches a balanced span under Pandoc
dialect — the dispatcher in
crates/panache-parser/src/parser/inlines/core.rs already
consumes the byte range and emits an INLINE_HTML wrapper;
Phase 2 just retags the wrapper.*foo <span>bar</span> baz*) and check the CST matches pandoc-native — emphasis must
NOT pair into the span content.~/.cache/panache/ serves stale
results. When you change src/salsa.rs, src/linter/, or any
rule output, the CLI may keep emitting the OLD diagnostic from
cache even after cargo build. Symptoms: unit tests pass,
panache lint still flags a fixed case, eprintln! from your
changed code never fires. Fix: run cargo run -- clean --all or use
--no-cache, then retry. Always run unit tests for the rule first;
only chase CLI behavior once those pass.<div id="x">Content</div> on one line puts everything
(including the close tag) in a single HTML_BLOCK_TAG token.
Naive strip_suffix('>') on the open-tag text captures the
wrong > (the close tag's). The
parse_html_tag_attributes helper handles this by scanning to
the FIRST unquoted >. If you write a sibling helper that does
attribute parsing, follow the same pattern.<div>s
(case 0199-html-block-div-nested) close the outer block at
the first inner </div> rather than tracking tag depth. This
is in crates/panache-parser/tests/pandoc/blocked.txt and is a Phase
5 target. Don't chase it as part of Phase 2/3/4 — it requires changes in
parser/blocks/html_blocks.rs to do a depth-aware pre-scan.symbol_usage_index query is LRU-cached
per process (#[salsa::tracked(returns(ref), lru = 64)]). A
CLI invocation that hits the same cache key reuses the result
without re-running symbol_usage_index_from_tree. Fresh
process → fresh cache, so CLI calls are usually fine; just
don't rely on a single test execution to exercise both code
paths.RECAP.md)This skill keeps a rolling recap at
.agents/skills/html-conformance/RECAP.md. Layout (top → bottom):
Read in this order: Persistent traps → Phase progress → Latest session's "Suggested next sub-targets". Skim the Earlier sessions log only if you need to find the session that introduced a specific behavior; the persistent traps section already holds the still- relevant knowledge.
The recap is a rolling, not append-only, document. Each session:
date — phase/sub-target — pass count delta — root cause / lever.
Discard the section's prose, file lists, and trap lists.Target: RECAP.md ≤ 400 lines. If your session-end edit pushes it past 400, take another compaction pass on the Earlier sessions log (collapse adjacent entries, drop dates older than the current phase if all session-specific traps have been folded into Persistent). Don't compact the current session's entry — that's for the next session to demote.
(uncommitted partial diff): the recap MUST say so explicitly and rank the next sub-target. Do NOT mark the session done if any test that was green at start is red at end.
When done, report:
<div> lift; issue #263
unblock").RECAP.md.If the session ends without committing: list the remaining red tests and why.
© jolars, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in .agents/skills/html-conformance of jolars/panache.
Open the folder on GitHubat commit e28d49b
HTML Conformance next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| HTML Conformance this skilljolars/panache | 235 | — | ~5.6k | Automated safety check: Pass | MIT | |
| Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop | 5.3k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Summarise Ecosystem Resultsastral-sh/ruff | 50k | 1 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Minimizing Ty Ecosystem Changesastral-sh/ruff | 50k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Babysit PR To Pass CIsgl-project/sglang | 37k | 2 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Rust Best Practicesfarm-fe/farm | 5.6k | 3 repos | ~1.1k | Automated safety check: Pass | MIT |
dmmulroy/anti-slop
Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.
astral-sh/ruff
A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…
astral-sh/ruff
A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…
sgl-project/sglang
Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
chromedp/chromedp
This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…
jolars/panache
Add a new block-level or inline-level syntax construct to Panache's parser and formatter — confirm the pandoc-native shape first, add SyntaxKinds for every byte category, gate it behind an extension…
jolars/panache
Grow Panache's CommonMark spec conformance under Flavor::CommonMark by running every spec.txt example through the shared parser, comparing rendered HTML against the spec's expected HTML…
jolars/panache
Work on Panache's delegation of embedded code blocks to third-party formatters and linters (ruff, shfmt, shellcheck, rustfmt, ...) — add or change a preset, fix the offset mapping that translates a…
jolars/panache
Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.
jolars/panache
Implement or debug Panache's TeX math parser and formatter internals, including the lossless CST, semantic model, diagnostics, and Badness parity.
jolars/panache
Add a new built-in lint rule to the Panache linter — wire it into the registry, gate it on the right extension/flavor, add a regression fixture with focused assertions, and document it.
Works with
Categories
Incrementally make Panache's CST shape for HTML-block / raw-HTML conform to pandoc's AST shape under Flavor::Pandoc, so downstream consumers (linter, salsa anchor index, LSP, formatter) see the same…. HTML Conformance is an agent skill from jolars/panache. Incrementally make Panache's CST shape for HTML-block / raw-HTML conform to pandoc's AST shape under Flavor::Pandoc, so downstream consumers (linter, salsa anchor index, LSP, formatter) see the same structural decisions pandoc would have made.
HTML Conformance fits situations like: tasks that involve Linting and formatting.
Run `npx skills add jolars/panache --skill html-conformance -a claude-code`. Or copy the skill folder (.agents/skills/html-conformance in jolars/panache) into .claude/skills/html-conformance in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jolars/panache --skill html-conformance -a codex`. Or copy the skill folder (.agents/skills/html-conformance in jolars/panache) into .agents/skills/html-conformance in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jolars/panache --skill html-conformance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/html-conformance, .gemini/skills/html-conformance, .github/skills/html-conformance and .opencode/skills/html-conformance in your project.
Going by SKILL.md and its folder, HTML Conformance needs the command-line tools its instructions call (cargo and pandoc).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
HTML Conformance is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with HTML Conformance: Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.3k stars), Summarise Ecosystem Results (astral-sh/ruff, 50k stars), Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars) and Babysit PR To Pass CI (sgl-project/sglang, 37k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jolars (a GitHub user) maintains it in jolars/panache, which has 235 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 7, 2026.
Source: jolars/panache on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.