vireum-spec-cli 0.5.0 → 0.7.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.
- package/README.md +259 -0
- package/dist/commands/brief.js +0 -4
- package/dist/commands/distill.js +64 -301
- package/dist/commands/enrich.js +50 -55
- package/dist/commands/health.js +0 -4
- package/dist/commands/init/ai.js +186 -0
- package/dist/commands/init/api.js +195 -0
- package/dist/commands/init/automation.js +166 -0
- package/dist/commands/init/mobile.js +155 -0
- package/dist/commands/init/system.js +307 -0
- package/dist/commands/init/web.js +165 -0
- package/dist/commands/init.js +21 -253
- package/dist/commands/prioritize.js +82 -34
- package/dist/commands/retrofit.js +14 -400
- package/dist/commands/setup.js +56 -488
- package/dist/commands/skills.js +0 -6
- package/dist/commands/verify-mcps.js +0 -4
- package/dist/index.js +39 -2
- package/dist/lib/analyzer.js +194 -0
- package/dist/lib/generators-retrofit.js +259 -0
- package/dist/lib/generators-retrofit.test.js +112 -0
- package/dist/lib/generators-setup.js +764 -0
- package/dist/lib/generators-setup.test.js +118 -0
- package/dist/lib/generators.js +593 -0
- package/dist/lib/parsers/ai.js +54 -0
- package/dist/lib/parsers/api.js +63 -0
- package/dist/lib/parsers/automation.js +52 -0
- package/dist/lib/parsers/mobile.js +60 -0
- package/dist/lib/parsers/system.js +66 -0
- package/dist/lib/parsers/web.js +70 -0
- package/dist/lib/types.js +2 -0
- package/docs/COMO_USAR.md +322 -0
- package/docs/DOCUMENTACAO_FRAMEWORK.md +568 -0
- package/package.json +9 -3
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const generators_setup_1 = require("./generators-setup");
|
|
5
|
+
const mockData = {
|
|
6
|
+
projeto: 'Test Project',
|
|
7
|
+
stack: {
|
|
8
|
+
frontend: 'Next.js',
|
|
9
|
+
backend: 'Node.js + Express',
|
|
10
|
+
banco: 'PostgreSQL',
|
|
11
|
+
orm: 'Prisma',
|
|
12
|
+
auth: 'JWT',
|
|
13
|
+
cache: 'Redis',
|
|
14
|
+
multiTenant: false,
|
|
15
|
+
tenantStrategy: '',
|
|
16
|
+
},
|
|
17
|
+
infra: {
|
|
18
|
+
hospedagem: 'DigitalOcean',
|
|
19
|
+
containerizacao: 'Docker + Docker Compose',
|
|
20
|
+
cicd: true,
|
|
21
|
+
cicdFerramenta: 'GitHub Actions',
|
|
22
|
+
},
|
|
23
|
+
mcps: ['context7', 'github', 'database'],
|
|
24
|
+
design: {
|
|
25
|
+
system: 'shadcn',
|
|
26
|
+
cores: { primary: '#2D7DD2', secondary: '#1A3A5C', accent: '#1D9E75' },
|
|
27
|
+
fontes: { heading: 'Inter', body: 'Inter' },
|
|
28
|
+
customizacoes: '',
|
|
29
|
+
baseTailwind: false,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
(0, vitest_1.describe)('Generators — Setup', () => {
|
|
33
|
+
(0, vitest_1.describe)('gerarClaudeMd', () => {
|
|
34
|
+
(0, vitest_1.it)('should generate valid CLAUDE.md with all sections', () => {
|
|
35
|
+
const result = (0, generators_setup_1.gerarClaudeMd)(mockData);
|
|
36
|
+
(0, vitest_1.expect)(result).toContain('# Test Project — Vireum Spec Protocol');
|
|
37
|
+
(0, vitest_1.expect)(result).toContain('## Início de cada sessão');
|
|
38
|
+
(0, vitest_1.expect)(result).toContain('## Modos de operação');
|
|
39
|
+
(0, vitest_1.expect)(result).toContain('## Stack');
|
|
40
|
+
(0, vitest_1.expect)(result).toContain('## MCPs ativos');
|
|
41
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('should include multi-tenant warning when applicable', () => {
|
|
44
|
+
const dataWithTenant = {
|
|
45
|
+
...mockData,
|
|
46
|
+
stack: { ...mockData.stack, multiTenant: true, tenantStrategy: 'Row-level (tenantId)' },
|
|
47
|
+
};
|
|
48
|
+
const result = (0, generators_setup_1.gerarClaudeMd)(dataWithTenant);
|
|
49
|
+
(0, vitest_1.expect)(result).toContain('NUNCA fazer query sem filtro de tenantId');
|
|
50
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
(0, vitest_1.describe)('gerarAgentsMd', () => {
|
|
54
|
+
(0, vitest_1.it)('should generate self-contained AGENTS.md', () => {
|
|
55
|
+
const result = (0, generators_setup_1.gerarAgentsMd)(mockData);
|
|
56
|
+
(0, vitest_1.expect)(result).toContain('# Test Project — Vireum Spec Protocol (Agentes)');
|
|
57
|
+
(0, vitest_1.expect)(result).toContain('## Modos de Operação');
|
|
58
|
+
(0, vitest_1.expect)(result).toContain('Modo 1 — Implementar Feature/Task');
|
|
59
|
+
(0, vitest_1.expect)(result).toContain('Modo 2 — Bug / Fix Crítico');
|
|
60
|
+
(0, vitest_1.expect)(result).toContain('Stack Completo do Projeto');
|
|
61
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.it)('should include design system information', () => {
|
|
64
|
+
const result = (0, generators_setup_1.gerarAgentsMd)(mockData);
|
|
65
|
+
(0, vitest_1.expect)(result).toContain('## Design System');
|
|
66
|
+
(0, vitest_1.expect)(result).toContain('shadcn');
|
|
67
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.describe)('gerarCursorRules', () => {
|
|
71
|
+
(0, vitest_1.it)('should generate valid cursor rules frontmatter', () => {
|
|
72
|
+
const result = (0, generators_setup_1.gerarCursorRules)(mockData);
|
|
73
|
+
(0, vitest_1.expect)(result).toContain('---');
|
|
74
|
+
(0, vitest_1.expect)(result).toContain('description: Vireum Spec Protocol — Test Project');
|
|
75
|
+
(0, vitest_1.expect)(result).toContain('globs: ["**/*"]');
|
|
76
|
+
(0, vitest_1.expect)(result).toContain('alwaysApply: true');
|
|
77
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.describe)('gerarDesign', () => {
|
|
81
|
+
(0, vitest_1.it)('should generate design.md with correct system', () => {
|
|
82
|
+
const result = (0, generators_setup_1.gerarDesign)(mockData);
|
|
83
|
+
(0, vitest_1.expect)(result).toContain('# Design — Test Project');
|
|
84
|
+
(0, vitest_1.expect)(result).toContain('## Design System');
|
|
85
|
+
(0, vitest_1.expect)(result).toContain('Shadcn/ui');
|
|
86
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
87
|
+
});
|
|
88
|
+
(0, vitest_1.it)('should handle base design system', () => {
|
|
89
|
+
const dataWithBase = {
|
|
90
|
+
...mockData,
|
|
91
|
+
design: { ...mockData.design, system: 'base', baseTailwind: true },
|
|
92
|
+
};
|
|
93
|
+
const result = (0, generators_setup_1.gerarDesign)(dataWithBase);
|
|
94
|
+
(0, vitest_1.expect)(result).toContain('Design system basico');
|
|
95
|
+
(0, vitest_1.expect)(result).toContain('Tailwind CSS');
|
|
96
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
(0, vitest_1.describe)('gerarRulesGlobal', () => {
|
|
100
|
+
(0, vitest_1.it)('should generate consistent global rules', () => {
|
|
101
|
+
const result = (0, generators_setup_1.gerarRulesGlobal)();
|
|
102
|
+
(0, vitest_1.expect)(result).toContain('# Rules — Global Vireum');
|
|
103
|
+
(0, vitest_1.expect)(result).toContain('## Regras de Escopo');
|
|
104
|
+
(0, vitest_1.expect)(result).toContain('## Nunca');
|
|
105
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.describe)('gerarMcpsGlobal', () => {
|
|
109
|
+
(0, vitest_1.it)('should list active MCPs', () => {
|
|
110
|
+
const result = (0, generators_setup_1.gerarMcpsGlobal)(mockData);
|
|
111
|
+
(0, vitest_1.expect)(result).toContain('# MCPs — Global Vireum');
|
|
112
|
+
(0, vitest_1.expect)(result).toContain('## MCPs Ativos Neste Projeto');
|
|
113
|
+
(0, vitest_1.expect)(result).toContain('context7');
|
|
114
|
+
(0, vitest_1.expect)(result).toContain('github');
|
|
115
|
+
(0, vitest_1.expect)(result).toMatchSnapshot();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
});
|