@codebakers/cli 1.4.3 → 1.4.5

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.
@@ -487,13 +487,19 @@ async function generate(options) {
487
487
  // If type not provided, ask
488
488
  if (!type) {
489
489
  console.log(chalk_1.default.white(' What would you like to generate?\n'));
490
+ console.log(chalk_1.default.gray(' 0. ') + chalk_1.default.magenta('You Decide') + chalk_1.default.gray(' - Let AI pick based on context'));
490
491
  for (const gen of generators) {
491
492
  console.log(chalk_1.default.gray(` ${gen.key}. `) + chalk_1.default.cyan(gen.name) + chalk_1.default.gray(` - ${gen.desc}`));
492
493
  }
493
494
  console.log('');
494
495
  let choice = '';
495
- while (!['1', '2', '3', '4', '5', '6', '7'].includes(choice)) {
496
- choice = await prompt(' Enter 1-7: ');
496
+ while (!['0', '1', '2', '3', '4', '5', '6', '7'].includes(choice)) {
497
+ choice = await prompt(' Enter 0-7: ');
498
+ }
499
+ // "You Decide" defaults to component (most common)
500
+ if (choice === '0') {
501
+ console.log(chalk_1.default.magenta(' → AI chose: component (most common)\n'));
502
+ choice = '1';
497
503
  }
498
504
  type = generators.find(g => g.key === choice)?.name;
499
505
  }
@@ -695,12 +695,18 @@ async function init() {
695
695
  else {
696
696
  console.log(chalk_1.default.gray(' A PRD helps the AI understand what you\'re building.\n'));
697
697
  console.log(chalk_1.default.white(' How would you like to set up your PRD?\n'));
698
+ console.log(chalk_1.default.gray(' 0. ') + chalk_1.default.magenta('You Decide') + chalk_1.default.gray(' - Let AI pick the best option'));
698
699
  console.log(chalk_1.default.gray(' 1. ') + chalk_1.default.cyan('CREATE TEMPLATE') + chalk_1.default.gray(' - I\'ll fill it out'));
699
700
  console.log(chalk_1.default.gray(' 2. ') + chalk_1.default.cyan('PASTE CONTENT') + chalk_1.default.gray(' - I have requirements ready'));
700
701
  console.log(chalk_1.default.gray(' 3. ') + chalk_1.default.cyan('SKIP FOR NOW') + chalk_1.default.gray(' - I\'ll add it later\n'));
701
702
  let prdChoice = '';
702
- while (!['1', '2', '3'].includes(prdChoice)) {
703
- prdChoice = await prompt(' Enter 1, 2, or 3: ');
703
+ while (!['0', '1', '2', '3'].includes(prdChoice)) {
704
+ prdChoice = await prompt(' Enter 0, 1, 2, or 3: ');
705
+ }
706
+ // "You Decide" defaults to creating a template (most helpful)
707
+ if (prdChoice === '0') {
708
+ console.log(chalk_1.default.magenta(' → AI chose: Create Template (recommended)\n'));
709
+ prdChoice = '1';
704
710
  }
705
711
  if (prdChoice === '1') {
706
712
  // Create template
@@ -308,7 +308,7 @@ async function scaffold() {
308
308
  return;
309
309
  }
310
310
  }
311
- // Ask about experience level
311
+ // Ask about experience level (user must decide - AI can't know this)
312
312
  console.log(chalk_1.default.white('\n What\'s your experience level?\n'));
313
313
  console.log(chalk_1.default.gray(' 1. ') + chalk_1.default.cyan('Beginner') + chalk_1.default.gray(' - New to coding, explain everything'));
314
314
  console.log(chalk_1.default.gray(' 2. ') + chalk_1.default.cyan('Intermediate') + chalk_1.default.gray(' - Know some coding, brief explanations'));
@@ -320,6 +320,7 @@ async function scaffold() {
320
320
  const isBeginnerMode = experienceLevel === '1';
321
321
  // Select stack with explanations for beginners
322
322
  console.log(chalk_1.default.white('\n Select your stack:\n'));
323
+ console.log(chalk_1.default.gray(' 0. ') + chalk_1.default.magenta('You Decide') + chalk_1.default.gray(' - Let AI pick the best option'));
323
324
  if (isBeginnerMode) {
324
325
  console.log(chalk_1.default.gray(' 1. ') + chalk_1.default.cyan('Next.js + Supabase + Drizzle') + chalk_1.default.green(' (Recommended)'));
325
326
  console.log(chalk_1.default.gray(' ') + chalk_1.default.dim('Next.js = Framework for building websites with React'));
@@ -334,13 +335,18 @@ async function scaffold() {
334
335
  console.log('');
335
336
  }
336
337
  else {
337
- console.log(chalk_1.default.gray(' 1. ') + chalk_1.default.cyan('Next.js + Supabase + Drizzle') + chalk_1.default.gray(' (Recommended)'));
338
+ console.log(chalk_1.default.gray(' 1. ') + chalk_1.default.cyan('Next.js + Supabase + Drizzle') + chalk_1.default.green(' (Recommended)'));
338
339
  console.log(chalk_1.default.gray(' 2. ') + chalk_1.default.cyan('Next.js + Prisma') + chalk_1.default.gray(' (Coming soon)'));
339
340
  console.log(chalk_1.default.gray(' 3. ') + chalk_1.default.cyan('Express API') + chalk_1.default.gray(' (Coming soon)\n'));
340
341
  }
341
342
  let stackChoice = '';
342
- while (!['1', '2', '3'].includes(stackChoice)) {
343
- stackChoice = await prompt(' Enter 1, 2, or 3: ');
343
+ while (!['0', '1', '2', '3'].includes(stackChoice)) {
344
+ stackChoice = await prompt(' Enter 0, 1, 2, or 3: ');
345
+ }
346
+ // "You Decide" defaults to recommended stack
347
+ if (stackChoice === '0') {
348
+ console.log(chalk_1.default.magenta(' → AI chose: Next.js + Supabase + Drizzle (recommended)\n'));
349
+ stackChoice = '1';
344
350
  }
345
351
  if (stackChoice !== '1') {
346
352
  console.log(chalk_1.default.yellow('\n That stack is coming soon! Using Next.js + Supabase + Drizzle.\n'));
package/dist/index.js CHANGED
@@ -53,7 +53,7 @@ const program = new commander_1.Command();
53
53
  program
54
54
  .name('codebakers')
55
55
  .description('CodeBakers CLI - Production patterns for AI-assisted development')
56
- .version('1.4.3');
56
+ .version('1.4.5');
57
57
  // Primary command - one-time setup
58
58
  program
59
59
  .command('setup')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebakers/cli",
3
- "version": "1.4.3",
3
+ "version": "1.4.5",
4
4
  "description": "CodeBakers CLI - Production patterns for AI-assisted development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -517,14 +517,21 @@ export async function generate(options: GenerateOptions): Promise<void> {
517
517
  // If type not provided, ask
518
518
  if (!type) {
519
519
  console.log(chalk.white(' What would you like to generate?\n'));
520
+ console.log(chalk.gray(' 0. ') + chalk.magenta('You Decide') + chalk.gray(' - Let AI pick based on context'));
520
521
  for (const gen of generators) {
521
522
  console.log(chalk.gray(` ${gen.key}. `) + chalk.cyan(gen.name) + chalk.gray(` - ${gen.desc}`));
522
523
  }
523
524
  console.log('');
524
525
 
525
526
  let choice = '';
526
- while (!['1', '2', '3', '4', '5', '6', '7'].includes(choice)) {
527
- choice = await prompt(' Enter 1-7: ');
527
+ while (!['0', '1', '2', '3', '4', '5', '6', '7'].includes(choice)) {
528
+ choice = await prompt(' Enter 0-7: ');
529
+ }
530
+
531
+ // "You Decide" defaults to component (most common)
532
+ if (choice === '0') {
533
+ console.log(chalk.magenta(' → AI chose: component (most common)\n'));
534
+ choice = '1';
528
535
  }
529
536
 
530
537
  type = generators.find(g => g.key === choice)?.name;
@@ -743,13 +743,20 @@ export async function init(): Promise<void> {
743
743
  } else {
744
744
  console.log(chalk.gray(' A PRD helps the AI understand what you\'re building.\n'));
745
745
  console.log(chalk.white(' How would you like to set up your PRD?\n'));
746
+ console.log(chalk.gray(' 0. ') + chalk.magenta('You Decide') + chalk.gray(' - Let AI pick the best option'));
746
747
  console.log(chalk.gray(' 1. ') + chalk.cyan('CREATE TEMPLATE') + chalk.gray(' - I\'ll fill it out'));
747
748
  console.log(chalk.gray(' 2. ') + chalk.cyan('PASTE CONTENT') + chalk.gray(' - I have requirements ready'));
748
749
  console.log(chalk.gray(' 3. ') + chalk.cyan('SKIP FOR NOW') + chalk.gray(' - I\'ll add it later\n'));
749
750
 
750
751
  let prdChoice = '';
751
- while (!['1', '2', '3'].includes(prdChoice)) {
752
- prdChoice = await prompt(' Enter 1, 2, or 3: ');
752
+ while (!['0', '1', '2', '3'].includes(prdChoice)) {
753
+ prdChoice = await prompt(' Enter 0, 1, 2, or 3: ');
754
+ }
755
+
756
+ // "You Decide" defaults to creating a template (most helpful)
757
+ if (prdChoice === '0') {
758
+ console.log(chalk.magenta(' → AI chose: Create Template (recommended)\n'));
759
+ prdChoice = '1';
753
760
  }
754
761
 
755
762
  if (prdChoice === '1') {
@@ -288,7 +288,7 @@ export async function scaffold(): Promise<void> {
288
288
  }
289
289
  }
290
290
 
291
- // Ask about experience level
291
+ // Ask about experience level (user must decide - AI can't know this)
292
292
  console.log(chalk.white('\n What\'s your experience level?\n'));
293
293
  console.log(chalk.gray(' 1. ') + chalk.cyan('Beginner') + chalk.gray(' - New to coding, explain everything'));
294
294
  console.log(chalk.gray(' 2. ') + chalk.cyan('Intermediate') + chalk.gray(' - Know some coding, brief explanations'));
@@ -304,6 +304,7 @@ export async function scaffold(): Promise<void> {
304
304
  // Select stack with explanations for beginners
305
305
  console.log(chalk.white('\n Select your stack:\n'));
306
306
 
307
+ console.log(chalk.gray(' 0. ') + chalk.magenta('You Decide') + chalk.gray(' - Let AI pick the best option'));
307
308
  if (isBeginnerMode) {
308
309
  console.log(chalk.gray(' 1. ') + chalk.cyan('Next.js + Supabase + Drizzle') + chalk.green(' (Recommended)'));
309
310
  console.log(chalk.gray(' ') + chalk.dim('Next.js = Framework for building websites with React'));
@@ -317,14 +318,20 @@ export async function scaffold(): Promise<void> {
317
318
  console.log(chalk.gray(' ') + chalk.dim('Express = Lightweight server, good for APIs without a frontend'));
318
319
  console.log('');
319
320
  } else {
320
- console.log(chalk.gray(' 1. ') + chalk.cyan('Next.js + Supabase + Drizzle') + chalk.gray(' (Recommended)'));
321
+ console.log(chalk.gray(' 1. ') + chalk.cyan('Next.js + Supabase + Drizzle') + chalk.green(' (Recommended)'));
321
322
  console.log(chalk.gray(' 2. ') + chalk.cyan('Next.js + Prisma') + chalk.gray(' (Coming soon)'));
322
323
  console.log(chalk.gray(' 3. ') + chalk.cyan('Express API') + chalk.gray(' (Coming soon)\n'));
323
324
  }
324
325
 
325
326
  let stackChoice = '';
326
- while (!['1', '2', '3'].includes(stackChoice)) {
327
- stackChoice = await prompt(' Enter 1, 2, or 3: ');
327
+ while (!['0', '1', '2', '3'].includes(stackChoice)) {
328
+ stackChoice = await prompt(' Enter 0, 1, 2, or 3: ');
329
+ }
330
+
331
+ // "You Decide" defaults to recommended stack
332
+ if (stackChoice === '0') {
333
+ console.log(chalk.magenta(' → AI chose: Next.js + Supabase + Drizzle (recommended)\n'));
334
+ stackChoice = '1';
328
335
  }
329
336
 
330
337
  if (stackChoice !== '1') {
package/src/index.ts CHANGED
@@ -57,7 +57,7 @@ const program = new Command();
57
57
  program
58
58
  .name('codebakers')
59
59
  .description('CodeBakers CLI - Production patterns for AI-assisted development')
60
- .version('1.4.3');
60
+ .version('1.4.5');
61
61
 
62
62
  // Primary command - one-time setup
63
63
  program