Skip to main content
skill CX Codex

linter-docs — Claude Code skill: deep linter reference

A reference for rules in ESLint, Ruff, Pylint, RuboCop, Stylelint and Clippy. Use it when writing or debugging a vigiles enforce() rule.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add zernie/vigiles --skill linter-docs -a claude-code
Open on GitHub

What linter-docs does

The skill opens a per-linter file with exact rule names, AST selectors, config details and auto-fix behaviour. Six files ship inside: eslint.md, ruff.md, pylint.md, rubocop.md, stylelint.md, clippy.md. ESLint gets a plugin table and type-aware rules, Ruff covers 800+ reimplemented rules plus selection in pyproject, Pylint covers its plugin table and the astroid AST, RuboCop covers gems and the node pattern DSL, Stylelint covers the PostCSS AST and SCSS, Clippy covers lint groups and configuration.

This is a reference, not an action. The skill carries disable-model-invocation: true, so it never fires on its own — you open the file you need by hand. Reach for it when you want the exact rule name, or when a rule is reported missing or disabled and you need to know why. The strengthen and edit-spec skills read these files when matching a guidance rule to a real linter rule.

JVM and Go linters — detekt, ktlint, Checkstyle, golangci-lint — plus Cedar are cross-referenced by enforce() but have no deep-dive file here. Their capabilities and known limits live in docs/linter-support.md. Two limits worth knowing before you dig: ktlint is format-only, and Checkstyle enabled-state is whitelist-only. Writing a rule for Go or JVM? Skip this skill and go straight to docs/linter-support.md.

What it helps with

  • find the exact ESLint rule name for a case
  • work out why vigiles reports a rule as disabled
  • configure Ruff rule selection in pyproject
  • get the node pattern DSL right in RuboCop
  • match a guidance rule to a real linter rule

Example prompts for the agent

  • Open eslint.md and find the rule that bans any in function arguments
  • I need to write an enforce() rule for Ruff — show me how rule selection works in pyproject
  • Why does vigiles treat this Pylint rule as missing? Check pylint.md

How to install linter-docs

1Skills CLI (Vercel)

npx skills add zernie/vigiles --skill linter-docs -a claude-code

2Manually: put the files in place

~/.claude/skills/linter-docs/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/linter-docs/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about linter-docs

How do I install linter-docs in Claude?

Run npx skills add zernie/vigiles --skill linter-docs -a claude-code. The skill file then lands at ~/.claude/skills/linter-docs/SKILL.md.

What does linter-docs do?

It gives you rule names, AST selectors, config and auto-fix details for six linters, so you can author and debug vigiles enforce() rules.

Does the skill run on its own?

No. It sets disable-model-invocation: true, so it acts as a reference you open manually.

Source text

SKILL.md · MIT
---
name: linter-docs
description: Deep linter reference for authoring or debugging a vigiles enforce() rule — plugin tables, AST selectors, type-aware rules, auto-fix, and edge cases for ESLint, Ruff, Pylint, RuboCop, Stylelint, and Clippy. Use when you need the exact rule name or config for a specific linter, not for running a linter. (JVM/Go linters — detekt, ktlint, Checkstyle, golangci-lint — and Cedar have no deep-dive file yet; their reference lives in docs/linter-support.md.)
disable-model-invocation: true
---

Reference material for the linters vigiles cross-references. Open the file for
the linter you're working with when you need exact rule names, AST selectors,
or config details to author an `enforce()` rule (or diagnose why one is reported
missing or disabled).

| Linter    | Reference                                                                              |
| --------- | -------------------------------------------------------------------------------------- |
| ESLint    | [`eslint.md`](eslint.md) — plugin table, AST selectors, type-aware rules, auto-fix     |
| Ruff      | [`ruff.md`](ruff.md) — 800+ reimplemented rules, selection, auto-fix, pyproject config |
| Pylint    | [`pylint.md`](pylint.md) — plugin table, astroid AST, type inference, custom checkers  |
| RuboCop   | [`rubocop.md`](rubocop.md) — gem table, node pattern DSL, auto-correct, custom cops    |
| Stylelint | [`stylelint.md`](stylelint.md) — plugin table, PostCSS AST, custom rules, SCSS         |
| Clippy    | [`clippy.md`](clippy.md) — Rust lint groups and configuration                          |

**JVM/Go linters (detekt, ktlint, Checkstyle, golangci-lint) and Cedar** are
cross-referenced by `enforce()` but have no deep-dive file here yet — their
capabilities, config surfaces, and known limits (e.g. ktlint is format-only,
Checkstyle enabled-state is whitelist-only) are documented in
[`docs/linter-support.md`](../../docs/linter-support.md).

These are read by the `strengthen` and `edit-spec` skills when matching a
guidance rule to a real linter rule. This skill is user-invoked (a reference,
not an action), so it never fires on its own — open the relevant file directly.

© zernie · MIT · zernie/vigiles

Similar skills

Everything for Code review and refactoring →

From the same set7

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor