Skip to main content
skill Claude Code CX Codex Cursor

fastapi-templates — Claude Code skill: setup and use

This skill scaffolds FastAPI projects with async routes, dependency injection, and error handling. Use it when starting a Python API.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add wshobson/agents
/plugin install api-scaffolding@claude-code-workflows
Open on GitHub

What fastapi-templates does

fastapi-templates organizes a FastAPI project into clear layers. Routes live under api, configuration and database code under core, database models under models, and Pydantic schemas under schemas. Business logic and data access go into services and repositories, while main.py provides the application entry point.

The skill uses FastAPI's Depends for database sessions, authentication, authorization, and shared logic. Its patterns cover async route handlers, database operations, background tasks, and middleware. The testing example uses pytest, pytest-asyncio, httpx, aiosqlite, and ASGITransport. PostgreSQL projects need asyncpg; a login route built with OAuth2PasswordRequestForm also needs python-multipart, so check those dependencies before creating the project.

What it helps with

  • scaffold a new FastAPI project
  • separate routes, schemas, and business logic
  • connect asynchronous database operations
  • configure dependencies with Depends
  • test API endpoints with async fixtures

Example prompts for the agent

  • Use `fastapi-templates` to create a new FastAPI API with versioned routes under `api/v1`.
  • Build a FastAPI project with async routes, `Depends`, PostgreSQL through `asyncpg`, and separate `services` and `repositories`.
  • Add user tests with `pytest-asyncio`, `httpx`, and `ASGITransport`, using an in-memory SQLite database.

How to install fastapi-templates

1Plugin marketplace

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

This installs the whole api-scaffolding plugin with all its skills

2Skills CLI (Vercel)

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

3Manually: put the files in place

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

Copy the whole skill folder; for one project use .claude/skills/fastapi-templates/

From the same set213

The whole set →
typescript-advanced-types Seth Hobson Guides an agent through advanced TypeScript types, from generics to conditional and mapped types. Use it for typed libraries, API clients, or strict configuration objects. Claude Code CX Codex Cursor 92,169installs tailwind-design-system Seth Hobson Helps build design systems with Tailwind CSS v4, from theme tokens to component variants. Use it when a project needs shared UI patterns. Claude Code CX Codex Cursor 70,180installs brand-landingpage Travis D. Elliott This skill interviews you about the product and its visual direction, then builds a landing page through Stitch. Use it when there’s no established design yet. Claude Code CX Codex Cursor 39,476installs python-testing-patterns Seth Hobson This skill guides Python testing with pytest, fixtures and mocks. Use it when building a test suite or tracking down failing checks. Claude Code CX Codex Cursor 36,943installs python-performance-optimization Seth Hobson This skill profiles Python code to locate CPU and memory bottlenecks. Use it when an application responds slowly or consumes too many resources. Claude Code CX Codex Cursor 35,675installs nextjs-app-router-patterns Seth Hobson This skill covers Next.js App Router patterns for rendering, routing, and data fetching. Use it when starting an App Router project or moving from Pages Router. Claude Code CX Codex Cursor 32,529installs api-design-principles Seth Hobson Use this skill to plan or review REST and GraphQL APIs. It helps when writing a specification or setting API conventions for a team. Claude Code CX Codex Cursor 30,348installs code-review-excellence Seth Hobson This skill guides pull request reviews, catches logic and security issues, and helps teams give specific feedback. Use it for review standards or developer mentoring. Claude Code CX Codex Cursor 30,193installs

Similar

cli-creator official openai Builds durable command-line tools from API docs, OpenAPI specs, or curl commands. Configures system-wide binaries with JSON output and auth handling. Claude Code CX Codex Cursor +1 3,200installs python-mcp-server-generator official github Builds Python MCP servers that expose functions, APIs, or databases as tools for AI clients. Use it when starting a server with MCP Python SDK v2. GitHub Copilot 10,418installs dataverse-python-production-code official github Guides GitHub Copilot to write Python code for the Dataverse SDK with error handling, request retries, and OData query rules. GitHub Copilot 9,803installs kotlin-springboot official github This skill guides Spring Boot and Kotlin work, from project structure to tests and coroutines. Use it when an agent is writing or reviewing a backend service. GitHub Copilot 9,781installs agent-governance official github Provides governance patterns for AI agents that use APIs, databases, or file systems. Use it when agent actions need policy checks, threat detection, and audit records. GitHub Copilot 9,623installs mcp-builder official anthropics This skill walks through building an MCP server in TypeScript or Python, from reading the protocol spec to writing tests and evaluation questions. Claude Code Claude.ai 130,949installs google-agents-cli-adk-code official Google A reference skill for building ADK agents with tools, callbacks, state, and workflows. Use it when an agent project needs concrete API patterns or code examples. Claude Code CX Codex Cursor +1 511,400installs lark-im larksuite This skill lets an agent work with Lark IM messages, chats, files, and interactive cards. Use it when coding tasks need access to team conversations. Claude Code CX Codex Cursor +1 472,300installs

Questions about fastapi-templates

How do I install fastapi-templates in Claude Code?

Run /plugin marketplace add wshobson/agents, then run /plugin install api-scaffolding@claude-code-workflows.

What does fastapi-templates do?

It scaffolds a FastAPI project with async patterns, dependency injection, middleware, separate API and database layers, and testing examples.

What dependencies are needed for PostgreSQL and tests?

PostgreSQL uses sqlalchemy[asyncio]>=2.0 and asyncpg. Tests use pytest, pytest-asyncio, httpx, and aiosqlite.

Source text

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

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor