Começar
Gerar um projeto leva um comando. Esta página cobre o que a máquina precisa antes, o que o CLI pergunta e o que chega.
Confira a máquina
O Prumo precisa de Node 22.23.4 ou mais novo e de pnpm 10.26 ou mais novo, no macOS, no Linux ou no Windows. No Windows ele roda nativamente: o projeto fica numa pasta do Windows, e quem o roda são o Node e o pnpm do Windows. Dentro de uma distribuição WSL, com Node, pnpm e Docker dela, o Prumo está no Linux, que é suportado, embora não seja testado no WSL especificamente; ferramentas do Windows trabalhando num projeto dentro do sistema de arquivos do WSL não são suportadas. Qualquer coisa com API precisa também de Docker, porque é lá que roda o banco de desenvolvimento: no Windows, o Docker Desktop com o backend WSL2, configurado para contêineres Linux. Este comando confere tudo e diz o que falta.
npx @stjoseph/prumo doctorGere o projeto
Ele pergunta o que construir, escreve o projeto em my-app/, roda git init e instala. Nada é commitado, então o primeiro commit é seu e o diff dele mostra tudo o que o Prumo escreveu.
npx @stjoseph/prumo new my-appResponda sem terminal
Toda pergunta tem uma flag, e sem terminal toda pergunta que as respostas levantam precisa da sua: uma flag que falta é erro. Mais de um tipo faz um workspace; um único tipo precisa de --alone ou --monorepo para dizer como fica disposto.
npx @stjoseph/prumo new my-app --types api,web --single-tenant --single-language --languages en --no-mcp --sign-in password --email --no-socialCrie o banco
Dentro de um projeto com API, isto cria o banco de desenvolvimento no Docker, escreve a URL dele no .env e roda as migrations, a menos que se passe --skip-migrate. Uma vez que o banco existe, prumo clean remove a preparação de que o projeto precisou uma vez só.
npx @stjoseph/prumo db
As flags
| Flag | O que ela responde |
|---|---|
| --types api,web,mobile | O que o projeto contém. Mais de um tipo faz um workspace; web:vite, web:next ou web:astro escolhe o framework web, Vite por padrão |
| --alone --monorepo | Como um tipo sozinho fica disposto |
| --multi-tenant --single-tenant | Com uma api, web ou mobile: se a aplicação serve vários inquilinos. Multi-tenant traz as convenções de multi-tenancy; o código gerado em si ainda não é ciente de inquilino |
| --single-language --multi-language | Se o projeto fala um idioma, com os textos escritos onde aparecem, ou vários, a partir de mensagens: um arquivo por idioma, conferido com uma base, para que outro idioma seja um arquivo e a sua tradução |
| --languages en,pt-BR,es-419 | Os idiomas: exatamente um com --single-language, ou com --multi-language um ou mais, a base primeiro. O Prumo traduz os templates nestes três |
| --mcp --no-mcp | Com uma api e uma web: se assistentes de IA chegam à API por MCP, autenticados como o usuário |
| --sign-in password,email-code,phone-code | Com uma api: como as pessoas entram, uma forma ou mais: uma senha, ou um código de 6 dígitos enviado por email ou por SMS, e o primeiro cria a conta |
| --email --no-email | Com uma api e password: verificação de email e redefinição de senha, por um código de 6 dígitos enviado pela porta Mailer, que escreve no log até você dar a ela um provedor |
| --social google,apple --no-social | Com uma api e uma web ou mobile: login com Google, Apple, ou os dois |
| --skip-install | Para depois de escrever os arquivos |
O que chegou
| Arquivo | O que é |
|---|---|
| .prumo/ | As convenções, em dezessete áreas. Só as áreas que as respostas pedem são copiadas |
| .prumo/INDEX.md | Uma linha por documento. Gerado pela ferramenta, e seguro de regerar |
| .context/INDEX.md | As regras do próprio projeto, que valem sobre o .prumo/. Nasce vazio; o assistente acrescenta uma regra quando o dev a enuncia |
| AGENTS.md | O ponteiro para o .context/ e o .prumo/, lido por Codex, Cursor, Copilot, Gemini CLI e outros |
| CLAUDE.md | Um import de @AGENTS.md, para o Claude Code |