@codebakers/cli 3.9.30 → 3.9.32

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebakers/cli",
3
- "version": "3.9.30",
3
+ "version": "3.9.32",
4
4
  "description": "CodeBakers CLI - Production patterns for AI-assisted development",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1544,15 +1544,17 @@ async function showVSCodeClaudeInstructions(): Promise<void> {
1544
1544
  console.log(chalk.gray(' Click it to open the Claude Code chat panel\n'));
1545
1545
  console.log(chalk.gray(' Or press ') + chalk.cyan('Cmd+Shift+P') + chalk.gray(' → type ') + chalk.cyan('"Claude Code: Open Chat"') + chalk.gray('\n'));
1546
1546
 
1547
- console.log(chalk.yellow(' STEP 3: Start building!\n'));
1548
- console.log(chalk.gray(' Type your request in the Claude chat. For example:\n'));
1549
- console.log(chalk.white(' "Build me a todo app with authentication"'));
1550
- console.log(chalk.white(' "Add a login page to my project"'));
1551
- console.log(chalk.white(' "Review my code and make it production-ready"\n'));
1547
+ console.log(chalk.yellow(' STEP 3: Type the magic phrase!\n'));
1548
+ console.log(chalk.gray(' In the chat, type:\n'));
1549
+ console.log(chalk.cyan.bold(' codebakers go\n'));
1550
+ console.log(chalk.gray(' This magic phrase unlocks the full CodeBakers feature set:'));
1551
+ console.log(chalk.gray(' Guided onboarding conversation'));
1552
+ console.log(chalk.gray(' • Production-ready code patterns'));
1553
+ console.log(chalk.gray(' • Automatic testing & validation\n'));
1552
1554
 
1553
1555
  console.log(chalk.green(' ✅ You are now done with the terminal!\n'));
1554
- console.log(chalk.gray(' From now on, use the ') + chalk.cyan('Claude Code Chat') + chalk.gray(' panel to talk to AI.'));
1555
- console.log(chalk.gray(' The terminal is only needed for running commands like npm.\n'));
1556
+ console.log(chalk.gray(' Just type ') + chalk.cyan('codebakers go') + chalk.gray(' in chat to get started.'));
1557
+ console.log(chalk.gray(' The AI will guide you from there.\n'));
1556
1558
 
1557
1559
  console.log(chalk.gray(' ─────────────────────────────────────────────────────────\n'));
1558
1560
  console.log(chalk.gray(' Tip: ') + chalk.white('Make sure you have the Claude Code extension installed.'));
@@ -1560,8 +1562,16 @@ async function showVSCodeClaudeInstructions(): Promise<void> {
1560
1562
  console.log(chalk.gray(' Having issues? Run: ') + chalk.cyan('codebakers doctor') + chalk.gray(' to diagnose\n'));
1561
1563
  }
1562
1564
 
1563
- // v6.15 Bootstrap - SHORT template with rules at START and END for attention
1564
- const V6_CLAUDE_MD = `# CodeBakers v6.15
1565
+ // v6.16 Bootstrap - SHORT template with magic phrase + rules at START and END
1566
+ const V6_CLAUDE_MD = `# CodeBakers v6.16
1567
+
1568
+ ## 🪄 MAGIC PHRASE: "codebakers go"
1569
+ When user says "codebakers go" in chat, start the onboarding conversation:
1570
+ 1. Ask: "Is this an existing project or are you starting fresh?" (1=existing, 2=new)
1571
+ 2. If existing: "Great! What would you like to work on?"
1572
+ 3. If new: "What do you want to build? Describe your project."
1573
+ 4. Then call \`init_project()\` to set up CodeBakers files
1574
+ 5. Continue helping them build
1565
1575
 
1566
1576
  ## 🚨 ALWAYS DO THIS (Critical - Read First)
1567
1577
  1. ALWAYS call \`project_status()\` FIRST → If works show "🍪 CodeBakers is working..." / If fails show "⚠️ Not connected"
@@ -1583,7 +1593,7 @@ validate_complete({ feature: "name", files: [...] }) → Validate BEFORE done
1583
1593
  \`\`\`
1584
1594
 
1585
1595
  Header (after project_status succeeds): 🍪 CodeBakers is working on this...
1586
- Header (if project_status fails): ⚠️ CodeBakers not connected - run: codebakers go
1596
+ Header (if project_status fails): ⚠️ CodeBakers not connected
1587
1597
  Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
1588
1598
 
1589
1599
  ## 🚨 ALWAYS DO THIS (Critical - Repeated at End)
@@ -1593,7 +1603,10 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
1593
1603
  4. Show footer after code responses
1594
1604
  `;
1595
1605
 
1596
- const V6_CURSORRULES = `# CodeBakers v6.15
1606
+ const V6_CURSORRULES = `# CodeBakers v6.16
1607
+
1608
+ ## 🪄 "codebakers go" = Start onboarding conversation
1609
+ Ask existing/new → Ask what to build → Call init_project() → Help them build
1597
1610
 
1598
1611
  ## 🚨 ALWAYS (Read First)
1599
1612
  1. Call project_status() FIRST → 🍪 Working... or ⚠️ Not connected
package/src/mcp/server.ts CHANGED
@@ -2808,10 +2808,18 @@ Or if user declines, call without fullDeploy:
2808
2808
  // Use default
2809
2809
  }
