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

python-error-handling — скилл для Claude Code: суть и установка

Скилл обучает ассистента правилам обработки ошибок в Python: ранней валидации входных данных и сохранению цепочек исключений.

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

Что делает python-error-handling

Скилл задаёт правила обработки сбоев в коде на Python. Ассистент проверяет параметры на границах функций до запуска тяжёлых вычислений, отсекая некорректные диапазоны или пустые строки. Текстовые значения переводятся в типизированные перечисления через Enum, чтобы внутренняя логика не зависела от сырых строк.

Для ветвистых структур данных правила предлагают использовать BaseModel и field_validator из библиотеки Pydantic. Скилл запрещает бросать общий Exception без контекста. Вместо этого ошибки распределяются по стандартным типам вроде ValueError или KeyError. При повторном возбуждении исключений стек сохраняется конструкцией raise ... from e.

Для валидации через BaseModel в проекте потребуется сторонняя библиотека Pydantic. Дополнительные примеры вынесены в файл references/details.md.

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

  • валидировать входные параметры функций до вызова ресурсоёмких операций
  • парсить строковые форматы в типизированные перечисления Enum
  • настраивать проверку сложных данных через модели Pydantic
  • сохранять трассировку ошибок с помощью конструкции raise ... from e
  • обрабатывать частичные сбои в пакетных операциях без прерывания батча

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

  • Добавь раннюю валидацию аргументов и выброс ValueError в функцию process_order
  • Создай модель Pydantic для регистрации пользователя с проверкой формата email
  • Настрой обработку выгрузки данных, чтобы одиночный сбой не прерывал пакетную операцию

Как установить python-error-handling

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-error-handling -a claude-code

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

~/.claude/skills/python-error-handling/SKILL.md

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

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

Вопросы о python-error-handling

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

Выполните команду /plugin marketplace add wshobson/agents, а затем запустите /plugin install python-development@claude-code-workflows.

Что делает python-error-handling?

Скилл инструктирует ассистента по ранней проверке аргументов, переводу строк в перечисления, сопоставлению сбоев со встроенными исключениями и изоляции ошибок в батчах.

Обязательна ли библиотека Pydantic для работы со скиллом?

Базовые проверки опираются на стандартные типы Python. Pydantic понадобится только в том случае, если вы решите применять сложные модели с валидаторами полей.

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

SKILL.md · MIT
---
name: python-error-handling
description: Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.
---

# Python Error Handling

Build robust Python applications with proper input validation, meaningful exceptions, and graceful failure handling. Good error handling makes debugging easier and systems more reliable.

## When to Use This Skill

- Validating user input and API parameters
- Designing exception hierarchies for applications
- Handling partial failures in batch operations
- Converting external data to domain types
- Building user-friendly error messages
- Implementing fail-fast validation patterns

## Core Concepts

### 1. Fail Fast

Validate inputs early, before expensive operations. Report all validation errors at once when possible.

### 2. Meaningful Exceptions

Use appropriate exception types with context. Messages should explain what failed, why, and how to fix it.

### 3. Partial Failures

In batch operations, don't let one failure abort everything. Track successes and failures separately.

### 4. Preserve Context

Chain exceptions to maintain the full error trail for debugging.

## Quick Start

```python
def fetch_page(url: str, page_size: int) -> Page:
    if not url:
        raise ValueError("'url' is required")
    if not 1 <= page_size <= 100:
        raise ValueError(f"'page_size' must be 1-100, got {page_size}")
    # Now safe to proceed...
```

## Fundamental Patterns

### Pattern 1: Early Input Validation

Validate all inputs at API boundaries before any processing begins.

```python
def process_order(
    order_id: str,
    quantity: int,
    discount_percent: float,
) -> OrderResult:
    """Process an order with validation."""
    # Validate required fields
    if not order_id:
        raise ValueError("'order_id' is required")

    # Validate ranges
    if quantity <= 0:
        raise ValueError(f"'quantity' must be positive, got {quantity}")

    if not 0 <= discount_percent <= 100:
        raise ValueError(
            f"'discount_percent' must be 0-100, got {discount_percent}"
        )

    # Validation passed, proceed with processing
    return _process_validated_order(order_id, quantity, discount_percent)
```

### Pattern 2: Convert to Domain Types Early

Parse strings and external data into typed domain objects at system boundaries.

```python
from enum import Enum

class OutputFormat(Enum):
    JSON = "json"
    CSV = "csv"
    PARQUET = "parquet"

def parse_output_format(value: str) -> OutputFormat:
    """Parse string to OutputFormat enum.

    Args:
        value: Format string from user input.

    Returns:
        Validated OutputFormat enum member.

    Raises:
        ValueError: If format is not recognized.
    """
    try:
        return OutputFormat(value.lower())
    except ValueError:
        valid_formats = [f.value for f in OutputFormat]
        raise ValueError(
            f"Invalid format '{value}'. "
            f"Valid options: {', '.join(valid_formats)}"
        )

# Usage at API boundary
def export_data(data: list[dict], format_str: str) -> bytes:
    output_format = parse_output_format(format_str)  # Fail fast
    # Rest of function uses typed OutputFormat
    ...
```

