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

Writing Python

  • 120 installs
  • 6 repo stars
  • Updated July 22, 2026
  • julianobarbosa/claude-code-skills

Write clean, idiomatic Python for services, scripts, CLIs, and agent tooling with consistent structure, typing, and error handling.

About

Guides Claude to produce production-quality Python across backends, CLIs, and automation: clear module boundaries, type hints, consistent naming, safe I/O, and patterns that scale from scripts to services without rework.

  • Idiomatic Python patterns
  • Typing and module structure
  • API and script scaffolding
  • Error handling conventions
  • Test-friendly code layout

Writing Python by the numbers

  • 120 all-time installs (skills.sh)
  • +2 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #90 of 290 Python skills by installs in the Skillselion catalog
  • Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/julianobarbosa/claude-code-skills --skill writing-python

Add your badge

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

Listed on Skillselion
Installs120
repo stars6
Last updatedJuly 22, 2026
Repositoryjulianobarbosa/claude-code-skills

What it does

Write clean, idiomatic Python for services, scripts, CLIs, and agent tooling with consistent structure, typing, and error handling.

Files

SKILL.mdMarkdownGitHub ↗

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

  • PATTERNS.md - Code patterns and style
  • CLI.md - CLI application patterns
  • TESTING.md - Testing with pytest

Tooling

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

---

Absorbed sub-skills (post-consolidation)

This skill now subsumes the former python-code-style and python-type-safety skills. Their original SKILL.md content is preserved as deep reference:

SubjectPath
ruff, mypy, naming, imports, docstrings (Google style)References/code-style.md
Type annotations, generics, protocols, strict checking patternsReferences/type-safety.md

For system-reliability concerns (background jobs, retries, observability), see the sibling `python-infrastructure` skill. For dependency management and project scaffolding, see `uv`.

---

Gotchas

  • `from __future__ import annotations` makes ALL annotations strings — runtime introspection (typing.get_type_hints) needs the actual types available; forward refs to local-scope classes fail.
  • f-string debug syntax (`f"{var=}"`) is 3.8+ — quietly fails (treats = as literal) in 3.7 and earlier.
  • `dataclass(slots=True)` is 3.10+ — silently does nothing in 3.9. Use __slots__ manually for portability.
  • PEP 604 union syntax (`int | None`) is 3.10+ at runtime — works as a string annotation in 3.9 with from __future__ import annotations, fails at runtime introspection.
  • `async def` vs `def` for FastAPI dependencies: async deps run in the event loop; sync deps run in a thread pool. Mixing without thought causes either blocking or extra context-switch overhead.

Related skills

Pythonbackendintegrations

This week in AI coding

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

unsubscribe anytime.