2810
2810
 
2811
- results.push(`# 🎨 Adding CodeBakers v6.15 to: ${projectName}\n`);
2811
+ results.push(`# 🎨 Adding CodeBakers v6.16 to: ${projectName}\n`);
2812
2812
 
2813
- // v6.15 bootstrap content - SHORT template with rules at START and END
2814
- const V6_CLAUDE_MD = `# CodeBakers v6.15
2813
+ // v6.16 bootstrap content - magic phrase + rules at START and END
2814
+ const V6_CLAUDE_MD = `# CodeBakers v6.16
2815
+
2816
+ ## 🪄 MAGIC PHRASE: "codebakers go"
2817
+ When user says "codebakers go" in chat, start the onboarding conversation:
2818
+ 1. Ask: "Is this an existing project or are you starting fresh?" (1=existing, 2=new)
2819
+ 2. If existing: "Great! What would you like to work on?"
2820
+ 3. If new: "What do you want to build? Describe your project."
2821
+ 4. Then call \`init_project()\` to set up CodeBakers files
2822
+ 5. Continue helping them build
2815
2823
 
2816
2824
  ## 🚨 ALWAYS DO THIS (Critical - Read First)
2817
2825
  1. ALWAYS call \`project_status()\` FIRST → If works show "🍪 CodeBakers is working..." / If fails show "⚠️ Not connected"
@@ -2833,7 +2841,7 @@ validate_complete({ feature: "name", files: [...] }) → Validate BEFORE done
2833
2841
  \`\`\`
2834
2842
 
2835
2843
  Header (after project_status succeeds): 🍪 CodeBakers is working on this...
2836
- Header (if project_status fails): ⚠️ CodeBakers not connected - run: codebakers go
2844
+ Header (if project_status fails): ⚠️ CodeBakers not connected
2837
2845
  Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
2838
2846
 
2839
2847
  ## 🚨 ALWAYS DO THIS (Critical - Repeated at End)
@@ -2843,7 +2851,10 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
2843
2851
  4. Show footer after code responses
2844
2852
  `;
2845
2853
 
2846
- const V6_CURSORRULES = `# CodeBakers v6.15
2854
+ const V6_CURSORRULES = `# CodeBakers v6.16
2855
+
2856
+ ## 🪄 "codebakers go" = Start onboarding conversation
2857
+ Ask existing/new → Ask what to build → Call init_project() → Help them build
2847
2858
 
2848
2859
  ## 🚨 ALWAYS (Read First)
2849
2860
  1. Call project_status() FIRST → 🍪 Working... or ⚠️ Not connected
@@ -2863,27 +2874,27 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
2863
2874
  3. validate_complete() before done
2864
2875
  `;
2865
2876
 
2866
- // Check if already v6.15
2877
+ // Check if already v6.16
2867
2878
  const claudeMdPath = path.join(cwd, 'CLAUDE.md');
2868
2879
  if (fs.existsSync(claudeMdPath)) {
2869
2880
  const content = fs.readFileSync(claudeMdPath, 'utf-8');
2870
- if (content.includes('v6.15') && content.includes('discover_patterns')) {
2871
- results.push('✓ CodeBakers v6.15 already installed\n');
2881
+ if (content.includes('v6.16') && content.includes('discover_patterns')) {
2882
+ results.push('✓ CodeBakers v6.16 already installed\n');
2872
2883
  results.push('Patterns are server-enforced. Just call `discover_patterns` before coding!');
2873
2884
  return {
2874
2885
  content: [{ type: 'text' as const, text: results.join('\n') }],
2875
2886
  };
2876
2887
  }
2877
- results.push('⚠️ Upgrading to v6.15 (server-enforced patterns)...\n');
2888
+ results.push('⚠️ Upgrading to v6.16 (server-enforced patterns)...\n');
2878
2889
  }
2879
2890
 
2880
2891
  try {
2881
- // Write v6.15 bootstrap files
2892
+ // Write v6.16 bootstrap files
2882
2893
  fs.writeFileSync(claudeMdPath, V6_CLAUDE_MD);
2883
- results.push('✓ Created CLAUDE.md (v6.15 bootstrap)');
2894
+ results.push('✓ Created CLAUDE.md (v6.16 bootstrap)');
2884
2895
 
2885
2896
  fs.writeFileSync(path.join(cwd, '.cursorrules'), V6_CURSORRULES);
2886
- results.push('✓ Created .cursorrules (v6.15 bootstrap)');
2897
+ results.push('✓ Created .cursorrules (v6.16 bootstrap)');
2887
2898
 
2888
2899
  // Remove old .claude folder if it exists (v5 → v6 migration)
2889
2900
  const claudeDir = path.join(cwd, '.claude');
@@ -2930,7 +2941,7 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
2930
2941
  fs.writeFileSync(stateFile, JSON.stringify(state, null, 2));
2931
2942
 
2932
2943
  results.push('\n---\n');
2933
- results.push('## ✅ CodeBakers v6.15 Installed!\n');
2944
+ results.push('## ✅ CodeBakers v6.16 Installed!\n');
2934
2945
  results.push('**How it works now:**');
2935
2946
  results.push('1. Call `discover_patterns` before writing code');
2936
2947
  results.push('2. Server returns all patterns and rules');
@@ -7475,7 +7486,7 @@ ${handlers.join('\n')}
7475
7486
  }
7476
7487
 
7477
7488
  /**
7478
- * Update to CodeBakers v6.14 - server-enforced patterns
7489
+ * Update to CodeBakers v6.16 - server-enforced patterns with magic phrase
7479
7490
  * This is the MCP equivalent of the `codebakers upgrade` CLI command
7480
7491
  */
7481
7492
  private async handleUpdatePatterns(args: { force?: boolean }) {
@@ -7485,10 +7496,18 @@ ${handlers.join('\n')}
7485
7496
  const claudeDir = path.join(cwd, '.claude');
7486
7497
  const codebakersJson = path.join(cwd, '.codebakers.json');
7487
7498
 
7488
- let response = `# 🔄 CodeBakers v6.15 Update\n\n`;
7499
+ let response = `# 🔄 CodeBakers v6.16 Update\n\n`;
7489
7500
 
7490
- // v6.15 bootstrap content - SHORT template with rules at START and END
7491
- const V6_CLAUDE_MD = `# CodeBakers v6.15
7501
+ // v6.16 bootstrap content - magic phrase + rules at START and END
7502
+ const V6_CLAUDE_MD = `# CodeBakers v6.16
7503
+
7504
+ ## 🪄 MAGIC PHRASE: "codebakers go"
7505
+ When user says "codebakers go" in chat, start the onboarding conversation:
7506
+ 1. Ask: "Is this an existing project or are you starting fresh?" (1=existing, 2=new)
7507
+ 2. If existing: "Great! What would you like to work on?"
7508
+ 3. If new: "What do you want to build? Describe your project."
7509
+ 4. Then call \`init_project()\` to set up CodeBakers files
7510
+ 5. Continue helping them build
7492
7511
 
7493
7512
  ## 🚨 ALWAYS DO THIS (Critical - Read First)
7494
7513
  1. ALWAYS call \`project_status()\` FIRST → If works show "🍪 CodeBakers is working..." / If fails show "⚠️ Not connected"
@@ -7510,7 +7529,7 @@ validate_complete({ feature: "name", files: [...] }) → Validate BEFORE done
7510
7529
  \`\`\`
7511
7530
 
7512
7531
  Header (after project_status succeeds): 🍪 CodeBakers is working on this...
7513
- Header (if project_status fails): ⚠️ CodeBakers not connected - run: codebakers go
7532
+ Header (if project_status fails): ⚠️ CodeBakers not connected
7514
7533
  Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
7515
7534
 
7516
7535
  ## 🚨 ALWAYS DO THIS (Critical - Repeated at End)
@@ -7520,7 +7539,10 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
7520
7539
  4. Show footer after code responses
7521
7540
  `;
