Installation
Install the CLI as a dev dependency:
npm install @ladamczyk/qoq-cli
Then run the Config Wizard, which interviews you about your project, installs the matching @ladamczyk/qoq-* presets (plus @ladamczyk/structurelint if you opt into structure linting, and @ladamczyk/skillslint if you opt into agent-skills linting), and generates the config files for you:
npx -y @ladamczyk/qoq-cli --init
The wizard creates three files in your project root, plus a fourth if you opt into Stylelint:
| File | Purpose |
|---|---|
.prettierrc | Enables IDE formatting from a pre-configured template. |
eslint.config.js | Connects the CLI-generated ESLint config to your IDE. |
stylelint.config.js | Connects the CLI-generated Stylelint config to your IDE (Stylelint only). |
qoq.config.js | Configuration consumed by the CLI itself. |
If no config file is found, the CLI will offer to create one whenever you run --check or --fix.
Warmup hook
QoQ regenerates each tool's config on execution, so a freshly checked-out project (or one that hasn't run yet) may reference an ESLint config file that doesn't exist yet. Add a warmup step to your package.json to materialize it after install:
{
"scripts": {
"postinstall": "qoq --warmup"
}
}
This is intentionally not bundled into the package: postinstall scripts are a common supply-chain risk, and pnpm ignores them entirely.
Manual configuration
If you prefer to wire things up yourself, create the three files by hand:
-
.prettierrc— your own config, or a QoQ template, e.g."@ladamczyk/qoq-prettier". -
eslint.config.js— re-export the CLI's generated config:// CommonJSconst config = require('@ladamczyk/qoq-cli/bin/eslint.config.cjs');module.exports = config;// ESMimport config from '@ladamczyk/qoq-cli/bin/eslint.config.mjs';export default config; -
stylelint.config.js(only if you enable the Stylelint check) — re-export the CLI's generated config the same way:// CommonJSconst config = require('@ladamczyk/qoq-cli/bin/stylelint.config.cjs');module.exports = config;// ESMimport config from '@ladamczyk/qoq-cli/bin/stylelint.config.mjs';export default config; -
qoq.config.js— the CLI configuration object described in Configuration (CommonJS or ESM).
Run qoq -h (or qoq --help) at any time for the full list of CLI options. A few worth knowing about:
qoq [...tools]— restrict a run to specific tools (e.g.qoq eslint prettier), on top of the usual--check/--fix.--json --output <path>— write each tool's results as JSON reports instead of (or alongside) console output.--concurrency auto— run tools in parallel where possible (defaultoff).--skip-<tool>(e.g.--skip-knip,--skip-structurelint) — drop a single tool from an otherwise full run, for both the default command andqoq staged.--disable-cache— bypass the per-tool caches (ESLint, Stylelint, Prettier) and force a full re-run.--production— run tools in production mode (Knip excludes dev-only rules).--config-hints— print config suggestions (currently Knip's) alongside check results.--silent— suppress all QoQ console output;CI=truein the environment is treated the same way, so CI logs stay short unless you pass an explicit flag to override it.