@rockdev/cli
v0.2.1
Published
CLI to generate a scaffold for Rockfeller projects
Downloads
786
Readme
Rockfeller CLI
CLI para gerar bases de projeto padronizadas da Rock com scaffolds prontos para web, api e monolith.
Ele automatiza a criacao de projetos com estrutura inicial, configuracoes de qualidade, AGENTS.md, CLAUDE.md, suporte a NestJS + Fastify para backend, bases web opcionais e setup de banco e cache conforme o tipo de projeto.
O que ele gera
web: projeto frontend com Next.jsapi: backend NestJS com Fastifymonolith: monorepo com apps e packages compartilhadosAGENTS.mdgenerico em todo projeto criadoCLAUDE.mdapontando para oAGENTS.md- configuracoes de qualidade como Biome, Lefthook, commitlint e tsconfig melhorado
- suporte a Prisma ou Drizzle em
apiemonolith docker-compose.ymlcom PostgreSQL e Dragonfly paraapiemonolith- modulo de cache com
ioredisemapiemonolith - Better Auth opcional em
apiemonolith, com adapter de Prisma/Drizzle e providers configuraveis - opcionalmente bases de
Landing Page,LogineDashboardpara projetos com frontend
Instalacao
Instalacao global com npm:
npm install -g @rockdev/cliInstalacao global com bun:
bun add -g @rockdev/cliExecucao sem instalar globalmente:
npx @rockdev/cli newUso
Comando principal:
rock new [template] [name]
rock status
rock env example
rock env check
rock updateExemplos:
rock new
rock new web
rock new api minha-api
rock new monolith plataforma-interna
rock new web meu-app --name outro-nomeComandos
rock new [template] [name]
Cria uma nova base de projeto a partir de um template.
Templates disponiveis:
webapimonolith
Opcoes:
-n, --name <name>: define o nome do projeto
rock status
Faz uma verificacao geral no projeto atual e mostra:
- package manager declarado e lockfile correspondente
- presenca de
README,.gitignoree workflows de CI - scripts basicos de qualidade (
lint,typecheck,test,build) - alinhamento entre
.enve.env.example - presenca e estrutura basica de
Dockerfile - sinais de deploy ou publish configurados
- metadata do pacote e inicializacao do Git
rock env example
Gera ou atualiza .env.example a partir do .env, mantendo comentarios e removendo todos os valores.
rock env check
Verifica se o .env possui todas as chaves declaradas em .env.example. O comando termina com erro quando encontrar chaves ausentes.
rock update (alias: rock upgrade)
Consulta a ultima release estavel do repositorio no GitHub e atualiza a CLI globalmente. Quando a API do GitHub nao estiver acessivel, usa a versao publicada no npm como fallback.
Ao executar qualquer comando da CLI, quando houver uma release mais nova, a CLI tambem apresenta um seletor com as opcoes Instalar nova versao e Pular. Cada consulta tem tempo limite curto para que falhas temporarias nao interrompam nem atrasem o comando solicitado.
Fluxo interativo
Ao rodar rock new, a CLI pode perguntar:
- qual template deseja gerar
- nome da pasta/projeto
- qual package manager usar:
pnpmoubun - se deseja instalar dependencias imediatamente
- quais extras de scaffold deseja incluir:
Biome,Lefthook,Commitlint,Dockerfile,Docker Compose,EditorConfigeBetter Auth - se selecionar
Better Auth, quais providers deseja habilitar:Email e senha,Google,GitHub,Discordou nenhum - se deseja substituir um
AGENTS.mdja existente - em
apiemonolith, qual ORM usar:PrismaouDrizzle - em
webemonolith, se deseja usar alguma base:Landing Page,Logine/ouDashboard(ou nenhuma) - quais skills recomendadas deseja selecionar (ou nenhuma)
Estrutura e padroes aplicados
Os projetos gerados seguem estas diretrizes:
- backend em NestJS usando Fastify como padrao
- validacao de ambiente com
envalidviasrc/env.ts - uso de imports com alias quando o template suporta isso
- arquivos de banco e configuracao inicial para Prisma ou Drizzle
- cache local com Dragonfly e integracao via
ioredisemapiemonolith README.md,.gitignore,tsconfig.jsonepackage.jsonmais completos no scaffold
Desenvolvimento local
Instalar dependencias:
bun installRodar em modo desenvolvimento:
bun run devBuild:
bun run buildChecks principais:
bun run lint
bun run typecheck
bun run test
bun run checkPublicacao
O pacote publicado no npm e @rockdev/cli.
O workflow de release exige:
package.json.nameexatamente igual a@rockdev/cli- tag do release no formato
v<versao> - nome do release exatamente igual a
v<versao> - versao do release igual a versao do
package.json
Exemplo para a versao 0.1.0:
Tag: v0.1.0
Release name: v0.1.0