| model | haiku |
| created | "2025-12-16T00:00:00.000Z" |
| modified | "2026-02-25T00:00:00.000Z" |
| reviewed | "2025-12-16T00:00:00.000Z" |
| name | python-code-quality |
| description | Python code quality with ruff (linting & formatting) and ty (type checking).
Covers pyproject.toml configuration, pre-commit hooks, and type hints.
Use when user mentions ruff, ty, linting, formatting, type checking,
code style, or Python code quality.
|
| allowed-tools | Bash, Read, Grep, Glob |
Python Code Quality
Quick reference for Python code quality tools: ruff (linting & formatting), ty (type checking).
When This Skill Applies
- Linting Python code
- Code formatting
- Type checking
- Pre-commit hooks
- CI/CD quality gates
- Code style enforcement
Quick Reference
Ruff (Linter & Formatter)
uv run ruff check .
uv run ruff check --fix .
uv run ruff format .
uv run ruff check --fix . && uv run ruff format .
uv run ruff check --select E501
uv run ruff check --ignore E501
ty (Type Checking)
uv run ty check
uv run ty check src/module.py
uv run ty check --python 3.11
uv run ty check --verbose
pyproject.toml Configuration
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = [
"E",
"W",
"F",
"I",
"N",
"UP",
"B",
]
ignore = [
"E501",
]
[tool.ruff.lint.isort]
known-first-party = ["myproject"]
[tool.ty]
python-version = "3.11"
exclude = [
"**/__pycache__",
"**/.venv",
"tests",
]
[tool.ty.rules]
possibly-unbound = "warn"
Type Hints
def process_data(
items: list[str],
config: dict[str, int],
optional: str | None = None,
) -> tuple[bool, str]:
return True, "success"
from typing import TypeAlias
UserId: TypeAlias = int
UserDict: TypeAlias = dict[str, str | int]
def get_user(user_id: UserId) -> UserDict:
return {"id": user_id, "name": "Alice"}
Pre-commit Configuration
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.9
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
- repo: https://github.com/astral-sh/ty
rev: v0.0.10
hooks:
- id: ty
Common Ruff Rules
- E501: Line too long
- F401: Unused import
- F841: Unused variable
- I001: Import not sorted
- N806: Variable should be lowercase
- B008: Function call in argument defaults
See Also
python-testing - Testing code quality
uv-project-management - Adding quality tools to projects
python-development - Core Python patterns
References