К основному содержанию
скилл CX Codex

python-type-safety — скилл для Claude Code: установка и типы

Помогает добавлять типы в Python-код, писать дженерики и протоколы, а также настраивать строгую проверку через mypy или pyright.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add wshobson/agents
/plugin install python-development@claude-code-workflows
Открыть на GitHub

Что делает python-type-safety

Скилл разбирает типизацию Python на практических задачах: аннотации параметров и возвращаемых значений, современный синтаксис объединений, сужение типов через проверки и создание типобезопасных API. Он пригодится при доработке существующего кода и проектировании библиотек.

Внутри описаны дженерики для переиспользуемых классов, протоколы для структурных интерфейсов и настройка mypy --strict или pyright. Для старых проектов строгий режим предлагается включать постепенно, используя настройки для отдельных модулей.

Ставьте его, если агенту нужно работать с типами Python системно. Для небольшого скрипта без статической проверки такой скилл может оказаться лишним.

Какие задачи решает

  • добавить аннотации к публичным функциям и классам
  • собрать переиспользуемый generic-класс
  • описать интерфейс через Protocol
  • настроить строгую проверку mypy или pyright
  • сузить тип после проверки на None

Примеры запросов агенту

  • Добавь типы ко всем публичным API в src/users.py и проверь код через mypy --strict.
  • Сделай generic-класс Result для значения или ошибки и сохрани типы при вызове.
  • Опиши структурный интерфейс через Protocol и настрой проверку в pyright.

Как установить python-type-safety

1Через маркетплейс плагинов

/plugin marketplace add wshobson/agents
/plugin install python-development@claude-code-workflows

Команда ставит плагин python-development целиком, со всеми его скиллами

2Через Skills CLI (Vercel)

npx skills add wshobson/agents --skill python-type-safety -a claude-code

3Вручную: положить файлы

~/.claude/skills/python-type-safety/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/python-type-safety/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора304

Весь набор →
grafana-dashboards Скилл помогает создавать Grafana-дашборды для метрик систем и приложений. Подойдёт для мониторинга, SLO и операционных интерфейсов наблюдаемости. CX Codex 13 097установок python-packaging Скилл помогает собрать Python-библиотеку или CLI-инструмент в устанавливаемый пакет и подготовить публикацию в PyPI. Подходит для настройки структуры проекта. CX Codex 12 915установок llm-evaluation Скилл для оценки качества LLM-приложений: автоматические метрики, человеческая разметка, LLM-as-judge и бенчмарки. Пригодится, когда нужно сравнить модели или поймать регрессию до деплоя. CX Codex 12 755установок protocol-reverse-engineering Скилл помогает разбирать сетевой трафик, находить структуру протоколов и оформлять спецификацию. Подойдёт для отладки и анализа проприетарных протоколов. CX Codex 12 701установок react-modernization Скилл обновляет React-код, переносит классовые компоненты на хуки и помогает внедрять возможности React 18. Подойдёт для поэтапной модернизации старого приложения. CX Codex 12 625установок startup-financial-modeling Скилл строит финансовые модели стартапа с прогнозом выручки, затрат, cash flow и сценариев. Пригодится для планирования и подготовки к раунду. CX Codex 12 585установок wcag-audit-patterns Проверяет веб-интерфейс по WCAG 2.2, сочетая автотесты и ручную проверку. Нужен при поиске нарушений и внедрении доступных паттернов. CX Codex 12 486установок workflow-orchestration-patterns Скилл помогает проектировать долгие и распределённые процессы на Temporal: разделять workflow и activity, сохранять состояние и восстанавливаться после сбоев. CX Codex 12 053установок

Похожие

python-best-practices python-best-practices Скилл с 75 правилами по Python: подсказывает агенту, как писать датаклассы, интерфейсы сервисов, обработку ошибок и аннотации типов. CX Codex +1 854установок principle-type-system-discipline backnotprop Задаёт правила строгой типизации: брендирование примитивов, парсинг данных на границах и генерация типов из схем. CX Codex +1 5 300установок python-pro VoltAgent Community Субагент пишет типобезопасный Python-код для веб API, системных утилит и сложных приложений. Пригодится для async-задач и проектов с высокими требованиями к типам. 11 689установок python-code-review existential-birds Скилл проверяет файлы Python на ошибки в типах, блокирующие вызовы в async-функциях и нарушение PEP8. Пригодится при подготовке пуллреквестов и чистке кодовой базы. CX Codex +1 920установок typescript-pro VoltAgent Community Субагент помогает писать TypeScript со сложными типами, generic-ами и проверкой типобезопасности между frontend и backend. Пригодится для крупных типизированных модулей. 9 602установок typescript-magician mcollina Устраняет ошибки TypeScript, заменяет any на строгие типы и строит типобезопасные дженерики. Помогает навести порядок в типах кодовой базы. CX Codex +1 2 800установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о python-type-safety

Как установить python-type-safety в Claude Code?

Добавьте marketplace командой /plugin marketplace add wshobson/agents, затем установите скилл: /plugin install python-development@claude-code-workflows. Также доступна команда npx skills add wshobson/agents --skill python-type-safety -a claude-code.

Что делает python-type-safety?

Скилл помогает добавлять аннотации, создавать дженерики и протоколы, сужать типы в условиях и настраивать строгую проверку Python-кода через mypy или pyright.

