Agent skill

Linter Investigation

by jolars in jolars/panache

Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.

MITAuto-check passedDevelopment

Install Linter Investigation

skills CLI
$ npx skills add jolars/panache --skill linter-investigation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jolars/panache linter-investigation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
linter-investigation
GitHub stars
238
Token cost
~2k tokens
SKILL.md length
949 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

Investigate panache's linter (and, secondarily, its parser) against a real-world Quarto/Markdown codebase.

  • Works in 9 steps: Target. Take the repo from the user's… → Setup (parallel/background). Build the… → Lint the tree, capture everything.… → …
  • Asked to stress-test
  • SKILL.md covers The core principle (read first), The oracle (pandoc and quarto…, Workflow and panache-specific notes
  • Calls cargo, pandoc and git; reaches github.com

What it does

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.

When your agent uses it

  • Asked to stress-test
  • Triage the linter (or parser) over an external repo

Example prompts

  • “/linter-investigation”

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Target. Take the repo from the user's argument (GitHub owner/name, clone
  2. Setup (parallel/background). Build the release binary and shallow-clone
  3. Lint the tree, capture everything. Capture both streams (per-violation
  4. Summarize by rule. Count findings per rule to prioritize the high-volume
  5. Triage (the heart of the work). For each priority rule, pull real findings,
  6. Verify against the oracle. Promote a suspicion to a bug only after
  7. Fan out for volume (recommended). For a big finding set, spawn parallel
  8. Fix or record. For the cleanest, well-isolated bugs, fix TDD-style,
  9. Report back. State plainly: bugs found (fixed vs. documented) with

What it can do on your machine

Read from SKILL.md and the folder at commit 8f82e9a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo
    • pandoc
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~138
When it runs · the whole SKILL.md, loaded when a task matches
~2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from jolars/panache at commit 8f82e9a, republished under its MIT licence (© jolars). 949 words, ~2,044 tokens.

Download SKILL.mdSave it as .claude/skills/linter-investigation/SKILL.md (or your agent's skills folder).
name
linter-investigation
description
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 corpus.

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.

The core principle (read first)

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:

  • True positive — panache is right; move on.
  • False positive — panache flags legitimate Markdown. The highest-value find.
  • Incorrect span — the finding is real but the highlighted range is wrong.
  • Unsafe fix — an autofix that changes the rendered document (Markdown is full of significant whitespace, list indentation, and inline-boundary rules), breaks the source, or mangles a fenced code block / YAML block. Test it; --unsafe-fixes fixes especially warrant scrutiny.
  • Parser bug — valid Markdown that panache parses differently from pandoc in a way that matters (wrong block/inline structure). Confirm against the pandoc AST.

The oracle (pandoc and quarto are installed)

  • pandoc AST — the ground truth for how a construct parses. Compare structure with the native/JSON AST:

    sh
    pandoc -f markdown -t native <<'EOF'
    ...snippet...
    EOF

    Match 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).

Workflow

  1. 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.

  2. Setup (parallel/background). Build the release binary and shallow-clone into the session scratchpad directory (not bare /tmp), at once:

    sh
    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.

  3. Lint the tree, capture everything. Capture both streams (per-violation diagnostics may print to stdout, errors to stderr; lint exits non-zero on violations):

    sh
    target/release/panache lint "$SCRATCH/<name>" >lint.out 2>lint.err

    panache lints .qmd/.md/.Rmd/.Rmarkdown. Set --flavor if the repo's files need a specific dialect and extension inference isn't enough.

  4. Summarize by rule. Count findings per rule to prioritize the high-volume and high-risk buckets:

    sh
    grep -oE '(warning|error): [a-z-]+' lint.err lint.out | sort | uniq -c | sort -rn
  5. Triage (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:

    sh
    printf '...\n' | target/release/panache lint --flavor <flavor>
    printf '...\n' | target/release/panache parse --flavor <flavor>   # inspect CST

    For 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.

  6. 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.

  7. 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.

  8. 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 a failing golden/fixture case first and watch it fail, following panache's add-lint-rule and the golden-case conventions under tests/fixtures/cases/ and crates/panache-parser/tests/ (reduce from the corpus).
    • Fix at the root cause; re-verify against pandoc/quarto.
    • Run the gates: 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.

  9. 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.

Show full SKILL.md (122 more words)Show less

panache-specific notes

  • Flavor is load-bearing. The same text is valid-but-different across Pandoc, Quarto, GFM, CommonMark, and MyST. Never triage without pinning --flavor, and always report which flavor a finding assumes—an "FP" under GFM may be correct under Pandoc.
  • YAML front matter and fenced code blocks are hotspots. Rules and fixes that touch a --- 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 change rendered meaning. Significant whitespace, list-item indentation, and inline emphasis boundaries make "cosmetic" edits risky. --unsafe-fixes edits deserve the most scrutiny.
  • Workspace layout: the parser is 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

Files

Just SKILL.md in .agents/skills/linter-investigation of jolars/panache.

Open the folder on GitHubat commit 8f82e9a

Compare with similar skills

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.

Linter Investigation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Linter Investigation this skilljolars/panache238—~2kAutomated safety check: PassMIT
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.4k—~2.2kAutomated safety check: PassMIT
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k—~2.2kAutomated safety check: PassMIT

Similar skills

  • Official

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

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • 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.

    5.4k GitHub stars~2.2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    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.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    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…

    50k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Go Pedantry

    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)…

    13k GitHub stars~3.7k tokensUpdated today
    DevelopmentAuto-check passed

More from jolars/panache

All 10 skills in this repo
  • Add Syntax Construct

    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…

    238 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • 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…

    238 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • External Tools

    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…

    238 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Math Parser Formatter

    jolars/panache

    Implement or debug Panache's TeX math parser and formatter internals, including the lossless CST, semantic model, diagnostics, and Badness parity.

    238 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Add Lint Rule

    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.

    238 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Perf Investigation

    jolars/panache

    Profile-driven performance work on the panache parser or formatter.

    238 GitHub stars~3.3k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Linter Investigation

What does Linter Investigation do?

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.

When should I use Linter Investigation?

Linter Investigation fits situations like: asked to stress-test; triage the linter (or parser) over an external repo.

How do I install Linter Investigation in Claude Code?

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.

How do I install Linter Investigation in Codex?

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.

Can I use Linter Investigation in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Linter Investigation need to run?

Going by SKILL.md and its folder, Linter Investigation needs the command-line tools its instructions call (cargo, pandoc and git).

Does Linter Investigation access the network?

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.

Is Linter Investigation safe to install?

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.

What licence does Linter Investigation use?

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.

How many tokens does Linter Investigation use?

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.

What are the alternatives to Linter Investigation?

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.

Who maintains Linter Investigation?

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.