create-propelkit 1.0.1 → 1.0.3

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": "create-propelkit",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Initialize a PropelKit SaaS project with AI PM",
5
5
  "bin": "./bin/cli.js",
6
6
  "main": "./src/index.js",
package/src/index.js CHANGED
@@ -2,9 +2,8 @@ const chalk = require('chalk');
2
2
  const path = require('path');
3
3
  const fs = require('fs');
4
4
  const inquirer = require('inquirer');
5
- const { detectCLIs, displayCLIStatus, getCLIByName, askGitHubConnection } = require('./cli-detector');
5
+ const { detectCLIs, displayCLIStatus, getCLIByName } = require('./cli-detector');
6
6
  const { handleScenario } = require('./scenarios');
7
- const { runDesignFlow } = require('./design-flow');
8
7
  const { runSetupWizard } = require('./setup-wizard');
9
8
  const { launchClaude } = require('./launcher');
10
9
  const { validateLicense } = require('./license-validator');
@@ -14,7 +13,7 @@ async function main() {
14
13
  // Step 1: Welcome
15
14
  messages.welcome();
16
15
 
17
- // Step 2: LICENSE VALIDATION (first thing after welcome)
16
+ // Step 2: LICENSE VALIDATION
18
17
  console.log('');
19
18
  const { licenseKey } = await inquirer.prompt([
20
19
  {
@@ -41,7 +40,7 @@ async function main() {
41
40
  messages.proLicenseValid();
42
41
  }
43
42
 
44
- // Step 3: Detect CLIs
43
+ // Step 3: Detect CLIs (quick check)
45
44
  messages.detectingCLIs();
46
45
  const clis = await detectCLIs();
47
46
  displayCLIStatus(clis, chalk);
@@ -53,25 +52,10 @@ async function main() {
53
52
  process.exit(1);
54
53
  }
55
54
 
56
- // Step 5: Show benefits for missing optional CLIs
57
- const supabaseCli = getCLIByName(clis, 'supabase');
58
- const ghCli = getCLIByName(clis, 'gh');
59
-
60
- if (!supabaseCli.installed) {
61
- messages.supabaseBenefits();
62
- }
63
-
64
- if (!ghCli.installed) {
65
- messages.githubBenefits();
66
- }
67
-
68
- // Step 6: GitHub connection (for Pro tier, or if user wants it for Starter)
69
- const useGitHub = tier === 'pro' ? await askGitHubConnection(ghCli, chalk) : false;
70
-
71
- // Step 7: Clone scenario (pass tier first)
55
+ // Step 5: Clone scenario
72
56
  let projectDir;
73
57
  try {
74
- projectDir = await handleScenario(tier, clis, useGitHub);
58
+ projectDir = await handleScenario(tier, clis, false); // useGitHub = false, AI PM will handle
75
59
  } catch (error) {
76
60
  if (error.message === 'Aborted by user') {
77
61
  console.log('');
@@ -81,34 +65,13 @@ async function main() {
81
65
  throw error;
82
66
  }
83
67
 
84
- // Step 8: TIER-SPECIFIC POST-CLONE FLOW
68
+ // Step 6: TIER-SPECIFIC POST-CLONE FLOW
85
69
  if (tier === 'starter') {
86
70
  // Starter: Run setup wizard, then done
87
71
  await runSetupWizard(projectDir);
88
72
  messages.starterWizardComplete();
89
73
  } else {
90
- // Pro: Run design flow, then launch Claude Code
91
- console.log('');
92
- const designResult = await runDesignFlow(
93
- path.basename(projectDir),
94
- projectDir
95
- );
96
-
97
- // Store design result in config.json
98
- const configPath = path.join(projectDir, '.planning', 'config.json');
99
- let config = {};
100
- if (fs.existsSync(configPath)) {
101
- config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
102
- }
103
- config.designFlow = designResult;
104
-
105
- const planningDir = path.dirname(configPath);
106
- if (!fs.existsSync(planningDir)) {
107
- fs.mkdirSync(planningDir, { recursive: true });
108
- }
109
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
110
-
111
- // Launch Claude Code
74
+ // Pro: Launch Claude Code directly - AI PM handles everything
112
75
  messages.proLaunchingAIPM(projectDir);
113
76
 
114
77
  // Give user time to read the instructions
package/src/launcher.js CHANGED
@@ -14,7 +14,8 @@ function launchClaude(projectDir, _options = {}) {
14
14
 
15
15
  messages.launchingClaude(resolvedDir);
16
16
 
17
- const claude = spawn('claude', [], {
17
+ // Launch with the /propelkit:new-project command pre-filled
18
+ const claude = spawn('claude', ['/propelkit:new-project'], {
18
19
  cwd: resolvedDir,
19
20
  stdio: 'inherit', // User sees Claude's I/O directly
20
21
  shell: true // Required for Windows compatibility
package/src/messages.js CHANGED
@@ -110,8 +110,8 @@ const messages = {
110
110
  console.log(chalk.cyan.bold('Launching AI PM in Claude Code...'));
111
111
  console.log(chalk.dim(`Project: ${projectDir}`));
112
112
  console.log('');
113
- console.log(chalk.dim('When Claude Code opens, type:'));
114
- console.log(chalk.white.bold(' /propelkit:new-project'));
113
+ console.log(chalk.dim('Claude will start with /propelkit:new-project'));
114
+ console.log(chalk.dim('Just press Enter to begin the AI PM conversation.'));
115
115
  console.log('');
116
116
  }
117
117
  };