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

fastapi-templates — скилл для Claude Code: установка

Скилл подсказывает структуру FastAPI-проектов с асинхронным кодом и зависимостями. Пригодится при создании API на Python с нуля.

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

Что делает fastapi-templates

fastapi-templates помогает собрать FastAPI-проект с разделением API-маршрутов, конфигурации, моделей, Pydantic-схем, сервисов и доступа к данным. В примерах используются Depends, асинхронные обработчики, операции с базой, фоновые задачи и middleware.

Скилл описывает зависимости для FastAPI, uvicorn, pydantic-settings, SQLAlchemy 2.0 с asyncio, asyncpg, PyJWT и pwdlib[argon2]. Для тестов предусмотрены pytest, pytest-asyncio, httpx и aiosqlite; тестовый пример использует ASGITransport и переопределение зависимостей базы.

Ставьте его для нового FastAPI API или backend-проекта, когда нужна заранее разложенная структура и async-паттерны. Для небольшого однофайлового сервиса он может быть избыточен.

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

  • разложить новый FastAPI-проект по слоям
  • настроить async-маршруты и работу с базой
  • подключить зависимости через Depends
  • подготовить тесты с pytest-asyncio и httpx
  • организовать API с версионированием маршрутов

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

  • Создай FastAPI-проект по структуре из fastapi-templates с async-маршрутами.
  • Добавь `Depends` для сессии базы и настрой тестовый клиент через `ASGITransport`.
  • Подготовь тест создания пользователя для `/api/v1/users/` с `pytest-asyncio`.

Как установить fastapi-templates

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

/plugin marketplace add wshobson/agents
/plugin install api-scaffolding@claude-code-workflows

2Через Skills CLI (Vercel)

npx skills add wshobson/agents --skill fastapi-templates -a claude-code

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

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

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

Похожие

mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. Claude Code Claude.ai 130 949установок java-springboot официальный github Задаёт практики разработки Spring Boot-приложений: от структуры проекта до тестов и безопасности. Пригодится, когда Copilot пишет или проверяет Java-код. GitHub Copilot 21 272установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. Claude Code CX Codex Cursor 92 169установок microsoft-code-reference официальный github Проверяет Microsoft API и SDK по официальной документации, ищет рабочие примеры и помогает разбирать ошибки в Azure и .NET-коде. GitHub Copilot 14 251установок typescript-mcp-server-generator официальный github Генерирует TypeScript-проект MCP-сервера с инструментами, ресурсами и конфигурацией. Пригодится, когда нужно быстро заложить сервер на MCP TypeScript SDK v2. GitHub Copilot 12 050установок dotnet-design-pattern-review официальный github Проверяет выбранный C#/.NET-код на применение паттернов проектирования и предлагает правки без изменения файлов. Подходит для ревью архитектуры проекта. GitHub Copilot 11 609установок

Вопросы о fastapi-templates

Как установить fastapi-templates в Claude Code?

Выполните npx skills add wshobson/agents --skill fastapi-templates -a claude-code. Файл скилла появится по пути ~/.claude/skills/fastapi-templates/SKILL.md.

Что делает fastapi-templates?

Скилл помогает проектировать FastAPI-приложения с async/await, dependency injection, middleware и обработкой ошибок. Он также показывает структуру API, сервисов, репозиториев и тестов.

Какие зависимости нужны для тестов FastAPI-проекта?

В примерах используются pytest, pytest-asyncio, httpx и aiosqlite. Тестовая база подключается через sqlite+aiosqlite:///:memory:.

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

SKILL.md · MIT
---
name: fastapi-templates
description: Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
---

# FastAPI Project Templates

Production-ready FastAPI project structures with async patterns, dependency injection, middleware, and best practices for building high-performance APIs.

## When to Use This Skill

- Starting new FastAPI projects from scratch
- Implementing async REST APIs with Python
- Building high-performance web services and microservices
- Creating async applications with PostgreSQL, MongoDB
- Setting up API projects with proper structure and testing

## Core Concepts

### 1. Project Structure

**Recommended Layout:**

```
app/
├── api/                    # API routes
│   ├── v1/
│   │   ├── endpoints/
│   │   │   ├── users.py
│   │   │   ├── auth.py
│   │   │   └── items.py
│   │   └── router.py
│   └── dependencies.py     # Shared dependencies
├── core/                   # Core configuration
│   ├── config.py
│   ├── security.py
│   └── database.py
├── models/                 # Database models
│   ├── user.py
│   └── item.py
├── schemas/                # Pydantic schemas
│   ├── user.py
│   └── item.py
├── services/               # Business logic
│   ├── user_service.py
│   └── auth_service.py
├── repositories/           # Data access
│   ├── user_repository.py
│   └── item_repository.py
└── main.py                 # Application entry
```

### 2. Dependency Injection

FastAPI's built-in DI system using `Depends`:

- Database session management
- Authentication/authorization
- Shared business logic
- Configuration injection

### 3. Async Patterns

Proper async/await usage:

- Async route handlers
- Async database operations
- Async background tasks
- Async middleware

### 4. Dependencies

The packages the examples import:

```text
# requirements.txt
fastapi
uvicorn[standard]
pydantic-settings
sqlalchemy[asyncio]>=2.0  # DeclarativeBase; [asyncio] installs greenlet for the async engine
asyncpg                   # PostgreSQL driver: postgresql+asyncpg://...
PyJWT
pwdlib[argon2]
python-multipart          # only for a login route that uses OAuth2PasswordRequestForm

# requirements-dev.txt
pytest
pytest-asyncio
httpx
aiosqlite                 # test database: sqlite+aiosqlite:///:memory:
```

## Detailed worked examples and patterns

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

## Testing

```python
# tests/conftest.py
import pytest_asyncio
from httpx import ASGITransport, AsyncClient
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker

from app.main import app
from app.core.database import get_db, Base

TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:"

# Async fixtures need pytest_asyncio.fixture in pytest-asyncio's default strict mode
@pytest_asyncio.fixture
async def db_session():
    engine = create_async_engine(TEST_DATABASE_URL, echo=True)
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.create_all)

    AsyncSessionLocal = sessionmaker(
        engine, class_=AsyncSession, expire_on_commit=False
    )

    async with AsyncSessionLocal() as session:
        yield session
    await engine.dispose()

@pytest_asyncio.fixture
async def client(db_session):
    async def override_get_db():
        yield db_session

    app.dependency_overrides[get_db] = override_get_db

    # httpx 0.28 removed AsyncClient(app=...); use an ASGI transport
    transport = ASGITransport(app=app)
    async with AsyncClient(transport=transport, base_url="http://test") as client:
        yield client
    app.dependency_overrides.clear()

# tests/test_users.py
import pytest

@pytest.mark.asyncio
async def test_create_user(client):
    response = await client.post(
        "/api/v1/users/",
        json={
            "email": "[email protected]",
            "password": "testpass123",
            "name": "Test User"
        }
    )
    assert response.status_code == 201
    data = response.json()
    assert data["email"] == "[email protected]"
    assert "id" in data
```

© Seth Hobson · MIT · wshobson/agents

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

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

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