С какими платформами работает python-type-safety?

Скилл предназначен для Claude Code, Codex и Cursor. Для проверки можно использовать mypy --strict или pyright.

Исходный текст

SKILL.md · MIT
---
name: python-type-safety
description: Python type safety with type hints, generics, protocols, and strict type checking. Use when adding type annotations, implementing generic classes, defining structural interfaces, or configuring mypy/pyright.
---

# Python Type Safety

Leverage Python's type system to catch errors at static analysis time. Type annotations serve as enforced documentation that tooling validates automatically.

## When to Use This Skill

- Adding type hints to existing code
- Creating generic, reusable classes
- Defining structural interfaces with protocols
- Configuring mypy or pyright for strict checking
- Understanding type narrowing and guards
- Building type-safe APIs and libraries

## Core Concepts

### 1. Type Annotations

Declare expected types for function parameters, return values, and variables.

### 2. Generics

Write reusable code that preserves type information across different types.

### 3. Protocols

Define structural interfaces without inheritance (duck typing with type safety).

### 4. Type Narrowing

Use guards and conditionals to narrow types within code blocks.

## Quick Start

```python
def get_user(user_id: str) -> User | None:
    """Return type makes 'might not exist' explicit."""
    ...

# Type checker enforces handling None case
user = get_user("123")
if user is None:
    raise UserNotFoundError("123")
print(user.name)  # Type checker knows user is User here
```

## Fundamental Patterns

### Pattern 1: Annotate All Public Signatures

Every public function, method, and class should have type annotations.

```python
def get_user(user_id: str) -> User:
    """Retrieve user by ID."""
    ...

def process_batch(
    items: list[Item],
    max_workers: int = 4,
) -> BatchResult[ProcessedItem]:
    """Process items concurrently."""
    ...

class UserRepository:
    def __init__(self, db: Database) -> None:
        self._db = db

    async def find_by_id(self, user_id: str) -> User | None:
        """Return User if found, None otherwise."""
        ...

    async def find_by_email(self, email: str) -> User | None:
        ...

    async def save(self, user: User) -> User:
        """Save and return user with generated ID."""
        ...
```

Use `mypy --strict` or `pyright` in CI to catch type errors early. For existing projects, enable strict mode incrementally using per-module overrides.

### Pattern 2: Use Modern Union Syntax

Python 3.10+ provides cleaner union syntax.

```python
# Preferred (3.10+)
def find_user(user_id: str) -> User | None:
    ...

def parse_value(v: str) -> int | float | str:
    ...

# Older style (still valid, needed for 3.9)
from typing import Optional, Union

def find_user(user_id: str) -> Optional[User]:
    ...
```

### Pattern 3: Type Narrowing with Guards

Use conditionals to narrow types for the type checker.

```python
def process_user(user_id: str) -> UserData:
    user = find_user(user_id)

    if user is None:
        raise UserNotFoundError(f"User {user_id} not found")

    # Type checker knows user is User here, not User | None
    return UserData(
        name=user.name,
        email=user.email,
    )

def process_items(items: list[Item | None]) -> list[ProcessedItem]:
    # Filter and narrow types
    valid_items = [item for item in items if item is not None]
    # valid_items is now list[Item]
    return [process(item) for item in valid_items]
```

### Pattern 4: Generic Classes

Create type-safe reusable containers.

```python
from typing import TypeVar, Generic

T = TypeVar("T")
E = TypeVar("E", bound=Exception)

class Result(Generic[T, E]):
    """Represents either a success value or an error."""

    def __init__(
        self,
        value: T | None = None,
        error: E | None = None,
    ) -> None:
        if (value is None) == (error is None):
            raise ValueError("Exactly one of value or error must be set")
        self._value = value
        self._error = error

    @property
    def is_success(self) -> bool:
        return self._error is None

    @property
    def is_failure(self) -> bool:
        return self._error is not None

    def unwrap(self) -> T:
        """Get value or raise the error."""
        if self._error is not None:
            raise self._error
        return self._value  # type: ignore[return-value]

    def unwrap_or(self, default: T) -> T:
        """Get value or return default."""
        if self._error is not None:
            return default
        return self._value  # type: ignore[return-value]

# Usage preserves types
def parse_config(path: str) -> Result[Config, ConfigError]:
    try:
        return Result(value=Config.from_file(path))
    except ConfigError as e:
        return Result(error=e)

result = parse_config("config.yaml")
if result.is_success:
    config = result.unwrap()  # Type: Config
```

## Detailed worked examples and patterns

Detailed sections (starting with `## Advanced Patterns`) live in `references/details.md`. Read that file when the navigation summary above is insufficient.

## Best Practices Summary

1. **Annotate all public APIs** - Functions, methods, class attributes
2. **Use `T | None`** - Modern union syntax over `Optional[T]`
3. **Run strict type checking** - `mypy --strict` in CI
4. **Use generics** - Preserve type info in reusable code
5. **Define protocols** - Structural typing for interfaces
6. **Narrow types** - Use guards to help the type checker
7. **Bound type vars** - Restrict generics to meaningful types
8. **Create type aliases** - Meaningful names for complex types
9. **Minimize `Any`** - Use specific types or generics. `Any` is acceptable for truly dynamic data or when interfacing with untyped third-party code
10. **Document with types** - Types are enforceable documentation

© Seth Hobson · MIT · wshobson/agents

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой