ai-first-cli 1.3.5 → 1.3.8

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 (126) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/README.es.md +68 -0
  3. package/README.md +53 -15
  4. package/ai/graph/knowledge-graph.json +1 -1
  5. package/ai-context/index-state.json +86 -2
  6. package/dist/analyzers/architecture.d.ts.map +1 -1
  7. package/dist/analyzers/architecture.js +72 -5
  8. package/dist/analyzers/architecture.js.map +1 -1
  9. package/dist/analyzers/entrypoints.d.ts.map +1 -1
  10. package/dist/analyzers/entrypoints.js +253 -0
  11. package/dist/analyzers/entrypoints.js.map +1 -1
  12. package/dist/analyzers/symbols.d.ts.map +1 -1
  13. package/dist/analyzers/symbols.js +47 -2
  14. package/dist/analyzers/symbols.js.map +1 -1
  15. package/dist/analyzers/techStack.d.ts.map +1 -1
  16. package/dist/analyzers/techStack.js +86 -0
  17. package/dist/analyzers/techStack.js.map +1 -1
  18. package/dist/commands/ai-first.d.ts.map +1 -1
  19. package/dist/commands/ai-first.js +78 -4
  20. package/dist/commands/ai-first.js.map +1 -1
  21. package/dist/config/configLoader.d.ts +6 -0
  22. package/dist/config/configLoader.d.ts.map +1 -0
  23. package/dist/config/configLoader.js +232 -0
  24. package/dist/config/configLoader.js.map +1 -0
  25. package/dist/config/index.d.ts +3 -0
  26. package/dist/config/index.d.ts.map +1 -0
  27. package/dist/config/index.js +2 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/config/types.d.ts +101 -0
  30. package/dist/config/types.d.ts.map +1 -0
  31. package/dist/config/types.js +2 -0
  32. package/dist/config/types.js.map +1 -0
  33. package/dist/core/content/contentProcessor.d.ts +4 -0
  34. package/dist/core/content/contentProcessor.d.ts.map +1 -0
  35. package/dist/core/content/contentProcessor.js +235 -0
  36. package/dist/core/content/contentProcessor.js.map +1 -0
  37. package/dist/core/content/index.d.ts +3 -0
  38. package/dist/core/content/index.d.ts.map +1 -0
  39. package/dist/core/content/index.js +2 -0
  40. package/dist/core/content/index.js.map +1 -0
  41. package/dist/core/content/types.d.ts +32 -0
  42. package/dist/core/content/types.d.ts.map +1 -0
  43. package/dist/core/content/types.js +2 -0
  44. package/dist/core/content/types.js.map +1 -0
  45. package/dist/core/gitAnalyzer.d.ts +14 -0
  46. package/dist/core/gitAnalyzer.d.ts.map +1 -1
  47. package/dist/core/gitAnalyzer.js +98 -0
  48. package/dist/core/gitAnalyzer.js.map +1 -1
  49. package/dist/core/multiRepo/index.d.ts +3 -0
  50. package/dist/core/multiRepo/index.d.ts.map +1 -0
  51. package/dist/core/multiRepo/index.js +2 -0
  52. package/dist/core/multiRepo/index.js.map +1 -0
  53. package/dist/core/multiRepo/multiRepoScanner.d.ts +18 -0
  54. package/dist/core/multiRepo/multiRepoScanner.d.ts.map +1 -0
  55. package/dist/core/multiRepo/multiRepoScanner.js +131 -0
  56. package/dist/core/multiRepo/multiRepoScanner.js.map +1 -0
  57. package/dist/core/rag/index.d.ts +3 -0
  58. package/dist/core/rag/index.d.ts.map +1 -0
  59. package/dist/core/rag/index.js +2 -0
  60. package/dist/core/rag/index.js.map +1 -0
  61. package/dist/core/rag/vectorIndex.d.ts +28 -0
  62. package/dist/core/rag/vectorIndex.d.ts.map +1 -0
  63. package/dist/core/rag/vectorIndex.js +71 -0
  64. package/dist/core/rag/vectorIndex.js.map +1 -0
  65. package/dist/mcp/index.d.ts +2 -0
  66. package/dist/mcp/index.d.ts.map +1 -0
  67. package/dist/mcp/index.js +2 -0
  68. package/dist/mcp/index.js.map +1 -0
  69. package/dist/mcp/server.d.ts +7 -0
  70. package/dist/mcp/server.d.ts.map +1 -0
  71. package/dist/mcp/server.js +154 -0
  72. package/dist/mcp/server.js.map +1 -0
  73. package/dist/utils/fileUtils.d.ts.map +1 -1
  74. package/dist/utils/fileUtils.js +5 -0
  75. package/dist/utils/fileUtils.js.map +1 -1
  76. package/docs/planning/evaluator-v1.0.0/README.md +112 -0
  77. package/docs/planning/evaluator-v1.0.0/improvements_plan_2026-03-28.md +237 -0
  78. package/package.json +13 -3
  79. package/src/analyzers/architecture.ts +75 -6
  80. package/src/analyzers/entrypoints.ts +285 -0
  81. package/src/analyzers/symbols.ts +52 -2
  82. package/src/analyzers/techStack.ts +90 -0
  83. package/src/commands/ai-first.ts +83 -4
  84. package/src/config/configLoader.ts +274 -0
  85. package/src/config/index.ts +27 -0
  86. package/src/config/types.ts +117 -0
  87. package/src/core/content/contentProcessor.ts +292 -0
  88. package/src/core/content/index.ts +9 -0
  89. package/src/core/content/types.ts +35 -0
  90. package/src/core/gitAnalyzer.ts +130 -0
  91. package/src/core/multiRepo/index.ts +2 -0
  92. package/src/core/multiRepo/multiRepoScanner.ts +177 -0
  93. package/src/core/rag/index.ts +2 -0
  94. package/src/core/rag/vectorIndex.ts +105 -0
  95. package/src/mcp/index.ts +1 -0
  96. package/src/mcp/server.ts +179 -0
  97. package/src/utils/fileUtils.ts +5 -0
  98. package/tests/entrypoints-languages.test.ts +373 -0
  99. package/tests/framework-detection.test.ts +296 -0
  100. package/tests/v1.3.8-integration.test.ts +361 -0
  101. package/BETA_EVALUATION_REPORT.md +0 -151
  102. package/ai-context/context/flows/App.json +0 -17
  103. package/ai-context/context/flows/DashboardPage.json +0 -14
  104. package/ai-context/context/flows/LoginPage.json +0 -14
  105. package/ai-context/context/flows/admin.json +0 -10
  106. package/ai-context/context/flows/androidresources.json +0 -11
  107. package/ai-context/context/flows/authController.json +0 -14
  108. package/ai-context/context/flows/entrypoints.json +0 -9
  109. package/ai-context/context/flows/fastapiAdapter.json +0 -14
  110. package/ai-context/context/flows/fastapiadapter.json +0 -11
  111. package/ai-context/context/flows/index.json +0 -19
  112. package/ai-context/context/flows/indexer.json +0 -9
  113. package/ai-context/context/flows/indexstate.json +0 -9
  114. package/ai-context/context/flows/init.json +0 -22
  115. package/ai-context/context/flows/main.json +0 -18
  116. package/ai-context/context/flows/mainactivity.json +0 -9
  117. package/ai-context/context/flows/models.json +0 -15
  118. package/ai-context/context/flows/posts.json +0 -15
  119. package/ai-context/context/flows/repoMapper.json +0 -20
  120. package/ai-context/context/flows/repomapper.json +0 -11
  121. package/ai-context/context/flows/serializers.json +0 -10
  122. package/ai-context-evaluation-report-1774223059505.md +0 -206
  123. package/dist/scripts/ai-context-evaluator.js +0 -367
  124. package/quick-evaluation-report-1774396002305.md +0 -64
  125. package/quick-evaluator.ts +0 -200
  126. package/scripts/ai-context-evaluator.ts +0 -440
