Skip to main content

A CLI to lint, format, and type-check code with Google-style defaults, and pull Google style guides in markdown format.

Project description

Readability

A CLI tool that keeps code aligned with Google style conventions. It runs the right linters, formatters, and type checkers for your project with sensible defaults, and serves the official Google style guides in Markdown format. This is ideal for AI agents or developers who want consistent code quality checks and quick access to style conventions without browsing HTML pages.

Features

  • Linting & Formatting: A check command that automatically detects and runs relevant tools (Ruff, Pyrefly, Biome, Prettier, gofmt) for your project.
  • Sensible Defaults: Bundled Google-style configurations for Ruff and Pyrefly are used automatically when a project does not define its own.
  • Style Guides: A guide command that fetches the latest Google style guides (Python, Shell, C++, Java, JS/TS, Go, etc.) converted to Markdown.
  • Offline Mode: Local caching of style guides for fast, offline access, kept fresh with a single sync command.

Quick Start

You can run the tool directly without installing it using uvx:

# Check and fix formatting for the current directory
uvx --from git+https://github.com/owahltinez/readability.git readability check . --fix

# Get the Python style guide
uvx --from git+https://github.com/owahltinez/readability.git readability guide python

Installation

Install it as a global tool with uv:

# Install the readability tool
uv tool install git+https://github.com/owahltinez/readability.git

# Use it anywhere
readability check .
readability guide python

For Development

This project uses uv for dependency management:

# Clone the repository
git clone https://github.com/owahltinez/readability.git
cd readability

# Install dependencies and create a virtual environment
uv sync

# (Optional) Populate the local cache for offline use
uv run readability sync

Checking and Formatting

The check command identifies and runs relevant linting and formatting tools based on file extensions and the presence of configuration files (triggers) in your project root:

# Run checks on the current directory
readability check .

# Check specific files or directories
readability check src/ tests/ main.py

# Automatically fix and format files
readability check . --fix

Supported Tools

Tool Supported Extensions Trigger Files
Ruff .py pyproject.toml, ruff.toml, .ruff.toml
Pyrefly .py pyproject.toml, pyrefly.toml
Biome .js, .ts, .jsx, .tsx, .json, .jsonc, .css, .html biome.json, biome.jsonc
Prettier .js, .ts, .jsx, .tsx, .json, .css, .scss, .html, .md, .yml, .yaml .prettierrc*, prettier.config.*
gofmt .go go.mod

The command will only run a tool if its trigger file exists in the current working directory and the tool is available in your PATH. For biome and prettier, it attempts to run them via npx.

Default Configurations

For Ruff and Pyrefly, bundled defaults based on the Google Python style guide (80-column lines, Google docstring convention, import ordering, full type checking) are applied when the project does not define its own configuration. To override them, add a [tool.ruff] or [tool.pyrefly] section to your pyproject.toml (or a dedicated ruff.toml / pyrefly.toml) — any project-level configuration takes full precedence over the bundled defaults.

Style Guides

The guide command prints a Google style guide as Markdown, using the local cache when available:

# Get the Python style guide (uses local cache if available)
readability guide python

# Force fetching the latest version from the web
readability guide python --remote

# Save a style guide to a file
readability guide cpp --output cpp-style.md

# Synchronize all supported style guides to the local cache
readability sync

Supported Languages

Use readability languages to see a full list of supported languages and their aliases. This command also indicates which guides are currently available in the local cache with a [cached] label:

$ readability languages
Supported languages and their aliases:
  - r [cached]
  - c++, cpp [cached]
  - c#, csharp [cached]
  - docguide, markdown [cached]
  - go [cached]
  - css, html [cached]
  - java [cached]
  - javascript, js [cached]
  - json [cached]
  - objc, objective-c [cached]
  - python [cached]
  - shell [cached]
  - ts, typescript [cached]
  - vim [cached]

Offline Mode

The tool stores local copies of the style guides in the guides/ directory and the guide command uses these local files when they exist. The bundled copies are automatically synchronized weekly from the official Google Style Guides repository via GitHub Actions, and you can refresh your local cache at any time with the sync command.

You can override the default guides/ directory by setting the READABILITY_CACHE environment variable. This is useful if you want to store the guides in a specific location or share them across different installations:

export READABILITY_CACHE=/path/to/my/guides
readability guide python

Development

Run tests with pytest:

uv run pytest

Check code style with ruff:

uv run ruff check .
uv run ruff format .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

readability_cli-0.4.0.tar.gz (312.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

readability_cli-0.4.0-py3-none-any.whl (305.9 kB view details)

Uploaded Python 3

File details

Details for the file readability_cli-0.4.0.tar.gz.

File metadata

  • Download URL: readability_cli-0.4.0.tar.gz
  • Upload date:
  • Size: 312.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for readability_cli-0.4.0.tar.gz
Algorithm Hash digest
SHA256 89580dbf36b6ec07d0649716f4d865650457e453f918f8b1158ed609b1689137
MD5 a6a99d0fbfda88b706700d55ff5329ab
BLAKE2b-256 f47e44ce2386e89a586e5b63f18abce7a3ea3b9cea33e501ef2a9cdbcab71fae

See more details on using hashes here.

File details

Details for the file readability_cli-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: readability_cli-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 305.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for readability_cli-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 120b021f7beedd1aa36936098c77c6602af6d2cd786de2197769fdb3f248c026
MD5 be10ed0edd9e1b9c5c0ebca918151f2c
BLAKE2b-256 6a0c686d26a870e27e9682a9a28df5c7cbddcfa50d923ea68439e0f8d95834f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page