Implementa type hints modernos de Python, tipado estructural con Protocols y patrones de seguridad de tipos para un código robusto.
- Estrellas en GitHub
- 81
- Archivos
- 9
- Último commit
- 7 nov 2026
- Licencia
- MIT
- Herramientas permitidas
- 2
¿Qué hace la skill python-typing-ops?
python-typing-ops es una agent skill. Implementa type hints modernos de Python, tipado estructural con Protocols y patrones de seguridad de tipos para un código robusto.
Resumen generado a partir del SKILL.md de la skill.
Sobre la skill python-typing-ops
Implementar type hints modernos de Python y patrones de tipado estructural es lo que este SKILL permite a los desarrolladores que construyen bases de código seguras y documentadas. Proporciona un conjunto completo de herramientas para aplicar anotaciones de tipo, genéricos y tipado estructural mediante Protocols para garantizar la confiabilidad del código. Cuando un agente carga este SKILL, puede generar o refactorizar código utilizando funciones avanzadas como TypeVar, TypedDict y tipos Literal.
El SKILL es compatible con la sintaxis de Python 3.10+, incluyendo tipos de unión, y patrones específicos para Python 3.11+ como Self y TypeVarTuple. Ayuda a configurar y ejecutar comprobadores de tipos como mypy y pyright para validar la integridad del código. Al utilizar estos patrones, los desarrolladores pueden ir más allá de las anotaciones básicas para implementar lógica compleja como TypeGuards para el estrechamiento de tipos (type narrowing) y tipado estructural para definiciones de interfaces flexibles. Esto lo convierte en una herramienta esencial para cualquiera que busque reducir los errores en tiempo de ejecución mediante el análisis estático.
Lo que un agente puede hacer con ella
- 1Implementar tipado estructuralDefine un Protocol para permitir que cualquier objeto con un método específico se pase a una función.
- 2Definir diccionarios de claves fijasCrea un TypedDict para asegurar que el acceso a diccionarios utilice claves específicas y seguras para el tipo.
- 3Validar código con comprobadores de tiposEjecuta comandos de mypy o pyright para buscar errores de tipo en un directorio de origen.
Escrito a partir del SKILL.md de la skill. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar la skill python-typing-ops
Cada comando copia la carpeta de la skill al directorio de skills del cliente. Reinicia el cliente o inicia una nueva sesión para cargarla.Instalar la skill python-typing-ops en Plugin
/plugin marketplace add 0xDarkMatter/claude-mods /plugin install claude-mods@claude-mods
Instalar la skill python-typing-ops en Claude Code
~/.claude/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.claude/skills/python-typing-opsInstalar la skill python-typing-ops en Claude Code (project)
.claude/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops .claude/skills/python-typing-opsInstalar la skill python-typing-ops en Codex
~/.agents/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.agents/skills/python-typing-opsInstalar la skill python-typing-ops en Gemini CLI
~/.gemini/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.gemini/skills/python-typing-opsInstalar la skill python-typing-ops en Claude.ai
npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops python-typing-ops && zip -r python-typing-ops.zip python-typing-ops # claude.ai → Customize → Skills → + → Create skill → Upload a skill → python-typing-ops.zip
Verificaciones automáticas
Ejecutado 14 nov 2026Informe completo →Superó nuestras comprobaciones automáticas. No es una auditoría de seguridad: lee los scripts antes de dejar que un agente los ejecute. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesible0xdarkmatter/claude-mods/skills/python-typing-ops is public and reachablegithub.com/0xdarkmatter/claude-mods/tree/HEAD/skills/python- ↗Aprobado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit 2026-11-07github.com/0xdarkmatter/claude-mods/commits ↗Aprobado
- Sin descargar y ejecutar ni robo de credenciales en los scripts1 script read; no download-and-run, remote eval, base64 execution or credential uploadAprobado
- Sin instrucciones ocultas en SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/0xdarkmatter/claude-mods/blob/HEAD/skills/python- ↗Aprobado
- Las herramientas preaprobadas están acotadasPre-approved: Read, Writegithub.com/0xdarkmatter/claude-mods/blob/HEAD/skills/python- ↗Aprobado
SKILL.md
Ver en GitHubPython Typing Patterns
Modern type hints for safe, documented Python code.
Basic Annotations
# Variables
name: str = "Alice"
count: int = 42
items: list[str] = ["a", "b"]
mapping: dict[str, int] = {"key": 1}
# Function signatures
def greet(name: str, times: int = 1) -> str:
return f"Hello, {name}!" * times
# None handling
def find(id: int) -> str | None:
return db.get(id) # May return None
Collections
from collections.abc import Sequence, Mapping, Iterable
# Use collection ABCs for flexibility
def process(items: Sequence[str]) -> list[str]:
"""Accepts list, tuple, or any sequence."""
return [item.upper() for item in items]
def lookup(data: Mapping[str, int], key: str) -> int:
"""Accepts dict or any mapping."""
return data.get(key, 0)
# Nested types
Matrix = list[list[float]]
Config = dict[str, str | int | bool]
Optional and Union
# Modern syntax (3.10+)
def find(id: int) -> User | None:
pass
def parse(value: str | int | float) -> str:
pass
# With default None
def fetch(url: str, timeout: float | None = None) -> bytes:
pass
TypedDict
from typing import TypedDict, Required, NotRequired
class UserDict(TypedDict):
id: int
name: str
email: str | None
class ConfigDict(TypedDict, total=False): # All optional
debug: bool
log_level: str
class APIResponse(TypedDict):
data: Required[list[dict]]
error: NotRequired[str]
def process_user(user: UserDict) -> str:
return user["name"] # Type-safe key access
Callable
from collections.abc import Callable
# Function type
Handler = Callable[[str, int], bool]
def register(callback: Callable[[str], None]) -> None:
pass
# With keyword args (use Protocol instead)
from typing import Protocol
class Processor(Protocol):
def __call__(self, data: str, *, verbose: bool = False) -> int:
...
Generics
from typing import TypeVar
T = TypeVar("T")
def first(items: list[T]) -> T | None:
return items[0] if items else None
# Bounded TypeVar
from typing import SupportsFloat
N = TypeVar("N", bound=SupportsFloat)
def average(values: list[N]) -> float:
return sum(float(v) for v in values) / len(values)
Protocol (Structural Typing)
from typing import Protocol
class Readable(Protocol):
def read(self, n: int = -1) -> bytes:
...
def load(source: Readable) -> dict:
"""Accepts any object with read() method."""
data = source.read()
return json.loads(data)
# Works with file, BytesIO, custom classes
load(open("data.json", "rb"))
load(io.BytesIO(b"{}"))
Type Guards
from typing import TypeGuard
def is_string_list(val: list[object]) -> TypeGuard[list[str]]:
return all(isinstance(x, str) for x in val)
def process(items: list[object]) -> None:
if is_string_list(items):
# items is now list[str]
print(", ".join(items))
Literal and Final
from typing import Literal, Final
Mode = Literal["read", "write", "append"]
def open_file(path: str, mode: Mode) -> None:
pass
# Constants
MAX_SIZE: Final = 1024
API_VERSION: Final[str] = "v2"
Quick Reference
| Type | Use Case |
|---|---|
X | None |
Optional value |
list[T] |
Homogeneous list |
dict[K, V] |
Dictionary |
Callable[[Args], Ret] |
Function type |
TypeVar("T") |
Generic parameter |
Protocol |
Structural typing |
TypedDict |
Dict with fixed keys |
Literal["a", "b"] |
Specific values only |
Final |
Cannot be reassigned |
Type Checker Commands
# mypy (run inside the project env)
uv run mypy src/ --strict
# pyright
uv run pyright src/
# In pyproject.toml
[tool.mypy]
strict = true
python_version = "3.11"
Emerging: ty — Astral's Rust-based type checker (same toolchain as uv +
ruff), dramatically faster than mypy. Still in preview (pre-1.0), so mypy or
pyright remain the production default — but worth watching, and easy to try:
uvx ty check. Adopt for new projects once it stabilizes.
Additional Resources
./references/generics-advanced.md- TypeVar, ParamSpec, TypeVarTuple./references/protocols-patterns.md- Structural typing, runtime protocols./references/type-narrowing.md- Guards, isinstance, assert./references/mypy-config.md- mypy/pyright configuration./references/runtime-validation.md- Pydantic v2, typeguard, beartype./references/overloads.md- @overload decorator patterns
Scripts
./scripts/check-types.sh- Run type checkers with common options
Assets
./assets/pyproject-typing.toml- Recommended mypy/pyright config
See Also
This is a foundation skill with no prerequisites.
Related Skills:
python-pytest-ops- Type-safe fixtures and mocking
Build on this skill:
python-async-ops- Async type annotationspython-fastapi-ops- Pydantic models and validationpython-database-ops- SQLAlchemy type annotations
Archivos de esta skill
9Preguntas sobre la skill python-typing-ops
¿Cómo instalo la skill python-typing-ops en Claude Code?
Ejecuta npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.claude/skills/python-typing-ops. Claude Code carga las skills desde ~/.claude/skills (todos los proyectos) o .claude/skills (un proyecto) y usa una skill cuando su descripción coincide con la tarea.
¿Qué clientes pueden usar la skill python-typing-ops?
Cualquier cliente que lea el formato Agent Skills: Claude Code, Codex, Gemini CLI y claude.ai (subir como ZIP). Los scripts de la skill se ejecutan solo donde el cliente permite la ejecución de código.
¿Qué versiones de Python se requieren para estos patrones?
Los patrones utilizan la sintaxis de Python 3.10+ (como la sintaxis de unión X | Y), y algunos patrones específicos como Self o TypeVarTuple requieren Python 3.11+.
¿Cómo puedo ejecutar comprobadores de tipos en mi proyecto?
Puedes usar mypy o pyright a través de uv, por ejemplo: 'uv run mypy src/ --strict' o 'uv run pyright src/'.
¿Cuál es la diferencia entre Callable y Protocol para tipos de funciones?
Callable se utiliza para tipos de funciones simples, mientras que Protocol se utiliza cuando necesitas especificar argumentos de palabra clave (keyword arguments).