Skip to content

ryl

A fast YAML linter, written in Rust

  • ⚡ Built for speed


    Written in Rust for fast lint runs across large YAML trees.

    Getting started

  • 🔍 yamllint-compatible


    Drop-in compatible rule set with the rules and behaviour of yamllint, plus ryl-specific options.

    View rules

  • 🔧 Auto-fixes


    Apply safe automatic fixes for spacing, line endings, quoting, and more with ryl --fix.

    Configuration

  • 📦 Easy to install


    Single binary, distributed via Cargo, pip, and npm. No runtime dependencies.

    Install

Quick start

# Install with Cargo
cargo install ryl

# Or with pip
pip install ryl

# Or with npm
npm install --global @owenlamont/ryl

# Lint a file or directory
ryl path/to/file.yaml
ryl .

YAML version compatibility

ryl targets YAML 1.2 strictly because it is built on the saphyr parser. yamllint defaults to YAML 1.1 semantics via PyYAML, so a handful of edge cases — notably bareword booleans like yes / no / on / off and leading-zero integers like 0755 — behave differently. The same 1.2 semantics apply to .yamllint configuration files.

See YAML version compatibility for the practical implications and how to adjust a configuration migrated from yamllint.

Why ryl

ryl started as a fast Rust port of yamllint focused on parity with its rule set and message text. The aim is to keep yamllint compatibility as a foundation while adding ergonomic features yamllint does not currently offer — for example richer TOML configuration, auto-fix support for spacing and quoting rules, and tighter integration with SchemaStore.

When a rule mirrors yamllint, the rule reference page links back to the upstream documentation so you can confirm exact semantics. ryl-specific options are called out explicitly so they cannot be mistaken for upstream behaviour.

Next steps