@nexus-framework/cli 0.2.0 → 0.3.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.
Files changed (84) hide show
  1. package/README.md +62 -6
  2. package/dist/cli.js +87 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/adopt.d.ts +4 -2
  5. package/dist/commands/adopt.d.ts.map +1 -1
  6. package/dist/commands/adopt.js +47 -8
  7. package/dist/commands/adopt.js.map +1 -1
  8. package/dist/commands/init.d.ts +1 -0
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +1 -1
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/pack.d.ts +28 -0
  13. package/dist/commands/pack.d.ts.map +1 -0
  14. package/dist/commands/pack.js +206 -0
  15. package/dist/commands/pack.js.map +1 -0
  16. package/dist/commands/skill.d.ts +53 -0
  17. package/dist/commands/skill.d.ts.map +1 -0
  18. package/dist/commands/skill.js +371 -0
  19. package/dist/commands/skill.js.map +1 -0
  20. package/dist/commands/update.d.ts +24 -0
  21. package/dist/commands/update.d.ts.map +1 -0
  22. package/dist/commands/update.js +100 -0
  23. package/dist/commands/update.js.map +1 -0
  24. package/dist/generators/ai-config.js +40 -1
  25. package/dist/generators/ai-config.js.map +1 -1
  26. package/dist/generators/docs.d.ts +10 -1
  27. package/dist/generators/docs.d.ts.map +1 -1
  28. package/dist/generators/docs.js +40 -65
  29. package/dist/generators/docs.js.map +1 -1
  30. package/dist/generators/index.d.ts +2 -1
  31. package/dist/generators/index.d.ts.map +1 -1
  32. package/dist/generators/index.js +85 -9
  33. package/dist/generators/index.js.map +1 -1
  34. package/dist/generators/skills.d.ts +32 -0
  35. package/dist/generators/skills.d.ts.map +1 -0
  36. package/dist/generators/skills.js +220 -0
  37. package/dist/generators/skills.js.map +1 -0
  38. package/dist/generators/spring-boot.d.ts +12 -0
  39. package/dist/generators/spring-boot.d.ts.map +1 -0
  40. package/dist/generators/spring-boot.js +220 -0
  41. package/dist/generators/spring-boot.js.map +1 -0
  42. package/dist/generators/structure.d.ts +1 -0
  43. package/dist/generators/structure.d.ts.map +1 -1
  44. package/dist/generators/structure.js +129 -24
  45. package/dist/generators/structure.js.map +1 -1
  46. package/dist/prompts/adoption.d.ts +35 -0
  47. package/dist/prompts/adoption.d.ts.map +1 -0
  48. package/dist/prompts/adoption.js +153 -0
  49. package/dist/prompts/adoption.js.map +1 -0
  50. package/dist/prompts/frameworks.d.ts +5 -1
  51. package/dist/prompts/frameworks.d.ts.map +1 -1
  52. package/dist/prompts/frameworks.js +49 -1
  53. package/dist/prompts/frameworks.js.map +1 -1
  54. package/dist/prompts/index.d.ts +2 -1
  55. package/dist/prompts/index.d.ts.map +1 -1
  56. package/dist/prompts/index.js +32 -7
  57. package/dist/prompts/index.js.map +1 -1
  58. package/dist/prompts/project-type.d.ts.map +1 -1
  59. package/dist/prompts/project-type.js +6 -1
  60. package/dist/prompts/project-type.js.map +1 -1
  61. package/dist/prompts/skill-config.d.ts +19 -0
  62. package/dist/prompts/skill-config.d.ts.map +1 -0
  63. package/dist/prompts/skill-config.js +22 -0
  64. package/dist/prompts/skill-config.js.map +1 -0
  65. package/dist/types/config.d.ts +9 -3
  66. package/dist/types/config.d.ts.map +1 -1
  67. package/dist/utils/file-system.d.ts.map +1 -1
  68. package/dist/utils/file-system.js +4 -2
  69. package/dist/utils/file-system.js.map +1 -1
  70. package/dist/utils/logger.d.ts +2 -2
  71. package/dist/utils/logger.d.ts.map +1 -1
  72. package/dist/utils/logger.js +49 -36
  73. package/dist/utils/logger.js.map +1 -1
  74. package/dist/utils/project-detector.d.ts +20 -4
  75. package/dist/utils/project-detector.d.ts.map +1 -1
  76. package/dist/utils/project-detector.js +156 -27
  77. package/dist/utils/project-detector.js.map +1 -1
  78. package/dist/utils/update-check.d.ts +27 -0
  79. package/dist/utils/update-check.d.ts.map +1 -0
  80. package/dist/utils/update-check.js +111 -0
  81. package/dist/utils/update-check.js.map +1 -0
  82. package/dist/version.d.ts +1 -1
  83. package/dist/version.js +1 -1
  84. package/package.json +9 -2
