python-pro — Claude Code skill: type-safe Python 3.11+ with async
Skill for writing type-safe Python 3.11+ with complete annotations, async code, and test suites. Generates code with type hints, configures mypy in strict mode, writes pytest tests with fixtures and mocking.
npx skills add Jeffallan/claude-skills --skill python-pro -a claude-codeWhat python-pro does
python-pro helps you write production-ready Python 3.11+ code. The skill generates functions and classes with full type annotations, uses dataclasses instead of manual __init__, organizes async/await for I/O operations correctly, and wraps resource handling in context managers.
The skill validates types with mypy --strict, formats with black, checks style with ruff, and runs tests automatically. If mypy reports errors, it fixes the annotations and re-runs validation. Tests are written with pytest: fixtures, parametrization, mocking — all by the book. Requires Python 3.11 or later.
Useful if you're building a system that must run without type errors, handle many async operations, or needs high test coverage.
What it helps with
- generate type-annotated Python functions and classes
- implement async/await patterns and concurrent operations
- write pytest test suites with fixtures and parametrization
- validate code against mypy strict mode with no errors
- structure error handling and logging properly
Example prompts for the agent
- Write a function to read config with complete type hints and error handling
- Create a dataclass with port validation and generate pytest tests
- Implement an async function to fetch multiple URLs concurrently with httpx
How to install python-pro
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill python-pro -a claude-code2Manually: put the files in place
~/.claude/skills/python-pro/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/python-pro/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill python-pro -a codex2Manually: put the files in place
.agents/skills/python-pro/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill python-pro -a cursor2Manually: put the files in place
.cursor/skills/python-pro/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Jeffallan/claude-skills python-pro2Manually: put the files in place
.github/skills/python-pro/SKILL.md1Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill python-pro -a gemini-cli2Platform CLI
gemini skills install https://github.com/Jeffallan/claude-skills --path skills/python-proManually: put the files in place
.devin/skills/python-pro/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Jeffallan/claude-skills --skill python-pro -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set61
The whole set →Similar
Questions about python-pro
How do I install python-pro in Claude Code?
Run npx skills add Jeffallan/claude-skills --skill python-pro -a claude-code. The skill will appear at ~/.claude/skills/python-pro/SKILL.md.
What does python-pro do?
It generates type-annotated Python 3.11+ code with async patterns, writes pytest test suites with >90% coverage, validates types using mypy in strict mode, and checks formatting with black and ruff.
Does the skill require Python 3.11?
Yes. python-pro targets Python 3.11+ and uses modern syntax like X | None instead of Optional[X], so earlier versions are not supported.
Source text
SKILL.md · MIT
---
name: python-pro
description: Use when building Python 3.11+ applications requiring type safety, async programming, or robust error handling. Generates type-annotated Python code, configures mypy in strict mode, writes pytest test suites with fixtures and mocking, and validates code with black and ruff. Invoke for type hints, async/await patterns, dataclasses, dependency injection, logging configuration, and structured error handling.
license: MIT
metadata:
author: https://github.com/Jeffallan
company: https://synergetic.solutions
version: "1.1.0"
domain: language
triggers: Python development, type hints, async Python, pytest, mypy, dataclasses, Python best practices, Pythonic code
role: specialist
scope: implementation
output-format: code
related-skills: fastapi-expert, devops-engineer
---
# Python Pro
Modern Python 3.11+ specialist focused on type-safe, async-first, production-ready code.
## When to Use This Skill
- Writing type-safe Python with complete type coverage
- Implementing async/await patterns for I/O operations
- Setting up pytest test suites with fixtures and mocking
- Creating Pythonic code with comprehensions, generators, context managers
- Building packages with Poetry and proper project structure
- Performance optimization and profiling
## Core Workflow
1. **Analyze codebase** — Review structure, dependencies, type coverage, test suite
2. **Design interfaces** — Define protocols, dataclasses, type aliases
3. **Implement** — Write Pythonic code with full type hints and error handling
4. **Test** — Create comprehensive pytest suite with >90% coverage
5. **Validate** — Run `mypy --strict`, `black`, `ruff`
- If mypy fails: fix type errors reported and re-run before proceeding
- If tests fail: debug assertions, update fixtures, and iterate until green
- If ruff/black reports issues: apply auto-fixes, then re-validate
## Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|-------|-----------|-----------|
| Type System | `references/type-system.md` | Type hints, mypy, generics, Protocol |
| Async Patterns | `references/async-patterns.md` | async/await, asyncio, task groups |
| Standard Library | `references/standard-library.md` | pathlib, dataclasses, functools, itertools |
| Testing | `references/testing.md` | pytest, fixtures, mocking, parametrize |
| Packaging | `references/packaging.md` | poetry, pip, pyproject.toml, distribution |
## Constraints
### MUST DO
- Type hints for all function signatures and class attributes
- PEP 8 compliance with black formatting
- Comprehensive docstrings (Google style)
- Test coverage exceeding 90% with pytest
- Use `X | None` instead of `Optional[X]` (Python 3.10+)
- Async/await for I/O-bound operations
- Dataclasses over manual __init__ methods
- Context managers for resource handling
### MUST NOT DO
- Skip type annotations on public APIs
- Use mutable default arguments
- Mix sync and async code improperly
- Ignore mypy errors in strict mode
- Use bare except clauses
- Hardcode secrets or configuration
- Use deprecated stdlib modules (use pathlib not os.path)
## Code Examples
### Type-annotated function with error handling
```python
from pathlib import Path
def read_config(path: Path) -> dict[str, str]:
"""Read configuration from a file.
Args:
path: Path to the configuration file.
Returns:
Parsed key-value configuration entries.
Raises:
FileNotFoundError: If the config file does not exist.
ValueError: If a line cannot be parsed.
"""
config: dict[str, str] = {}
with path.open() as f:
for line in f:
key, _, value = line.partition("=")
if not key.strip():
raise ValueError(f"Invalid config line: {line!r}")
config[key.strip()] = value.strip()
return config
```
### Dataclass with validation
```python
from dataclasses import dataclass, field
@dataclass
class AppConfig:
host: str
port: int
debug: bool = False
allowed_origins: list[str] = field(default_factory=list)
def __post_init__(self) -> None:
if not (1 <= self.port <= 65535):
raise ValueError(f"Invalid port: {self.port}")
```
### Async pattern
```python
import asyncio
import httpx
async def fetch_all(urls: list[str]) -> list[bytes]:
"""Fetch multiple URLs concurrently."""
async with httpx.AsyncClient() as client:
tasks = [client.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
return [r.content for r in responses]
```
### pytest fixture and parametrize
```python
import pytest
from pathlib import Path
@pytest.fixture
def config_file(tmp_path: Path) -> Path:
cfg = tmp_path / "config.txt"
cfg.write_text("host=localhost\nport=8080\n")
return cfg
@pytest.mark.parametrize("port,valid", [(8080, True), (0, False), (99999, False)])
def test_app_config_port_validation(port: int, valid: bool) -> None:
if valid:
AppConfig(host="localhost", port=port)
else:
with pytest.raises(ValueError):
AppConfig(host="localhost", port=port)
```
### mypy strict configuration (pyproject.toml)
```toml
[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
```
Clean `mypy --strict` output looks like:
```
Success: no issues found in 12 source files
```
Any reported error (e.g., `error: Function is missing a return type annotation`) must be resolved before the implementation is considered complete.
## Output Templates
When implementing Python features, provide:
1. Module file with complete type hints
2. Test file with pytest fixtures
3. Type checking confirmation (mypy --strict passes)
4. Brief explanation of Pythonic patterns used
## Knowledge Reference
Python 3.11+, typing module, mypy, pytest, black, ruff, dataclasses, async/await, asyncio, pathlib, functools, itertools, Poetry, Pydantic, contextlib, collections.abc, Protocol
Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)
[Documentation](https://jeffallan.github.io/claude-skills/skills/language/python-pro/)
© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills