| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-02-14T00:00:00.000Z" |
| reviewed | "2025-12-16T00:00:00.000Z" |
| name | ruff-formatting |
| description | Python code formatting with ruff format. Fast, Black-compatible formatter. Use when formatting Python files, enforcing style, or checking format compliance. |
| user-invocable | false |
| allowed-tools | Bash(ruff *), Bash(python *), Bash(uv *), Read, Edit, Write, Grep, Glob |
ruff Formatting
Expert knowledge for using ruff format as an extremely fast Python code formatter with Black compatibility.
When to Use This Skill
| Use this skill when... | Use another tool instead when... |
|---|
| Formatting Python files | Linting for code issues (use ruff check) |
| Checking format compliance in CI | Type checking (use basedpyright) |
| Migrating from Black | Detecting dead code (use vulture/deadcode) |
| Setting up format-on-save | Running tests (use pytest) |
Core Expertise
ruff format Advantages
- 10-30x faster than Black
- Drop-in Black replacement (99.9% compatible)
- Written in Rust for performance
- Supports Black's configuration options
- Format checking and diff preview
- Respects
.gitignore automatically
Basic Usage
Simple Formatting
ruff format
ruff format path/to/file.py
ruff format src/ tests/
ruff format services/orchestrator
Format Checking
ruff format --check
ruff format --diff
ruff format --check src/ tests/
ruff format --diff services/orchestrator
ruff format services/orchestrator
Selective Formatting
ruff format src/**/*.py
ruff format --exclude tests/
git diff --name-only --diff-filter=d | grep '\.py$' | xargs ruff format
ruff format src/core/ src/utils/
Configuration
pyproject.toml
[tool.ruff]
line-length = 88
target-version = "py39"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = true
docstring-code-line-length = "dynamic"
exclude = [
"*.pyi",
"**/__pycache__",
"**/node_modules",
".venv",
]
ruff.toml (standalone)
line-length = 88
[format]
quote-style = "single"
indent-style = "space"
skip-magic-trailing-comma = false
docstring-code-format = true
Black Compatibility
[tool.ruff]
line-length = 88
indent-width = 4
target-version = "py39"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
Format Workflow
- Preview:
ruff format --diff (see changes)
- Check:
ruff format --check (CI validation)
- Apply:
ruff format (modify files)
- Verify:
ruff format --check (confirm)
Best Practices
- Pass directory parameter directly:
ruff format src/
- Preview changes first with
--diff
- Use one formatter per project (ruff format replaces Black)
- Exclude generated files in
pyproject.toml
- Keep pre-commit config in sync with formatter choice
- Enable
docstring-code-format for better docs
Agentic Optimizations
| Context | Command |
|---|
| Format directory | ruff format src/ |
| Check formatting | ruff format --check |
| Show diff | ruff format --diff |
| CI check + diff | ruff format --check --diff |
| Format + lint | ruff format && ruff check |
| Format changed files | git diff --name-only --diff-filter=d | grep '\.py$' | xargs ruff format |
Quick Reference
Essential Commands
ruff format
ruff format path/to/dir
ruff format --check
ruff format --diff
ruff format file1.py file2.py
ruff format --exclude tests/
ruff format --line-length 100
Format vs Check
| Command | Purpose | Exit Code | Modifies Files |
|---|
ruff format | Format files | 0 | Yes |
ruff format --check | Validate formatting | 1 if unformatted | No |
ruff format --diff | Show changes | 0 | No |
ruff format --check --diff | Validate + show | 1 if unformatted | No |
Configuration Quick Start
Minimal (Black-compatible)
[tool.ruff]
line-length = 88
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
Recommended
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
docstring-code-format = true
line-ending = "auto"
exclude = [
"*.pyi",
"migrations/**/*.py",
]
For detailed examples, advanced patterns, integration guides, and migration checklists, see REFERENCE.md.