Skip to content
Back to skills

Fastapi Project

ASecurity

Scaffold and evolve FastAPI projects with uv-based tooling, structured settings, and production-ready observability, resilience, availability, and security patterns aligned with python.instructions.md.

  • 57 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 17, 2026
devopspythongosqlfastapiapidatabasesecurity

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill fastapi-project --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fastapi Project?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fastapi Project
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-fastapi-project/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-fastapi-project)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fastapi-project
description: Scaffold and evolve FastAPI projects with uv-based tooling, structured settings, and production-ready observability, resilience, availability, and security patterns aligned with python.instructions.md.
---

# FastAPI Project Skill 🧩

This skill scaffolds new FastAPI projects or upgrades existing ones with a production-ready layout and operational practices suitable for large systems.

## Scope and alignment 🧭

Mandatory reads (must be loaded before using this skill):

- [Python instructions](../../instructions/python.instructions.md) β€” use its identifiers when describing compliance.
- [Local-first dev baseline](../../instructions/includes/local-first-dev-baseline.include.md)
- [Quality gates baseline](../../instructions/includes/quality-gates-baseline.include.md)
- [Observability logging baseline](../../instructions/includes/observability-baseline.include.md)
- [AI-assisted change baseline](../../instructions/includes/ai-assisted-change-baseline.include.md)

## Inputs to confirm βœ…

- Project name and Python version
- API surface (REST only, GraphQL, or mixed)
- Database (SQLite/PostgreSQL) and cache (Redis/none)
- Background jobs (Celery/Arq/RQ/none) and async worker needs
- Deployment target (container, PaaS, serverless)
- Environment split (local/staging/prod) and secrets strategy

## Quick reference 🧠

| Capability                  | Purpose                                                              | Key Outputs                                           |
| --------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------- |
| Project scaffold            | Create a working FastAPI foundation aligned with Python instructions | `pyproject.toml`, `src/` layout, app core, routers    |
| Large-system structure      | Keep growth manageable with clear boundaries                         | Domain routers, service layers, adapters              |
| Observability baseline      | Operational visibility from day one                                  | Structured logs, request IDs, health endpoints        |
| Security baseline           | Protect data and reduce risk                                         | Secure defaults, auth boundaries, dependency scanning |
| Resilience and availability | Survive failures and scale safely                                    | Timeouts, retries, graceful degradation               |
| Quality gates               | Enforce fast feedback                                                | `make` targets or uv commands for lint/typecheck/test |

---

## Capabilities 🧰

### 1. Project scaffold (foundation)

Use this for new projects or to align an existing project with the standard layout.

Core requirements:

- Use `pyproject.toml` as the single source of truth. If available, start from [the template](../../instructions/templates/pyproject.toml) and set:
  - project metadata (name, version, requires-python)
  - dependency groups for dev tooling
  - ruff, mypy, pytest configuration
- Use `uv` for deterministic installs and lockfile management.
- Pin Python in `.python-version` and `requires-python`.
- Scaffold with a `src/` layout so imports are explicit and testable.
- Define app settings with `pydantic-settings` and environment variables.
- Keep the ASGI entrypoint thin; wire routers and dependencies in `main.py`.

Recommended layout:

```text
.
β”œβ”€β”€ .python-version
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ main.py
β”‚   β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”‚   β”œβ”€β”€ v1/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ routes/
β”‚   β”‚   β”‚   β”‚   └── schemas/
β”‚   β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”‚   β”œβ”€β”€ config.py
β”‚   β”‚   β”‚   β”œβ”€β”€ logging.py
β”‚   β”‚   β”‚   └── observability.py
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ adapters/
β”‚   β”‚   └── health.py
└── tests/
```

Dependency defaults (adjust to requirements):

- `fastapi`
- `uvicorn` (or `gunicorn` + `uvicorn` workers for production)
- `pydantic-settings`
- `httpx` (for outbound HTTP)
- `pytest`
- `ruff`, `mypy`

### 2. Large-system structure and boundaries

Use these patterns when the system is expected to grow:

- Group routers by domain in `api/v1/routes/<domain>.py`; keep routing thin.
- Put business logic in services; keep I/O inside adapters/selectors.
- Use dependency injection for shared concerns (auth, DB sessions, clients).
- Use explicit schemas at boundaries; avoid leaking ORM models.
- Separate infrastructure wiring (clients, pools) from request handling.

### 3. Observability baseline

Observability is non-negotiable for production workloads:

- Configure structured logging and include required fields from the structured logging baseline.
- Add request ID/correlation ID middleware and propagate IDs into logs.
- Provide health endpoints (`/healthz`, `/readyz`) with clear dependency checks.
- Add optional hooks for metrics and tracing (Prometheus or OpenTelemetry) but keep them toggled by configuration.
- Never log secrets or raw personal data.

### 4. Security baseline

Protect data and enforce secure defaults:

- Load secrets from environment or a secret manager; never commit or log secrets.
- Configure CORS narrowly; never use `*` in production for credentialed routes.
- Enforce authn/authz at router boundaries; keep public vs private APIs explicit.
- Disable or restrict interactive docs in production when required.
- Use dependency pinning and vulnerability scanning; keep lock files updated.

### 5. Resilience and availability baseline

Build for failure and recovery:

- Set explicit timeouts on outbound HTTP/DB calls; never rely on defaults.
- Use retries with bounded backoff and jitter for transient failures; avoid retrying non-idempotent operations without safeguards.
- Use connection pooling and sensible concurrency limits for the ASGI server.
- Provide graceful shutdown and ensure background tasks are interruptible.
- Use caching for hot paths and provide safe fallbacks when caches fail.

### 6. Quality gates and verification

Align with Python quality gates:

- Prefer `make format`, `make lint`, `make typecheck`, `make test` when Makefile targets exist.
- Otherwise use `uv run ruff format .`, `uv run ruff check .`, `uv run mypy .`, `uv run pytest`.
- Add a lightweight ASGI startup check (import app, load settings) before shipping.

---

## Output expectations πŸ“¦

When executing this skill, produce:

- A scaffolded FastAPI project or a concrete refactor plan for an existing codebase
- A list of decisions made for observability, security, resilience, and availability
- A short validation checklist using the canonical quality gates

When information is missing, record **Unknown from code – {suggested action}** instead of guessing.

---

> **Version**: 1.0.0
> **Last Amended**: 2026-01-18

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.