Minimizing Ty Ecosystem Changes
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"…
Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.
$ npx skills add jolars/panache --skill linter-investigation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jolars/panache linter-investigation --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/linter-investigation .claude/skills/linter-investigation && 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 "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .claude/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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/linter-investigationType 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 linter-investigation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jolars/panache linter-investigation --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/linter-investigation .agents/skills/linter-investigation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .agents/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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 linter-investigation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jolars/panache linter-investigation --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/linter-investigation .cursor/skills/linter-investigation && 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 "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .cursor/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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/linter-investigation--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 linter-investigation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jolars/panache linter-investigation --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/linter-investigation .gemini/skills/linter-investigation && 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 "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .gemini/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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 linter-investigationInstalls 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 linter-investigation -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/linter-investigation .github/skills/linter-investigation && 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 "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .github/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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 linter-investigation -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 linter-investigation --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/linter-investigation .opencode/skills/linter-investigation && 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 "linter-investigation" agent skill from https://github.com/jolars/panache/tree/main/.agents/skills/linter-investigation into .opencode/skills/linter-investigation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linter-investigation", 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.
linter-investigationInvestigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.
Linter Investigation is an agent skill from jolars/panache. Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase. Clone a target repo, lint it, and triage the diagnostics for false positives, incorrect spans, and unsafe autofixes (fixes that change document meaning); mis-parses of valid Markdown are caught along the way. Suspected bugs are confirmed against pandoc/quarto as the ground-truth AST before being called bugs. Use when asked to stress-test, investigate, or triage the linter (or parser) over an external repo or…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Linting and formatting. It works with Pandoc. The repository describes itself as: Language server, formatter, and linter for Quarto and other Markdown flavors. The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8f82e9a. 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:
cargopandocgitFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom 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.
Linter Investigation loads about 2k tokens when it runs. Until then it costs about 138 tokens; SKILL.md has 949 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 8f82e9a, republished under its MIT licence (© jolars). 949 words, ~2,044 tokens.
.claude/skills/linter-investigation/SKILL.md (or your agent's skills folder).Point panache's linter at a large body of real Quarto/Markdown and hunt for linter quality bugs: false positives, incorrect spans, and unsafe fixes. This is the primary goal. Parse problems are a secondary catch—Markdown is permissive, so parser bugs rarely surface as hard errors; they show up as a construct panache parses differently from pandoc, or as a mis-parse that makes a lint rule misfire. Report those, but keep the center of gravity on the linter, not a full parser/AST audit.
This is distinct from the smoke-test-triage skill. That one reacts to the
weekly automated corpus scan's formatter regressions (losslessness,
idempotence, format-error, panic) filed as GitHub issues. This skill is
proactive and interactive: you choose a repo and go looking for linter/parser
quality problems. Formatter losslessness and idempotence are out of scope
here—leave them to smoke-test-triage.
A finding is only a bug once pandoc/quarto shows panache is wrong. Real
corpora mix flavors (Pandoc, Quarto, R Markdown, GFM, CommonMark, MyST), and a
construct's meaning depends on the active flavor—so always triage with the right
--flavor. Classify each suspicious finding into exactly one of:
--unsafe-fixes fixes especially warrant scrutiny.pandoc AST — the ground truth for how a construct parses. Compare structure with the native/JSON AST:
pandoc -f markdown -t native <<'EOF'
...snippet...
EOFMatch the reader to the flavor (-f gfm, -f commonmark, -f markdown for
Pandoc). For a .qmd, quarto is the higher-level oracle.
panache's own view — panache parse <file> (with --to for projection,
--flavor to pin the dialect) prints the CST; panache debug format --checks all --dump-dir <dir> <file> dumps input/parse/format artifacts (this is the
losslessness/idempotence diagnostic path—use it to understand a mis-parse,
even though fixing those regressions belongs to smoke-test-triage).
A linter false positive is usually a Markdown-semantics judgment settled from
the pandoc AST plus panache's parse tree; reach for quarto when the question is
Quarto-specific (shortcodes, div syntax, execution blocks).
Target. Take the repo from the user's argument (GitHub owner/name, clone
URL, or local path). If none is given, propose a good default (hadley/r4ds or
rstudio/bookdown for R Markdown; quarto-dev/quarto-web for Quarto) and
confirm before cloning.
Setup (parallel/background). Build the release binary and shallow-clone
into the session scratchpad directory (not bare /tmp), at once:
cargo build --release
git clone --depth 1 https://github.com/<owner>/<name>.git "$SCRATCH/<name>"panache is a workspace; the parser lives in crates/panache-parser.
Lint the tree, capture everything. Capture both streams (per-violation
diagnostics may print to stdout, errors to stderr; lint exits non-zero on
violations):
target/release/panache lint "$SCRATCH/<name>" >lint.out 2>lint.errpanache lints .qmd/.md/.Rmd/.Rmarkdown. Set --flavor if the repo's files
need a specific dialect and extension inference isn't enough.
Summarize by rule. Count findings per rule to prioritize the high-volume and high-risk buckets:
grep -oE '(warning|error): [a-z-]+' lint.err lint.out | sort | uniq -c | sort -rnTriage (the heart of the work). For each priority rule, pull real findings, open the cited source line, and reduce each suspect to a minimal reproducer piped to the tool:
printf '...\n' | target/release/panache lint --flavor <flavor>
printf '...\n' | target/release/panache parse --flavor <flavor> # inspect CSTFor a suspected mis-parse, isolate the trigger by bisecting context (block vs inline, inside a list/blockquote/fenced block, which flavor), varying one axis at a time until the minimal shape is pinned—then diff panache's structure against pandoc's AST for the same snippet and flavor.
Verify against the oracle. Promote a suspicion to a bug only after pandoc/quarto agrees the construct means what you claim—under the flavor the file actually uses.
Fan out for volume (recommended). For a big finding set, spawn parallel
triage subagents—one per rule-bucket—each given the absolute
target/release/panache path, the lint.out/lint.err paths, the
classification scheme (with the flavor caveat), and the pandoc/quarto oracle
recipe. Each returns minimal reproducers, per-category verdicts, and an
FP-rate assessment.
Fix or record. For the cleanest, well-isolated bugs, fix TDD-style, honoring panache's tenets (parser bugs fixed in the parser; losslessness sacred; a fix must not change rendered meaning):
add-lint-rule and the golden-case conventions under
tests/fixtures/cases/ and crates/panache-parser/tests/ (reduce from the
corpus).cargo test, cargo clippy --all-targets --all-features -- -D warnings, cargo fmt -- --check; cargo insta accept after reviewing
new snapshots.Record everything you don't fix as follow-ups in TODO.md in the house style,
each with a minimal reproducer, the flavor, and the pandoc/quarto behavior.
Commit only if the user asks—atomic, Conventional Commits.
Report back. State plainly: bugs found (fixed vs. documented) with copy-pasteable reproducers (and the flavor each assumes); false-positive categories per rule; incorrect-span issues; which rules you verified clean; and follow-ups recorded. Be faithful about which flavor each verdict was checked under.
--flavor, and
always report which flavor a finding assumes—an "FP" under GFM may be correct
under Pandoc.--- metadata block or a code fence can corrupt structured content;
test any such fix by re-parsing and by round-tripping through pandoc.--unsafe-fixes edits deserve the most scrutiny.crates/panache-parser; debug format --checks all --dump-dir is the artifact-dump path for understanding a
mis-parse (fixing losslessness/idempotence itself is smoke-test-triage's job).© jolars, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/linter-investigation of jolars/panache.
Open the folder on GitHubat commit 8f82e9a
Linter Investigation 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 |
|---|---|---|---|---|---|---|
| Linter Investigation this skilljolars/panache | 238 | — | ~2k | Automated safety check: Pass | MIT | |
| Minimizing Ty Ecosystem Changesastral-sh/ruff | 50k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop | 5.4k | — | ~2.2k | 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 | |
| Summarise Ecosystem Resultsastral-sh/ruff | 50k | — | ~2.2k | Automated safety check: Pass | MIT |
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"…
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.
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.
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…
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
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.
jolars/panache
Profile-driven performance work on the panache parser or formatter.
Works with
Categories
Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase. Linter Investigation is an agent skill from jolars/panache. Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.
Linter Investigation fits situations like: asked to stress-test; triage the linter (or parser) over an external repo.
Run `npx skills add jolars/panache --skill linter-investigation -a claude-code`. Or copy the skill folder (.agents/skills/linter-investigation in jolars/panache) into .claude/skills/linter-investigation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jolars/panache --skill linter-investigation -a codex`. Or copy the skill folder (.agents/skills/linter-investigation in jolars/panache) into .agents/skills/linter-investigation 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 linter-investigation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linter-investigation, .gemini/skills/linter-investigation, .github/skills/linter-investigation and .opencode/skills/linter-investigation in your project.
Going by SKILL.md and its folder, Linter Investigation needs the command-line tools its instructions call (cargo, pandoc and git).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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.
Linter Investigation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.2k 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 Linter Investigation: Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars), Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.4k stars), Babysit PR To Pass CI (sgl-project/sglang, 37k stars) and Rust Best Practices (farm-fe/farm, 5.6k 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 238 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 10, 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.