Config & DSL Lint + Snippets — 9 Sets

Your config files are never compiled — nothing fails until deploy. 36 snippets and 28 lint rules for 9 of them, inside the editor, offline.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplacenpmMCP server (npx)Docker Hub
ext install ReadyStack.config-dsl-lint-snippet-pack
npx @readystack/config-dsl-lint-snippet-pack <file>
npx @readystack/config-dsl-lint-snippet-pack --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 28 rules Config & DSL Lint + Snippets — 9 Sets checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

A different job, not a bigger number: the whole repository in one run, a re-check on every save, a rewrite of the matched text where a rule carries a replacement, and the findings written out as a CSV, JSON or HTML file you keep.

One payment, one licence key for this tool. The key is shown right after payment.

A freelance senior software engineer averaged $101/hr in 2026 (contractrates.fyi, 584 verified rate submissions); $29 is about seventeen minutes of that

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

Your config files are never compiled. Nothing tells you until deploy.

Your compiler reads your code. It does not read your config.

eslint.config.js, pyproject.toml, a DeviceTree overlay, a MicroProfile .properties, an AutoHotkey v2 script, settings.json — none of these are type-checked, none are compiled, and most of them fail by doing nothing at all. The build stays green. The line is simply ignored, and you find out in staging, or you never find out.

Here is the one that is biting people right now.

ESLint v10.0.0 shipped in February 2026 and removed the eslintrc config system outright. .eslintrc.* and .eslintignore are no longer honoured. ESLint v9 reached end of life on 2026-08-06. So the day your CI bumps the major, this file:

{
  "extends": ["eslint:recommended"],
  "env": { "node": true },
  "parserOptions": { "ecmaVersion": 2024 }
}

stops being read. ESLint does not error. It lints with no configuration and reports zero problems, and a green check mark appears on the pull request that deleted every rule you had. The fix is one file, and it does not look like the old one:

import js from "@eslint/js";

export default [
  js.configs.recommended,
  {
    files: ["**/*.js"],
    languageOptions: { ecmaVersion: 2024, sourceType: "module" },
    rules: { "no-unused-vars": "warn" },
  },
];

env becomes languageOptions.globals. parserOptions moves under languageOptions. extends has no equivalent — you spread the shared config into the exported array. At the top level, the old keys are not errors. They are ignored.

The same shape repeats everywhere config is not compiled.

The Python extension removed python.pythonPath and the whole python.linting.* namespace. Your settings.json still contains them, VS Code still accepts the JSON, and your interpreter is simply not the one you think it is. "editor.defaultFormatter": "ms-python.python" no longer formats anything, because that extension stopped being a formatter.

A MicroProfile REST Client base URL with a trailing slash:

org.acme.client.CountryService/mp-rest/url=http://localhost:8080/

The container starts fine. The @Path is appended after the slash, the request goes to a double slash, and you get a 404 from a service you can see running.

A DeviceTree overlay missing one semicolon after /dts-v1/ — dtc stops at line one. status = "enabled" instead of status = "okay" — not a recognised value, so the node stays disabled and the peripheral is just absent. A gpios specifier with one cell where the controller declares #gpio-cells = <2>.

AutoHotkey v2 removed comma command syntax and #NoEnv, #Persistent, #EscapeChar, #CommentFlag. MsgBox, "text" is a v1 script that no longer runs. Ren'Py block headers need their colon. TOML has no None and its booleans are lowercase; a leading zero is not a legal integer. Swift's try! and implicitly unwrapped optionals stop the process at the exact line they fail on.

None of these produce a compiler error, because there is no compiler.

What I built

A VS Code extension that runs 28 rules across those 9 file kinds, in the editor, offline, with no toolchain to install. Open a file, run Audit this file, and every match comes back with a line number and the line to write instead. It also ships 36 snippets for the same 9 — the correct shape of a flat config, an MP fault-tolerance block, a DeviceTree i2c child node, an AHK v2 GUI — so you write the right thing the first time.

The audit is free and it is the whole audit: all 28 rules, every file you open, no key, no file limit. There is a browser version that runs the same rules on pasted text, so you can check the rule set before you install anything.

The licence buys a different job, not a bigger number: run the same check across the entire repository in one pass, keep re-checking on every save, and export the findings as CSV, JSON or HTML to hand to whoever owns the config.

A freelance senior software engineer averaged $101 an hour in 2026 across 584 verified rate submissions. Finding one silently ignored .eslintrc by hand costs more than the licence does.

Config is the last place in the stack where being wrong is silent. It does not have to stay that way.

15 seconds — what it actually does

Questions people ask

What does this actually do?

It checks config and DSL files that no compiler ever reads. Open a file, run the audit, and every line matching one of 28 rules is listed with its line number and what to write instead. The rules cover 9 file kinds: ESLint flat config, TOML, MicroProfile properties, DeviceTree, AutoHotkey v2, Ren'Py, Inkling, Swift and VS Code settings.json.

Who is it for?

Developers who maintain files the build never validates: a Quarkus or MicroProfile backend engineer, a Python or Node maintainer editing pyproject.toml and eslint.config.js, an embedded developer writing DeviceTree overlays, a Windows automation scripter on AutoHotkey v2, a Ren'Py or Bonsai Inkling author, and anyone whose settings.json quietly stopped working.

Why can't I just use free tools or a chatbot?

Nothing warns you today, because these files are not compiled — a wrong line survives until deploy. Free per-language checkers exist, such as taplo, dtc and SwiftLint, but each needs its own toolchain, none covers the nine kinds together, and none of them watch your repository as you edit it.

What is free and what needs the licence?

Free, with no key and no file limit: audit any open file against all 28 rules, audit only the lines you highlight, and insert any of the 36 snippets. The licence adds a different job, not a bigger number — scan the whole repository at once, re-check on every save, and export the findings as CSV, JSON or HTML.

What would this cost me otherwise?

A freelance senior software engineer averaged $101 an hour in 2026, across 584 verified rate submissions. The licence is $29 once, roughly seventeen minutes of that. One silently ignored .eslintrc — where lint reports zero problems because it read no config at all — takes longer than that to find by hand.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →