@nimbuslab/cli 0.16.4 → 0.16.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,117 +1,83 @@
1
1
  # @nimbuslab/cli
2
2
 
3
- CLI oficial da nimbuslab para criar, analisar e migrar projetos.
3
+ CLI para criar projetos com a stack moderna da nimbuslab.
4
+
5
+ ## Instalacao
4
6
 
5
7
  ```bash
6
8
  bun add -g @nimbuslab/cli
7
9
  ```
8
10
 
9
- ---
10
-
11
11
  ## Comandos
12
12
 
13
- | Comando | Descricao | Docs |
14
- |---------|-----------|------|
15
- | `nimbus create` | Criar novo projeto | [docs/create.md](./docs/create.md) |
16
- | `nimbus analyze` | Analisar stack existente | [docs/analyze.md](./docs/analyze.md) |
17
- | `nimbus upgrade` | Planejar upgrades | [docs/upgrade.md](./docs/upgrade.md) |
18
- | `nimbus migrate` | Migrar de outras tecnologias | [docs/migrate.md](./docs/migrate.md) |
19
-
20
- ---
13
+ ```bash
14
+ nimbus create # Criar novo projeto (interativo)
15
+ nimbus analyze # Analisar stack do projeto atual
16
+ nimbus upgrade # Planejar upgrades de dependencias
17
+ nimbus update # Atualizar o CLI
18
+ nimbus help # Ajuda
19
+ ```
21
20
 
22
- ## Quick Start
21
+ ## Templates
23
22
 
24
- ### Criar landing page
23
+ ### Landing Page
25
24
 
26
25
  ```bash
27
26
  nimbus create meu-site --landing
28
- cd meu-site
29
- bun dev
30
27
  ```
31
28
 
32
- ### Criar web app
29
+ Stack: Next.js 16 + React 19 + Tailwind CSS 4 + shadcn/ui
30
+
31
+ ### Web App
33
32
 
34
33
  ```bash
35
34
  nimbus create meu-app --app
36
- cd meu-app
37
- bun setup
38
- bun dev
39
35
  ```
40
36
 
41
- ### Analisar projeto existente
37
+ Stack: Landing + Better Auth + Drizzle ORM + Docker
38
+
39
+ ### Monorepo
42
40
 
43
41
  ```bash
44
- nimbus analyze
45
- nimbus upgrade --plan
42
+ nimbus create meu-projeto --turborepo
46
43
  ```
47
44
 
