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

python-backend — скилл для Claude Code: паттерны FastAPI и SQLAlchemy

Скилл с готовыми паттернами для Python-бэкенда: FastAPI, async SQLAlchemy, JWT/OAuth2, кэш и лимиты через Upstash. Пригодится, когда агент пишет API и надо, чтобы он делал это по-человечески.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add jiatastic/open-python-skills --skill python-backend -a claude-code
npx skills add jiatastic/open-python-skills --skill fastapi-design -a claude-code
Открыть на GitHub

Что делает python-backend

Скилл задаёт агенту набор правил для бэкенда на Python. Внутри — структура проекта по модулям (router, schemas, models, service, dependencies), async-роуты, валидация через Pydantic, внедрение зависимостей через Depends(), асинхронный SQLAlchemy с async_sessionmaker, кэш в Redis и ограничение частоты запросов через upstash_ratelimit.

Отдельная часть — рефакторинг кода, который сгенерировала модель. Скилл разбирает типовые ошибки вроде блокирующего time.sleep внутри async-функции и показывает, как переписать такой код. Ещё есть четыре справочника: references/fastapi_patterns.md, references/security_patterns.md, references/database_patterns.md и references/upstash_patterns.md — по JWT, паролям, CORS, транзакциям, миграциям и фоновым задачам QStash.

Для работы с Upstash нужен доступ к Redis: в примерах используется Redis.from_env(), то есть переменные окружения с учётными данными. Без них код кэша и лимитов просто не запустится. Ставить скилл есть смысл до того, как агент напишет первые роуты, — иначе он успеет наделать синхронных вызовов в async-обработчиках, и переписывать придётся вручную.

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

  • собрать структуру FastAPI-проекта по модулям
  • подключить async SQLAlchemy с пулом соединений
  • закрыть эндпоинты JWT-аутентификацией
  • добавить кэш и лимит запросов через Upstash
  • переписать блокирующий код в async-роутах

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

  • Собери структуру FastAPI-проекта: отдельные модули для auth и posts, Pydantic-схемы и сервисный слой
  • Добавь JWT-аутентификацию и зависимость get_current_user для защищённых роутов
  • Подключи Upstash Redis для кэша и ограничь запросы до 10 в минуту на IP

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

1Через Skills CLI (Vercel)

npx skills add jiatastic/open-python-skills --skill python-backend -a claude-code
npx skills add jiatastic/open-python-skills --skill fastapi-design -a claude-code

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

~/.claude/skills/fastapi-design/SKILL.md

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

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

Похожие

Python Backend Architecture Review rknall Скилл для ревью архитектуры Python-бэкенда: разбирает документ по системе, масштабируемости, безопасности и API. Пригодится, когда проект уже описан, а слабые места надо найти до релиза. CX Codex +1 503установок fastapi-development aj-geddes Скилл для ИИ-агента, который помогает писать Python-API на FastAPI: асинхронные роуты, валидация через Pydantic, JWT и автодокументация OpenAPI. CX Codex +1 618установок fastapi-python Mindrally Задаёт агенту стиль разработки на FastAPI: async, Pydantic v2, обработка ошибок и структура роутеров. Пригодится, когда пишете API на Python. CX Codex +1 13 900установок fastapi-patterns affaan-m Задаёт структуру продакшен-проекта на FastAPI, схему валидации Pydantic v2 и внедрение зависимостей. Пригодится при проектировании сервисов, настройке JWT-авторизации и подготовке тестов. CX Codex +1 4 900установок backend-development MoizIbnYousaf Скилл для проектирования REST API, схем баз данных и микросервисной архитектуры. Пригодится, когда агент пишет бэкенд и нужно, чтобы он держался одних конвенций. CX Codex +1 868установок fastapi-async-patterns TheBushidoCollective Скилл с готовыми шаблонами async-роутов, асинхронных баз данных, фоновых задач и WebSocket в FastAPI. Пригодится, когда API начинает тормозить на конкурентных запросах. CX Codex +1 953установок

Рядом в теме «Бэкенд и API»

Всё по теме «Бэкенд и API» →

Вопросы о python-backend

Как установить python-backend в Claude?

Выполните npx skills add jiatastic/open-python-skills --skill python-backend -a claude-code. Файл скилла появится в ~/.claude/skills/.

Что делает скилл python-backend?

Даёт агенту паттерны для Python-бэкенда: FastAPI, async SQLAlchemy, JWT/OAuth2, кэш и лимиты Upstash. Плюс помогает переписывать код, сгенерированный моделью.

