# Gherkin Refine > Gherkin and Cucumber linter for Node.js. Supports all 31 gherkin-lint 4.2.4 rules, installs the same `gherkin-lint` command, reads `.gherkin-lintrc`, and adds safe autofixes, plugins, and JSON, NDJSON, and SARIF output. npm package: `gherkin-refine` (version 1.4.6). Requires Node.js 22.18 or later. ESM only. MIT licensed. Install with `npm install --save-dev gherkin-refine` and lint with `npx gherkin-refine .`. For automated consumers, use `--format json`. Not every gherkin-lint behavior is identical: `xunit` output is unavailable and custom `--rulesdir` rules need porting to a plugin. ## Docs - [Getting started](https://hamidihamza.com/gherkin-refine/getting-started): Install, configure, fix, and run in GitHub Actions - [Migrate from gherkin-lint](https://hamidihamza.com/gherkin-refine/migration): Drop-in replacement scope, rule mapping, and CLI flags - [Compare with gherkin-lint](https://hamidihamza.com/gherkin-refine/comparison): Feature by feature differences and when gherkin-lint still fits - [Configuration](https://hamidihamza.com/gherkin-refine/configuration): Config files, presets, overrides, ignores, and inline suppression - [Rules](https://hamidihamza.com/gherkin-refine/rules): Every built-in rule with defaults and options - [Plugins](https://hamidihamza.com/gherkin-refine/plugins): Writing and loading custom rules - [AI agent integration](https://hamidihamza.com/gherkin-refine/agent-integration): JSON output, exit codes, and a remediation loop - [Full documentation in one file](https://hamidihamza.com/gherkin-refine/llms-full.txt) ## Rules - [allowed-tags](https://hamidihamza.com/gherkin-refine/rules/allowed-tags) - [background-size](https://hamidihamza.com/gherkin-refine/rules/background-size) - [feature-size](https://hamidihamza.com/gherkin-refine/rules/feature-size) - [file-name](https://hamidihamza.com/gherkin-refine/rules/file-name) - [indentation](https://hamidihamza.com/gherkin-refine/rules/indentation) - [logical-keyword-order](https://hamidihamza.com/gherkin-refine/rules/logical-keyword-order) - [name-length](https://hamidihamza.com/gherkin-refine/rules/name-length) - [new-line-at-eof](https://hamidihamza.com/gherkin-refine/rules/new-line-at-eof) - [no-background-only-scenario](https://hamidihamza.com/gherkin-refine/rules/no-background-only-scenario) - [no-duplicate-feature-names](https://hamidihamza.com/gherkin-refine/rules/no-duplicate-feature-names) - [no-duplicate-scenario-names](https://hamidihamza.com/gherkin-refine/rules/no-duplicate-scenario-names) - [no-duplicate-tags](https://hamidihamza.com/gherkin-refine/rules/no-duplicate-tags) - [no-empty-background](https://hamidihamza.com/gherkin-refine/rules/no-empty-background) - [no-empty-file](https://hamidihamza.com/gherkin-refine/rules/no-empty-file) - [no-examples-in-scenarios](https://hamidihamza.com/gherkin-refine/rules/no-examples-in-scenarios) - [no-extra-blank-lines](https://hamidihamza.com/gherkin-refine/rules/no-extra-blank-lines) - [no-files-without-scenarios](https://hamidihamza.com/gherkin-refine/rules/no-files-without-scenarios) - [no-homogeneous-tags](https://hamidihamza.com/gherkin-refine/rules/no-homogeneous-tags) - [no-partially-commented-tag-lines](https://hamidihamza.com/gherkin-refine/rules/no-partially-commented-tag-lines) - [no-restricted-patterns](https://hamidihamza.com/gherkin-refine/rules/no-restricted-patterns) - [no-restricted-tags](https://hamidihamza.com/gherkin-refine/rules/no-restricted-tags) - [no-scenario-outlines-without-examples](https://hamidihamza.com/gherkin-refine/rules/no-scenario-outlines-without-examples) - [no-superfluous-tags](https://hamidihamza.com/gherkin-refine/rules/no-superfluous-tags) - [no-trailing-whitespace](https://hamidihamza.com/gherkin-refine/rules/no-trailing-whitespace) - [no-undefined-outline-variables](https://hamidihamza.com/gherkin-refine/rules/no-undefined-outline-variables) - [no-unnamed-features](https://hamidihamza.com/gherkin-refine/rules/no-unnamed-features) - [no-unnamed-scenarios](https://hamidihamza.com/gherkin-refine/rules/no-unnamed-scenarios) - [no-unused-outline-variables](https://hamidihamza.com/gherkin-refine/rules/no-unused-outline-variables) - [one-space-between-tags](https://hamidihamza.com/gherkin-refine/rules/one-space-between-tags) - [only-one-when](https://hamidihamza.com/gherkin-refine/rules/only-one-when) - [required-tags](https://hamidihamza.com/gherkin-refine/rules/required-tags) - [scenario-size](https://hamidihamza.com/gherkin-refine/rules/scenario-size) - [tag-pattern](https://hamidihamza.com/gherkin-refine/rules/tag-pattern) - [unused-disable-directive](https://hamidihamza.com/gherkin-refine/rules/unused-disable-directive) - [use-and](https://hamidihamza.com/gherkin-refine/rules/use-and) ## Optional - [npm package](https://www.npmjs.com/package/gherkin-refine) - [Source code](https://github.com/hamzahamidi/gherkin-refine) - [JSON result schema](https://github.com/hamzahamidi/gherkin-refine/blob/main/schemas/result.schema.json) - [Changelog](https://github.com/hamzahamidi/gherkin-refine/blob/main/CHANGELOG.md)