awc-zns-mtd 2.9.0 → 2.10.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 (38) hide show
  1. package/.github/workflows/ci.yml +148 -0
  2. package/.husky/pre-commit +2 -0
  3. package/.prettierignore +31 -0
  4. package/.prettierrc +13 -0
  5. package/IMPLEMENTATION_SUMMARY.md +410 -0
  6. package/PHASE_2_SUMMARY.md +289 -0
  7. package/README.md +114 -47
  8. package/SECURITY.md +58 -0
  9. package/eslint.config.js +70 -0
  10. package/jest.config.js +49 -0
  11. package/package.json +40 -14
  12. package/src/modules/custom-agents/cli/awc-agent.js +505 -372
  13. package/test/integration/cli/cli-commands.integration.test.js +101 -0
  14. package/test/setup.js +22 -0
  15. package/test/unit/commands/version.test.js +39 -0
  16. package/test/unit/config/config-manager.test.js +147 -0
  17. package/test/unit/utils/file-utils.test.js +177 -0
  18. package/test/unit/utils/validators.test.js +57 -0
  19. package/tools/cli/commands/init.js +556 -513
  20. package/tools/cli/commands/new-project.js +680 -659
  21. package/tools/cli/commands/validate.js +13 -13
  22. package/tools/cli/commands/version.js +5 -3
  23. package/tools/cli/utils/console-logger.js +39 -15
  24. package/tools/cli/utils/logger.js +176 -0
  25. package/tools/cli/utils/project-analyzer.js +33 -16
  26. package/tools/cli/utils/validators.js +144 -0
  27. package/tools/cli/utils/version.js +6 -2
  28. package/tools/config/config-manager.js +243 -0
  29. package/tools/version/changelog-manager.js +301 -288
  30. package/tools/version/update-checker.js +32 -32
  31. package/tools/version/version-bump.js +89 -90
  32. package/tools/version/version-manager.js +17 -7
  33. package/tsconfig.json +47 -0
  34. package/types/index.d.ts +206 -0
  35. package/tools/cli/commands/init-old.js +0 -147
  36. package/tools/cli/commands/new-project-broken.js +0 -1302
  37. package/tools/cli/commands/new-project-old.js +0 -1302
  38. package/tools/cli/commands/new-project.js.backup +0 -1302
