Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
0xbigboss avatar

Python Best Practices

  • 1.9k installs
  • 52 repo stars
  • Updated June 24, 2026
  • 0xbigboss/claude-code

python-best-practices is an agent skill for Use when reading or writing Python files (.py, pyproject.toml, requirements.txt).

About

Use when reading or writing Python files py pyproject toml requirements txt The python-best-practices skill documents workflows and patterns from the repository SKILL md name python-best-practices description Use when reading or writing Python files py pyproject toml requirements txt Python Best Practices Follows type-first functional and error handling patterns from CLAUDE md This skill covers language-specific idioms only Make Illegal States Unrepresentable Use Python's type system to prevent invalid states at type-check time Frozen dataclasses for immutable domain models python from dataclasses import dataclass from datetime import datetime dataclass frozen True class User id str email str name str created_at datetime Frozen dataclasses are immutable no accidental mutation Discriminated unions with Literal python from dataclasses import dataclass from typing import Literal dataclass class Success status Literal success success data str dataclass class Failure status Literal error error error Exception RequestState Success Failure def handle_state state RequestState None match state case Success data data render data case Failure error err show_error err NewType for domain primi.

  • Python Best Practices
  • Frozen dataclasses are immutable - no accidental mutation
  • Type checker prevents passing OrderId here
  • Accepts any object with a read() method - no inheritance required
  • `ty` - fastest, good for CI and large codebases (early stage, rapidly evolving)

Python Best Practices by the numbers

  • 1,901 all-time installs (skills.sh)
  • +35 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #401 of 2,153 Testing & QA skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

python-best-practices capabilities & compatibility

Capabilities
python best practices · frozen dataclasses are immutable no accidental · type checker prevents passing orderid here · accepts any object with a read() method no inh · `ty` fastest, good for ci and large codebases
Use cases
documentation
From the docs

What python-best-practices says it does

--- name: python-best-practices description: Use when reading or writing Python files (.py, pyproject.toml, requirements.txt).
SKILL.md
--- # Python Best Practices Follows type-first, functional, and error handling patterns from CLAUDE.md.
SKILL.md
This skill covers language-specific idioms only.
SKILL.md
## Make Illegal States Unrepresentable Use Python's type system to prevent invalid states at type-check time.
SKILL.md
npx skills add https://github.com/0xbigboss/claude-code --skill python-best-practices

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.9k
repo stars52
Security audit2 / 3 scanners passed
Last updatedJune 24, 2026
Repository0xbigboss/claude-code

What problem does python-best-practices solve for developers using the documented workflows?

Use when reading or writing Python files (.py, pyproject.toml, requirements.txt).

Who is it for?

Developers working with python-best-practices patterns described in the skill documentation.

Skip if: Skip when docs are empty or the task is outside the skill documented scope.

When should I use this skill?

Use when reading or writing Python files (.py, pyproject.toml, requirements.txt).

What you get

Grounded guidance and workflows from SKILL.md for python-best-practices.

  • Typed Python modules
  • Immutable domain models

Files

SKILL.mdMarkdownGitHub ↗

Python Best Practices

Follows type-first, functional, and error handling patterns from CLAUDE.md. This skill covers language-specific idioms only.

Make Illegal States Unrepresentable

Use Python's type system to prevent invalid states at type-check time.

Frozen dataclasses for immutable domain models:

from dataclasses import dataclass
from datetime import datetime

@dataclass(frozen=True)
class User:
    id: str
    email: str
    name: str
    created_at: datetime

# Frozen dataclasses are immutable — no accidental mutation

Discriminated unions with Literal:

from dataclasses import dataclass
from typing import Literal

@dataclass
class Success:
    status: Literal["success"] = "success"
    data: str

@dataclass
class Failure:
    status: Literal["error"] = "error"
    error: Exception

RequestState = Success | Failure

def handle_state(state: RequestState) -> None:
    match state:
        case Success(data=data):
            render(data)
        case Failure(error=err):
            show_error(err)

NewType for domain primitives:

from typing import NewType

UserId = NewType("UserId", str)
OrderId = NewType("OrderId", str)

def get_user(user_id: UserId) -> User:
    # Type checker prevents passing OrderId here
    ...

Protocol for structural typing:

from typing import Protocol

class Readable(Protocol):
    def read(self, n: int = -1) -> bytes: ...

def process_input(source: Readable) -> bytes:
    # Accepts any object with a read() method — no inheritance required
    return source.read()

Python-Specific Error Handling

Chain exceptions with from err to preserve the original traceback:

try:
    data = json.loads(raw)
except json.JSONDecodeError as err:
    raise ValueError(f"invalid JSON payload: {err}") from err

Structured Logging

Use a module-level logger with %s formatting (deferred string interpolation):

import logging

logger = logging.getLogger("myapp.widgets")

def create_widget(name: str) -> Widget:
    logger.debug("creating widget: %s", name)
    widget = Widget(name=name)
    logger.debug("created widget id=%s", widget.id)
    return widget

Optional: ty

For fast type checking, consider ty from Astral (creators of ruff and uv). Written in Rust, significantly faster than mypy or pyright.

uvx ty check          # run directly, no install needed
uvx ty check src/     # check specific path
# pyproject.toml
[tool.ty]
python-version = "3.12"

When to choose:

  • ty — fastest, good for CI and large codebases (early stage, rapidly evolving)
  • pyright — most complete type inference, VS Code integration
  • mypy — mature, extensive plugin ecosystem

Related skills

How it compares

Use python-best-practices for core Python typing and idioms; pair with framework-specific skills when the task is routing, ORM design, or deployment rather than language style.

FAQ

Who is Python Best Practices for?

Developers and software engineers working with python-best-practices patterns from the skill documentation.

When should I use Python Best Practices?

Use when reading or writing Python files (.py, pyproject.toml, requirements.txt).

Is Python Best Practices safe to install?

Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.