From python-plugin
Enforces Python code quality using ruff for linting/formatting and ty for type checking. Covers pyproject.toml configs, pre-commit hooks, and type hints.
How this skill is triggered — by the user, by Claude, or both
Slash command
/python-plugin:python-code-qualityhaikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Quick reference for Python code quality tools: ruff (linting & formatting), ty (type checking).
Quick reference for Python code quality tools: ruff (linting & formatting), ty (type checking).
# Lint code
uv run ruff check .
# Auto-fix issues
uv run ruff check --fix .
# Format code
uv run ruff format .
# Check and format
uv run ruff check --fix . && uv run ruff format .
# Show specific rule
uv run ruff check --select E501 # Line too long
# Ignore specific rule
uv run ruff check --ignore E501
# Type check project
uv run ty check
# Type check specific file
uv run ty check src/module.py
# Check with explicit Python version
uv run ty check --python 3.11
# Verbose output
uv run ty check --verbose
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
]
ignore = [
"E501", # line too long (handled by formatter)
]
[tool.ruff.lint.isort]
known-first-party = ["myproject"]
[tool.ty]
python-version = "3.11"
exclude = [
"**/__pycache__",
"**/.venv",
"tests",
]
[tool.ty.rules]
possibly-unbound = "warn"
# Modern type hints (Python 3.10+)
def process_data(
items: list[str], # Not List[str]
config: dict[str, int], # Not Dict[str, int]
optional: str | None = None, # Not Optional[str]
) -> tuple[bool, str]: # Not Tuple[bool, str]
return True, "success"
# Type aliases
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-config.yaml
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
python-testing - Testing code qualityuv-project-management - Adding quality tools to projectspython-development - Core Python patternsnpx claudepluginhub laurigates/claude-plugins --plugin python-pluginConfigures Ruff for linting and formatting, mypy or pyright for type checking, pre-commit hooks, lint rule sets, and modern Python typing patterns like PEP 695.
Reviews and improves Python library code quality using ruff linting, mypy type checking, Pythonic refactoring idioms, and type hint patterns.
Sets up Python code quality toolchain with ruff linting/formatting, mypy type checking, complexity gating, dead code detection, pre-commit hooks, pyproject.toml config, and Makefile targets.