Skip to main content

code-quality

Maintain Python code quality using Black formatting, Ruff linting, and mypy type checking. Use when formatting code, running linters, fixing style issues, or adding type hints.

Zur Installation springen

Quellinformationen

Repository
AutumnsGrove/Lattice
Letzte Quellaktivität
25. Dezember 2025 um 17:12
Erkannte Sprache von SKILL.md
Englisch
Sterne
6
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
code-quality
description
Maintain Python code quality using Black formatting, Ruff linting, and mypy type checking. Use when formatting code, running linters, fixing style issues, or adding type hints.
# Code Quality Skill ## When to Activate Activate this skill when: - Formatting Python code - Running linters - Adding type annotations - Fixing code style issues - Setting up quality tools ## Quick Commands ```bash # Format with Black uv run black . uv run black --check . # Dry run # Lint with Ruff uv run ruff check . uv run ruff check --fix . # Auto-fix # Type check with mypy uv run mypy . # All checks uv run black . && uv run ruff check . && uv run mypy . ``` ## Tool Overview | Tool | Purpose | Speed | Auto-fix | |------|---------|-------|----------| | **Black** | Code formatting | Fast | Yes | | **Ruff** | Linting & imports | Very Fast | Most rules | | **mypy** | Type checking | Moderate | No | ## Installation ```bash uv add --dev black ruff mypy ``` ## Black - Code Formatting Zero-config formatting with consistent style. ```bash uv run black . # Format all uv run black --check . # Dry run uv run black --diff . # Show changes ``` ### Configuration ```toml [tool.black] line-length = 88 target-version = ['py311'] ``` ## Ruff - Fast Linting Rust-based linter replacing flake8, isort, pylint, and 50+ tools. ```bash uv run ruff check . # Check uv run ruff check --fix . # Auto-fix uv run ruff check --show-source . # Show context ``` ### Configuration ```toml [tool.ruff] line-length = 88 target-version = "py311" select = ["E", "W", "F", "I", "B", "SIM"] ignore = ["E501"] # Black handles line length [tool.ruff.per-file-ignores] "__init__.py" = ["F401"] "tests/*" = ["S101"] ``` ### Common Issues - **F401**: Unused import (auto-fixable) - **F841**: Unused variable - **I001**: Import sorting (auto-fixable) - **B008**: Mutable default argument ## mypy - Type Checking Static type checker for Python. ```python def greet(name: str) -> str: return f"Hello, {name}" greet(123) # mypy error: incompatible type "int" ``` ### Configuration ```toml [tool.mypy] python_version = "3.11" warn_return_any = true disallow_untyped_defs = false # Enable gradually check_untyped_defs = true ``` ### Common Type Hints ```python from typing import Optional, List, Dict def find_user(user_id: int) -> Optional[Dict[str, str]]: return database.get(user_id) def process_items(items: List[str]) -> int: return len(items) ``` ## Unified Configuration ```toml # pyproject.toml [tool.black] line-length = 88 target-version = ['py311'] [tool.ruff] line-length = 88 target-version = "py311" select = ["E", "W", "F", "I", "B", "SIM"] [tool.mypy] python_version = "3.11" warn_return_any = true ``` ## Skipping Rules ```python import os # noqa: F401 # Ignore Ruff rule # fmt: off # Disable Black matrix = [[1, 2, 3], [4, 5, 6]] # fmt: on ``` ## Workflow Best Practices ### Development (before commit) ```bash uv run black . && uv run ruff check --fix . && uv run mypy . ``` ### CI/CD (strict, no auto-fix) ```bash uv run black --check . && uv run ruff check . && uv run mypy --strict . ``` ## Gradual Adoption 1. **Start with Black** - Zero config, immediate benefits 2. **Add Ruff** - Basic rules first, expand gradually 3. **Introduce mypy** - Lenient initially, increase strictness ## Code Style Principles ### Clarity Over Cleverness ```python # ❌ Clever but unclear result = [x for x in range(10) if x % 2 == 0 if x > 5] # ✅ Clear and readable even_numbers = [x for x in range(10) if x % 2 == 0] result = [x for x in even_numbers if x > 5] ``` ### Meaningful Names ```python # ❌ Unclear def proc(d, x): return d[x] if x in d else None # ✅ Clear def get_user_by_id(users_dict, user_id): return users_dict.get(user_id) ``` ### Early Returns ```python # ❌ Nested def process(amount, user): if amount > 0: if user.has_payment(): return charge(user, amount) # ✅ Early returns def process(amount, user): if amount <= 0: return "Invalid amount" if not user.has_payment(): return "No payment method" return charge(user, amount) ``` ## Related Resources See `AgentUsage/code_quality.md` and `AgentUsage/code_style_guide.md` for: - IDE integration - Pre-commit hook setup - Comprehensive style guidelines - Error handling patterns
Auf GitHub ansehen