Что нужно для работы с Upstash?

Учётные данные Redis в переменных окружения — в примерах скилла клиент создаётся через Redis.from_env(). Без них кэш и ограничение запросов не заработают.

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

SKILL.md · MIT
---
name: python-backend
description: >
  Python backend development expertise for FastAPI, security patterns, database operations,
  Upstash integrations, and code quality. Use when: (1) Building REST APIs with FastAPI,
  (2) Implementing JWT/OAuth2 authentication, (3) Setting up SQLAlchemy/async databases,
  (4) Integrating Redis/Upstash caching, (5) Refactoring AI-generated Python code (deslopification),
  (6) Designing API patterns, or (7) Optimizing backend performance.
---

# python-backend

Production-ready Python backend patterns for FastAPI, SQLAlchemy, and Upstash.

## When to Use This Skill

- Building REST APIs with FastAPI
- Implementing JWT/OAuth2 authentication
- Setting up SQLAlchemy async databases
- Integrating Redis/Upstash caching and rate limiting
- Refactoring AI-generated Python code
- Designing API patterns and project structure

## Core Principles

1. **Async-first** - Use async/await for I/O operations
2. **Type everything** - Pydantic models for validation
3. **Dependency injection** - Use FastAPI's Depends()
4. **Fail fast** - Validate early, use HTTPException
5. **Security by default** - Never trust user input

## Quick Patterns

### Project Structure

```
src/
├── auth/
│   ├── router.py      # endpoints
│   ├── schemas.py     # pydantic models
│   ├── models.py      # db models
│   ├── service.py     # business logic
│   └── dependencies.py
├── posts/
│   └── ...
├── config.py
├── database.py
└── main.py
```

### Async Routes

```python
# BAD - blocks event loop
@router.get("/")
async def bad():
    time.sleep(10)  # Blocking!

# GOOD - runs in threadpool
@router.get("/")
def good():
    time.sleep(10)  # OK in sync function

# BEST - non-blocking
@router.get("/")
async def best():
    await asyncio.sleep(10)  # Non-blocking
```

### Pydantic Validation

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

class UserCreate(BaseModel):
    email: EmailStr
    username: str = Field(min_length=3, max_length=50, pattern="^[a-zA-Z0-9_]+$")
    age: int = Field(ge=18)
```

### Dependency Injection

```python
async def get_current_user(token: str = Depends(oauth2_scheme)) -> User:
    payload = decode_token(token)
    user = await get_user(payload["sub"])
    if not user:
        raise HTTPException(401, "User not found")
    return user

@router.get("/me")
async def get_me(user: User = Depends(get_current_user)):
    return user
```

### SQLAlchemy Async

```python
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine

engine = create_async_engine(DATABASE_URL, pool_pre_ping=True)
SessionLocal = async_sessionmaker(engine, expire_on_commit=False)

async def get_session() -> AsyncGenerator[AsyncSession, None]:
    async with SessionLocal() as session:
        yield session
```

### Redis Caching

```python
from upstash_redis import Redis

redis = Redis.from_env()

@app.get("/data/{id}")
def get_data(id: str):
    cached = redis.get(f"data:{id}")
    if cached:
        return cached
    data = fetch_from_db(id)
    redis.setex(f"data:{id}", 600, data)
    return data
```

### Rate Limiting

```python
from upstash_ratelimit import Ratelimit, SlidingWindow

ratelimit = Ratelimit(
    redis=Redis.from_env(),
    limiter=SlidingWindow(max_requests=10, window=60),
)

@app.get("/api/resource")
def protected(request: Request):
    result = ratelimit.limit(request.client.host)
    if not result.allowed:
        raise HTTPException(429, "Rate limit exceeded")
    return {"data": "..."}
```

## Reference Documents

For detailed patterns, see:

| Document | Content |
|----------|---------|
| `references/fastapi_patterns.md` | Project structure, async, Pydantic, dependencies, testing |
| `references/security_patterns.md` | JWT, OAuth2, password hashing, CORS, API keys |
| `references/database_patterns.md` | SQLAlchemy async, transactions, eager loading, migrations |
| `references/upstash_patterns.md` | Redis, rate limiting, QStash background jobs |

## Resources

- [FastAPI Documentation](https://fastapi.tiangolo.com/)
- [SQLAlchemy 2.0 Documentation](https://docs.sqlalchemy.org/)
- [Upstash Documentation](https://upstash.com/docs)
- [Pydantic Documentation](https://docs.pydantic.dev/)

© jiatastic · MIT · jiatastic/open-python-skills

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

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

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