@@ -0,0 +1,154 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
+ import { runAIFirst } from '../commands/ai-first.js';
5
+ import { generateIndex } from '../core/indexer.js';
6
+ export function startMCPServer(options = {}) {
7
+ const rootDir = options.rootDir || process.cwd();
8
+ const aiDir = options.aiDir || `${rootDir}/ai-context`;
9
+ const server = new Server({
10
+ name: 'ai-first-cli',
11
+ version: '1.4.0',
12
+ }, {
13
+ capabilities: {
14
+ tools: {},
15
+ },
16
+ });
17
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
18
+ return {
19
+ tools: [
20
+ {
21
+ name: 'generate_context',
22
+ description: 'Generate AI context for the repository or a specific module',
23
+ inputSchema: {
24
+ type: 'object',
25
+ properties: {
26
+ module: {
27
+ type: 'string',
28
+ description: 'Optional module path to generate context for (e.g., "src/auth")',
29
+ },
30
+ preset: {
31
+ type: 'string',
32
+ enum: ['full', 'quick', 'api', 'docs'],
33
+ description: 'Preset to use for context generation',
34
+ },
35
+ },
36
+ },
37
+ },
38
+ {
39
+ name: 'query_symbols',
40
+ description: 'Query symbols (functions, classes, interfaces) in the indexed repository',
41
+ inputSchema: {
42
+ type: 'object',
43
+ properties: {
44
+ query: {
45
+ type: 'string',
46
+ description: 'Search query for symbols',
47
+ },
48
+ type: {
49
+ type: 'string',
50
+ enum: ['function', 'class', 'interface', 'variable', 'all'],
51
+ description: 'Type of symbol to search for',
52
+ },
53
+ },
54
+ required: ['query'],
55
+ },
56
+ },
57
+ {
58
+ name: 'get_architecture',
59
+ description: 'Get the architecture analysis of the project',
60
+ inputSchema: {
61
+ type: 'object',
62
+ properties: {
63
+ format: {
64
+ type: 'string',
65
+ enum: ['summary', 'detailed'],
66
+ description: 'Level of detail for the architecture report',
67
+ },
68
+ },
69
+ },
70
+ },
71
+ ],
72
+ };
73
+ });
74
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
75
+ const { name, arguments: args } = request.params;
76
+ try {
77
+ switch (name) {
78
+ case 'generate_context': {
79
+ const result = await runAIFirst({
80
+ rootDir,
81
+ outputDir: aiDir,
82
+ });
83
+ return {
84
+ content: [
85
+ {
86
+ type: 'text',
87
+ text: JSON.stringify({
88
+ success: result.success,
89
+ filesCreated: result.filesCreated,
90
+ message: result.success
91
+ ? `Generated context in ${aiDir}`
92
+ : `Error: ${result.error}`,
93
+ }, null, 2),
94
+ },
95
+ ],
96
+ };
97
+ }
98
+ case 'query_symbols': {
99
+ const query = args?.query;
100
+ const symbolType = args?.type || 'all';
101
+ const index = generateIndex(rootDir, aiDir);
102
+ return {
103
+ content: [
104
+ {
105
+ type: 'text',
106
+ text: JSON.stringify({
107
+ query,
108
+ type: symbolType,
109
+ results: [],
110
+ message: `Symbol query executed for "${query}"`,
111
+ }, null, 2),
112
+ },
113
+ ],
114
+ };
115
+ }
116
+ case 'get_architecture': {
117
+ const format = args?.format || 'summary';
118
+ return {
119
+ content: [
120
+ {
121
+ type: 'text',
122
+ text: JSON.stringify({
123
+ format,
124
+ rootDir,
125
+ message: 'Architecture analysis available',
126
+ }, null, 2),
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ default:
132
+ throw new Error(`Unknown tool: ${name}`);
133
+ }
134
+ }
135
+ catch (error) {
136
+ return {
137
+ content: [
138
+ {
139
+ type: 'text',
140
+ text: JSON.stringify({
141
+ error: error instanceof Error ? error.message : String(error),
142
+ }, null, 2),
143
+ },
144
+ ],
145
+ isError: true,
146
+ };
147
+ }
148
+ });
149
+ const transport = new StdioServerTransport();
150
+ server.connect(transport);
151
+ console.error('AI-First MCP Server running on stdio');
152
+ }
153
+ export { startMCPServer as startMCP };
154
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,wBAAwB,UAkBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,UA6BtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,eAAe,GAAE,MAAM,EAA6B,EACpD,iBAAiB,GAAE,MAAM,EAA+B,GACvD,MAAM,EAAE,CAgCV;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGtE"}
1
+ {"version":3,"file":"fileUtils.d.ts","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,wBAAwB,UAuBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,UA6BtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,eAAe,GAAE,MAAM,EAA6B,EACpD,iBAAiB,GAAE,MAAM,EAA+B,GACvD,MAAM,EAAE,CAgCV;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGtE"}
@@ -21,6 +21,11 @@ export const DEFAULT_EXCLUDE_PATTERNS = [
21
21
  "target",
22
22
  ".cache",
23
23
  ".DS_Store",
24
+ "test-projects",
25
+ ".ai-dev",
26
+ ".ai-dev-out",
27
+ "ai-context",
28
+ ".ai-first-ignore",
24
29
  ];
25
30
  /**
26
31
  * File extensions to include in scanning
@@ -1 +1 @@
1
- {"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileUtils.js","sourceRoot":"","sources":["../../src/utils/fileUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ # Evaluator v1.0.0 - Planes de Mejora
2
+
3
+ Este directorio contiene los planes de mejora generados por el AI-First Evaluator v1.0.0.
4
+
5
+ ## Estructura de Archivos
6
+
7
+ ```
8
+ evaluator-v1.0.0/
9
+ ├── README.md # Este archivo
10
+ ├── improvements_plan_YYYY-MM-DD.md # Plan de mejoras específico
11
+ └── [futuros planes...]
12
+ ```
13
+
14
+ ## Convención de Nombres
15
+
16
+ Los archivos de plan de mejoras siguen el formato:
17
+ ```
18
+ improvements_plan_<fecha>.md
19
+ ```
20
+
21
+ Ejemplos:
22
+ - `improvements_plan_2026-03-28.md`
23
+ - `improvements_plan_2026-04-15.md`
24
+ - `improvements_plan_2026-05-01.md`
25
+
26
+ ## Template para Nuevas Evaluaciones
27
+
28
+ Para crear un nuevo plan de mejoras:
29
+
30
+ 1. **Ejecutar el evaluator:**
31
+ ```bash
32
+ npm run evaluate:quick
33
+ ```
34
+
35
+ 2. **Copiar el template:**
36
+ ```bash
37
+ cp improvements_plan_2026-03-28.md improvements_plan_$(date +%Y-%m-%d).md
38
+ ```
39
+
40
+ 3. **Actualizar campos marcados:**
41
+ - Fecha de evaluación
42
+ - Proyecto evaluado
43
+ - Score obtenido
44
+ - Hallazgos específicos
45
+ - Owners y deadlines
46
+
47
+ ## Contenido del Plan de Mejoras
48
+
49
+ Cada documento incluye:
50
+
51
+ 1. **Resumen Ejecutivo**
52
+ - Score total y métricas
53
+ - Distribución de puntos por perspectiva
54
+ - Estado general (PASS/FAIL)
55
+
56
+ 2. **Fortalezas**
57
+ - Qué se está haciendo bien
58
+ - Qué mantener
59
+
60
+ 3. **Áreas de Mejora**
61
+ - Priorizadas por impacto
62
+ - Con categorías (IMPLEMENTED, USER_ACTION, etc.)
63
+ - Incluyen templates de solución
64
+
65
+ 4. **Plan de Acción**
66
+ - Tablas con tareas, owners y deadlines
67
+ - Separadas por prioridad
68
+
69
+ 5. **Proyección de Mejora**
70
+ - Score actual vs proyectado
71
+ - ROI estimado
72
+
73
+ 6. **Checklist de Seguimiento**
74
+ - Implementación
75
+ - Verificación
76
+ - Documentación
77
+
78
+ ## Versionado
79
+
80
+ Cuando se actualice el evaluator a una nueva versión (ej: v1.1.0, v2.0.0):
81
+
82
+ 1. Crear nuevo directorio: `evaluator-v1.1.0/`
83
+ 2. Copiar template actualizado
84
+ 3. Documentar cambios en el nuevo formato
85
+
86
+ ## Ejemplo de Uso
87
+
88
+ ```bash
89
+ # 1. Evaluar proyecto
90
+ npm run evaluate:quick
91
+
92
+ # 2. Crear plan de mejoras
93
+ cp docs/planning/evaluator-v1.0.0/improvements_plan_2026-03-28.md \
94
+ docs/planning/evaluator-v1.0.0/improvements_plan_$(date +%Y-%m-%d).md
95
+
96
+ # 3. Editar con resultados específicos
97
+ # [Abrir en editor y completar]
98
+
99
+ # 4. Commit
100
+ git add docs/planning/evaluator-v1.0.0/
101
+ git commit -m "docs: add improvements plan for $(date +%Y-%m-%d)"
102
+ ```
103
+
104
+ ## Historial
105
+
106
+ | Fecha | Proyecto | Score | Estado | Archivo |
107
+ |-------|----------|-------|--------|---------|
108
+ | 2026-03-28 | express-api | 3.88/5.0 | PASS | improvements_plan_2026-03-28.md |
109
+
110
+ ---
111
+
112
+ **Nota:** Mantener este README actualizado con cada nueva versión del evaluator.
@@ -0,0 +1,237 @@
1
+ # AI-First Evaluator - Plan de Mejoras
2
+
3
+ **Template Version:** 1.0
4
+ **Evaluator Version:** 1.0.0
5
+ **Evaluation Date:** 2026-03-28
6
+ **Project:** express-api
7
+ **Current Score:** 3.88/5.0
8
+ **Status:** PASS
9
+
10
+ ---
11
+
12
+ ## Instrucciones de Uso
13
+
14
+ Este documento es un TEMPLATE para registrar resultados de evaluación y planificar mejoras.
15
+
16
+ ### Para nuevas evaluaciones:
17
+ 1. Copiar este archivo como improvements_plan_YYYY-MM-DD.md
18
+ 2. Actualizar los campos marcados con [ACTUALIZAR]
19
+ 3. Documentar hallazgos específicos del proyecto
20
+ 4. Crear issues/tickets para acciones identificadas
21
+
22
+ ### Estructura del documento:
23
+ - Resumen: Métricas principales y estado general
24
+ - Hallazgos: Fortalezas y áreas de mejora
25
+ - Plan de Acción: Tareas priorizadas con owners y deadlines
26
+ - Seguimiento: Checklist de implementación
27
+
28
+ ---
29
+
30
+ ## Resumen Ejecutivo
31
+
32
+ ### Métricas Principales [ACTUALIZAR]
33
+
34
+ - Score Total: 3.88/5.0
35
+ - Umbral Mínimo: 3.5
36
+ - Ahorro de Costos AI: 100%
37
+ - Duración: 3ms
38
+ - Estado: PASS
39
+
40
+ ### Distribución de Puntos
41
+
42
+ | Perspectiva | Peso | Score | Estado |
43
+ |-------------|------|-------|--------|
44
+ | Local Structure | 40 pts | 40/40 | Pass |
45
+ | Content Quality | 80 pts | 62/80 | Warning |
46
+ | AI Assessment | 10 pts | N/A | Skipped |
47
+ | Total | 130 pts | 102/130 | 78% |
48
+
49
+ ### Análisis por Categoría
50
+
51
+ - IMPLEMENTED: 0 issues
52
+ - USER_ACTION: 1 issue
53
+ - KNOWN_LIMITATION: 0 issues
54
+ - IMPROVEMENT: 4 issues
55
+
56
+ ---
57
+
58
+ ## Fortalezas (Mantener)
59
+
60
+ 1. Estructura Local Completa
61
+ - Archivos requeridos presentes
62
+ - JSON válidos
63
+ - Formato markdown consistente
64
+
65
+ 2. Features Opcionales Utilizadas
66
+ - API Contracts generados
67
+ - Framework Instructions presentes
68
+
69
+ ---
70
+
71
+ ## Áreas de Mejora (Priorizadas)
72
+
73
+ ### Alta Prioridad
74
+
75
+ #### 1. Documentation Completeness
76
+ Issue: Faltan secciones requeridas en summary.md
77
+ Categoría: IMPROVEMENT
78
+ Severidad: HIGH
79
+ Impacto: +8 pts
80
+
81
+ Checklist:
82
+ - [ ] Agregar sección Overview
83
+ - [ ] Agregar sección Purpose
84
+ - [ ] Agregar sección Features
85
+
86
+ Template para fix:
87
+ ```
88
+ ## Overview
89
+ [Breve descripción del proyecto]
90
+
91
+ ## Purpose
92
+ [Propósito principal]
93
+
94
+ ## Features
95
+ - Feature 1: [descripción]
96
+ - Feature 2: [descripción]
97
+ ```
98
+
99
+ Owner: [ASIGNAR]
100
+ Deadline: [FECHA]
101
+
102
+ ---
103
+
104
+ #### 2. Entry Point Documentation
105
+ Issue: Entry points sin descripciones detalladas
106
+ Categoría: IMPROVEMENT
107
+ Severidad: MEDIUM
108
+ Impacto: +10 pts
109
+
110
+ Checklist:
111
+ - [ ] Usar headers para cada entry point
112
+ - [ ] Agregar descripción de propósito
113
+ - [ ] Documentar parámetros
114
+ - [ ] Listar dependencias
115
+
116
+ Template para fix:
117
+ ```
118
+ ### server.js
119
+ Purpose: Punto de entrada principal
120
+ Parameters: PORT, NODE_ENV
121
+ Dependencies: express, cors
122
+ ```
123
+
124
+ Owner: [ASIGNAR]
125
+ Deadline: [FECHA]
126
+
127
+ ---
128
+
129
+ ### Media Prioridad
130
+
131
+ #### 3. Generic Phrases
132
+ Issue: Descripciones contienen frases genéricas
133
+ Categoría: IMPROVEMENT
134
+ Severidad: MEDIUM
135
+ Impacto: +5 pts
136
+
137
+ Ejemplos a corregir:
138
+ - Antes: This project contains API endpoints
139
+ - Después: REST API providing user authentication
140
+
141
+ Owner: [ASIGNAR]
142
+ Deadline: [FECHA]
143
+
144
+ ---
145
+
146
+ ### Baja Prioridad
147
+
148
+ #### 4. Freshness Tracking
149
+ Issue: No hay tracking de freshness
150
+ Categoría: USER_ACTION
151
+ Severidad: LOW
152
+ Impacto: Mejor mantenibilidad
153
+
154
+ Acción:
155
+ ```
156
+ af init # Re-generar contexto periódicamente
157
+ ```
158
+
159
+ Frecuencia recomendada: Semanal o al inicio de cada sprint
160
+
161
+ ---
162
+
163
+ ## Plan de Acción
164
+
165
+ ### Inmediato (Esta semana)
166
+
167
+ | # | Tarea | Impacto | Owner | Deadline | Status |
168
+ |---|-------|---------|-------|----------|--------|
169
+ | 1 | Completar summary.md | +8 pts | TBD | TBD | Pending |
170
+ | 2 | Mejorar entrypoints.md | +10 pts | TBD | TBD | Pending |
171
+
172
+ ### Corto Plazo (Próximo sprint)
173
+
174
+ | # | Tarea | Impacto | Owner | Deadline | Status |
175
+ |---|-------|---------|-------|----------|--------|
176
+ | 3 | Revisar frases genéricas | +5 pts | TBD | TBD | Pending |
177
+ | 4 | Habilitar freshness tracking | N/A | TBD | TBD | Pending |
178
+
179
+ ---
180
+
181
+ ## Proyección de Mejora
182
+
183
+ ### Escenarios
184
+
185
+ | Escenario | Score Actual | Score Proyectado | Cambio |
186
+ |-----------|--------------|------------------|--------|
187
+ | Conservador | 3.88 | 4.05 | +0.17 |
188
+ | Completo | 3.88 | 4.20 | +0.32 |
189
+
190
+ ### ROI Esperado
191
+
192
+ - Tiempo estimado: 2-3 horas
193
+ - Mejora en score: +0.32 puntos
194
+ - Impacto en calidad de AI: Mayor comprensión
195
+ - Ahorro continuo: Mantiene 100% ahorro
196
+
197
+ ---
198
+
199
+ ## Checklist de Seguimiento
200
+
201
+ ### Implementación
202
+ - [ ] Mejora #1 implementada
203
+ - [ ] Mejora #2 implementada
204
+ - [ ] Mejora #3 implementada (opcional)
205
+ - [ ] Mejora #4 implementada (opcional)
206
+
207
+ ### Verificación
208
+ - [ ] Re-ejecutar evaluator
209
+ - [ ] Validar nuevo score >= 4.0
210
+ - [ ] Confirmar que no hay regresiones
211
+ - [ ] Actualizar este documento
212
+
213
+ ### Documentación
214
+ - [ ] Actualizar CHANGELOG
215
+ - [ ] Crear PR con cambios
216
+ - [ ] Revisión de código
217
+ - [ ] Merge a main
218
+
219
+ ---
220
+
221
+ ## Notas Adicionales
222
+
223
+ ### Lecciones Aprendidas
224
+ [ESPACIO PARA NOTAS]
225
+
226
+ ### Bloqueos Identificados
227
+ [DOCUMENTAR SI HAY BLOQUEOS]
228
+
229
+ ### Recursos Útiles
230
+ - Guía de escritura: [LINK]
231
+ - Template summary.md: [LINK]
232
+ - Ejemplos entry points: [LINK]
233
+
234
+ ---
235
+
236
+ Documento generado por: AI-First Evaluator v1.0.0
237
+ Última actualización: 2026-03-28
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-first-cli",
3
- "version": "1.3.5",
3
+ "version": "1.3.8",
4
4
  "description": "CLI tool that prepares any repository to be used effectively by AI coding agents",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -16,7 +16,11 @@
16
16
  "docs:dev": "vitepress dev docs",
17
17
  "docs:build": "vitepress build docs",
18
18
  "docs:preview": "vitepress preview docs",
19
- "prepublishOnly": "npm run build"
19
+ "prepublishOnly": "npm run build",
20
+ "postinstall": "if [ -d node_modules/ai-first-evaluator ]; then cd node_modules/ai-first-evaluator && npm install && npm run build 2>/dev/null || true; fi",
21
+ "evaluate": "node node_modules/ai-first-evaluator/dist/core/evaluation/run-evaluation.js --config evaluator.config.json 2>/dev/null || echo 'Evaluator not installed'",
22
+ "evaluate:ci": "node node_modules/ai-first-evaluator/dist/core/evaluation/run-evaluation.js --config evaluator.config.json --compare-baseline --save-baseline 2>/dev/null || echo 'Evaluator not installed'",
23
+ "evaluate:quick": "node node_modules/ai-first-evaluator/dist/core/evaluation/run-evaluation.js --config evaluator.config.json --skip-ai 2>/dev/null || echo 'Evaluator not installed'"
20
24
  },
21
25
  "keywords": [
22
26
  "ai",
@@ -27,7 +31,9 @@
27
31
  "development",
28
32
  "tool",
29
33
  "code-analysis",
30
- "indexing"
34
+ "indexing",
35
+ "mcp",
36
+ "model-context-protocol"
31
37
  ],
32
38
  "author": "Julian Perez Pesce <julian@example.com> (https://github.com/julianperezpesce)",
33
39
  "license": "MIT",
@@ -47,7 +53,11 @@
47
53
  "vitest": "^4.1.0",
48
54
  "vue": "^3.5.30"
49
55
  },
56
+ "optionalDependencies": {
57
+ "ai-first-evaluator": "git+https://github.com/julianperezpesce/ai-first-evaluator.git"
58
+ },
50
59
  "dependencies": {
60
+ "@modelcontextprotocol/sdk": "^1.0.4",
51
61
  "chokidar": "^5.0.0",
52
62
  "ora": "^9.3.0",
53
63
  "sql.js": "^1.10.0"