writing-python

julianobarbosa's avatarfrom julianobarbosa

Idiomatic Python 3.14+ development. Use when writing Python code, CLI tools, scripts, or services. Emphasizes stdlib, type hints, uv/ruff toolchain, and minimal dependencies.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 3, 2026

When & Why to Use This Skill

This Claude skill facilitates idiomatic Python 3.14+ development, emphasizing high-performance, type-safe, and maintainable code. It streamlines the creation of CLI tools, scripts, and services by leveraging the modern uv/ruff toolchain and the latest language features like subinterpreters and deferred annotations, ensuring adherence to 'stdlib-first' principles and PEP standards.

Use Cases

  • Case 1: Developing high-performance CLI applications and microservices using Python 3.14's latest features and the uv package manager.
  • Case 2: Refactoring legacy Python codebases to modern, idiomatic standards with comprehensive type hints and optimized ruff linting.
  • Case 3: Implementing true parallel processing in Python scripts by utilizing subinterpreters and the free-threaded build (no-GIL) capabilities.
  • Case 4: Creating robust, dependency-light tools that prioritize the Python standard library for maximum portability and security.
namewriting-python
descriptionIdiomatic Python 3.14+ development. Use when writing Python code, CLI tools, scripts, or services. Emphasizes stdlib, type hints, uv/ruff toolchain, and minimal dependencies.
allowed-toolsRead, Bash, Grep, Glob

Python Development (3.14+)

Core Principles

  • Stdlib first: External deps only when justified
  • Type hints everywhere: All functions, all parameters
  • Explicit over implicit: Clear is better than clever
  • Fail fast: Raise early with informative errors

Toolchain

uv           # Package management (not pip/poetry)
ruff         # Lint + format (not flake8/black)
pytest       # Testing
mypy         # Type checking

Quick Patterns

Type Hints

def process_users(users: list[User], limit: int | None = None) -> list[Result]:
    ...

async def fetch_data(url: str, timeout: float = 30.0) -> dict[str, Any]:
    ...

Dataclasses

from dataclasses import dataclass, field

@dataclass
class Config:
    host: str
    port: int = 8080
    tags: list[str] = field(default_factory=list)

Pattern Matching

match event:
    case {"type": "click", "x": x, "y": y}:
        handle_click(x, y)
    case {"type": "key", "code": code}:
        handle_key(code)
    case _:
        raise ValueError(f"Unknown event: {event}")

Python 3.14 Features

  • Deferred annotations: No more from __future__ import annotations
  • Template strings (t""): t"Hello {name}" returns Template object
  • except without parens: except ValueError, TypeError:
  • concurrent.interpreters: True parallelism via subinterpreters
  • compression.zstd: Zstandard in stdlib
  • Free-threaded build: No GIL (opt-in)

References

Tooling

uv sync                    # Install deps
ruff check --fix .         # Lint and autofix
ruff format .              # Format
pytest -v                  # Test
mypy .                     # Type check