vireum-spec-cli 0.4.1 → 0.4.2

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.
@@ -246,6 +246,24 @@ async function runSetup() {
246
246
  fs.writeFileSync(arq.path, arq.conteudo, 'utf-8');
247
247
  s.succeed(path.relative(process.cwd(), arq.path));
248
248
  }
249
+ // ── Git hook ───────────────────────────────────────────────────────────────
250
+ const gitHookDir = path.join(process.cwd(), '.git', 'hooks');
251
+ const hookPath = path.join(gitHookDir, 'pre-push');
252
+ if (fs.existsSync(path.join(process.cwd(), '.git'))) {
253
+ const sHook = (0, ora_1.default)('Configurando git hook pre-push...').start();
254
+ await sleep(400);
255
+ if (!fs.existsSync(gitHookDir))
256
+ fs.mkdirSync(gitHookDir, { recursive: true });
257
+ fs.writeFileSync(hookPath, gerarPrePushHook(), 'utf-8');
258
+ try {
259
+ fs.chmodSync(hookPath, '755');
260
+ }
261
+ catch { }
262
+ sHook.succeed('.git/hooks/pre-push configurado');
263
+ }
264
+ else {
265
+ console.log(chalk_1.default.yellow(' ⚠ Repositorio git nao encontrado — hook nao configurado'));
266
+ }
249
267
  console.log(chalk_1.default.green.bold('\n✅ Setup concluído!\n'));
250
268
  console.log(chalk_1.default.gray(' Protocolo da IA configurado para Claude Code, Codex CLI e Cursor\n'));
251
269
  console.log(chalk_1.default.gray(' Próximo passo: ') + chalk_1.default.white('vireum-spec prioritize') + chalk_1.default.gray(' para classificar as features\n'));
@@ -265,6 +283,30 @@ function sleep(ms) {
265
283
  return new Promise(r => setTimeout(r, ms));
266
284
  }
267
285
  // ─── GERADORES ────────────────────────────────────────────────────────────────
286
+ function gerarPrePushHook() {
287
+ return `#!/bin/sh
288
+ # Vireum Spec — Health Check automatico pre-push
289
+ # Gerado por vireum-spec setup
290
+
291
+ echo ""
292
+ echo " Vireum Spec — verificando consistencia do spec..."
293
+ echo ""
294
+
295
+ npx vireum-spec-cli health
296
+
297
+ STATUS=$?
298
+
299
+ if [ $STATUS -ne 0 ]; then
300
+ echo ""
301
+ echo " Spec com problemas criticos. Corrija antes de fazer push."
302
+ echo " Execute: vireum-spec health para detalhes"
303
+ echo ""
304
+ exit 1
305
+ fi
306
+
307
+ exit 0
308
+ `;
309
+ }
268
310
  function gerarArchitecture(d) {
269
311
  const { stack, infra, mcps, projeto } = d;
270
312
  const tenant = stack.multiTenant
@@ -347,6 +389,11 @@ function gerarRulesGlobal() {
347
389
  - Nunca hardcodar cores — usar sempre os tokens definidos em design.md
348
390
  - Nunca misturar design systems
349
391
 
392
+ ## Regras de Health
393
+ - Verificar consistencia do spec no inicio de cada sessao
394
+ - Avisar o dev sobre inconsistencias antes de qualquer implementacao
395
+ - Tasks sem criterios de aceitacao devem ser sinalizadas antes de implementar
396
+
350
397
  ## Regras de Spec
351
398
  - Nunca marcar task como done sem validar os critérios de aceitação
352
399
  - Nunca tomar decisão de arquitetura sem registrar em architecture.md com justificativa
@@ -414,8 +461,13 @@ function gerarClaudeMd(d) {
414
461
 
415
462
  ## Início de cada sessão
416
463
  1. Leia \`.spec/INDEX.md\` — estado atual do projeto
417
- 2. Identifique o modo da sessão pela solicitação do dev
418
- 3. Carregue arquivos adicionais apenas se a task exigir
464
+ 2. Verifique consistencia do spec:
465
+ - tasks/active.md tem tasks sem criterios de aceitacao? avisar o dev
466
+ - architecture.md tem stack definida? → se nao, avisar
467
+ - INDEX.md reflete o estado real do MVP? → se desatualizado, avisar
468
+ 3. Se encontrar inconsistencias criticas → avisar antes de qualquer implementacao
469
+ 4. Identifique o modo da sessão pela solicitação do dev
470
+ 5. Carregue arquivos adicionais apenas se a task exigir
419
471
 
420
472
  ## Modos de operação
421
473
 
@@ -485,6 +537,7 @@ ${mcps.map((m) => `- ${m}`).join('\n')}
485
537
  - Decisão de lib nova: registrar em architecture.md antes de usar
486
538
  - Risco identificado: adicionar em risks.md antes de continuar
487
539
  - UI sem consultar design.md → PARAR e consultar primeiro
540
+ - Spec inconsistente → avisar o dev antes de implementar
488
541
  `;
489
542
  }
490
543
  function gerarAgentsMd(d) {
@@ -495,8 +548,10 @@ function gerarAgentsMd(d) {
495
548
 
496
549
  ## Início de cada sessão
497
550
  1. Leia \`.spec/INDEX.md\`
498
- 2. Identifique o modo pela solicitação
499
- 3. Siga o protocolo em CLAUDE.md
551
+ 2. Verifique consistencia do spec — tasks sem criterios, stack indefinida, INDEX desatualizado
552
+ 3. Avise o dev sobre inconsistencias antes de implementar
553
+ 4. Identifique o modo pela solicitação
554
+ 5. Siga o protocolo em CLAUDE.md
500
555
 
501
556
  ## Planejamento obrigatorio
502
557
  Antes de qualquer implementacao:
@@ -535,6 +590,8 @@ Este projeto usa Spec Driven Development pela Vireum Desenvolvimento.
535
590
 
536
591
  ## Início de sessão
537
592
  - Sempre leia \`.spec/INDEX.md\` primeiro
593
+ - Verifique consistencia: tasks sem criterios, stack indefinida, INDEX desatualizado
594
+ - Avise inconsistencias antes de qualquer implementacao
538
595
  - Carregue outros arquivos de spec apenas quando necessário
539
596
 
540
597
  ## Planejamento obrigatorio
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vireum-spec-cli",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Spec Driven Development framework by Vireum Desenvolvimento",
5
5
  "main": "dist/index.js",
6
6
  "bin": {