python-code-quality

Quick reference for Python code quality tools: ruff (linting & formatting), ty (type checking).

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "python-code-quality" with this command: npx skills add laurigates/claude-plugins/laurigates-claude-plugins-python-code-quality

Python Code Quality

Quick reference for Python code quality tools: ruff (linting & formatting), ty (type checking).

When to Use This Skill

Use this skill when... Use a focused sibling instead when...

Setting up a complete quality stack (lint + format + type-check) for a new project Tuning only ruff lint rule selection — use ruff-linting

Wiring ruff and ty into pre-commit and CI together Configuring only ruff formatter quirks — use ruff-formatting

Comparing ruff/ty/basedpyright at a high level before choosing tools Configuring strict basedpyright/ty type-checker rules — use basedpyright-type-checking or 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)

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

ty (Type Checking)

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

pyproject.toml Configuration

[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"

Type Hints

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 Configuration

.pre-commit-config.yaml

repos:

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

documentation-update

No summary provided by upstream source.

Repository SourceNeeds Review
General

git-troubleshooting

No summary provided by upstream source.

Repository SourceNeeds Review
General

git-advanced

No summary provided by upstream source.

Repository SourceNeeds Review
General

website-cloner

No summary provided by upstream source.

Repository SourceNeeds Review