@@ -1,1302 +0,0 @@
1
- /**
2
- * Comando: new
3
- * Crea un nuevo directorio de proyecto con configuración base AWC ZNS-MTD
4
- */
5
-
6
- const fs = require('fs-extra');
7
- const path = require('path');
8
- const chalk = require('chalk');
9
- const ora = require('ora');
10
- const inquirer = require('inquirer');
11
- const { displayLogo } = require('../utils/console-logger');
12
- const { getVersion } = require('../utils/version');
13
-
14
- /**
15
- * Comando principal para crear nuevo proyecto
16
- */
17
- async function newProjectCommand(projectName, options = {}) {
18
- displayLogo();
19
-
20
- console.log(chalk.cyan('\n🚀 Crear Nuevo Proyecto AWC ZNS-MTD\n'));
21
-
22
- // Preguntar nombre del proyecto si no se proporcionó
23
- if (!projectName) {
24
- const { name } = await inquirer.prompt([
25
- {
26
- type: 'input',
27
- name: 'name',
28
- message: '📦 Nombre del proyecto:',
29
- validate: (input) => {
30
- if (!input.trim()) return 'El nombre del proyecto es requerido';
31
- if (!/^[a-zA-Z0-9-_]+$/.test(input)) {
32
- return 'Solo se permiten letras, números, guiones y guiones bajos';
33
- }
34
- return true;
35
- }
36
- }
37
- ]);
38
- projectName = name;
39
- }
40
-
41
- // Verificar si el directorio ya existe
42
- const projectPath = path.join(process.cwd(), projectName);
43
- if (await fs.pathExists(projectPath)) {
44
- console.log(chalk.red(`\n❌ El directorio '${projectName}' ya existe.\n`));
45
- process.exit(1);
46
- }
47
-
48
- // Preguntar responsable del proyecto
49
- const { responsible, description, gitInit } = await inquirer.prompt([
50
- {
51
- type: 'input',
52
- name: 'responsible',
53
- message: '👤 Responsable del proyecto:',
54
- validate: (input) => {
55
- if (!input.trim()) return 'El responsable es requerido';
56
- return true;
57
- }
58
- },
59
- {
60
- type: 'input',
61
- name: 'description',
62
- message: '📝 Descripción breve (opcional):',
63
- default: `Proyecto ${projectName}`
64
- },
65
- {
66
- type: 'confirm',
67
- name: 'gitInit',
68
- message: '🔧 Inicializar repositorio Git?',
69
- default: true
70
- }
71
- ]);
72
-
73
- const spinner = ora('Creando estructura base del proyecto...').start();
74
-
75
- try {
76
- // 1. Crear directorio raíz del proyecto
77
- await fs.ensureDir(projectPath);
78
- spinner.text = `Directorio ${projectName} creado`;
79
-
80
- // 2. Crear estructura base mínima
81
- const baseDirectories = [
82
- '.awc/agents',
83
- '.awc/workflows',
84
- '.awc/templates',
85
- 'docs'
86
- ];
87
-
88
- for (const dir of baseDirectories) {
89
- await fs.ensureDir(path.join(projectPath, dir));
90
- }
91
- spinner.text = 'Estructura base creada';
92
-
93
- // 3. Copiar agentes base (4 agentes core)
94
- const srcAgentsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/agents');
95
- const destAgentsPath = path.join(projectPath, '.awc/agents');
96
-
97
- if (await fs.pathExists(srcAgentsPath)) {
98
- await fs.copy(srcAgentsPath, destAgentsPath);
99
- spinner.text = 'Agentes base copiados';
100
- }
101
-
102
- // 4. Copiar agentes especializados (22 agentes)
103
- const srcCustomAgentsPath = path.join(__dirname, '../../../src/modules/custom-agents/cli/.awc-agents');
104
- const destCustomAgentsPath = path.join(projectPath, '.awc/agents/specialized');
105
-
106
- if (await fs.pathExists(srcCustomAgentsPath)) {
107
- await fs.copy(srcCustomAgentsPath, destCustomAgentsPath);
108
- spinner.text = 'Agentes especializados copiados';
109
- }
110
-
111
- // 5. Copiar workflows
112
- const srcWorkflowsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/workflows');
113
- const destWorkflowsPath = path.join(projectPath, '.awc/workflows');
114
-
115
- if (await fs.pathExists(srcWorkflowsPath)) {
116
- await fs.copy(srcWorkflowsPath, destWorkflowsPath);
117
- spinner.text = 'Workflows copiados';
118
- }
119
-
120
- // 6. Copiar templates
121
- const srcTemplatesPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/templates');
122
- const destTemplatesPath = path.join(projectPath, '.awc/templates');
123
-
124
- if (await fs.pathExists(srcTemplatesPath)) {
125
- await fs.copy(srcTemplatesPath, destTemplatesPath);
126
- spinner.text = 'Templates copiados';
127
- }
128
-
129
- // 7. Crear archivo de configuración AWC
130
- const awcConfig = {
131
- version: getVersion(),
132
- createdAt: new Date().toISOString(),
133
- project: {
134
- name: projectName,
135
- description: description,
136
- responsible: responsible
137
- },
138
- projectType: null, // Se definirá con awc init
139
- initialized: false,
140
- preferences: {
141
- communication_language: 'Spanish',
142
- document_output_language: 'Spanish',
143
- code_language: 'English'
144
- },
145
- workflows: {
146
- current_phase: null,
147
- completed_phases: []
148
- }
149
- };
150
-
151
- await fs.writeJson(
152
- path.join(projectPath, '.awc/config.json'),
153
- awcConfig,
154
- { spaces: 2 }
155
- );
156
- spinner.text = 'Configuración AWC creada';
157
-
158
- // 8. Crear README.md del proyecto
159
- const readme = createReadmeContent(projectName, responsible, description);
160
- await fs.writeFile(path.join(projectPath, 'README.md'), readme);
161
- spinner.text = 'README.md creado';
162
-
163
- // 9. Crear .gitignore
164
- const gitignore = createGitignoreContent();
165
- await fs.writeFile(path.join(projectPath, '.gitignore'), gitignore);
166
- spinner.text = '.gitignore creado';
167
-
168
- // 10. Crear configuración de VS Code
169
- await createVSCodeConfig(projectPath, projectName);
170
- spinner.text = 'Configuración VS Code creada';
171
-
172
- // 11. Copiar copilot-instructions.md
173
- const githubDir = path.join(projectPath, '.github');
174
- await fs.ensureDir(githubDir);
175
- const templateCopilotPath = path.join(__dirname, '../../../templates/.github/copilot-instructions.md');
176
- if (await fs.pathExists(templateCopilotPath)) {
177
- await fs.copy(templateCopilotPath, path.join(githubDir, 'copilot-instructions.md'));
178
- spinner.text = 'GitHub Copilot instructions creadas';
179
- }
180
-
181
- // 12. Crear archivo NEXT_STEPS.md
182
- const nextSteps = createNextStepsContent(projectName);
183
- await fs.writeFile(path.join(projectPath, 'NEXT_STEPS.md'), nextSteps);
184
- spinner.text = 'Guía de próximos pasos creada';
185
-
186
- // 13. Inicializar Git si se solicitó
187
- if (gitInit) {
188
- const { execSync } = require('child_process');
189
- try {
190
- execSync('git init', { cwd: projectPath, stdio: 'ignore' });
191
- execSync('git add .', { cwd: projectPath, stdio: 'ignore' });
192
- execSync(`git commit -m "feat: Inicializar proyecto ${projectName} con AWC ZNS-MTD"`, {
193
- cwd: projectPath,
194
- stdio: 'ignore'
195
- });
196
- spinner.text = 'Repositorio Git inicializado';
197
- } catch (error) {
198
- // Git no está disponible o fallo, continuar sin git
199
- }
200
- }
201
-
202
- spinner.succeed(chalk.green('✅ Proyecto creado exitosamente'));
203
-
204
- // Mostrar resumen
205
- console.log(chalk.cyan('\n' + '═'.repeat(60)));
206
- console.log(chalk.cyan('📦 Proyecto Creado'));
207
- console.log(chalk.cyan('═'.repeat(60) + '\n'));
208
-
209
- console.log(`${chalk.gray('Nombre:')} ${chalk.green(projectName)}`);
210
- console.log(`${chalk.gray('Responsable:')} ${chalk.yellow(responsible)}`);
211
- console.log(`${chalk.gray('Ubicación:')} ${chalk.blue(projectPath)}`);
212
- console.log(`${chalk.gray('AWC Versión:')} ${chalk.yellow(getVersion())}\n`);
213
-
214
- // Próximos pasos
215
- console.log(chalk.cyan('📚 Próximos Pasos:\n'));
216
- console.log(` ${chalk.green('1.')} cd ${projectName}`);
217
- console.log(` ${chalk.green('2.')} awc init ${chalk.gray('# Inicializar tipo de proyecto')}`);
218
- console.log(` ${chalk.green('3.')} Leer ${chalk.yellow('NEXT_STEPS.md')} para más detalles\n`);
219
-
220
- console.log(chalk.yellow('⚠️ La estructura de fases se creará al ejecutar') + chalk.green(' awc init\n'));
221
-
222
- } catch (error) {
223
- spinner.fail(chalk.red('❌ Error creando proyecto'));
224
- throw error;
225
- }
226
- }
227
-
228
- /**
229
- * Crea el contenido del README.md
230
- */
231
- function createReadmeContent(projectName, responsible, description) {
232
- return `# ${projectName}
233
-
234
- > ${description}
235
-
236
- ## 📋 Información del Proyecto
237
-
238
- - **Responsable**: ${responsible}
239
- - **Metodología**: AWC ZNS-MTD (Zen, Neutro, Sistemático)
240
- - **Estado**: Pendiente de inicialización
241
-
242
- ## 🚀 Próximos Pasos
243
-
244
- Este proyecto ha sido creado con la estructura base de AWC ZNS-MTD.
245
-
246
- ### 1. Inicializar Tipo de Proyecto
247
-
248
- \`\`\`bash
249
- awc init
250
- \`\`\`
251
-
252
- El comando \`awc init\` te preguntará:
253
- - Tipo de proyecto (auditoría, desarrollo nuevo, migración, etc.)
254
- - Tecnologías a utilizar
255
- - Tipo de workflow (quick, standard, enterprise)
256
-
257
- Basado en tus respuestas, creará automáticamente:
258
- - ✅ Estructura de directorios por fase
259
- - ✅ Directorios client-docs específicos
260
- - ✅ Templates relevantes para tu proyecto
261
- - ✅ Workflows configurados
262
-
263
- ### 2. Comenzar a Trabajar
264
-
265
- Una vez inicializado, seguir las guías en cada fase del proyecto.
266
-
267
- ## 🔧 Configuración AWC
268
-
269
- El directorio \`.awc/\` contiene:
270
-
271
- - \`agents/\` - 4 agentes base + 22 agentes especializados
272
- - \`workflows/\` - 8 workflows completos
273
- - \`templates/\` - 7 templates profesionales
274
- - \`config.json\` - Configuración del proyecto
275
-
276
- ## 📝 Comandos Disponibles
277
-
278
- \`\`\`bash
279
- # Inicializar proyecto (siguiente paso)
280
- awc init
281
-
282
- # Ver estado del proyecto
283
- awc status
284
-
285
- # Validar estructura
286
- awc validate
287
-
288
- # Ver configuración
289
- awc config
290
- \`\`\`
291
-
292
- ---
293
-
294
- Generado con ❤️ usando AWC ZNS-MTD Method v${getVersion()}
295
- `;
296
- }
297
-
298
- // 2. Crear estructura estándar de directorios
299
- const directories = [
300
- // Fase 0: Comercial
301
- '01-comercial/01-prospection',
302
- '01-comercial/02-technical-proposal',
303
- '01-comercial/03-quotation',
304
- '01-comercial/04-contract',
305
- '01-comercial/docs/client-docs/requerimientos',
306
- '01-comercial/docs/client-docs/presentaciones',
307
- '01-comercial/docs/client-docs/contratos',
308
-
309
- // Fase 1: Inception
310
- '02-inception/01-kickoff',
311
- '02-inception/02-prd',
312
- '02-inception/03-backlog',
313
- '02-inception/04-release-planning',
314
- '02-inception/docs/client-docs/procesos',
315
- '02-inception/docs/client-docs/manuales',
316
- '02-inception/docs/client-docs/imagenes',
317
-
318
- // Fase 2: Análisis
319
- '03-analysis/01-code-audit',
320
- '03-analysis/02-architecture-review',
321
- '03-analysis/03-technical-debt',
322
- '03-analysis/04-recommendations',
323
- '03-analysis/docs/client-docs/arquitectura',
324
- '03-analysis/docs/client-docs/databases',
325
- '03-analysis/docs/client-docs/especificaciones',
326
-
327
- // Fase 3: Planificación
328
- '04-planning/01-sprint-planning',
329
- '04-planning/02-backlog-refinement',
330
- '04-planning/03-release-planning',
331
- '04-planning/04-roadmap',
332
- '04-planning/docs/client-docs/historias',
333
- '04-planning/docs/client-docs/estimaciones',
334
-
335
- // Fase 4: Desarrollo
336
- '05-development/src',
337
- '05-development/tests',
338
- '05-development/docs',
339
- '05-development/docs/client-docs/apis',
340
- '05-development/docs/client-docs/integraciones',
341
- '05-development/docs/client-docs/recursos',
342
-
343
- // Fase 5: QA
344
- '06-qa/test-plans',
345
- '06-qa/test-cases',
346
- '06-qa/test-results',
347
- '06-qa/bug-reports',
348
- '06-qa/docs/client-docs/criterios-aceptacion',
349
- '06-qa/docs/client-docs/escenarios-prueba',
350
-
351
- // Fase 6: Deployment
352
- '07-deployment/environments',
353
- '07-deployment/scripts',
354
- '07-deployment/logs',
355
- '07-deployment/docs/client-docs/infraestructura',
356
- '07-deployment/docs/client-docs/accesos',
357
-
358
- // Fase 7: Soporte
359
- '08-support/incidents',
360
- '08-support/bug-fixes',
361
- '08-support/maintenance',
362
- '08-support/docs/client-docs/incidentes',
363
- '08-support/docs/client-docs/cambios',
364
-
365
- // Documentación general
366
- 'docs/architecture',
367
- 'docs/adr',
368
- 'docs/api',
369
- 'docs/guides',
370
-
371
- // Configuración AWC
372
- '.awc/agents',
373
- '.awc/workflows',
374
- '.awc/templates'
375
- ];
376
-
377
- for (const dir of directories) {
378
- await fs.ensureDir(path.join(projectPath, dir));
379
- }
380
- spinner.text = 'Estructura de directorios creada';
381
-
382
- // 3. Copiar templates
383
- const srcTemplatesPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/templates');
384
- const destTemplatesPath = path.join(projectPath, '.awc/templates');
385
-
386
- if (await fs.pathExists(srcTemplatesPath)) {
387
- await fs.copy(srcTemplatesPath, destTemplatesPath);
388
- spinner.text = 'Templates copiados';
389
- }
390
-
391
- // 4. Copiar workflows
392
- const srcWorkflowsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/workflows');
393
- const destWorkflowsPath = path.join(projectPath, '.awc/workflows');
394
-
395
- if (await fs.pathExists(srcWorkflowsPath)) {
396
- await fs.copy(srcWorkflowsPath, destWorkflowsPath);
397
- spinner.text = 'Workflows copiados';
398
- }
399
-
400
- // 5. Copiar agentes
401
- const srcAgentsPath = path.join(__dirname, '../../../src/modules/awc-zns-mtd/agents');
402
- const destAgentsPath = path.join(projectPath, '.awc/agents');
403
-
404
- if (await fs.pathExists(srcAgentsPath)) {
405
- await fs.copy(srcAgentsPath, destAgentsPath);
406
- spinner.text = 'Agentes copiados';
407
- }
408
-
409
- // 6. Crear archivo de configuración AWC
410
- const awcConfig = {
411
- version: getVersion(),
412
- createdAt: new Date().toISOString(),
413
- project: {
414
- name: projectName,
415
- description: answers.description,
416
- type: answers.projectType,
417
- teamSize: answers.teamSize
418
- },
419
- preferences: {
420
- communication_language: 'Spanish',
421
- document_output_language: 'Spanish',
422
- code_language: 'English'
423
- },
424
- workflows: {
425
- current_phase: 'comercial',
426
- completed_phases: []
427
- }
428
- };
429
-
430
- await fs.writeJson(
431
- path.join(projectPath, '.awc/config.json'),
432
- awcConfig,
433
- { spaces: 2 }
434
- );
435
- spinner.text = 'Configuración AWC creada';
436
-
437
- // 7. Crear README.md del proyecto
438
- const readme = createReadmeContent(projectName, answers);
439
- await fs.writeFile(path.join(projectPath, 'README.md'), readme);
440
- spinner.text = 'README.md creado';
441
-
442
- // 8. Crear .gitignore
443
- const gitignore = createGitignoreContent();
444
- await fs.writeFile(path.join(projectPath, '.gitignore'), gitignore);
445
- spinner.text = '.gitignore creado';
446
-
447
- // 9. Crear archivo de inicio para cada fase
448
- await createPhaseGuides(projectPath);
449
- spinner.text = 'Guías de fase creadas';
450
-
451
- // 9.0. Crear README para client-docs
452
- await createClientDocsReadmes(projectPath);
453
- spinner.text = 'README de client-docs creados';
454
-
455
- // 9.1. Crear configuración de VS Code
456
- await createVSCodeConfig(projectPath);
457
- spinner.text = 'Configuración VS Code creada';
458
-
459
- // 9.2. Copiar copilot-instructions.md
460
- const githubDir = path.join(projectPath, '.github');
461
- await fs.ensureDir(githubDir);
462
- const templateCopilotPath = path.join(__dirname, '../../../templates/.github/copilot-instructions.md');
463
- if (await fs.pathExists(templateCopilotPath)) {
464
- await fs.copy(templateCopilotPath, path.join(githubDir, 'copilot-instructions.md'));
465
- spinner.text = 'GitHub Copilot instructions creadas';
466
- }
467
-
468
- // 10. Inicializar Git si se solicitó
469
- if (answers.gitInit) {
470
- const { execSync } = require('child_process');
471
- try {
472
- execSync('git init', { cwd: projectPath, stdio: 'ignore' });
473
- execSync('git add .', { cwd: projectPath, stdio: 'ignore' });
474
- execSync(`git commit -m "feat: Inicializar proyecto ${projectName} con AWC ZNS-MTD"`, {
475
- cwd: projectPath,
476
- stdio: 'ignore'
477
- });
478
- spinner.text = 'Repositorio Git inicializado';
479
- } catch (error) {
480
- // Git no está disponible o fallo, continuar sin git
481
- }
482
- }
483
-
484
- spinner.succeed(chalk.green('✅ Proyecto creado exitosamente'));
485
-
486
- // Mostrar resumen
487
- console.log(chalk.cyan('\n' + '═'.repeat(60)));
488
- console.log(chalk.cyan('📦 Resumen del Proyecto'));
489
- console.log(chalk.cyan('═'.repeat(60) + '\n'));
490
-
491
- console.log(`${chalk.gray('Nombre:')} ${chalk.green(projectName)}`);
492
- console.log(`${chalk.gray('Tipo:')} ${chalk.yellow(answers.projectType)}`);
493
- console.log(`${chalk.gray('Equipo:')} ${chalk.yellow(answers.teamSize)}`);
494
- console.log(`${chalk.gray('Ubicación:')} ${chalk.blue(projectPath)}`);
495
- console.log(`${chalk.gray('AWC Versión:')} ${chalk.yellow(getVersion())}\n`);
496
-
497
- // Próximos pasos
498
- console.log(chalk.cyan('📚 Próximos Pasos:\n'));
499
- console.log(` ${chalk.green('1.')} cd ${projectName}`);
500
- console.log(` ${chalk.green('2.')} Revisar ${chalk.yellow('01-comercial/START_HERE.md')}`);
501
- console.log(` ${chalk.green('3.')} Completar discovery notes y análisis de viabilidad`);
502
- console.log(` ${chalk.green('4.')} Ejecutar ${chalk.yellow('awc status')} para ver el progreso\n`);
503
-
504
- console.log(chalk.cyan('🎯 Flujo de Trabajo Recomendado:\n'));
505
- console.log(` ${chalk.gray('→')} Comercial (01-comercial/)`);
506
- console.log(` ${chalk.gray('→')} Inception (02-inception/)`);
507
- console.log(` ${chalk.gray('→')} Análisis (03-analysis/)`);
508
- console.log(` ${chalk.gray('→')} Planificación (04-planning/)`);
509
- console.log(` ${chalk.gray('→')} Desarrollo (05-development/)`);
510
- console.log(` ${chalk.gray('→')} QA (06-qa/)`);
511
- console.log(` ${chalk.gray('→')} Deployment (07-deployment/)`);
512
- console.log(` ${chalk.gray('→')} Soporte (08-support/)\n`);
513
-
514
- console.log(chalk.green('✨ ¡Listo para comenzar tu proyecto!\n'));
515
-
516
- } catch (error) {
517
- spinner.fail(chalk.red('❌ Error creando proyecto'));
518
- throw error;
519
- }
520
- }
521
-
522
- /**
523
- * Crea el contenido del README.md
524
- */
525
- function createReadmeContent(projectName, answers) {
526
- return `# ${projectName}
527
-
528
- > ${answers.description}
529
-
530
- ## 📋 Información del Proyecto
531
-
532
- - **Tipo**: ${answers.projectType}
533
- - **Equipo**: ${answers.teamSize}
534
- - **Metodología**: AWC ZNS-MTD (Zen, Neutro, Sistemático)
535
-
536
- ## 🚀 Fases del Proyecto
537
-
538
- Este proyecto sigue el método AWC ZNS-MTD con 8 fases completas:
539
-
540
- ### 📊 Fase 0: Comercial (01-comercial/)
541
- - Prospección y discovery
542
- - Oferta técnica
543
- - Cotización
544
- - Contrato
545
-
546
- ### 🎯 Fase 1: Inception (02-inception/)
547
- - Kickoff meeting
548
- - Product Requirements Document (PRD)
549
- - Backlog inicial
550
- - Release planning
551
-
552
- ### 🔍 Fase 2: Análisis (03-analysis/)
553
- - Code audit (si aplica)
554
- - Architecture review
555
- - Technical debt assessment
556
- - Recomendaciones
557
-
558
- ### 📅 Fase 3: Planificación (04-planning/)
559
- - Sprint planning
560
- - Backlog refinement
561
- - Release planning
562
- - Product roadmap
563
-
564
- ### 💻 Fase 4: Desarrollo (05-development/)
565
- - Implementación TDD
566
- - Code review
567
- - CI/CD
568
-
569
- ### ✅ Fase 5: QA (06-qa/)
570
- - Test planning
571
- - Automated testing
572
- - Manual testing
573
- - UAT
574
-
575
- ### 🚀 Fase 6: Deployment (07-deployment/)
576
- - Pre-deployment
577
- - Staging
578
- - Production
579
- - Post-deployment
580
-
581
- ### 🛠️ Fase 7: Soporte (08-support/)
582
- - Incident response
583
- - Bug fixing
584
- - Maintenance
585
- - Monitoring
586
-
587
- ## 📚 Documentación
588
-
589
- Toda la documentación del proyecto se encuentra en el directorio \`docs/\`:
590
-
591
- - \`docs/architecture/\` - Diagramas y decisiones arquitectónicas
592
- - \`docs/adr/\` - Architecture Decision Records
593
- - \`docs/api/\` - Documentación de APIs
594
- - \`docs/guides/\` - Guías de desarrollo y deployment
595
-
596
- ## 🔧 Configuración AWC
597
-
598
- El directorio \`.awc/\` contiene:
599
-
600
- - \`agents/\` - Agentes especializados AWC ZNS-MTD
601
- - \`workflows/\` - Workflows para cada fase
602
- - \`templates/\` - Templates de documentos
603
- - \`config.json\` - Configuración del proyecto
604
-
605
- ## 🎯 Estado Actual
606
-
607
- **Fase actual**: Comercial (inicio)
608
-
609
- Revisar \`01-comercial/START_HERE.md\` para comenzar.
610
-
611
- ## 📝 Comandos AWC
612
-
613
- \`\`\`bash
614
- # Ver estado del proyecto
615
- awc status
616
-
617
- # Validar estructura
618
- awc validate
619
-
620
- # Ver configuración
621
- awc config
622
- \`\`\`
623
-
624
- ---
625
-
626
- Generado con ❤️ usando AWC ZNS-MTD Method
627
- `;
628
- }
629
-
630
- /**
631
- * Crea el contenido del .gitignore
632
- */
633
- function createGitignoreContent() {
634
- return `# Dependencies
635
- node_modules/
636
- vendor/
637
- bower_components/
638
-
639
- # Build outputs
640
- dist/
641
- build/
642
- out/
643
- target/
644
- *.exe
645
- *.dll
646
- *.so
647
- *.dylib
648
-
649
- # IDE
650
- .vscode/
651
- .idea/
652
- *.swp
653
- *.swo
654
- *~
655
- .DS_Store
656
-
657
- # Logs
658
- logs/
659
- *.log
660
- npm-debug.log*
661
- yarn-debug.log*
662
- yarn-error.log*
663
-
664
- # Environment variables
665
- .env
666
- .env.local
667
- .env.*.local
668
-
669
- # OS
670
- Thumbs.db
671
- .DS_Store
672
-
673
- # Temporary files
674
- tmp/
675
- temp/
676
- *.tmp
677
-
678
- # Coverage
679
- coverage/
680
- *.lcov
681
- .nyc_output/
682
-
683
- # Confidential (keep locally, never commit)
684
- 01-comercial/04-contract/*.pdf
685
- **/confidential/
686
- **/*-confidential.*
687
- `;
688
- }
689
-
690
- /**
691
- * Crea guías de inicio para cada fase
692
- */
693
- async function createPhaseGuides(projectPath) {
694
- const phases = [
695
- {
696
- dir: '01-comercial',
697
- title: 'Fase 0: Comercial',
698
- content: `# 🎯 START HERE - Fase Comercial
699
-
700
- ## Objetivo
701
- Capturar requisitos del cliente, evaluar viabilidad y generar oferta comercial.
702
-
703
- ## Pasos a seguir
704
-
705
- ### 1. Discovery & Prospección
706
- 📂 Directorio: \`01-prospection/\`
707
-
708
- - [ ] Completar \`.awc/templates/discovery-notes.md\`
709
- - [ ] Identificar stakeholders clave
710
- - [ ] Entender el problema de negocio
711
- - [ ] Documentar contexto actual
712
-
713
- ### 2. Análisis de Viabilidad
714
- 📂 Directorio: \`01-prospection/\`
715
-
716
- - [ ] Completar \`.awc/templates/viabilidad.md\`
717
- - [ ] Evaluar viabilidad técnica
718
- - [ ] Evaluar viabilidad económica
719
- - [ ] Identificar riesgos principales
720
-
721
- ### 3. Oferta Técnica
722
- 📂 Directorio: \`02-technical-proposal/\`
723
-
724
- - [ ] Copiar template: \`.awc/templates/oferta-comercial.md\`
725
- - [ ] Definir solución propuesta
726
- - [ ] Especificar stack tecnológico
727
- - [ ] Definir alcance y exclusiones
728
-
729
- ### 4. Cotización
730
- 📂 Directorio: \`03-quotation/\`
731
-
732
- - [ ] Copiar template: \`.awc/templates/cotizacion.md\`
733
- - [ ] Estimar esfuerzo por fase
734
- - [ ] Calcular costos
735
- - [ ] Definir cronograma
736
-
737
- ### 5. Contrato (confidencial)
738
- 📂 Directorio: \`04-contract/\`
739
-
740
- - [ ] Negociar términos
741
- - [ ] Firmar contrato
742
- - [ ] Mover a siguiente fase
743
-
744
- ## ✅ Criterios de Salida
745
- - ✅ Contrato firmado
746
- - ✅ Cliente aprobó oferta y cotización
747
- - ✅ Equipo asignado
748
- - ✅ Fecha de kickoff definida
749
-
750
- ## ➡️ Siguiente Fase
751
- Una vez completado, pasar a **02-inception/**
752
- `
753
- },
754
- {
755
- dir: '02-inception',
756
- title: 'Fase 1: Inception',
757
- content: `# 🚀 START HERE - Fase Inception
758
-
759
- ## Objetivo
760
- Arranque formal del proyecto, definir PRD y backlog inicial.
761
-
762
- ## Pasos a seguir
763
-
764
- ### 1. Kickoff Meeting
765
- 📂 Directorio: \`01-kickoff/\`
766
-
767
- - [ ] Copiar template: \`.awc/templates/kickoff-agenda.md\`
768
- - [ ] Presentar equipo
769
- - [ ] Alinear expectativas
770
- - [ ] Definir canales de comunicación
771
-
772
- ### 2. Product Requirements Document (PRD)
773
- 📂 Directorio: \`02-prd/\`
774
-
775
- - [ ] Copiar template: \`.awc/templates/PRD-template.md\`
776
- - [ ] Documentar requisitos funcionales
777
- - [ ] Documentar requisitos no funcionales
778
- - [ ] Definir user personas
779
- - [ ] Mapear user journeys
780
-
781
- ### 3. Backlog Inicial
782
- 📂 Directorio: \`03-backlog/\`
783
-
784
- - [ ] Crear user stories
785
- - [ ] Priorizar backlog (MoSCoW)
786
- - [ ] Estimar user stories (Planning Poker)
787
- - [ ] Crear epic mapping
788
-
789
- ### 4. Release Planning
790
- 📂 Directorio: \`04-release-planning/\`
791
-
792
- - [ ] Definir MVP (release 1)
793
- - [ ] Planificar releases subsecuentes
794
- - [ ] Crear roadmap de producto
795
- - [ ] Definir milestones
796
-
797
- ## ✅ Criterios de Salida
798
- - ✅ PRD aprobado por stakeholders
799
- - ✅ Backlog priorizado y estimado
800
- - ✅ Release plan definido
801
- - ✅ Sprint 1 planificado
802
-
803
- ## ➡️ Siguiente Fase
804
- Dependiendo del proyecto:
805
- - Proyecto nuevo → **04-planning/** (skip análisis)
806
- - Proyecto existente → **03-analysis/**
807
- `
808
- },
809
- {
810
- dir: '05-development',
811
- title: 'Fase 4: Desarrollo',
812
- content: `# 💻 START HERE - Fase Desarrollo
813
-
814
- ## Objetivo
815
- Implementar user stories siguiendo TDD y mejores prácticas.
816
-
817
- ## Estructura
818
- \`\`\`
819
- 05-development/
820
- ├── src/ # Código fuente
821
- ├── tests/ # Tests (unit, integration, e2e)
822
- └── docs/ # Documentación técnica
823
- \`\`\`
824
-
825
- ## Pasos a seguir
826
-
827
- ### 1. Feature Kickoff
828
- - [ ] Seleccionar user story del sprint backlog
829
- - [ ] Revisar acceptance criteria
830
- - [ ] Diseño técnico (si es necesario)
831
- - [ ] Crear feature branch
832
-
833
- ### 2. Development (TDD)
834
- - [ ] **RED**: Escribir test que falla
835
- - [ ] **GREEN**: Implementar código mínimo para pasar test
836
- - [ ] **REFACTOR**: Mejorar código manteniendo tests en verde
837
- - [ ] Repetir ciclo
838
-
839
- ### 3. Code Review
840
- - [ ] Crear Pull Request
841
- - [ ] Solicitar revisión (mínimo 2 aprobadores)
842
- - [ ] Aplicar feedback
843
- - [ ] Aprobar PR
844
-
845
- ### 4. Integration
846
- - [ ] Merge a develop/main
847
- - [ ] CI/CD automático ejecuta tests
848
- - [ ] Deploy automático a dev/staging
849
-
850
- ## 🎯 Mejores Prácticas
851
- - ✅ Feature branches (feature/US-123-login)
852
- - ✅ Commits frecuentes y descriptivos
853
- - ✅ PRs pequeños (<400 líneas)
854
- - ✅ Code coverage >80%
855
- - ✅ SonarQube sin critical issues
856
-
857
- ## ➡️ Siguiente Fase
858
- Una vez features completas → **06-qa/**
859
- `
860
- }
861
- ];
862
-
863
- for (const phase of phases) {
864
- const filePath = path.join(projectPath, phase.dir, 'START_HERE.md');
865
- await fs.writeFile(filePath, phase.content);
866
- }
867
- }
868
-
869
- /**
870
- * Crea README.md en directorios client-docs
871
- */
872
- async function createClientDocsReadmes(projectPath) {
873
- const clientDocsReadmes = [
874
- {
875
- path: '01-comercial/docs/client-docs/README.md',
876
- content: `# 📄 Documentación del Cliente - Fase Comercial
877
-
878
- Este directorio contiene toda la documentación proporcionada por el cliente durante la fase comercial.
879
-
880
- ## 📂 Estructura
881
-
882
- ### requerimientos/
883
- Documentos de requerimientos del cliente:
884
- - PDFs con especificaciones funcionales
885
- - Word con listados de requerimientos
886
- - Excel con matrices de requerimientos
887
- - Presentaciones con necesidades del negocio
888
-
889
- ### presentaciones/
890
- Presentaciones del cliente:
891
- - Decks ejecutivos
892
- - Presentaciones de producto actual
893
- - Material de marketing
894
- - Diagramas de flujo de negocio
895
-
896
- ### contratos/
897
- Documentos contractuales (CONFIDENCIAL):
898
- - Contratos firmados
899
- - NDAs
900
- - SOWs (Statement of Work)
901
- - Anexos contractuales
902
-
903
- ⚠️ **IMPORTANTE**: Los archivos en \`contratos/\` están en .gitignore por defecto.
904
-
905
- ## 📝 Buenas Prácticas
906
-
907
- 1. **Nomenclatura**: Usar formato \`YYYYMMDD-nombre-descriptivo.ext\`
908
- - ✅ \`20260107-requerimientos-funcionales-v1.pdf\`
909
- - ❌ \`documento.pdf\`
910
-
911
- 2. **Versionado**: Incluir versión en el nombre
912
- - \`requerimientos-v1.0.docx\`
913
- - \`requerimientos-v1.1.docx\`
914
-
915
- 3. **Organización**: Un archivo por tipo de documento
916
- - No mezclar requerimientos con contratos
917
- - Mantener presentaciones separadas
918
-
919
- 4. **Respaldo**: Mantener originales intactos
920
- - No editar documentos del cliente
921
- - Crear copias de trabajo si es necesario
922
- `
923
- },
924
- {
925
- path: '02-inception/docs/client-docs/README.md',
926
- content: `# 📄 Documentación del Cliente - Fase Inception
927
-
928
- Este directorio contiene la documentación del cliente relevante para el inicio del proyecto.
929
-
930
- ## 📂 Estructura
931
-
932
- ### procesos/
933
- Diagramas y documentación de procesos actuales:
934
- - Diagramas de flujo (BPMN, Visio)
935
- - Mapas de procesos de negocio
936
- - Descripciones de workflows actuales
937
- - Casos de uso documentados
938
-
939
- ### manuales/
940
- Manuales de usuario de sistemas existentes:
941
- - Manuales de usuario en PDF/Word
942
- - Guías de operación
943
- - Documentación de sistemas legacy
944
- - FAQs del sistema actual
945
-
946
- ### imagenes/
947
- Material visual del cliente:
948
- - Screenshots de sistemas actuales
949
- - Wireframes/mockups proporcionados
950
- - Logos y branding guidelines
951
- - Fotografías de procesos físicos
952
- - Diagramas y esquemas
953
-
954
- ## 📝 Uso Recomendado
955
-
956
- **procesos/**: Usar para entender flujos actuales y diseñar mejoras
957
- **manuales/**: Referencia para features esperados en el nuevo sistema
958
- **imagenes/**: Material visual para PRD y documentación
959
-
960
- ## ⚠️ Importante
961
- - Estos documentos son REFERENCIA, no especificaciones finales
962
- - Validar con stakeholders antes de implementar
963
- - Mantener trazabilidad con el PRD
964
- `
965
- },
966
- {
967
- path: '03-analysis/docs/client-docs/README.md',
968
- content: `# 📄 Documentación del Cliente - Fase Análisis
969
-
970
- Documentación técnica del cliente para auditoría y análisis.
971
-
972
- ## 📂 Estructura
973
-
974
- ### arquitectura/
975
- Diagramas arquitectónicos actuales:
976
- - Diagramas de arquitectura (C4, UML)
977
- - Diagramas de red e infraestructura
978
- - Diagramas de componentes
979
- - Documentos de diseño técnico
980
-
981
- ### databases/
982
- Documentación de bases de datos:
983
- - Esquemas de base de datos (ERD)
984
- - Modelos de datos en PDF/Visio
985
- - Scripts SQL de estructura
986
- - Diccionarios de datos
987
- - Excel con tablas y campos
988
-
989
- ### especificaciones/
990
- Especificaciones técnicas:
991
- - Documentos de APIs existentes (Swagger, Postman)
992
- - Especificaciones de interfaces
993
- - Protocolos de integración
994
- - Documentación de servicios web
995
-
996
- ## 🎯 Objetivo
997
-
998
- Entender la arquitectura actual para:
999
- - Identificar technical debt
1000
- - Planificar migraciones
1001
- - Diseñar integraciones
1002
- - Evaluar impacto de cambios
1003
-
1004
- ## 📊 Artefactos Generados
1005
-
1006
- A partir de esta documentación, el equipo AWC generará:
1007
- - Reporte de auditoría de código
1008
- - Análisis de arquitectura
1009
- - Assessment de technical debt
1010
- - Recomendaciones de mejora
1011
- `
1012
- },
1013
- {
1014
- path: '04-planning/docs/client-docs/README.md',
1015
- content: `# 📄 Documentación del Cliente - Fase Planificación
1016
-
1017
- Documentación del cliente para planificación de sprints.
1018
-
1019
- ## 📂 Estructura
1020
-
1021
- ### historias/
1022
- User stories y casos de uso del cliente:
1023
- - Word/Excel con historias de usuario
1024
- - Casos de uso detallados
1025
- - Escenarios de negocio
1026
- - Criterios de aceptación iniciales
1027
-
1028
- ### estimaciones/
1029
- Material para estimación:
1030
- - Hojas de cálculo con estimaciones del cliente
1031
- - Referencias de proyectos similares
1032
- - Benchmarks de performance esperado
1033
- - Constraints de tiempo/presupuesto
1034
-
1035
- ## 💡 Uso
1036
-
1037
- Esta documentación ayuda a:
1038
- - Refinar user stories del backlog
1039
- - Validar estimaciones del equipo
1040
- - Alinear expectativas de tiempos
1041
- - Priorizar features según negocio
1042
- `
1043
- },
1044
- {
1045
- path: '05-development/docs/client-docs/README.md',
1046
- content: `# 📄 Documentación del Cliente - Fase Desarrollo
1047
-
1048
- Recursos técnicos del cliente necesarios para implementación.
1049
-
1050
- ## 📂 Estructura
1051
-
1052
- ### apis/
1053
- Documentación de APIs a integrar:
1054
- - Swagger/OpenAPI specs
1055
- - Colecciones de Postman
1056
- - WSDL de servicios SOAP
1057
- - Documentación de endpoints REST
1058
- - Credenciales de acceso (sandbox/test)
1059
-
1060
- ### integraciones/
1061
- Sistemas externos a integrar:
1062
- - Manuales de integración
1063
- - Diagramas de flujo de integración
1064
- - Mappings de campos
1065
- - Ejemplos de payloads XML/JSON
1066
- - Certificados SSL/TLS
1067
-
1068
- ### recursos/
1069
- Assets para la aplicación:
1070
- - Imágenes para UI (logos, iconos)
1071
- - Archivos de diseño (Figma, Sketch exports)
1072
- - Fuentes corporativas
1073
- - Guidelines de branding
1074
- - Templates de documentos
1075
-
1076
- ## 🔧 Integración
1077
-
1078
- **Antes de integrar**:
1079
- 1. Validar credenciales en ambiente de pruebas
1080
- 2. Revisar rate limits y SLAs
1081
- 3. Documentar endpoints en Swagger local
1082
- 4. Crear tests de integración
1083
-
1084
- **Durante desarrollo**:
1085
- - Mantener colecciones de Postman actualizadas
1086
- - Documentar cambios en APIs
1087
- - Reportar issues de integración al cliente
1088
- `
1089
- },
1090
- {
1091
- path: '06-qa/docs/client-docs/README.md',
1092
- content: `# 📄 Documentación del Cliente - Fase QA
1093
-
1094
- Material del cliente para validación y pruebas.
1095
-
1096
- ## 📂 Estructura
1097
-
1098
- ### criterios-aceptacion/
1099
- Criterios de aceptación del cliente:
1100
- - Excel/Word con criterios de aceptación
1101
- - Checklist de features esperados
1102
- - Requerimientos no funcionales (SLA, performance)
1103
- - Escenarios de validación de negocio
1104
-
1105
- ### escenarios-prueba/
1106
- Escenarios de prueba proporcionados:
1107
- - Casos de prueba del cliente
1108
- - Datos de prueba (datasets CSV/Excel)
1109
- - Scripts de carga de datos
1110
- - Escenarios end-to-end prioritarios
1111
-
1112
- ## ✅ Validación
1113
-
1114
- Esta documentación se usa para:
1115
- 1. Crear test cases alineados con expectativas
1116
- 2. Generar datos de prueba realistas
1117
- 3. Validar acceptance criteria
1118
- 4. Preparar UAT con el cliente
1119
-
1120
- ## 📋 UAT (User Acceptance Testing)
1121
-
1122
- Coordinar con cliente:
1123
- - [ ] Ambiente de UAT preparado
1124
- - [ ] Usuarios de prueba creados
1125
- - [ ] Datasets cargados
1126
- - [ ] Sesiones de UAT agendadas
1127
- - [ ] Formulario de signoff preparado
1128
- `
1129
- },
1130
- {
1131
- path: '07-deployment/docs/client-docs/README.md',
1132
- content: `# 📄 Documentación del Cliente - Fase Deployment
1133
-
1134
- Información de infraestructura del cliente para deployment.
1135
-
1136
- ## 📂 Estructura
1137
-
1138
- ### infraestructura/
1139
- Documentación de infraestructura del cliente:
1140
- - Diagramas de red
1141
- - Especificaciones de servidores
1142
- - Configuraciones de firewalls
1143
- - IPs y rangos asignados
1144
- - Políticas de seguridad
1145
-
1146
- ### accesos/
1147
- Credenciales y accesos (CONFIDENCIAL):
1148
- - Credenciales de servidores
1149
- - VPN configs
1150
- - Certificados SSL
1151
- - API keys de producción
1152
- - Passwords de bases de datos
1153
-
1154
- ⚠️ **CRÍTICO**:
1155
- - Archivos en esta carpeta están en .gitignore
1156
- - Usar gestor de secretos (Azure Key Vault, AWS Secrets Manager)
1157
- - NUNCA commitear credenciales al repositorio
1158
-
1159
- ## 🚀 Pre-Deployment Checklist
1160
-
1161
- - [ ] Accesos a servidores validados
1162
- - [ ] VPN configurada y probada
1163
- - [ ] DNS apuntando correctamente
1164
- - [ ] Certificados SSL instalados
1165
- - [ ] Firewall rules configurados
1166
- - [ ] Backup de producción realizado
1167
- `
1168
- },
1169
- {
1170
- path: '08-support/docs/client-docs/README.md',
1171
- content: `# 📄 Documentación del Cliente - Fase Soporte
1172
-
1173
- Documentación de incidentes y solicitudes del cliente.
1174
-
1175
- ## 📂 Estructura
1176
-
1177
- ### incidentes/
1178
- Reportes de incidentes del cliente:
1179
- - Screenshots de errores
1180
- - Logs proporcionados por el cliente
1181
- - Videos reproduciendo issues
1182
- - Reportes de usuarios finales
1183
-
1184
- ### cambios/
1185
- Solicitudes de cambio:
1186
- - Change requests (PDFs/Word)
1187
- - Nuevos requerimientos post-lanzamiento
1188
- - Solicitudes de mejoras
1189
- - Feedback de usuarios
1190
-
1191
- ## 🎫 Gestión de Incidentes
1192
-
1193
- **Flujo recomendado**:
1194
- 1. Cliente reporta → Copiar evidencia a \`incidentes/\`
1195
- 2. Crear ticket en sistema de tracking
1196
- 3. Reproducir y documentar en \`08-support/incidents/\`
1197
- 4. Resolver y validar con cliente
1198
-
1199
- **Nomenclatura**:
1200
- - \`INC-001-descripcion-corta/\` (subdirectorio por incidente)
1201
- - Dentro: screenshots, logs, análisis, solución
1202
-
1203
- ## 📝 Change Requests
1204
-
1205
- **Evaluación**:
1206
- 1. Cliente envía CR → Guardar en \`cambios/\`
1207
- 2. Equipo analiza impacto (tiempo/costo)
1208
- 3. Aprobar/rechazar con justificación
1209
- 4. Si aprobado → Crear user stories en backlog
1210
- `
1211
- }
1212
- ];
1213
-
1214
- for (const readme of clientDocsReadmes) {
1215
- const filePath = path.join(projectPath, readme.path);
1216
- await fs.writeFile(filePath, readme.content);
1217
- }
1218
- }
1219
-
1220
- /**
1221
- * Crea configuración de VS Code para cargar AWC automáticamente
1222
- */
1223
- async function createVSCodeConfig(projectPath) {
1224
- const vscodeDir = path.join(projectPath, '.vscode');
1225
- await fs.ensureDir(vscodeDir);
1226
-
1227
- // settings.json - Configuración de workspace
1228
- const settings = {
1229
- "github.copilot.enable": {
1230
- "*": true
1231
- },
1232
- "github.copilot.advanced": {},
1233
- "files.associations": {
1234
- "*.agent.yaml": "yaml",
1235
- "copilot-instructions.md": "markdown"
1236
- },
1237
- "files.exclude": {
1238
- "**/.git": true,
1239
- "**/.DS_Store": true,
1240
- "**/node_modules": true
1241
- },
1242
- "search.exclude": {
1243
- "**/node_modules": true,
1244
- "**/bower_components": true,
1245
- "**/*.code-search": true
1246
- },
1247
- "awc-zns-mtd.enabled": true,
1248
- "awc-zns-mtd.autoLoadInstructions": true
1249
- };
1250
-
1251
- await fs.writeJson(
1252
- path.join(vscodeDir, 'settings.json'),
1253
- settings,
1254
- { spaces: 2 }
1255
- );
1256
-
1257
- // extensions.json - Extensiones recomendadas
1258
- const extensions = {
1259
- "recommendations": [
1260
- "github.copilot",
1261
- "github.copilot-chat",
1262
- "redhat.vscode-yaml",
1263
- "yzhang.markdown-all-in-one"
1264
- ]
1265
- };
1266
-
1267
- await fs.writeJson(
1268
- path.join(vscodeDir, 'extensions.json'),
1269
- extensions,
1270
- { spaces: 2 }
1271
- );
1272
-
1273
- // AWC-ZNS-MTD.code-workspace - Workspace file
1274
- const workspace = {
1275
- "folders": [
1276
- {
1277
- "path": ".",
1278
- "name": path.basename(projectPath)
1279
- }
1280
- ],
1281
- "settings": {
1282
- "github.copilot.enable": {
1283
- "*": true
1284
- },
1285
- "awc-zns-mtd.enabled": true
1286
- },
1287
- "extensions": {
1288
- "recommendations": [
1289
- "github.copilot",
1290
- "github.copilot-chat"
1291
- ]
1292
- }
1293
- };
1294
-
1295
- await fs.writeJson(
1296
- path.join(projectPath, `${path.basename(projectPath)}.code-workspace`),
1297
- workspace,
1298
- { spaces: 2 }
1299
- );
1300
- }
1301
-
1302
- module.exports = { newProjectCommand };