Gerador de Projetos FastAPI (Matt1tech)

Gere interativamente um backend FastAPI pronto para produção usando Python 3.12 e uv, com arquitetura modular e serviços opcionais como PostgreSQL, Redis, Qdrant, JWT, Docker Compose e módulos de IA.

O que é Gerador de Projetos FastAPI (Matt1tech)?

Esta skill permite que um assistente de IA (como Claude Code, Cursor ou Codex) crie rapidamente a estrutura completa de um projeto FastAPI moderno e profissional diretamente no terminal. Através de uma breve entrevista com o usuário, a skill descobre o nome do projeto, a arquitetura desejada (modular em camadas, limpa, hexagonal, minimalista ou microsserviços) e os serviços necessários (PostgreSQL, Redis, autenticação JWT, Docker Compose). Se o usuário desejar, também podem ser adicionados módulos de IA como LangChain, LangGraph e RAG. A skill então gera todos os arquivos e dependências usando `uv`, seguindo as melhores práticas do Python 3.12, e executa verificações automáticas (lint, formatação, testes) para garantir que o projeto já saia funcionando. O resultado é um backend FastAPI pronto para ser estendido, com um resumo claro do que foi criado e os comandos para executar a API.

Funciona com✓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 Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Gerador de Projetos FastAPI

Gere um projeto FastAPI limpo e verificado. Entreviste o usuário rapidamente, recomende opções padrão sensatas, gere a estrutura e verifique com comandos reais.

Etapa 1 - Entrevista

Use a ferramenta de perguntas estruturadas do seu agente, se houver (qualquer ferramenta de perguntar ao usuário ou de múltipla escolha). Caso contrário, faça as mesmas perguntas no chat como uma lista numerada curta com opções em letras e a opção recomendada marcada, e aguarde a resposta.

Pergunte em no máximo duas rodadas. Pule qualquer pergunta que o usuário já respondeu na mensagem. Sempre marque a opção recomendada primeiro com "(Recomendado)". Nunca pergunte sobre coisas que têm um valor padrão seguro.

Rodada 1 - essenciais (um lote, até 4 perguntas):

  1. Nome do projeto - texto livre (use "Outro"). Ofereça uma sugestão curta baseada no nome do diretório. Normalize para kebab-case para a pasta e snake_case para os nomes Python.
  2. Pasta de destino - opções: diretório atual ./<nome> (Recomendado), um caminho personalizado (Outro).
  3. Arquitetura - Modular em camadas (Recomendado), Minimalista, Arquitetura Limpa, Hexagonal. Microsserviços só aparece via "Outro"; se escolhido, pergunte o motivo e avise contra para apps pequenos (veja references/architectures.md).
  4. Serviços (multisseleção) - PostgreSQL + SQLAlchemy + Alembic, autenticação JWT, Redis, Docker Compose. Recomende PostgreSQL e Docker Compose.

Rodada 2 - extras opcionais (pergunte apenas se relevante; um lote):

  1. Banco vetorial (multisseleção, apenas se o usuário quiser IA/RAG ou Qdrant): Qdrant, PostgreSQL pgvector, Nenhum.
  2. Módulos de IA (multisseleção): Nenhum (Recomendado), LangChain, LangGraph, RAG, MCP.
  3. Provedor de LLM (apenas se um módulo de IA for selecionado): OpenAI, Anthropic, Google Gemini, Ollama (local).
  4. Persistir estado da conversa? (apenas se LangGraph for selecionado): Sim via checkpointer Postgres / Não (em memória).

Em seguida, imprima um resumo de 6 linhas com as escolhas e prossiga - não peça outra confirmação a menos que a pasta de destino não esteja vazia.

Etapa 2 - Verificações de segurança

  1. Resolva o caminho de destino. Se ele existir e não estiver vazio, PARE e pergunte se deseja usar uma pasta diferente ou mesclar. Nunca sobrescreva arquivos existentes sem aprovação explícita.
  2. Confirme se o uv está instalado (uv --version). Caso contrário, diga ao usuário como instalá-lo (curl -LsSf https://astral.sh/uv/install.sh | sh) e pare.
  3. Confirme se o Docker está disponível apenas se o Docker Compose foi selecionado, e apenas para a etapa de verificação.

Etapa 3 - Gerar estrutura

Leia os arquivos de referência correspondentes antes de gerar o código:

  • Sempre: references/base-project.md (layout, arquivos iniciais, regras do uv, padrões de código)
  • Arquitetura escolhida: references/architectures.md
  • Serviços escolhidos: references/services.md (dependências, padrões Docker)
  • Qualquer módulo de IA: references/ai-rag.md

Regras que sempre se aplicam:

  • Python 3.12, apenas uv (nunca pip). backend/pyproject.toml e backend/uv.lock ficam juntos.
  • [tool.uv] package = false a menos que o usuário explicitamente queira um pacote instalável.
  • Sem diretório src/. Sem camadas de abstração vazias.
  • Adicione dependências apenas para os serviços selecionados, via uv add / uv add --dev.
  • Arquivos obrigatórios: app/main.py, app/core/config.py, app/api/routes/health.py, tests/test_health.py, .env.example, .gitignore, README.md.
  • /health retorna HTTP 200 {"status": "ok"}; Swagger em /docs.
  • Nunca coloque segredos no código-fonte; nunca commite .env.
  • Pastas, endpoints e dependências de IA existem apenas se solicitados.

Etapa 4 - Verificar (nunca afirme sucesso sem executar)

A partir de backend/:

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

Se o Docker Compose foi selecionado: docker compose config (da raiz do projeto). Execute docker compose up -d apenas se o usuário pedir, ou pergunte uma vez. Corrija falhas e reexecute. Se algo não puder ser verificado, diga.

Etapa 5 - Relatório de entrega

Relate de forma concisa:

  1. Localização do projeto
  2. Arquitetura selecionada
  3. Serviços incluídos
  4. Dependências instaladas
  5. Arquivos criados (árvore)
  6. Comando para executar a API: cd backend && uv run uvicorn app.main:app --reload
  7. Comando para executar os testes: cd backend && uv run pytest -v
  8. Resultados reais dos testes e lint
  9. Limitações conhecidas

Finalize oferecendo um próximo passo (ex.: "adicione um primeiro módulo de domínio", "git init e push").

Habilidades Relacionadas