7522
7541
 
7523
- const V6_CURSORRULES = `# CodeBakers v6.15
7542
+ const V6_CURSORRULES = `# CodeBakers v6.16
7543
+
7544
+ ## 🪄 "codebakers go" = Start onboarding conversation
7545
+ Ask existing/new → Ask what to build → Call init_project() → Help them build
7524
7546
 
7525
7547
  ## 🚨 ALWAYS (Read First)
7526
7548
  1. Call project_status() FIRST → 🍪 Working... or ⚠️ Not connected
@@ -7547,7 +7569,7 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
7547
7569
 
7548
7570
  if (fs.existsSync(claudeMdPath)) {
7549
7571
  const content = fs.readFileSync(claudeMdPath, 'utf-8');
7550
- isV6 = content.includes('v6.15') && content.includes('discover_patterns');
7572
+ isV6 = content.includes('v6.16') && content.includes('discover_patterns');
7551
7573
  }
7552
7574
 
7553
7575
  if (fs.existsSync(codebakersJson)) {
@@ -7561,11 +7583,11 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
7561
7583
 
7562
7584
  response += `## Current Status\n`;
7563
7585
  response += `- Version: ${currentVersion || 'Unknown'}\n`;
7564
- response += `- v6.15 (Server-Enforced): ${isV6 ? 'Yes ✓' : 'No'}\n\n`;
7586
+ response += `- v6.16 (Server-Enforced): ${isV6 ? 'Yes ✓' : 'No'}\n\n`;
7565
7587
 
7566
7588
  // Check if already on v6
7567
7589
  if (isV6 && !force) {
7568
- response += `✅ **Already on v6.15!**\n\n`;
7590
+ response += `✅ **Already on v6.16!**\n\n`;
7569
7591
  response += `Your patterns are server-enforced. Just use \`discover_patterns\` before coding.\n`;
7570
7592
  response += `Use \`force: true\` to reinstall bootstrap files.\n`;
7571
7593
  response += this.getUpdateNotice();
@@ -7578,14 +7600,14 @@ Footer (after code): 🍪 **CodeBakers** | Patterns: X | TSC: ✅ | Tests: ✅
7578
7600
  };
7579
7601
  }
7580
7602
 
7581
- response += `## Upgrading to v6.15...\n\n`;
7603
+ response += `## Upgrading to v6.16...\n\n`;
7582
7604
 
7583
- // Write v6.15 bootstrap files
7605
+ // Write v6.16 bootstrap files
7584
7606
  fs.writeFileSync(claudeMdPath, V6_CLAUDE_MD);
7585
- response += `✓ Updated CLAUDE.md (v6.15 bootstrap)\n`;
7607
+ response += `✓ Updated CLAUDE.md (v6.16 bootstrap)\n`;
7586
7608
 
7587
7609
  fs.writeFileSync(path.join(cwd, '.cursorrules'), V6_CURSORRULES);
7588
- response += `✓ Updated .cursorrules (v6.15 bootstrap)\n`;
7610
+ response += `✓ Updated .cursorrules (v6.16 bootstrap)\n`;
7589
7611
 
7590
7612
  // Remove old .claude folder (v5 → v6 migration)
7591
7613
  if (fs.existsSync(claudeDir)) {
@@ -0,0 +1 @@
1
+ /c/dev/1 - CodeBakers/codebakers-server/cli
@@ -0,0 +1 @@
1
+ /c/dev/1 - CodeBakers/codebakers-server/cli