48
- ---
49
-
50
- ## Templates
51
-
52
- | Template | Descricao | Docs |
53
- |----------|-----------|------|
54
- | `--landing` | Next.js 16 + Tailwind 4 + shadcn/ui | [docs/create.md#landing](./docs/create.md#landing-page---landing) |
55
- | `--app` | Landing + Better Auth + Drizzle | [docs/create.md#app](./docs/create.md#web-app---app) |
56
- | `--turborepo` | Monorepo com apps e packages | [docs/create.md#turborepo](./docs/create.md#turborepo---turborepo) |
57
- | `--package` | Pacote npm com tsup + CI/CD | [docs/package.md](./docs/package.md) |
58
-
59
- **Repos Open Source:**
60
- - [create-next-landing](https://github.com/nimbuslab/create-next-landing)
61
- - [create-next-app](https://github.com/nimbuslab/create-next-app)
62
- - [create-turborepo](https://github.com/nimbuslab/create-turborepo)
63
-
64
- ---
65
-
66
- ## Stack Alvo
45
+ Stack: Turborepo + apps/packages compartilhados
67
46
 
68
- | Categoria | Tecnologia |
69
- |-----------|------------|
70
- | Framework | Next.js 16+ |
71
- | Runtime | React 19+ |
72
- | Styling | Tailwind CSS 4+ |
73
- | Components | shadcn/ui |
74
- | Package Manager | Bun |
75
- | Auth | Better Auth |
76
- | Database | Drizzle ORM |
77
- | Monorepo | Turborepo |
47
+ ## Analyze e Upgrade
78
48
 
79
- ---
49
+ ```bash
50
+ # Analisar projeto existente
51
+ nimbus analyze ./meu-projeto
52
+ nimbus analyze --json
80
53
 
81
- ## Documentacao
54
+ # Planejar upgrades
55
+ nimbus upgrade --plan
56
+ nimbus upgrade tailwind
57
+ nimbus upgrade next
58
+ ```
82
59
 
83
- | Arquivo | Conteudo |
84
- |---------|----------|
85
- | [docs/create.md](./docs/create.md) | Templates, opcoes, fluxo interativo |
86
- | [docs/package.md](./docs/package.md) | Criar pacotes npm |
87
- | [docs/analyze.md](./docs/analyze.md) | Deteccao de stack, recomendacoes |
88
- | [docs/upgrade.md](./docs/upgrade.md) | Breaking changes, codemods |
89
- | [docs/migrate.md](./docs/migrate.md) | Strangler Fig, estrategias |
90
- | [MIGRATION-ROADMAP.md](./MIGRATION-ROADMAP.md) | Roadmap de migracao |
60
+ ## Opcoes
91
61
 
92
- ---
62
+ | Flag | Descricao |
63
+ |------|-----------|
64
+ | `-y, --yes` | Aceitar padroes |
65
+ | `--no-git` | Nao inicializar Git |
66
+ | `--no-install` | Nao instalar dependencias |
93
67
 
94
68
  ## Requisitos
95
69
 
96
- - [Bun](https://bun.sh) - Runtime e package manager
97
- - [Git](https://git-scm.com) - Controle de versao
70
+ - [Bun](https://bun.sh) >= 1.0
98
71
 
99
72
  ```bash
100
73
  curl -fsSL https://bun.sh/install | bash
101
74
  ```
102
75
 
103
- ---
76
+ ## Templates Open Source
104
77
 
105
- ## Desenvolvimento
106
-
107
- ```bash
108
- gh repo clone nimbuslab/cli
109
- cd cli
110
- bun install
111
- bun run dev
112
- ```
113
-
114
- ---
78
+ - [create-next-landing](https://github.com/nimbuslab/create-next-landing)
79
+ - [create-next-app](https://github.com/nimbuslab/create-next-app)
80
+ - [create-turborepo](https://github.com/nimbuslab/create-turborepo)
115
81
 
116
82
  ## Licenca
117
83
 
package/dist/index.js CHANGED
@@ -150,12 +150,15 @@ var require_src = __commonJS((exports, module) => {
150
150
  var require_package = __commonJS((exports, module) => {
151
151
  module.exports = {
152
152
  name: "@nimbuslab/cli",
153
- version: "0.16.4",
153
+ version: "0.16.6",
154
154
  description: "CLI para criar projetos nimbuslab",
155
155
  type: "module",
156
156
  bin: {
157
157
  nimbus: "./dist/index.js"
158
158
  },
159
+ files: [
160
+ "dist"
161
+ ],
159
162
  scripts: {
160
163
  dev: "bun run src/index.ts",
161
164
  build: "bun build src/index.ts --outdir dist --target bun",
@@ -2587,7 +2590,11 @@ async function update(args) {
2587
2590
  } else {
2588
2591
  M2.success(`${PACKAGE_NAME} atualizado: ${currentVersion} -> ${newVersion}`);
2589
2592
  }
2590
- if (isUsingFnm()) {
2593
+ const isWindows = process.platform === "win32";
2594
+ if (isWindows) {
2595
+ console.log();
2596
+ console.log(import_picocolors6.default.yellow(" Reinicie o terminal para aplicar a atualizacao."));
2597
+ } else if (isUsingFnm()) {
2591
2598
  console.log();
2592
2599
  console.log(import_picocolors6.default.yellow(" fnm detectado - execute para aplicar:"));
2593
2600
  console.log(import_picocolors6.default.cyan(" hash -r"));
@@ -2620,6 +2627,8 @@ var HOME = homedir();
2620
2627
  var LOLA_DIR = join3(HOME, ".lola");
2621
2628
  var LOLA_REPO = "git@github.com:nimbuslab/lola.git";
2622
2629
  var USER_MEMORY = join3(HOME, ".claude", "USER_MEMORY.md");
2630
+ var CLAUDE_COMMANDS_DIR = join3(HOME, ".claude", "commands");
2631
+ var LOLA_COMMANDS_DIR = join3(LOLA_DIR, "commands");
2623
2632
  var LOLA_MEMORY_URL = "https://lola.nimbuslab.com.br/sse";
2624
2633
  var LOLA_MEMORY_NAME = "lola-memory";
2625
2634
  var GEMINI_DIR = join3(HOME, ".gemini");
@@ -2653,8 +2662,6 @@ async function installLolaMemoryMCP() {
2653
2662
  "claude",
2654
2663
  "mcp",
2655
2664
  "add",
2656
- "-t",
2657
- "sse",
2658
2665
  "-s",
2659
2666
  "user",
2660
2667
  LOLA_MEMORY_NAME,
@@ -2668,7 +2675,7 @@ async function installLolaMemoryMCP() {
2668
2675
  });
2669
2676
  if (result.exitCode !== 0) {
2670
2677
  console.log(import_picocolors7.default.yellow(" Erro ao adicionar MCP, pode ser adicionado manualmente:"));
2671
- console.log(import_picocolors7.default.dim(` claude mcp add -t sse -s user ${LOLA_MEMORY_NAME} -- bunx mcp-remote ${LOLA_MEMORY_URL}`));
2678
+ console.log(import_picocolors7.default.dim(` claude mcp add -s user ${LOLA_MEMORY_NAME} -- bunx mcp-remote ${LOLA_MEMORY_URL}`));
2672
2679
  return;
2673
2680
  }
2674
2681
  console.log(import_picocolors7.default.green(" MCP lola-memory instalado!"));
@@ -2678,6 +2685,33 @@ async function installLolaMemoryMCP() {
2678
2685
  console.log(import_picocolors7.default.dim(' learn "content" - Salvar conhecimento'));
2679
2686
  console.log(import_picocolors7.default.dim(" memory_stats - Ver estatisticas"));
2680
2687
  }
2688
+ async function installLolaCommands() {
2689
+ console.log();
2690
+ console.log(import_picocolors7.default.cyan(" Instalando comandos da Lola..."));
2691
+ if (!existsSync2(LOLA_COMMANDS_DIR)) {
2692
+ console.log(import_picocolors7.default.dim(" Pasta de comandos nao encontrada em ~/.lola/commands"));
2693
+ return;
2694
+ }
2695
+ if (!existsSync2(CLAUDE_COMMANDS_DIR)) {
2696
+ await Bun.$`mkdir -p ${CLAUDE_COMMANDS_DIR}`;
2697
+ }
2698
+ const glob = new Bun.Glob("*.md");
2699
+ const files = Array.from(glob.scanSync({ cwd: LOLA_COMMANDS_DIR }));
2700
+ if (files.length === 0) {
2701
+ console.log(import_picocolors7.default.dim(" Nenhum comando encontrado"));
2702
+ return;
2703
+ }
2704
+ let installed = 0;
2705
+ for (const file of files) {
2706
+ const src = join3(LOLA_COMMANDS_DIR, file);
2707
+ const dest = join3(CLAUDE_COMMANDS_DIR, file);
2708
+ const content = await Bun.file(src).text();
2709
+ await Bun.write(dest, content);
2710
+ installed++;
2711
+ }
2712
+ console.log(import_picocolors7.default.green(` ${installed} comandos instalados!`));
2713
+ console.log(import_picocolors7.default.dim(" Comandos: /inbox, /sent, /msg, /conversation"));
2714
+ }
2681
2715
  async function installGeminiCLI() {
2682
2716
  console.log();
2683
2717
  console.log(import_picocolors7.default.cyan(" Instalando Gemini CLI..."));
@@ -3351,6 +3385,7 @@ fi
3351
3385
  }
3352
3386
  }
3353
3387
  await installLolaMemoryMCP();
3388
+ await installLolaCommands();
3354
3389
  const claudeDir = join3(HOME, ".claude");
3355
3390
  if (!existsSync2(USER_MEMORY)) {
3356
3391
  console.log();
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@nimbuslab/cli",
3
- "version": "0.16.4",
3
+ "version": "0.16.7",
4
4
  "description": "CLI para criar projetos nimbuslab",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "nimbus": "./dist/index.js"
8
8
  },
9
+ "files": [
10
+ "dist"
11
+ ],
9
12
  "scripts": {
10
13
  "dev": "bun run src/index.ts",
11
14
  "build": "bun build src/index.ts --outdir dist --target bun",
@@ -1,67 +0,0 @@
1
- name: Publish to npm
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
-
8
- jobs:
9
- publish:
10
- runs-on: ubuntu-latest
11
- permissions:
12
- contents: read
13
- id-token: write
14
-
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v4
18
-
19
- - name: Check if version changed
20
- id: version_check
21
- run: |
22
- LOCAL_VERSION=$(node -p "require('./package.json').version")
23
- NPM_VERSION=$(npm view @nimbuslab/cli version 2>/dev/null || echo "0.0.0")
24
- echo "local=$LOCAL_VERSION" >> $GITHUB_OUTPUT
25
- echo "npm=$NPM_VERSION" >> $GITHUB_OUTPUT
26
- if [ "$LOCAL_VERSION" = "$NPM_VERSION" ]; then
27
- echo "changed=false" >> $GITHUB_OUTPUT
28
- echo "Versao $LOCAL_VERSION ja existe no npm. Pulando publish."
29
- else
30
- echo "changed=true" >> $GITHUB_OUTPUT
31
- echo "Nova versao detectada: $NPM_VERSION -> $LOCAL_VERSION"
32
- fi
33
-
34
- - name: Setup Bun
35
- if: steps.version_check.outputs.changed == 'true'
36
- uses: oven-sh/setup-bun@v2
37
- with:
38
- bun-version: latest
39
-
40
- - name: Setup Node (for npm publish)
41
- if: steps.version_check.outputs.changed == 'true'
42
- uses: actions/setup-node@v4
43
- with:
44
- node-version: "24"
45
- registry-url: "https://registry.npmjs.org"
46
-
47
- - name: Install dependencies
48
- if: steps.version_check.outputs.changed == 'true'
49
- run: bun install
50
-
51
- - name: Typecheck
52
- if: steps.version_check.outputs.changed == 'true'
53
- run: bun run typecheck
54
-
55
- - name: Build
56
- if: steps.version_check.outputs.changed == 'true'
57
- run: bun run build
58
-
59
- - name: Publish to npm
60
- if: steps.version_check.outputs.changed == 'true'
61
- run: npm publish --access public
62
- env:
63
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
64
-
65
- - name: Skip message
66
- if: steps.version_check.outputs.changed == 'false'
67
- run: echo "Publish pulado - versao ${{ steps.version_check.outputs.local }} ja existe no npm"
package/CLAUDE.md DELETED
@@ -1,106 +0,0 @@
1
-
2
- Default to using Bun instead of Node.js.
3
-
4
- - Use `bun <file>` instead of `node <file>` or `ts-node <file>`
5
- - Use `bun test` instead of `jest` or `vitest`
6
- - Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild`
7
- - Use `bun install` instead of `npm install` or `yarn install` or `pnpm install`
8
- - Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>`
9
- - Use `bunx <package> <command>` instead of `npx <package> <command>`
10
- - Bun automatically loads .env, so don't use dotenv.
11
-
12
- ## APIs
13
-
14
- - `Bun.serve()` supports WebSockets, HTTPS, and routes. Don't use `express`.
15
- - `bun:sqlite` for SQLite. Don't use `better-sqlite3`.
16
- - `Bun.redis` for Redis. Don't use `ioredis`.
17
- - `Bun.sql` for Postgres. Don't use `pg` or `postgres.js`.
18
- - `WebSocket` is built-in. Don't use `ws`.
19
- - Prefer `Bun.file` over `node:fs`'s readFile/writeFile
20
- - Bun.$`ls` instead of execa.
21
-
22
- ## Testing
23
-
24
- Use `bun test` to run tests.
25
-
26
- ```ts#index.test.ts
27
- import { test, expect } from "bun:test";
28
-
29
- test("hello world", () => {
30
- expect(1).toBe(1);
31
- });
32
- ```
33
-
34
- ## Frontend
35
-
36
- Use HTML imports with `Bun.serve()`. Don't use `vite`. HTML imports fully support React, CSS, Tailwind.
37
-
38
- Server:
39
-
40
- ```ts#index.ts
41
- import index from "./index.html"
42
-
43
- Bun.serve({
44
- routes: {
45
- "/": index,
46
- "/api/users/:id": {
47
- GET: (req) => {
48
- return new Response(JSON.stringify({ id: req.params.id }));
49
- },
50
- },
51
- },
52
- // optional websocket support
53
- websocket: {
54
- open: (ws) => {
55
- ws.send("Hello, world!");
56
- },
57
- message: (ws, message) => {
58
- ws.send(message);
59
- },
60
- close: (ws) => {
61
- // handle close
62
- }
63
- },
64
- development: {
65
- hmr: true,
66
- console: true,
67
- }
68
- })
69
- ```
70
-
71
- HTML files can import .tsx, .jsx or .js files directly and Bun's bundler will transpile & bundle automatically. `<link>` tags can point to stylesheets and Bun's CSS bundler will bundle.
72
-
73
- ```html#index.html
74
- <html>
75
- <body>
76
- <h1>Hello, world!</h1>
77
- <script type="module" src="./frontend.tsx"></script>
78
- </body>
79
- </html>
80
- ```
81
-
82
- With the following `frontend.tsx`:
83
-
84
- ```tsx#frontend.tsx
85
- import React from "react";
86
- import { createRoot } from "react-dom/client";
87
-
88
- // import .css files directly and it works
89
- import './index.css';
90
-
91
- const root = createRoot(document.body);
92
-
93
- export default function Frontend() {
94
- return <h1>Hello, world!</h1>;
95
- }
96
-
97
- root.render(<Frontend />);
98
- ```
99
-
100
- Then, run index.ts
101
-
102
- ```sh
103
- bun --hot ./index.ts
104
- ```
105
-
106
- For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.
@@ -1,201 +0,0 @@
1
- # Roadmap - Sistema de Migracao nimbuslab
2
-
3
- > Lola Migration Assistant - Facilitar migracoes de projetos para o ecossistema nimbuslab
4
-
5
- ---
6
-
7
- ## Visao Geral
8
-
9
- O sistema de migracao permite:
10
- 1. **Analisar** projetos existentes (detectar stack)
11
- 2. **Planejar** caminho de migracao
12
- 3. **Executar** transformacoes automaticas (codemods)
13
- 4. **Verificar** resultado final
14
-
15
- ---
16
-
17
- ## Fase 1: Fundacao (v0.9.0)
18
-
19
- ### M80: Estrutura base do sistema de migracao
20
- - [ ] Criar `src/commands/migrate.ts`
21
- - [ ] Criar `src/commands/analyze.ts`
22
- - [ ] Criar `src/commands/upgrade.ts`
23
- - [ ] Estrutura de pastas para codemods
24
-
25
- ### M81: Comando `nimbus analyze`
26
- - [ ] Detectar package.json (name, version, dependencies)
27
- - [ ] Detectar framework (Next.js, React, Angular, Vue, etc)
28
- - [ ] Detectar styling (Tailwind, CSS Modules, styled-components)
29
- - [ ] Detectar package manager (bun, pnpm, npm, yarn)
30
- - [ ] Detectar monorepo (Turborepo, Nx, Lerna)
31
- - [ ] Detectar auth (Better Auth, NextAuth, Clerk, etc)
32
- - [ ] Detectar DB (Drizzle, Prisma, TypeORM, etc)
33
- - [ ] Output: JSON com analise completa
34
-
35
- ### M82: Comando `nimbus upgrade --plan`
36
- - [ ] Comparar versoes atuais com recomendadas
37
- - [ ] Listar breaking changes conhecidos
38
- - [ ] Gerar plano de upgrade
39
- - [ ] Estimar complexidade (low/medium/high)
40
-
41
- ---
42
-
43
- ## Fase 2: Codemods (v0.10.0)
44
-
45
- ### M83: Infraestrutura de codemods
46
- - [ ] Criar `src/codemods/` estrutura
47
- - [ ] Runner de codemods (jscodeshift ou ts-morph)
48
- - [ ] Sistema de dry-run (preview)
49
- - [ ] Rollback automatico em caso de erro
50
-
51
- ### M84: Codemod Tailwind 3 -> 4
52
- - [ ] Migrar classes depreciadas
53
- - [ ] Atualizar config (tailwind.config.js -> CSS)
54
- - [ ] Converter @apply para novo formato
55
- - [ ] Atualizar imports
56
-
57
- ### M85: Codemod React 18 -> 19
58
- - [ ] Remover forwardRef (nao mais necessario)
59
- - [ ] Atualizar tipos (ref como prop)
60
- - [ ] Ajustar Suspense boundaries
61
- - [ ] Atualizar async components
62
-
63
- ### M86: Codemod pnpm -> bun
64
- - [ ] Converter pnpm-lock.yaml para bun.lockb
65
- - [ ] Atualizar scripts no package.json
66
- - [ ] Remover .npmrc especifico pnpm
67
- - [ ] Atualizar CI/CD configs
68
-
69
- ### M87: Codemod Prisma -> Drizzle
70
- - [ ] Converter schema.prisma para drizzle schema
71
- - [ ] Gerar migrations Drizzle
72
- - [ ] Atualizar queries (findMany -> select, etc)
73
- - [ ] Atualizar auth config
74
-
75
- ---
76
-
77
- ## Fase 3: Templates Modulares (v0.11.0)
78
-
79
- ### M88: Refatorar templates em camadas
80
- - [ ] Extrair `layers/base` (tsconfig, eslint, prettier)
81
- - [ ] Extrair `layers/nextjs` (next.config, app structure)
82
- - [ ] Extrair `layers/tailwind` (tailwind config, globals.css)
83
- - [ ] Extrair `layers/shadcn` (components.json, ui/)
84
- - [ ] Extrair `layers/auth` (Better Auth setup)
85
- - [ ] Extrair `layers/db` (Drizzle setup)
86
- - [ ] Extrair `layers/monorepo` (Turborepo config)
87
-
88
- ### M89: Comando `nimbus add <layer>`
89
- - [ ] `nimbus add auth` - Adiciona Better Auth
90
- - [ ] `nimbus add db` - Adiciona Drizzle
91
- - [ ] `nimbus add shadcn` - Adiciona shadcn/ui
92
- - [ ] `nimbus add monorepo` - Converte para Turborepo
93
- - [ ] Detectar conflitos antes de aplicar
94
- - [ ] Merge inteligente de configs
95
-
96
- ---
97
-
98
- ## Fase 4: Migracao Assistida (v0.12.0)
99
-
100
- ### M90: Lola Migration Assistant
101
- - [ ] Criar `.claude/agents/lola-migrate.md`
102
- - [ ] Criar `.gemini/lola-migrate.md`
103
- - [ ] Prompts especializados para migracao
104
- - [ ] Checklist interativo
105
- - [ ] Documentacao de decisoes
106
-
107
- ### M91: Comando `nimbus migrate`
108
- - [ ] `nimbus migrate --from=angular` - Plano Angular -> Next.js
109
- - [ ] `nimbus migrate --from=php` - Plano PHP -> Next.js
110
- - [ ] `nimbus migrate --from=vue` - Plano Vue -> React
111
- - [ ] Gerar plano detalhado (markdown)
112
- - [ ] Estimar esforco (horas/dias)
113
-
114
- ### M92: Migration Guides
115
- - [ ] `knowledge/migrations/nextjs-15-to-16.md`
116
- - [ ] `knowledge/migrations/tailwind-3-to-4.md`
117
- - [ ] `knowledge/migrations/prisma-to-drizzle.md`
118
- - [ ] `knowledge/migrations/pnpm-to-bun.md`
119
- - [ ] `knowledge/migrations/angular-to-nextjs.md`
120
- - [ ] `knowledge/migrations/php-laravel-to-nextjs.md`
121
-
122
- ---
123
-
124
- ## Fase 5: Automacao Completa (v1.0.0)
125
-
126
- ### M93: Pipeline de migracao
127
- - [ ] `nimbus migrate --execute` (aplica codemods)
128
- - [ ] `nimbus migrate --verify` (roda build + lint + tests)
129
- - [ ] Relatorio de migracao (o que mudou, o que revisar)
130
- - [ ] Integracao com CI/CD
131
-
132
- ### M94: Atualizacao automatica
133
- - [ ] `nimbus upgrade` detecta atualizacoes disponiveis
134
- - [ ] `nimbus upgrade --all` aplica todas seguras
135
- - [ ] Notificacao de breaking changes
136
- - [ ] Changelog automatico
137
-
138
- ---
139
-
140
- ## Prioridade de Implementacao
141
-
142
- | Milestone | Prioridade | Dependencia |
143
- |-----------|------------|-------------|
144
- | M80 | Alta | - |
145
- | M81 | Alta | M80 |
146
- | M82 | Alta | M81 |
147
- | M83 | Alta | M80 |
148
- | M84 | Media | M83 |
149
- | M85 | Media | M83 |
150
- | M86 | Media | M83 |
151
- | M87 | Media | M83 |
152
- | M88 | Media | M80 |
153
- | M89 | Media | M88 |
154
- | M90 | Alta | M80 |
155
- | M91 | Media | M81, M83 |
156
- | M92 | Media | - |
157
- | M93 | Baixa | M91 |
158
- | M94 | Baixa | M93 |
159
-
160
- ---
161
-
162
- ## Stack dos Codemods
163
-
164
- - **Parser:** ts-morph (TypeScript AST)
165
- - **Runner:** Custom (baseado em jscodeshift patterns)
166
- - **Configs:** JSON transforms
167
- - **CSS:** PostCSS para Tailwind
168
-
169
- ---
170
-
171
- ## Exemplo de Uso Final
172
-
173
- ```bash
174
- # Analisar projeto
175
- nimbus analyze ./meu-projeto
176
- # Output: Next.js 15, React 18, Tailwind 3, pnpm, Prisma
177
-
178
- # Ver plano de upgrade
179
- nimbus upgrade --plan
180
- # Output: Recomendado: Next 16, React 19, Tailwind 4, bun, Drizzle
181
-
182
- # Upgrade especifico
183
- nimbus upgrade tailwind
184
- # Executa codemod Tailwind 3 -> 4
185
-
186
- # Adicionar camada
187
- nimbus add auth
188
- # Adiciona Better Auth ao projeto
189
-
190
- # Migracao completa
191
- nimbus migrate --from=angular --plan
192
- # Gera plano de migracao Angular -> Next.js
193
-
194
- # Usar Lola para assistir
195
- claude --agent lola-migrate
196
- # Lola especializada em migracoes
197
- ```
198
-
199
- ---
200
-
201
- *Ultima atualizacao: Janeiro 2026*
package/bun.lock DELETED
@@ -1,36 +0,0 @@
1
- {
2
- "lockfileVersion": 1,
3
- "configVersion": 1,
4
- "workspaces": {
5
- "": {
6
- "name": "nimbus-cli",
7
- "dependencies": {
8
- "@clack/prompts": "^0.11.0",
9
- "picocolors": "^1.1.1",
10
- },
11
- "devDependencies": {
12
- "@types/bun": "latest",
13
- "typescript": "^5",
14
- },
15
- },
16
- },
17
- "packages": {
18
- "@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="],
19
-
20
- "@clack/prompts": ["@clack/prompts@0.11.0", "", { "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw=="],
21
-
22
- "@types/bun": ["@types/bun@1.3.6", "", { "dependencies": { "bun-types": "1.3.6" } }, "sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA=="],
23
-
24
- "@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="],
25
-
26
- "bun-types": ["bun-types@1.3.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ=="],
27
-
28
- "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
29
-
30
- "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
31
-
32
- "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
33
-
34
- "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
35
- }
36
- }