@@ -8,45 +8,70 @@
8
8
  */
9
9
  export function generateDirectories(config) {
10
10
  const dirs = [
11
- { path: 'src' },
12
- { path: 'public' },
13
11
  { path: '.nexus' },
14
12
  { path: '.nexus/docs' },
15
13
  { path: '.nexus/ai' },
16
14
  ];
17
- // Test directories
18
- if (config.testFramework !== 'none') {
15
+ // Spring Boot projects have a different structure
16
+ if (config.backendFramework === 'spring-boot') {
17
+ const packagePath = `com/example/${config.projectName.replace(/-/g, '')}`;
18
+ dirs.push({ path: 'src' }, { path: 'src/main' }, { path: 'src/main/java' }, { path: `src/main/java/${packagePath}` }, { path: `src/main/java/${packagePath}/controller` }, { path: 'src/main/resources' }, { path: 'src/test' }, { path: 'src/test/java' }, { path: `src/test/java/${packagePath}` });
19
+ }
20
+ else if (config.projectType === 'api') {
21
+ // API-only projects (Node.js-based)
22
+ dirs.push({ path: 'src' }, { path: 'src/routes' }, { path: 'src/controllers' }, { path: 'src/services' }, { path: 'src/models' }, { path: 'src/middleware' }, { path: 'src/utils' });
23
+ }
24
+ else {
25
+ // Regular web projects
26
+ dirs.push({ path: 'src' }, { path: 'public' });
27
+ }
28
+ // UI Library specific structure
29
+ if (config.projectType === 'ui-library') {
30
+ dirs.push({ path: 'src/components' }, { path: 'src/lib' }, { path: '.storybook' }, { path: 'stories' });
31
+ }
32
+ // Test directories (skip for Spring Boot as it has its own structure)
33
+ if (config.testFramework !== 'none' && config.backendFramework !== 'spring-boot') {
19
34
  dirs.push({ path: 'tests' }, { path: 'tests/unit' }, { path: 'tests/integration' }, { path: 'tests/e2e' }, { path: 'tests/utils' });
20
35
  }
21
36
  // CI/CD
22
37
  dirs.push({ path: '.github' }, { path: '.github/workflows' });
23
- // Framework-specific
24
- switch (config.frontendFramework) {
25
- case 'nextjs':
26
- dirs.push({ path: 'src/app' }, { path: 'src/components' }, { path: 'src/lib' });
27
- break;
28
- case 'react-vite':
29
- dirs.push({ path: 'src/components' }, { path: 'src/pages' }, { path: 'src/hooks' }, { path: 'src/lib' });
30
- break;
31
- case 'sveltekit':
32
- dirs.push({ path: 'src/routes' }, { path: 'src/lib' }, { path: 'src/lib/components' }, { path: 'src/styles' });
33
- break;
34
- case 'nuxt':
35
- dirs.push({ path: 'src/lib' }, { path: 'src/components' }, { path: 'pages' }, { path: 'assets' }, { path: 'assets/css' });
36
- break;
37
- case 'astro':
38
- dirs.push({ path: 'src/pages' }, { path: 'src/layouts' }, { path: 'src/components' }, { path: 'src/styles' });
39
- break;
40
- default:
41
- dirs.push({ path: 'src/lib' }, { path: 'src/components' });
42
- break;
38
+ // Framework-specific (skip if Spring Boot, UI library, or API-only)
39
+ if (config.backendFramework !== 'spring-boot' && config.projectType !== 'ui-library' && config.projectType !== 'api') {
40
+ switch (config.frontendFramework) {
41
+ case 'nextjs':
42
+ dirs.push({ path: 'src/app' }, { path: 'src/components' }, { path: 'src/lib' });
43
+ break;
44
+ case 'react-vite':
45
+ dirs.push({ path: 'src/components' }, { path: 'src/pages' }, { path: 'src/hooks' }, { path: 'src/lib' });
46
+ break;
47
+ case 'sveltekit':
48
+ dirs.push({ path: 'src/routes' }, { path: 'src/lib' }, { path: 'src/lib/components' }, { path: 'src/styles' });
49
+ break;
50
+ case 'nuxt':
51
+ dirs.push({ path: 'src/lib' }, { path: 'src/components' }, { path: 'pages' }, { path: 'assets' }, { path: 'assets/css' });
52
+ break;
53
+ case 'astro':
54
+ dirs.push({ path: 'src/pages' }, { path: 'src/layouts' }, { path: 'src/components' }, { path: 'src/styles' });
55
+ break;
56
+ default:
57
+ dirs.push({ path: 'src/lib' }, { path: 'src/components' });
58
+ break;
59
+ }
43
60
  }
44
61
  return dirs;
45
62
  }
46
63
  /**
47
64
  * Generate the project's package.json content.
65
+ * For Spring Boot projects, returns empty content (they use pom.xml/build.gradle).
48
66
  */
49
67
  export function generatePackageJson(config) {
68
+ // Spring Boot projects don't use package.json - return empty
69
+ if (config.backendFramework === 'spring-boot') {
70
+ return {
71
+ path: 'package.json',
72
+ content: '',
73
+ };
74
+ }
50
75
  const scripts = getFrameworkScripts(config);
51
76
  const { dependencies, devDependencies } = getFrameworkDependencies(config);
52
77
  const pkg = {
@@ -58,6 +83,20 @@ export function generatePackageJson(config) {
58
83
  dependencies,
59
84
  devDependencies,
60
85
  };
86
+ // UI Library specific fields
87
+ if (config.projectType === 'ui-library') {
88
+ pkg.main = './dist/index.js';
89
+ pkg.module = './dist/index.mjs';
90
+ pkg.types = './dist/index.d.ts';
91
+ pkg.exports = {
92
+ '.': {
93
+ import: './dist/index.mjs',
94
+ require: './dist/index.js',
95
+ types: './dist/index.d.ts',
96
+ },
97
+ };
98
+ pkg.files = ['dist'];
99
+ }
61
100
  // Add test scripts & dependencies
62
101
  if (config.testFramework === 'vitest') {
63
102
  pkg.scripts.test = 'vitest run';
@@ -71,6 +110,32 @@ export function generatePackageJson(config) {
71
110
  pkg.devDependencies['ts-jest'] = '^29.0.0';
72
111
  pkg.devDependencies['@types/jest'] = '^29.0.0';
73
112
  }
113
+ // API-only projects need specific dependencies
114
+ if (config.projectType === 'api') {
115
+ // Add backend framework dependencies
116
+ if (config.backendFramework === 'express') {
117
+ pkg.dependencies['express'] = '^4.18.0';
118
+ pkg.dependencies['cors'] = '^2.8.5';
119
+ pkg.dependencies['helmet'] = '^7.0.0';
120
+ pkg.devDependencies['@types/express'] = '^4.17.0';
121
+ pkg.devDependencies['@types/cors'] = '^2.8.0';
122
+ pkg.devDependencies['@types/helmet'] = '^4.0.0';
123
+ }
124
+ else if (config.backendFramework === 'fastify') {
125
+ pkg.dependencies['fastify'] = '^4.0.0';
126
+ pkg.dependencies['@fastify/cors'] = '^8.0.0';
127
+ pkg.dependencies['@fastify/helmet'] = '^11.0.0';
128
+ }
129
+ else if (config.backendFramework === 'nestjs') {
130
+ pkg.dependencies['@nestjs/core'] = '^10.0.0';
131
+ pkg.dependencies['@nestjs/common'] = '^10.0.0';
132
+ pkg.dependencies['@nestjs/platform-express'] = '^10.0.0';
133
+ pkg.devDependencies['@nestjs/cli'] = '^10.0.0';
134
+ pkg.devDependencies['@nestjs/schematics'] = '^10.0.0';
135
+ }
136
+ // Add TypeScript execution dependency
137
+ pkg.devDependencies['tsx'] = '^4.0.0';
138
+ }
74
139
  return {
75
140
  path: 'package.json',
76
141
  content: JSON.stringify(pkg, null, 2) + '\n',
@@ -85,6 +150,25 @@ function getFrameworkScripts(config) {
85
150
  format: 'prettier --write .',
86
151
  'type-check': 'tsc --noEmit',
87
152
  };
153
+ // API-only scripts
154
+ if (config.projectType === 'api') {
155
+ return {
156
+ dev: 'tsx src/index.ts',
157
+ build: 'tsc',
158
+ start: 'node dist/index.js',
159
+ ...base,
160
+ };
161
+ }
162
+ // UI Library scripts
163
+ if (config.projectType === 'ui-library') {
164
+ return {
165
+ dev: 'vite',
166
+ build: 'vite build && tsc --emitDeclarationOnly',
167
+ storybook: 'storybook dev -p 6006',
168
+ 'build-storybook': 'storybook build',
169
+ ...base,
170
+ };
171
+ }
88
172
  switch (config.frontendFramework) {
89
173
  case 'nextjs':
90
174
  return {
@@ -148,6 +232,27 @@ function getFrameworkDependencies(config) {
148
232
  eslint: '^8.57.0',
149
233
  prettier: '^3.4.0',
150
234
  };
235
+ // UI Library dependencies
236
+ if (config.projectType === 'ui-library') {
237
+ return {
238
+ dependencies: {},
239
+ devDependencies: {
240
+ ...baseDev,
241
+ react: '^19.0.0',
242
+ 'react-dom': '^19.0.0',
243
+ '@types/react': '^19.0.0',
244
+ '@types/react-dom': '^19.0.0',
245
+ vite: '^6.0.0',
246
+ '@vitejs/plugin-react': '^4.3.0',
247
+ storybook: '^8.0.0',
248
+ '@storybook/react': '^8.0.0',
249
+ '@storybook/react-vite': '^8.0.0',
250
+ '@storybook/addon-essentials': '^8.0.0',
251
+ '@storybook/addon-interactions': '^8.0.0',
252
+ '@storybook/test': '^8.0.0',
253
+ },
254
+ };
255
+ }
151
256
  switch (config.frontendFramework) {
152
257
  case 'nextjs':
153
258
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure.js","sourceRoot":"","sources":["../../src/generators/structure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * NEXUS CLI - Adoption Interview Prompt
3
+ *
4
+ * Before adopting an existing project, we interview the user to gather
5
+ * context that will help AI agents populate the template docs more intelligently.
6
+ *
7
+ * This is the "pre-adoption onboarding" — a brief conversation about:
8
+ * - What the project does (for vision doc)
9
+ * - Architecture type (monolith, microservices, serverless, etc.)
10
+ * - Main tech stack (if we couldn't auto-detect it)
11
+ * - Known pain points or areas needing docs
12
+ * - Whether NEXUS should be local-only or team-shared
13
+ */
14
+ import type { ProjectInfo } from '../utils/project-detector.js';
15
+ /** User answers from the pre-adoption interview */
16
+ export interface AdoptionContext {
17
+ /** One-sentence description of what the project does */
18
+ projectDescription: string;
19
+ /** Architecture pattern */
20
+ architectureType: 'monolith' | 'microservices' | 'serverless' | 'modular-monolith' | 'other';
21
+ /** Main tech stack (if not auto-detected) */
22
+ techStack: string;
23
+ /** Areas that need documentation or are pain points */
24
+ painPoints: string;
25
+ /** Whether .nexus/ should be gitignored (local-only) */
26
+ localOnly: boolean;
27
+ }
28
+ /**
29
+ * Run the pre-adoption interview.
30
+ *
31
+ * @param projectInfo - Detected project information (used for smart defaults)
32
+ * @returns User responses to guide doc generation
33
+ */
34
+ export declare function promptAdoption(projectInfo: ProjectInfo): Promise<AdoptionContext>;
35
+ //# sourceMappingURL=adoption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adoption.d.ts","sourceRoot":"","sources":["../../src/prompts/adoption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2BAA2B;IAC3B,gBAAgB,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,GAAG,kBAAkB,GAAG,OAAO,CAAC;IAC7F,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAuFvF"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * NEXUS CLI - Adoption Interview Prompt
3
+ *
4
+ * Before adopting an existing project, we interview the user to gather
5
+ * context that will help AI agents populate the template docs more intelligently.
6
+ *
7
+ * This is the "pre-adoption onboarding" — a brief conversation about:
8
+ * - What the project does (for vision doc)
9
+ * - Architecture type (monolith, microservices, serverless, etc.)
10
+ * - Main tech stack (if we couldn't auto-detect it)
11
+ * - Known pain points or areas needing docs
12
+ * - Whether NEXUS should be local-only or team-shared
13
+ */
14
+ import { input, select, confirm } from '@inquirer/prompts';
15
+ /**
16
+ * Run the pre-adoption interview.
17
+ *
18
+ * @param projectInfo - Detected project information (used for smart defaults)
19
+ * @returns User responses to guide doc generation
20
+ */
21
+ export async function promptAdoption(projectInfo) {
22
+ const displayName = projectInfo.name ?? 'this project';
23
+ console.log('');
24
+ console.log('🔮 Let\'s set up NEXUS for your existing project.');
25
+ console.log(' Answer a few quick questions so AI agents understand your codebase.');
26
+ console.log('');
27
+ // 1. Project description
28
+ const projectDescription = await input({
29
+ message: `What does ${displayName} do? (One sentence for the vision doc)`,
30
+ default: projectInfo.description ?? '',
31
+ validate: (value) => {
32
+ if (value.trim().length < 10) {
33
+ return 'Please provide at least a 10-character description.';
34
+ }
35
+ return true;
36
+ },
37
+ });
38
+ // 2. Architecture type
39
+ const architectureType = await select({
40
+ message: 'What\'s the architecture pattern?',
41
+ choices: [
42
+ {
43
+ value: 'monolith',
44
+ name: '🏛️ Monolith',
45
+ description: 'Single codebase, all features in one app',
46
+ },
47
+ {
48
+ value: 'microservices',
49
+ name: '🔗 Microservices',
50
+ description: 'Multiple independent services communicating via APIs',
51
+ },
52
+ {
53
+ value: 'serverless',
54
+ name: '☁️ Serverless',
55
+ description: 'Cloud Functions, Lambda, Vercel Functions, etc.',
56
+ },
57
+ {
58
+ value: 'modular-monolith',
59
+ name: '📦 Modular Monolith',
60
+ description: 'Single deployment, organized into independent modules',
61
+ },
62
+ {
63
+ value: 'other',
64
+ name: '🔧 Other',
65
+ description: 'Something else (explain in pain points)',
66
+ },
67
+ ],
68
+ default: detectArchitectureType(projectInfo),
69
+ });
70
+ // 3. Tech stack (if we couldn't detect a framework)
71
+ let techStack = projectInfo.framework ?? 'unknown';
72
+ if (techStack === 'unknown' || techStack === 'node') {
73
+ techStack = await input({
74
+ message: 'What\'s the main tech stack? (e.g., "Express + MongoDB", "Go + PostgreSQL")',
75
+ default: buildTechStackGuess(projectInfo),
76
+ validate: (value) => {
77
+ if (value.trim().length < 3) {
78
+ return 'Please provide a valid tech stack description.';
79
+ }
80
+ return true;
81
+ },
82
+ });
83
+ }
84
+ // 4. Pain points
85
+ const painPoints = await input({
86
+ message: 'Any known pain points or areas that need better docs? (optional)',
87
+ default: '',
88
+ });
89
+ // 5. Local-only mode
90
+ const localOnly = await confirm({
91
+ message: 'Keep NEXUS local-only? (adds .nexus/ to .gitignore - won\'t be shared with team)',
92
+ default: false,
93
+ });
94
+ return {
95
+ projectDescription: projectDescription.trim(),
96
+ architectureType,
97
+ techStack,
98
+ painPoints: painPoints.trim(),
99
+ localOnly,
100
+ };
101
+ }
102
+ /* ──────────────────────────────────────────────────────────────
103
+ * Smart Defaults
104
+ * ────────────────────────────────────────────────────────────── */
105
+ /**
106
+ * Guess architecture type based on detected dependencies.
107
+ */
108
+ function detectArchitectureType(projectInfo) {
109
+ const deps = projectInfo.dependencies.map((d) => d.toLowerCase());
110
+ if (deps.includes('firebase-functions') ||
111
+ deps.includes('@google-cloud/functions-framework') ||
112
+ deps.includes('aws-lambda') ||
113
+ deps.includes('@vercel/node')) {
114
+ return 'serverless';
115
+ }
116
+ if (deps.some((d) => d.includes('microservice') || d.includes('grpc') || d.includes('rabbitmq'))) {
117
+ return 'microservices';
118
+ }
119
+ return 'monolith';
120
+ }
121
+ /**
122
+ * Build a tech stack guess from detected dependencies.
123
+ */
124
+ function buildTechStackGuess(projectInfo) {
125
+ const deps = projectInfo.dependencies;
126
+ const parts = [];
127
+ // Backend framework
128
+ if (deps.includes('express'))
129
+ parts.push('Express');
130
+ if (deps.includes('fastify'))
131
+ parts.push('Fastify');
132
+ if (deps.includes('koa'))
133
+ parts.push('Koa');
134
+ if (deps.includes('hapi'))
135
+ parts.push('Hapi');
136
+ if (deps.includes('nestjs'))
137
+ parts.push('NestJS');
138
+ // Database
139
+ if (deps.includes('mongodb') || deps.includes('mongoose'))
140
+ parts.push('MongoDB');
141
+ if (deps.includes('pg') || deps.includes('postgres'))
142
+ parts.push('PostgreSQL');
143
+ if (deps.includes('mysql') || deps.includes('mysql2'))
144
+ parts.push('MySQL');
145
+ if (deps.includes('prisma'))
146
+ parts.push('Prisma');
147
+ // Frontend
148
+ if (projectInfo.framework && projectInfo.framework !== 'node' && projectInfo.framework !== 'unknown') {
149
+ parts.push(projectInfo.framework);
150
+ }
151
+ return parts.length > 0 ? parts.join(' + ') : 'Node.js';
152
+ }
153
+ //# sourceMappingURL=adoption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adoption.js","sourceRoot":"","sources":["../../src/prompts/adoption.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,10 @@
4
4
  * Asks the user which frontend framework to use.
5
5
  * Options are filtered based on project type.
6
6
  */
7
- import type { FrontendFramework, ProjectType } from '../types/config.js';
7
+ import type { FrontendFramework, ProjectType, BackendFramework } from '../types/config.js';
8
8
  export declare function promptFramework(projectType: ProjectType): Promise<FrontendFramework>;
9
+ /**
10
+ * Prompt for backend framework (for API projects)
11
+ */
12
+ export declare function promptBackendFramework(): Promise<BackendFramework>;
9
13
  //# sourceMappingURL=frameworks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAG,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoC1F"}
1
+ {"version":3,"file":"frameworks.d.ts","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3F,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuD1F;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CA0BxE"}
@@ -8,7 +8,25 @@ import { select } from '@inquirer/prompts';
8
8
  export async function promptFramework(projectType) {
9
9
  if (projectType === 'api') {
10
10
  // API projects don't need a frontend framework — we return a sentinel
11
- return 'nextjs'; // will be ignored; backend prompt handles this
11
+ return 'none'; // will be ignored; backend prompt handles this
12
+ }
13
+ if (projectType === 'ui-library') {
14
+ // UI library projects use React + Vite as the base
15
+ return select({
16
+ message: 'Which UI framework for your component library?',
17
+ choices: [
18
+ {
19
+ value: 'react-vite',
20
+ name: '⚛️ React + Vite + Storybook',
21
+ description: 'Build, document, and publish React component library with Storybook.',
22
+ },
23
+ {
24
+ value: 'sveltekit',
25
+ name: '🔥 Svelte + SvelteKit',
26
+ description: 'Build Svelte component library with SvelteKit for documentation.',
27
+ },
28
+ ],
29
+ });
12
30
  }
13
31
  return select({
14
32
  message: 'Which frontend framework?',
@@ -41,4 +59,34 @@ export async function promptFramework(projectType) {
41
59
  ],
42
60
  });
43
61
  }
62
+ /**
63
+ * Prompt for backend framework (for API projects)
64
+ */
65
+ export async function promptBackendFramework() {
66
+ return select({
67
+ message: 'Which backend framework?',
68
+ choices: [
69
+ {
70
+ value: 'spring-boot',
71
+ name: '☕ Spring Boot',
72
+ description: 'Java/Kotlin enterprise framework with auto-configuration and production-ready features.',
73
+ },
74
+ {
75
+ value: 'express',
76
+ name: '🚂 Express.js',
77
+ description: 'Minimalist Node.js framework. Most popular, highly flexible.',
78
+ },
79
+ {
80
+ value: 'fastify',
81
+ name: '⚡ Fastify',
82
+ description: 'Fast Node.js framework with schema validation and TypeScript support.',
83
+ },
84
+ {
85
+ value: 'nestjs',
86
+ name: '🐈 NestJS',
87
+ description: 'TypeScript-first Node.js framework inspired by Angular. Great for large teams.',
88
+ },
89
+ ],
90
+ });
91
+ }
44
92
  //# sourceMappingURL=frameworks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAwB;IAC5D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,QAAQ,CAAC,CAAC,+CAA+C;IAClE,CAAC;IAED,OAAO,MAAM,CAAoB;QAC/B,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EAAE,yEAAyE;aACvF;YACD;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,uEAAuE;aACrF;YACD;gBACE,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,mEAAmE;aACjF;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,iEAAiE;aAC/E;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,2EAA2E;aACzF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../../src/prompts/frameworks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAwB;IAC5D,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;QAC1B,sEAAsE;QACtE,OAAO,MAAM,CAAC,CAAC,+CAA+C;IAChE,CAAC;IAED,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACjC,mDAAmD;QACnD,OAAO,MAAM,CAAoB;YAC/B,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,YAAY;oBACnB,IAAI,EAAE,8BAA8B;oBACpC,WAAW,EAAE,sEAAsE;iBACpF;gBACD;oBACE,KAAK,EAAE,WAAW;oBAClB,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EAAE,kEAAkE;iBAChF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAoB;QAC/B,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EAAE,yEAAyE;aACvF;YACD;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,uEAAuE;aACrF;YACD;gBACE,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,mEAAmE;aACjF;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,iEAAiE;aAC/E;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,2EAA2E;aACzF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,OAAO,MAAM,CAAmB;QAC9B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,yFAAyF;aACvG;YACD;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,8DAA8D;aAC5E;YACD;gBACE,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,uEAAuE;aACrF;YACD;gBACE,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,gFAAgF;aAC9F;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -11,6 +11,7 @@ import type { NexusConfig } from '../types/config.js';
11
11
  * slug ("todo-list-app") automatically for the folder & package.json name.
12
12
  *
13
13
  * @param initialName - Optional project name passed via CLI argument
14
+ * @param localOnly - Optional flag to set local-only mode (skip prompt)
14
15
  */
15
- export declare function runPrompts(initialName?: string): Promise<NexusConfig>;
16
+ export declare function runPrompts(initialName?: string, localOnly?: boolean): Promise<NexusConfig>;
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWtD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2D3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYtD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAwEhG"}
@@ -8,10 +8,11 @@ import { detectPackageManager } from '../utils/package-manager.js';
8
8
  import { validateProjectName, toSlug, toDisplayName } from '../utils/validator.js';
9
9
  import { promptDataStrategy } from './data-strategy.js';
10
10
  import { promptFeatures } from './features.js';
11
- import { promptFramework } from './frameworks.js';
11
+ import { promptFramework, promptBackendFramework } from './frameworks.js';
12
12
  import { promptPatterns } from './patterns.js';
13
13
  import { promptPersona } from './persona.js';
14
14
  import { promptProjectType } from './project-type.js';
15
+ import { promptSkillConfig } from './skill-config.js';
15
16
  /**
16
17
  * Run the full interactive prompt flow and return a complete NexusConfig.
17
18
  *
@@ -19,8 +20,9 @@ import { promptProjectType } from './project-type.js';
19
20
  * slug ("todo-list-app") automatically for the folder & package.json name.
20
21
  *
21
22
  * @param initialName - Optional project name passed via CLI argument
23
+ * @param localOnly - Optional flag to set local-only mode (skip prompt)
22
24
  */
23
- export async function runPrompts(initialName) {
25
+ export async function runPrompts(initialName, localOnly) {
24
26
  // 1. Project name (free-text)
25
27
  let rawName;
26
28
  if (!initialName) {
@@ -44,16 +46,25 @@ export async function runPrompts(initialName) {
44
46
  const displayName = toDisplayName(rawName);
45
47
  // 2. Project type
46
48
  const projectType = await promptProjectType();
47
- // 3. Data strategy
48
- const dataStrategy = await promptDataStrategy();
49
- // 4. Application patterns
50
- const appPatterns = await promptPatterns();
49
+ // 3. Data strategy (skip for ui-library)
50
+ const dataStrategy = projectType === 'ui-library' ? 'local-only' : await promptDataStrategy();
51
+ // 4. Application patterns (skip for ui-library and api)
52
+ const appPatterns = (projectType === 'ui-library' || projectType === 'api')
53
+ ? []
54
+ : await promptPatterns();
51
55
  // 5. Framework
52
56
  const frontendFramework = await promptFramework(projectType);
57
+ // 5b. Backend framework (only for API projects)
58
+ const backendFramework = projectType === 'api'
59
+ ? await promptBackendFramework()
60
+ : 'none';
53
61
  // 6. Features & extras
54
62
  const { testFramework, packageManager, git, installDeps } = await promptFeatures();
55
63
  // 7. AI agent persona
56
64
  const persona = await promptPersona();
65
+ // 8. Skills system
66
+ const frameworkLabel = getFrameworkLabel(frontendFramework);
67
+ const { enableSkills } = await promptSkillConfig(frameworkLabel);
57
68
  // Assemble config
58
69
  const config = {
59
70
  projectName,
@@ -63,13 +74,27 @@ export async function runPrompts(initialName) {
63
74
  appPatterns,
64
75
  frontendFramework,
65
76
  backendStrategy: projectType === 'api' ? 'separate' : 'integrated',
66
- backendFramework: projectType === 'api' ? 'express' : 'none',
77
+ backendFramework,
67
78
  testFramework,
68
79
  packageManager: packageManager ?? detectPackageManager(),
69
80
  git,
70
81
  installDeps,
71
82
  persona,
83
+ localOnly,
84
+ enableSkills,
72
85
  };
73
86
  return config;
74
87
  }
88
+ function getFrameworkLabel(framework) {
89
+ const labels = {
90
+ nextjs: 'Next.js',
91
+ 'react-vite': 'React + Vite',
92
+ sveltekit: 'SvelteKit',
93
+ nuxt: 'Nuxt 3',
94
+ astro: 'Astro',
95
+ remix: 'Remix',
96
+ none: 'shared',
97
+ };
98
+ return labels[framework] ?? framework;
99
+ }
75
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAoB;IACnD,8BAA8B;IAC9B,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,GAAG,MAAM,KAAK,CAAC;YACpB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE;gBACxB,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;YAClE,CAAC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,GAAG,WAAW,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAE3C,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAE9C,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;IAE3C,eAAe;IACf,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7D,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;IAEnF,sBAAsB;IACtB,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IAEtC,kBAAkB;IAClB,MAAM,MAAM,GAAgB;QAC1B,WAAW;QACX,WAAW;QACX,WAAW;QACX,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,eAAe,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;QAClE,gBAAgB,EAAE,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QAC5D,aAAa;QACb,cAAc,EAAE,cAAc,IAAI,oBAAoB,EAAE;QACxD,GAAG;QACH,WAAW;QACX,OAAO;KACR,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}