CommunityProgramación y desarrollogithub.com

Matt1tech/generador-de-proyectos-fastapi

Genera interactivamente un backend FastAPI listo para producción usando Python 3.12, uv y una arquitectura elegida (capas modular, limpia, hexagonal, minimalista, microservicios), con PostgreSQL, Redis, Qdrant, JWT, Docker Compose y módulos de IA opcionales. Úsalo cuando el usuario quiera iniciar un nuevo proyecto FastAPI, generar un backend o invoque esta skill por su nombre.

¿Qué es generador-de-proyectos-fastapi?

Esta skill para agentes de IA (como Claude Code o Cursor) guía al usuario a través de una entrevista breve para generar un proyecto FastAPI completo y listo para producción. Soporta múltiples arquitecturas (capas modular, limpia, hexagonal, minimalista y microservicios), servicios opcionales como PostgreSQL, Redis, JWT, Docker Compose, y módulos de IA como LangChain, LangGraph, RAG y MCP. El agente lee archivos de referencia detallados, genera el código, instala dependencias con uv, ejecuta verificaciones de linting y pruebas, y presenta un informe final con la estructura del proyecto. Está diseñado para evitar configuraciones incorrectas, no sobrescribe archivos sin permiso y verifica cada paso antes de declarar éxito.

Compatible con✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Matt1tech/fastapi-project-init/tree/HEAD/skills/fastapi-project-generator

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Generador de Proyectos FastAPI

Genera un proyecto FastAPI limpio y verificado. Entrevista brevemente al usuario, recomienda valores predeterminados sensatos, genera el andamiaje y luego verifica con comandos reales.

Paso 1 - Entrevista

Usa la herramienta de preguntas estructuradas de tu agente si tiene alguna (cualquier herramienta de preguntar al usuario o de opción múltiple). Si no, haz las mismas preguntas en el chat como una lista numerada corta con opciones con letras y la opción recomendada marcada, luego espera la respuesta.

Pregunta en como máximo dos rondas. Omite cualquier pregunta que el usuario ya haya respondido en su mensaje. Siempre marca la opción recomendada primero con "(Recomendado)". Nunca preguntes sobre cosas que tengan un valor predeterminado seguro.

Ronda 1 - esenciales (un lote, hasta 4 preguntas):

  1. Nombre del proyecto - texto libre (usa "Otro"). Ofrece una sugerencia breve basada en el nombre del directorio. Normaliza a kebab-case para la carpeta y snake_case para los nombres de Python.
  2. Carpeta de destino - opciones: directorio actual ./<nombre> (Recomendado), una ruta personalizada (Otro).
  3. Arquitectura - Capas modular (Recomendado), Minimalista, Arquitectura Limpia, Hexagonal. Microservicios solo aparece mediante "Otro"; si se elige, pregunta por qué y advierte contra ella para aplicaciones pequeñas (ver references/architectures.md).
  4. Servicios (multiselección) - PostgreSQL + SQLAlchemy + Alembic, autenticación JWT, Redis, Docker Compose. Recomienda PostgreSQL y Docker Compose.

Ronda 2 - extras opcionales (solo pregunta si es relevante; un lote):

  1. Base de datos vectorial (multiselección, solo si el usuario quiere IA/RAG o Qdrant): Qdrant, PostgreSQL pgvector, Ninguno.
  2. Módulos de IA (multiselección): Ninguno (Recomendado), LangChain, LangGraph, RAG, MCP.
  3. Proveedor de LLM (solo si se selecciona un módulo de IA): OpenAI, Anthropic, Google Gemini, Ollama (local).
  4. ¿Persistir el estado de la conversación? (solo si se selecciona LangGraph): Sí, mediante punto de control de Postgres / No (en memoria).

Luego imprime un resumen de 6 líneas de las elecciones y continúa; no pidas otra confirmación a menos que la carpeta de destino no esté vacía.

Paso 2 - Comprobaciones de seguridad

  1. Resuelve la ruta de destino. Si existe y no está vacía, DETENTE y pregunta si usar una carpeta diferente o fusionar. Nunca sobrescribas archivos existentes sin aprobación explícita.
  2. Confirma que uv está instalado (uv --version). Si no, dile al usuario cómo instalarlo (curl -LsSf https://astral.sh/uv/install.sh | sh) y detente.
  3. Confirma que Docker está disponible solo si se seleccionó Docker Compose, y solo para el paso de verificación.

Paso 3 - Andamiaje

Lee los archivos de referencia correspondientes antes de generar código:

  • Siempre: references/base-project.md (diseño, archivos iniciales, reglas de uv, estándares de código)
  • Arquitectura elegida: references/architectures.md
  • Servicios elegidos: references/services.md (dependencias, estándares de Docker)
  • Cualquier módulo de IA: references/ai-rag.md

Reglas que siempre aplican:

  • Python 3.12, solo uv (nunca pip). backend/pyproject.toml y backend/uv.lock permanecen juntos.
  • [tool.uv] package = false a menos que el usuario quiera explícitamente un paquete instalable.
  • Sin directorio src/. Sin capas de abstracción vacías.
  • Agrega dependencias solo para los servicios seleccionados, mediante uv add / uv add --dev.
  • Archivos requeridos: app/main.py, app/core/config.py, app/api/routes/health.py, tests/test_health.py, .env.example, .gitignore, README.md.
  • /health devuelve HTTP 200 {"status": "ok"}; Swagger en /docs.
  • Nunca pongas secretos en el código fuente; nunca subas .env.
  • Las carpetas, endpoints y dependencias de IA existen solo si se solicitaron.

Paso 4 - Verificar (nunca afirmes éxito sin ejecutar)

Desde backend/:

uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v

Si se seleccionó Docker Compose: docker compose config (desde la raíz del proyecto). Ejecuta docker compose up -d solo si el usuario lo pide, o pregunta una vez. Corrige fallos y vuelve a ejecutar. Si algo no se puede verificar, dilo.

Paso 5 - Informe de entrega

Informa de manera concisa:

  1. Ubicación del proyecto
  2. Arquitectura seleccionada
  3. Servicios incluidos
  4. Dependencias instaladas
  5. Archivos creados (árbol)
  6. Comando para ejecutar la API: cd backend && uv run uvicorn app.main:app --reload
  7. Comando para ejecutar pruebas: cd backend && uv run pytest -v
  8. Resultados reales de pruebas y linting
  9. Limitaciones conocidas

Finaliza ofreciendo un siguiente paso (por ejemplo, "añadir un primer módulo de dominio", "git init y push").

Skills relacionados