### Pattern 3: Pydantic for Complex Validation

Use Pydantic models for structured input validation with automatic error messages.

```python
from pydantic import BaseModel, Field, field_validator

class CreateUserInput(BaseModel):
    """Input model for user creation."""

    email: str = Field(..., min_length=5, max_length=255)
    name: str = Field(..., min_length=1, max_length=100)
    age: int = Field(ge=0, le=150)

    @field_validator("email")
    @classmethod
    def validate_email_format(cls, v: str) -> str:
        if "@" not in v or "." not in v.split("@")[-1]:
            raise ValueError("Invalid email format")
        return v.lower()

    @field_validator("name")
    @classmethod
    def normalize_name(cls, v: str) -> str:
        return v.strip().title()

# Usage
try:
    user_input = CreateUserInput(
        email="[email protected]",
        name="john doe",
        age=25,
    )
except ValidationError as e:
    # Pydantic provides detailed error information
    print(e.errors())
```

### Pattern 4: Map Errors to Standard Exceptions

Use Python's built-in exception types appropriately, adding context as needed.

| Failure Type | Exception | Example |
|--------------|-----------|---------|
| Invalid input | `ValueError` | Bad parameter values |
| Wrong type | `TypeError` | Expected string, got int |
| Missing item | `KeyError` | Dict key not found |
| Operational failure | `RuntimeError` | Service unavailable |
| Timeout | `TimeoutError` | Operation took too long |
| File not found | `FileNotFoundError` | Path doesn't exist |
| Permission denied | `PermissionError` | Access forbidden |

```python
# Good: Specific exception with context
raise ValueError(f"'page_size' must be 1-100, got {page_size}")

# Avoid: Generic exception, no context
raise Exception("Invalid parameter")
```

## 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. **Validate early** - Check inputs before expensive operations
2. **Use specific exceptions** - `ValueError`, `TypeError`, not generic `Exception`
3. **Include context** - Messages should explain what, why, and how to fix
4. **Convert types at boundaries** - Parse strings to enums/domain types early
5. **Chain exceptions** - Use `raise ... from e` to preserve debug info
6. **Handle partial failures** - Don't abort batches on single item errors
7. **Use Pydantic** - For complex input validation with structured errors
8. **Document failure modes** - Docstrings should list possible exceptions
9. **Log with context** - Include IDs, counts, and other debugging info
10. **Test error paths** - Verify exceptions are raised correctly

© Seth Hobson · MIT · wshobson/agents

Похожие скиллы

Всё по теме «Бэкенд и API» →
mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок claude-api официальный anthropics Справочник по Anthropic SDK и API Claude для генерации кода без устаревших параметров и выдуманных методов. 74 198установок lark-im larksuite Скилл подключает Lark IM к агенту: он отправляет сообщения, ищет историю, управляет чатами и файлами. Подойдёт для задач вокруг командных коммуникаций. CX Codex +1 472 900установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. CX Codex +1 466 800установок caveman-discover JuliusBrussee Находит точки вызова LLM в репозитории и размечает их воркфлоу для Caveman Cloud, чтобы расходы на токены не сливались в одну общую кучу. CX Codex +1 104 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

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

Весь набор →
python-project-structure Скилл помогает разложить Python-проект по модулям, определить публичные API и выбрать структуру каталогов. Подойдёт для нового проекта и реорганизации существующего кода. CX Codex 14 768установок k8s-security-policies Скилл помогает задавать политики безопасности Kubernetes: сетевую изоляцию, RBAC и стандарты безопасности подов. Нужен при защите кластера. CX Codex 14 692установок accessibility-compliance Скилл помогает проверять доступность интерфейсов и исправлять проблемы с клавиатурной навигацией, экранными дикторами и формами. Подключайте его при работе с WCAG 2.2. CX Codex 14 596установок monorepo-management Скилл помогает настраивать и поддерживать монорепозитории с Turborepo, Nx и pnpm workspaces. Пригодится для сборки, общих зависимостей и публикации пакетов. CX Codex 14 548установок rag-implementation Скилл помогает собирать RAG-системы с векторным поиском и ответами LLM по внешним документам. Пригодится для Q&A и ассистентов по базе знаний. CX Codex 13 906установок deployment-pipeline-design Проектирует многоэтапные CI/CD-пайплайны с проверками, согласованиями и стратегиями выката. Пригодится для canary, blue-green и отката релизов. CX Codex 13 758установок changelog-automation Скилл помогает собирать changelog и release notes из коммитов, PR и релизов. Подойдёт для настройки процесса релизов и единых правил коммитов. CX Codex 13 733установок visual-design-foundations Скилл помогает задать типографику, цвета и интервалы для проекта. Подойдёт, когда вы создаёте дизайн-токены или приводите интерфейс к единому стилю. CX Codex 13 566установок

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

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