RuboCop & Writing Ruby that Reads Well

What a linter/formatter actually does

A linter reads your code without running it and flags patterns that are likely bugs or against convention β€” unused variables, dangerous patterns. A formatter rewrites whitespace, quote style, and layout to a consistent shape automatically. Some tools do both at once. You've used this idea before, even if the names were different (ESLint + Prettier in the portfolio app's own toolchain).