codebakers 2.1.0 → 2.2.0

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/src/index.ts CHANGED
@@ -26,9 +26,10 @@ import { migrateCommand } from './commands/migrate.js';
26
26
  import { prdMakerCommand } from './commands/prd-maker.js';
27
27
  import { buildCommand } from './commands/build.js';
28
28
  import { integrateCommand, INTEGRATIONS } from './commands/integrate.js';
29
+ import { websiteCommand } from './commands/website.js';
29
30
  import { parseNaturalLanguage, clarifyCommand, clarifyDeployTarget } from './utils/nlp.js';
30
31
 
31
- const VERSION = '2.1.0';
32
+ const VERSION = '2.2.0';
32
33
 
33
34
  // ASCII art logo
34
35
  const logo = `
@@ -82,6 +83,7 @@ async function showMainMenu(): Promise<void> {
82
83
  { value: 'design', label: '🎨 Design system', hint: 'set profile, colors' },
83
84
  { value: 'separator2', label: '─────────────────────────' },
84
85
  { value: 'new', label: '🆕 Create new project' },
86
+ { value: 'website', label: '🌐 Website Builder', hint: 'Describe → AI builds it' },
85
87
  { value: 'build', label: '🏗️ Parallel Build', hint: '3 agents from PRD (swarm)' },
86
88
  { value: 'prd', label: '📄 Build from PRD', hint: 'sequential build' },
87
89
  { value: 'prd-maker', label: '✏️ Create PRD', hint: 'interview → generate PRD' },
@@ -90,6 +92,7 @@ async function showMainMenu(): Promise<void> {
90
92
  { value: 'help', label: '❓ Help' },
91
93
  ] : [
92
94
  { value: 'new', label: '🆕 Create new project' },
95
+ { value: 'website', label: '🌐 Website Builder', hint: 'Describe → AI builds it' },
93
96
  { value: 'build', label: '🏗️ Parallel Build', hint: '3 agents from PRD (swarm)' },
94
97
  { value: 'prd', label: '📄 Build from PRD', hint: 'sequential build' },
95
98
  { value: 'prd-maker', label: '✏️ Create PRD', hint: 'interview → generate PRD' },
@@ -154,6 +157,9 @@ async function showMainMenu(): Promise<void> {
154
157
  case 'new':
155
158
  await initCommand();
156
159
  break;
160
+ case 'website':
161
+ await websiteCommand();
162
+ break;
157
163
  case 'build':
158
164
  await buildCommand();
159
165
  break;
@@ -180,27 +186,34 @@ async function showMainMenu(): Promise<void> {
180
186
 
181
187
  function showHelp(): void {
182
188
  console.log(boxen(`
183
- ${chalk.bold('CodeBakers CLI')} — AI dev team that follows the rules
184
-
185
- ${chalk.bold('Commands:')}
186
- ${chalk.cyan('codebakers')} Interactive menu (or just run with no args)
187
- ${chalk.cyan('codebakers init')} Create a new project
188
- ${chalk.cyan('codebakers code')} Start AI coding session
189
- ${chalk.cyan('codebakers check')} Run pattern enforcement
190
- ${chalk.cyan('codebakers deploy')} Deploy to production
191
- ${chalk.cyan('codebakers fix')} Auto-fix errors
192
- ${chalk.cyan('codebakers generate')} Generate components/pages
193
- ${chalk.cyan('codebakers connect')} Connect external services
194
- ${chalk.cyan('codebakers gateway')} Manage messaging channels
195
- ${chalk.cyan('codebakers status')} View project status
196
- ${chalk.cyan('codebakers security')} Run security audit
197
- ${chalk.cyan('codebakers learn')} View/manage learning
198
-
199
- ${chalk.bold('Help at any time:')}
200
- Press ${chalk.yellow('?')} during any command to get contextual help
201
-
202
- ${chalk.bold('Documentation:')}
203
- ${chalk.dim('https://codebakers.dev/docs')}
189
+ ${chalk.bold('CodeBakers CLI v' + VERSION)} — AI dev team that follows the rules
190
+
191
+ ${chalk.bold.cyan('Getting Started:')}
192
+ ${chalk.cyan('codebakers setup')} Connect your accounts (GitHub, Vercel, etc.)
193
+ ${chalk.cyan('codebakers init')} Create a new project from scratch
194
+ ${chalk.cyan('codebakers website')} Build a website by describing it
195
+ ${chalk.cyan('codebakers build')} Build from PRD with parallel AI agents
196
+
197
+ ${chalk.bold.cyan('Daily Development:')}
198
+ ${chalk.cyan('codebakers code')} Chat with AI to build features
199
+ ${chalk.cyan('codebakers check')} Check code quality & patterns
200
+ ${chalk.cyan('codebakers fix')} Auto-fix errors with AI
201
+ ${chalk.cyan('codebakers deploy')} Deploy to Vercel
202
+
203
+ ${chalk.bold.cyan('Integrations:')}
204
+ ${chalk.cyan('codebakers integrate')} 50+ one-click integrations (Stripe, Supabase, etc.)
205
+ ${chalk.cyan('codebakers gateway')} Connect WhatsApp, Telegram, Discord, etc.
206
+
207
+ ${chalk.bold.cyan('Planning:')}
208
+ ${chalk.cyan('codebakers prd-maker')} Create PRD through interview (voice supported)
209
+ ${chalk.cyan('codebakers advisors')} Consult AI experts (CEO, CTO, Designer, etc.)
210
+
211
+ ${chalk.bold.cyan('Tips:')}
212
+ • Type naturally: ${chalk.dim('codebakers "add a contact form"')}
213
+ • Voice input: Type ${chalk.yellow('"v"')} at any prompt
214
+ • Clipboard: Type ${chalk.yellow('"clip"')} to paste from clipboard
215
+
216
+ ${chalk.bold('Docs:')} ${chalk.dim('https://codebakers.dev/docs')}
204
217
  `, { padding: 1, borderColor: 'cyan', borderStyle: 'round' }));
205
218
  }
206
219
 
@@ -338,6 +351,12 @@ program
338
351
  .description('One-click integrations (50+ services with browser auth)')
339
352
  .action(integrateCommand);
340
353
 
354
+ program
355
+ .command('website')
356
+ .alias('site')
357
+ .description('Build a website by describing it in plain English')
358
+ .action(websiteCommand);
359
+
341
360
  // Natural language processing for free-form input
342
361
  async function handleNaturalLanguage(input: string): Promise<void> {
343
362
  const config = new Config();
@@ -427,7 +446,7 @@ if (args.length === 0) {
427
446
  'setup', 'init', 'code', 'check', 'deploy', 'fix', 'generate',
428
447
  'connect', 'status', 'gateway', 'security', 'learn', 'design',
429
448
  'prd', 'advisors', 'migrate', 'prd-maker', 'build', 'swarm',
430
- 'integrate', 'add', 'help'
449
+ 'integrate', 'add', 'website', 'site', 'help'
431
450
  ];
432
451
 
433
452
  const firstArg = args[0] as string;