@lugom.io/hefesto 0.2.0 → 1.0.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 (42) hide show
  1. package/agents/hefesto-argos.md +93 -0
  2. package/agents/hefesto-athena.md +99 -0
  3. package/agents/hefesto-hermes.md +96 -0
  4. package/bin/install.js +122 -52
  5. package/hooks/hefesto-check-update.cjs +32 -11
  6. package/hooks/hefesto-statusline.cjs +8 -17
  7. package/hooks/hefesto-workflow.cjs +68 -0
  8. package/package.json +14 -4
  9. package/skills/hefesto-context/SKILL.md +67 -14
  10. package/skills/hefesto-debug/SKILL.md +54 -0
  11. package/skills/hefesto-design/SKILL.md +184 -0
  12. package/skills/hefesto-execute/SKILL.md +133 -0
  13. package/skills/hefesto-init/SKILL.md +105 -0
  14. package/skills/hefesto-init/references/api.md +116 -0
  15. package/skills/hefesto-init/references/cli.md +91 -0
  16. package/skills/hefesto-init/references/mobile.md +69 -0
  17. package/skills/hefesto-init/references/web.md +246 -0
  18. package/skills/hefesto-new-feature/SKILL.md +87 -0
  19. package/skills/hefesto-security/SKILL.md +89 -0
  20. package/skills/hefesto-security/references/boundaries-and-bypasses.md +152 -0
  21. package/skills/hefesto-security/references/secrets-detection.md +121 -0
  22. package/skills/hefesto-security/references/severity-and-judgment.md +176 -0
  23. package/skills/hefesto-simplify/SKILL.md +82 -0
  24. package/templates/TPL-CLAUDE.md +54 -0
  25. package/templates/TPL-CONFIG.json +19 -0
  26. package/templates/TPL-DESIGN.md +305 -0
  27. package/templates/{FEATURE.md → TPL-FEATURE.md} +13 -6
  28. package/templates/TPL-PROJECT.md +50 -0
  29. package/templates/TPL-RECON.md +60 -0
  30. package/templates/{RESEARCH.md → TPL-RESEARCH.md} +32 -35
  31. package/templates/TPL-SECURITY.md +42 -0
  32. package/templates/TPL-SIMPLIFY.md +40 -0
  33. package/templates/{STATE.md → TPL-STATE.md} +1 -7
  34. package/templates/TPL-VERDICT.md +34 -0
  35. package/agents/.gitkeep +0 -0
  36. package/agents/hefesto-researcher.md +0 -180
  37. package/commands/hefesto/init.md +0 -67
  38. package/commands/hefesto/new-feature.md +0 -50
  39. package/commands/hefesto/status.md +0 -46
  40. package/commands/hefesto/update.md +0 -31
  41. package/templates/PROJECT.md +0 -28
  42. package/templates/ROADMAP.md +0 -23
@@ -9,36 +9,25 @@ const os = require('os');
9
9
  let input = '';
10
10
  const stdinTimeout = setTimeout(() => process.exit(0), 3000);
11
11
  process.stdin.setEncoding('utf8');
12
- process.stdin.on('data', chunk => input += chunk);
12
+ process.stdin.on('data', (chunk) => (input += chunk));
13
13
  process.stdin.on('end', () => {
14
14
  clearTimeout(stdinTimeout);
15
15
  try {
16
16
  const data = JSON.parse(input);
17
17
  const model = data.model?.display_name || 'Claude';
18
18
  const dir = data.workspace?.current_dir || process.cwd();
19
- const session = data.session_id || '';
20
19
  const remaining = data.context_window?.remaining_percentage;
21
20
 
22
21
  // Context window (normalizado para contexto utilizável)
23
22
  const AUTO_COMPACT_BUFFER_PCT = 16.5;
24
23
  let ctx = '';
25
24
  if (remaining != null) {
26
- const usableRemaining = Math.max(0, ((remaining - AUTO_COMPACT_BUFFER_PCT) / (100 - AUTO_COMPACT_BUFFER_PCT)) * 100);
25
+ const usableRemaining = Math.max(
26
+ 0,
27
+ ((remaining - AUTO_COMPACT_BUFFER_PCT) / (100 - AUTO_COMPACT_BUFFER_PCT)) * 100
28
+ );
27
29
  const used = Math.max(0, Math.min(100, Math.round(100 - usableRemaining)));
28
30
 
29
- // Bridge file para o context-monitor
30
- if (session) {
31
- try {
32
- const bridgePath = path.join(os.tmpdir(), `hefesto-ctx-${session}.json`);
33
- fs.writeFileSync(bridgePath, JSON.stringify({
34
- session_id: session,
35
- remaining_percentage: remaining,
36
- used_pct: used,
37
- timestamp: Math.floor(Date.now() / 1000),
38
- }));
39
- } catch (_) {}
40
- }
41
-
42
31
  // Barra de progresso (10 segmentos)
43
32
  const filled = Math.floor(used / 10);
44
33
  const bar = '█'.repeat(filled) + '░'.repeat(10 - filled);
@@ -68,7 +57,9 @@ process.stdin.on('end', () => {
68
57
  }
69
58
 
70
59
  const dirname = path.basename(dir);
71
- process.stdout.write(`${updateMsg}\x1b[1;31m⚒ HEFESTO\x1b[0m │ \x1b[2m${model}\x1b[0m │ \x1b[2m${dirname}\x1b[0m${ctx}`);
60
+ process.stdout.write(
61
+ `${updateMsg}\x1b[1;31m⚒ HEFESTO\x1b[0m │ \x1b[2m${model}\x1b[0m │ \x1b[2m${dirname}\x1b[0m${ctx}`
62
+ );
72
63
  } catch (_) {
73
64
  // Falha silenciosa
74
65
  }
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ // Hefesto Workflow Enforcement
3
+ // PreToolUse hook: avisa quando Write/Edit é usado sem feature ativa
4
+ // Comportamento: WARN only, nunca BLOCK — Hefesto guia, não bloqueia
5
+
6
+ const fs = require('node:fs');
7
+ const path = require('node:path');
8
+
9
+ let input = '';
10
+ const stdinTimeout = setTimeout(() => process.exit(0), 3000);
11
+
12
+ process.stdin.setEncoding('utf8');
13
+ process.stdin.on('data', (chunk) => (input += chunk));
14
+ process.stdin.on('end', () => {
15
+ clearTimeout(stdinTimeout);
16
+ try {
17
+ const data = JSON.parse(input);
18
+ const toolName = data.tool_name;
19
+ const filePath = data.tool_input?.file_path || data.tool_input?.path || '';
20
+
21
+ // Só verificar Write e Edit
22
+ if (toolName !== 'Write' && toolName !== 'Edit') return;
23
+
24
+ // Se não tem file_path, não tem como verificar
25
+ if (!filePath) return;
26
+
27
+ const basename = path.basename(filePath);
28
+ const normalized = filePath.replace(/\\/g, '/');
29
+
30
+ // Escape hatches — sempre permitir:
31
+ // .hefesto/ (state files do próprio Hefesto)
32
+ if (normalized.includes('.hefesto/')) return;
33
+ // Configs de runtime (.claude/, .gemini/, .codex/)
34
+ if (
35
+ normalized.includes('.claude/') ||
36
+ normalized.includes('.gemini/') ||
37
+ normalized.includes('.codex/')
38
+ )
39
+ return;
40
+ // Testes (test, spec, __tests__)
41
+ if (/test|spec|__tests__/i.test(normalized)) return;
42
+ // Dotfiles e package.json
43
+ if (basename.startsWith('.') || basename === 'package.json' || basename === 'package-lock.json')
44
+ return;
45
+ // Markdown docs
46
+ if (basename.endsWith('.md')) return;
47
+
48
+ // Verificar se .hefesto/STATE.md existe
49
+ const statePath = path.join(process.cwd(), '.hefesto', 'STATE.md');
50
+ if (!fs.existsSync(statePath)) return;
51
+
52
+ // Ler STATE.md e checar se tem feature ativa
53
+ const state = fs.readFileSync(statePath, 'utf8');
54
+ const featureSection = state.match(/## Feature Ativa\s*\n([\s\S]*?)(?=\n## |\n---|$)/);
55
+
56
+ if (!featureSection) return;
57
+
58
+ const content = featureSection[1].trim();
59
+ if (content && content !== 'Nenhuma.' && content !== 'Nenhuma') return;
60
+
61
+ // Sem feature ativa — emitir warning via stderr
62
+ process.stderr.write(
63
+ '\n⚒ HEFESTO: Nenhuma feature ativa. Considere usar /hefesto-new-feature antes de implementar.\n'
64
+ );
65
+ } catch (_) {
66
+ // Silent failure — nunca quebrar o runtime
67
+ }
68
+ });
package/package.json CHANGED
@@ -1,13 +1,18 @@
1
1
  {
2
2
  "name": "@lugom.io/hefesto",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "description": "A meta-prompting, context engineering and spec-driven development system for Claude Code, Gemini and Codex by lugom.io.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "hefesto": "bin/install.js"
8
8
  },
9
9
  "scripts": {
10
- "test": "node --test tests/**/*.test.js"
10
+ "test": "node --test tests/**/*.test.js",
11
+ "lint": "eslint bin/ hooks/ tests/",
12
+ "lint:fix": "eslint bin/ hooks/ tests/ --fix",
13
+ "format": "prettier --write .",
14
+ "format:check": "prettier --check .",
15
+ "sandbox": "HEFESTO=$PWD && mkdir -p $HEFESTO/tmp/hefesto-sandbox/src && cd $HEFESTO/tmp/hefesto-sandbox && test -f package.json || echo '{\"name\":\"sandbox\",\"type\":\"module\"}' > package.json && node $HEFESTO/bin/install.js && claude"
11
16
  },
12
17
  "engines": {
13
18
  "node": ">=18"
@@ -15,7 +20,6 @@
15
20
  "files": [
16
21
  "bin/",
17
22
  "templates/",
18
- "commands/",
19
23
  "skills/",
20
24
  "hooks/",
21
25
  "agents/"
@@ -33,5 +37,11 @@
33
37
  "codex-cli"
34
38
  ],
35
39
  "author": "lugom.io",
36
- "license": "MIT"
40
+ "license": "MIT",
41
+ "devDependencies": {
42
+ "@eslint/js": "^10.0.1",
43
+ "eslint": "^10.1.0",
44
+ "eslint-config-prettier": "^10.1.8",
45
+ "prettier": "^3.8.1"
46
+ }
37
47
  }
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  name: hefesto-context
3
- description: Conhecimento sobre a estrutura e convenções do Hefesto. Use sempre que o projeto tiver um diretório .hefesto/, quando o usuário mencionar features, specs, stories, roadmap ou estado do projeto no contexto do Hefesto, ou quando precisar entender como o .hefesto/ organiza o desenvolvimento.
3
+ description: >
4
+ Conhecimento sobre estrutura e convenções do Hefesto (.hefesto/).
5
+ ATIVAR quando: projeto tem .hefesto/, usuário menciona feature/spec/story/roadmap/STATE.md/
6
+ PROJECT.md/config.json, qualquer skill hefesto-* precisa de contexto do sistema, ou tarefa
7
+ envolve IDs (FEAT-NNN, RES-NNN), status de features ou ciclo de desenvolvimento Hefesto.
8
+ user-invocable: false
9
+ disable-model-invocation: false
4
10
  ---
5
11
 
6
12
  # Hefesto Context
@@ -11,10 +17,10 @@ O Hefesto é um toolkit spec-driven + story-driven que organiza o desenvolviment
11
17
 
12
18
  ```
13
19
  .hefesto/
14
- ├── PROJECT.md # Visão, valor central, restrições do projeto
15
- ├── ROADMAP.md # Lista de features com status e progresso
16
- ├── STATE.md # Memória viva — posição atual, decisões, bloqueios (~80 linhas)
17
- ├── config.json # Configuração (counters de ID, runtime, preferências)
20
+ ├── PROJECT.md # Visão, valor central, restrições, convenções e features
21
+ ├── STATE.md # Memória entre sessões posição, decisões, bloqueios (~80 linhas)
22
+ ├── config.json # Configuração (projeto, plataforma, counters de ID)
23
+ ├── DESIGN.md # Contrato visual (opcional, /hefesto-design)
18
24
  ├── features/ # Documentos narrativos unificados
19
25
  │ └── FEAT-NNN-slug.md # Uma feature por arquivo
20
26
  └── research/ # Pesquisas estruturadas
@@ -48,31 +54,78 @@ Cada feature é um documento narrativo que combina **spec** (O QUÊ) e **stories
48
54
  - `done` — completa e verificada
49
55
  - `blocked` — bloqueada por dependência
50
56
 
57
+ ## UX: Interação com o Usuário
58
+
59
+ - **Opções predefinidas** → sempre usar seletor interativo (não texto livre). Aplica-se a qualquer pergunta com respostas fixas: escolha de plataforma, confirmações sim/não, seleção entre alternativas, etc.
60
+ - **Inputs abertos** → texto livre. Aplica-se a: nome do projeto, descrição, valor central, prazo, perguntas-chave, etc.
61
+
62
+ ## Ciclo de Vida Completo
63
+
64
+ ```
65
+ init → (design) → new-feature → (research) → execute → validate → done
66
+ │ │ │ │ │ │
67
+ ▼ ▼ ▼ ▼ ▼ ▼
68
+ /hefesto /hefesto /hefesto athena /hefesto argos
69
+ -init -design -new-feature (agent) -execute (agent)
70
+
71
+ ├→ hermes (recon)
72
+ ├→ self-review inline
73
+ ├→ verification gate
74
+ │ └→ falha após retries → /hefesto-debug
75
+ ├→ /hefesto-simplify (pós)
76
+ ├→ /hefesto-security (pós)
77
+ └→ argos (QA loop, max 3x)
78
+ ```
79
+
51
80
  ## STATE.md
52
81
 
53
- Memória viva do projeto. Máximo ~80 linhas. Contém:
54
- - Posição atual (features feitas vs total)
82
+ Memória entre sessões. Máximo ~80 linhas. Contém:
83
+
84
+ - Posição atual (features feitas vs total, progresso)
55
85
  - Feature e fase ativa
56
86
  - Decisões recentes
57
87
  - Bloqueios
58
- - Informação de continuidade (última sessão, onde parou, como retomar)
88
+ - Continuidade (última sessão, onde parou, como retomar)
59
89
 
60
90
  ## Pesquisas
61
91
 
62
- Pesquisas estruturadas ficam em `.hefesto/research/` com IDs `RES-NNN`. São executadas pelo agente `hefesto-researcher` em contexto isolado.
92
+ Pesquisas estruturadas ficam em `.hefesto/research/` com IDs `RES-NNN`. São executadas pelo agente `hefesto-athena` em contexto isolado. O output é otimizado para consumo por agentes planners — inclui file paths, build order e verificação.
63
93
 
64
94
  - **ID**: `RES-NNN` (zero-padded, counter em `config.json` → `research.counter`)
65
95
  - **Status**: `draft` → `in-progress` → `done`
96
+ - **Profundidade**: `quick` (15-20 linhas), `standard` (completo), `deep` (exaustivo)
66
97
  - **Vinculação**: podem ser linked a features via campo `feature` no frontmatter
67
98
  - Antes de pesquisar algo novo, verificar se já existe pesquisa relevante em `.hefesto/research/`
68
99
 
100
+ ## Validação
101
+
102
+ Após implementar features ou fases, delegue ao agente `hefesto-argos` para avaliação independente. O tester lê a spec, lê o código com olhar fresco (isolamento epistêmico), cria testes e retorna um veredicto estruturado (`approved` / `approved-with-notes` / `needs-work`). Delegue passando: Feature ID, fase(s) implementada(s) e paths dos arquivos alterados.
103
+
104
+ ## config.json
105
+
106
+ Metadados e contadores do projeto. Sempre leia `.hefesto/config.json` para valores atuais. Estrutura canônica em `.hefesto/templates/TPL-CONFIG.json`. Seções: `project`, `feature`, `research`, `design`, `verification`. O campo `project.language` define o idioma dos artefatos (default: `pt-BR`); `project.lang` define a linguagem de programação.
107
+
69
108
  ## Outputs
70
109
 
71
110
  Outputs reais (código, documentos, manifestos) vão para o projeto (src/, docs/, etc.). O `.hefesto/` apenas rastreia o que foi produzido e onde foi colocado.
72
111
 
73
- ## Commands disponíveis
112
+ ## Hooks
113
+
114
+ - **hefesto-statusline.cjs** (StatusLine) — Exibe `⚒ HEFESTO | modelo | dir | contexto%` na statusline
115
+ - **hefesto-check-update.cjs** (SessionStart) — Verifica versão nova no npm ao iniciar sessão
116
+ - **hefesto-workflow.cjs** (PreToolUse) — Avisa quando Write/Edit é usado sem feature ativa
117
+
118
+ ## Skills disponíveis
119
+
120
+ - `/hefesto-init` — Inicializa .hefesto/ no projeto
121
+ - `/hefesto-new-feature` — Cria nova feature (com gate de validação)
122
+ - `/hefesto-execute` — Executa implementação de feature (decomposição, verificação, QA loop)
123
+ - `/hefesto-debug` — Debugging sistemático em 4 fases (causa raiz → padrão → hipótese → fix)
124
+ - `/hefesto-design` — Cria contrato visual do projeto (cores, tipografia, componentes, tokens CSS)
125
+ - `/hefesto-security` — Auditoria de segurança (OWASP, secrets, boundaries)
126
+ - `/hefesto-simplify` — Simplificação e reuso de código (pós-implementação)
127
+ - `hefesto-athena` — Agente de pesquisa estruturada (delegação automática)
128
+ - `hefesto-argos` — Agente de teste e validação (delegação após implementação, suporta QA loop)
129
+ - `hefesto-hermes` — Agente batedor de codebase (reconhecimento antes de implementar)
74
130
 
75
- - `/hefesto:init` Inicializa .hefesto/ no projeto
76
- - `/hefesto:new-feature` — Cria nova feature
77
- - `/hefesto:status` — Mostra estado do projeto
78
- - `hefesto-researcher` — Agente de pesquisa estruturada (delegação automática)
131
+ > **Nota:** Skills com `/` são invocadas diretamente pelo usuário. Agents sem `/` (athena, argos, hermes) são delegados automaticamente via subagent dispatch durante a execução — não são slash commands.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: hefesto-debug
3
+ description: >
4
+ Debugging sistemático: investigar causa raiz antes de corrigir. 4 fases, máximo 3 tentativas.
5
+ ATIVAR quando: "bug", "erro", "quebrou", "não funciona", "debugar", "regressão",
6
+ "parou de funcionar", "tá dando erro", ou quando um comando/teste falha repetidamente
7
+ durante execução de outra tarefa.
8
+ user-invocable: true
9
+ disable-model-invocation: false
10
+ argument-hint: '[descrição do problema]'
11
+ ---
12
+
13
+ # Hefesto Debug
14
+
15
+ Debugging sistemático que impõe disciplina: investigar antes de corrigir. Sem investigação, cada "tentativa" empilha patches frágeis que mascaram a causa real. Este workflow força o caminho correto: entender primeiro, corrigir depois.
16
+
17
+ ## Fase 1 — Causa Raiz (OBRIGATÓRIA)
18
+
19
+ 1. **Reproduzir**: rodar o comando/teste que falha, ler output COMPLETO (não só última linha)
20
+ 2. **Contexto**: `git diff`, `git log -5`, arquivos no fluxo do erro, spec da feature ativa (se houver)
21
+ 3. **Cadeia de erro**: sintoma → função → input → origem do input (rastrear para trás)
22
+ 4. **Output**: "A causa provável é [X] porque [evidência Y]. Manifesta em [Z], origina em [W]."
23
+
24
+ Sinais de que está pulando investigação:
25
+
26
+ - Propor solução antes de traçar o fluxo de dados
27
+ - "Não entendo completamente mas..." — se não entende, não pode corrigir
28
+ - Cada fix revela problema novo em lugar diferente → sinal arquitetural, pare e reavalie
29
+
30
+ ## Fase 2 — Análise de Padrões
31
+
32
+ 1. **Recorrência**: git log por fixes similares. Bug recorrente = problema estrutural
33
+ 2. **Profundidade**: módulo isolado ou atravessa camadas? Fix cria problemas em outro lugar?
34
+ 3. **Impacto**: módulos/features afetados, testes existentes, consumidores
35
+
36
+ ## Fase 3 — Teste de Hipóteses
37
+
38
+ 1. Formular 1-3 hipóteses específicas e refutáveis: "Se [causa], quando [teste], deveria [resultado]"
39
+ 2. Testar com mínima intervenção: logging, teste focado, UMA variável por vez
40
+ 3. Confirmada → Fase 4. Refutada → reformular. Todas refutadas → voltar à Fase 1
41
+
42
+ ## Fase 4 — Fix
43
+
44
+ 1. **Implementar fix mínimo**: causa raiz, não sintoma. Uma mudança por vez
45
+ 2. **Verificar**: comando original, `verification_commands` do config.json, regressões
46
+ 3. **Se falhar**: voltar à Fase 3 com hipótese refinada. Reverter, não empilhar
47
+ 4. **Após 3 tentativas**: PARAR. Listar premissas e tentativas. Sugerir revisão da abordagem
48
+ 5. **Se funcionar**: atualizar STATE.md, considerar teste de regressão
49
+
50
+ ## Integração com Hefesto
51
+
52
+ - **Feature ativa**: ler spec para comportamento esperado, fix consistente com requisitos
53
+ - **Verification commands**: usar de config.json na Fase 4
54
+ - **Argos**: se bug durante `/hefesto-execute`, o debug é pausa no workflow — retomar após resolver
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: hefesto-design
3
+ description: >
4
+ Contrato visual do projeto (.hefesto/DESIGN.md) — criação e enforcement do design system.
5
+ ATIVAR quando: .hefesto/DESIGN.md existe E tarefa envolve CSS, cores, fontes, componentes UI,
6
+ layout, Tailwind, styled-components, tema, dark mode, shadcn components ou qualquer decisão visual.
7
+ Também: /hefesto-design, "criar design", "paleta de cores", "design system", "identidade visual",
8
+ "look and feel", prototipar UI, fazer landing page.
9
+ user-invocable: true
10
+ disable-model-invocation: false
11
+ ---
12
+
13
+ # Hefesto Design
14
+
15
+ Cria o contrato visual do projeto (`.hefesto/DESIGN.md`) ou aplica durante implementação.
16
+
17
+ ## Princípio
18
+
19
+ O contrato visual deve ter **ponto de vista**. Cada decisão — fonte, cor, radius, shadow — deve ser uma escolha intencional que reflete o projeto, não um default seguro. Se o resultado parece que qualquer AI geraria, está errado. O teste: alguém olhando o design consegue adivinhar que tipo de projeto é?
20
+
21
+ ## Detecção de Modo
22
+
23
+ 1. Se invocado como `/hefesto-design` → **Modo Criação**
24
+ 2. Se `/hefesto-design update` → **Modo Atualização**
25
+ 3. Se ativado automaticamente durante tarefa visual → **Modo Enforcement**
26
+
27
+ ---
28
+
29
+ ## Modo Criação
30
+
31
+ ### Pré-requisitos
32
+
33
+ Verificar se `.hefesto/` existe. Se não, sugerir `/hefesto-init`.
34
+
35
+ ### Fase 1 — Discovery
36
+
37
+ Coletar informações com o usuário:
38
+
39
+ 1. **"Descreve teu projeto em uma frase"** — input aberto
40
+ 2. **"Quem é o público-alvo?"** — input aberto
41
+ 3. **"Em 3 palavras, que sentimento quer provocar?"** — input aberto (ex: confiança, energia, sofisticação)
42
+ 4. **Referência visual?** — seletor: URL de site / Imagem local (print/screenshot) / Descrição textual / Múltiplas fontes / Nenhuma
43
+ - Se URL: ler com WebFetch ou browser para extrair padrões visuais (cores, tipografia, layout)
44
+ - Se imagem: ler com Read tool para analisar padrões visuais (cores, tipografia, layout, componentes)
45
+ - Se descrição: usar como guia estético
46
+ - Se múltiplas fontes: aceitar combinação de URLs, imagens e descrições. Consolidar padrões visuais de todas as fontes numa síntese coerente, resolvendo conflitos pelo que melhor reflete o discovery
47
+
48
+ **Antes de gerar**: com base nas respostas, comprometer-se com uma direção estética clara. Não buscar equilíbrio — buscar personalidade. Uma cor dominante com acentos afiados supera paletas distribuídas uniformemente. Uma fonte com caráter supera uma fonte "segura". Documentar a direção escolhida e o porquê em 1-2 frases antes de iniciar a geração.
49
+
50
+ ### Fase 2 — Geração
51
+
52
+ 1. Ler `.hefesto/templates/TPL-DESIGN.md` como guia de estrutura
53
+ 2. Gerar contrato **completo** — todas seções, todos componentes
54
+ 3. Cada valor é **exato**: HEX, px, font-family, CSS value. Zero ambiguidade
55
+ 4. Validar contrastes WCAG AA (ver seção Validação WCAG AA)
56
+ 5. Do's/Don'ts específicos deste projeto — se servem para qualquer projeto, são genéricos demais
57
+ 6. Validar contra Checklist de Qualidade (ver seção abaixo)
58
+ 7. Apresentar resumo para aprovação:
59
+ - Nome e descrição do design
60
+ - Paleta (brand + semantic)
61
+ - Tipografia (fonts + scale resumido)
62
+ - Filosofia (radius, shadows, spacing)
63
+ - 3 Do's e 3 Don'ts mais importantes
64
+ 8. Seletor: **Aprovar** / **Ajustar** (especificar o quê) / **Refazer** (novo discovery)
65
+
66
+ ### Fase 3 — Gravação
67
+
68
+ 1. Salvar `.hefesto/DESIGN.md`
69
+ 2. Atualizar `.hefesto/config.json` → `design.status: "active"`
70
+ 3. Atualizar `.hefesto/STATE.md` com decisão
71
+
72
+ ---
73
+
74
+ ## Modo Enforcement
75
+
76
+ Ativado automaticamente quando o modelo detecta tarefa visual (criar componente, CSS, Tailwind, estilizar, layout, tema, cores, fontes).
77
+
78
+ ### Protocolo
79
+
80
+ 1. Ler `.hefesto/config.json` → `design.status`
81
+ - Se `"none"` → sair silenciosamente, sem output
82
+ - Se `"active"` → prosseguir
83
+ 2. Ler `.hefesto/DESIGN.md`
84
+ 3. **Todas** decisões visuais usam valores do contrato:
85
+ - Cores → paleta declarada
86
+ - Fontes → font stack declarado
87
+ - Tamanhos → type scale declarado
88
+ - Espaçamento → scale declarado
89
+ - Componentes → specs declaradas (estados, variantes, dimensões)
90
+ - Radius, shadows → filosofia declarada
91
+ - Animações → motion tokens declarados (durations, easings)
92
+ 4. Se o contrato **não cobre** algo necessário → **propor extensão** ao usuário, não inventar
93
+ 5. Se o contrato é ambíguo em algum ponto → perguntar ao usuário
94
+
95
+ ---
96
+
97
+ ## Modo Atualização
98
+
99
+ Invocado com `/hefesto-design update`.
100
+
101
+ 1. Ler `.hefesto/DESIGN.md` existente
102
+ 2. Perguntar o que quer ajustar (seletor: Cores / Tipografia / Componentes / Do's-Don'ts / Outro)
103
+ 3. Propor mudanças mantendo coerência com o restante do contrato
104
+ 4. Validar WCAG AA e checklist de qualidade
105
+ 5. Salvar com diff claro do que mudou
106
+
107
+ ---
108
+
109
+ ## Validação WCAG AA
110
+
111
+ Fórmula para verificar contraste de cores inline, sem dependências externas:
112
+
113
+ ```
114
+ Converter HEX para sRGB (0-1):
115
+ R = parseInt(hex.slice(1,3), 16) / 255
116
+ G = parseInt(hex.slice(3,5), 16) / 255
117
+ B = parseInt(hex.slice(5,7), 16) / 255
118
+
119
+ Linearizar cada canal:
120
+ Se C <= 0.03928 → C / 12.92
121
+ Senão → ((C + 0.055) / 1.055) ^ 2.4
122
+
123
+ Luminância relativa:
124
+ L = 0.2126 * R + 0.7152 * G + 0.0722 * B
125
+
126
+ Contrast ratio:
127
+ (L_lighter + 0.05) / (L_darker + 0.05)
128
+
129
+ Thresholds WCAG AA:
130
+ >= 4.5:1 — texto normal (< 18px regular, < 14px bold)
131
+ >= 3.0:1 — texto grande (>= 18px regular, >= 14px bold)
132
+ ```
133
+
134
+ Verificar obrigatoriamente:
135
+
136
+ - Text Primary sobre Background
137
+ - Text Primary sobre Surface
138
+ - Text Secondary sobre Background
139
+ - Text Secondary sobre Surface
140
+ - Semantic colors (Success, Warning, Error) sobre Background
141
+
142
+ ---
143
+
144
+ ## Anti-patterns
145
+
146
+ Erros comuns que o modelo comete ao gerar design systems. Detectar e corrigir antes de apresentar o contrato:
147
+
148
+ - **Contrato genérico** — Inter + blue primary + rounded 8px + subtle shadows = output padrão de qualquer modelo. Se o contrato parece genérico, refazer com mais personalidade baseada no discovery
149
+ - **Inconsistência interna** — cores declaradas na paleta mas não usadas nos componentes, ou cores nos componentes que não existem na paleta
150
+ - **Valores órfãos** — tokens mencionados em uma seção que não aparecem em outra
151
+ - **Filosofia ausente** — listar valores sem explicar o "porquê". O Overview existe para dar contexto narrativo a cada decisão
152
+ - **Componentes incompletos** — definir apenas default state, esquecendo hover, focus, active, disabled, error
153
+ - **Do's/Don'ts genéricos** — "Use cores consistentes" ou "Mantenha espaçamento uniforme" servem para qualquer projeto. Cada regra deve ser consequência direta da filosofia deste design específico
154
+ - **Spacing desalinhado** — base unit 8px mas usando valores como 10px, 15px, 22px que quebram o grid
155
+ - **Contrastes não verificados** — declarar paleta sem rodar WCAG AA nas combinações text-on-surface
156
+ - **Dark mode esquecido** — se o projeto suporta dark mode, todas surfaces e content colors precisam de variantes declaradas
157
+ - **Default seguro** — escolher a fonte, cor ou layout "que funciona para tudo" é escolher nada. Cada valor deve ser consequência da direção estética, não uma aposta conservadora
158
+ - **Convergência** — se o contrato resultante é indistinguível de outro projeto, falta personalidade. O discovery existe para diferenciar
159
+
160
+ ---
161
+
162
+ ## Checklist de Qualidade
163
+
164
+ Validar antes de apresentar o contrato ao usuário:
165
+
166
+ - [ ] **Completude** — todas seções do TPL-DESIGN.md preenchidas com valores reais?
167
+ - [ ] **Coerência narrativa** — Overview reflete as decisões visuais? Do's/Don'ts derivam da filosofia?
168
+ - [ ] **Especificidade** — todos valores são copy-paste ready (HEX, px, font-family, CSS value)? Nenhum "algo como" ou "variação de"?
169
+ - [ ] **Consistência interna** — tokens usados nos componentes batem com a paleta? Font specs batem com o type scale?
170
+ - [ ] **WCAG AA** — todas combinações text-on-surface verificadas com a fórmula?
171
+ - [ ] **Componentes completos** — todos estados definidos (default, hover, active, focus, disabled)?
172
+ - [ ] **Anti-patterns** — nenhum item da lista acima presente no contrato?
173
+ - [ ] **Personalidade** — o contrato reflete o projeto, não um template genérico?
174
+ - [ ] **Memorabilidade** — alguém vendo apenas a paleta + tipografia consegue intuir o tipo de projeto?
175
+
176
+ ---
177
+
178
+ ## Regras
179
+
180
+ - **DESIGN.md em Inglês** — o contrato é consumido por agentes e código
181
+ - **Zero dependências** — validação WCAG AA inline, sem scripts
182
+ - **Valores exatos** — nunca gerar "algo entre X e Y" ou "variação de"
183
+ - **Font stack com fallbacks** — sempre incluir fallback CSS completo (system fonts)
184
+ - **Filosofia explícita** — border radius, shadows e spacing devem ter justificativa, não apenas valores
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: hefesto-execute
3
+ description: >
4
+ Executa a implementação de uma feature Hefesto. Decompõe em fases atômicas, roda verificação
5
+ após cada fase, e invoca Argos para QA final (max 3 iterações).
6
+ Usar com: /hefesto-execute [FEAT-NNN]. Requer feature com status "ready" ou "active".
7
+ Para criar o spec da feature, usar /hefesto-new-feature primeiro.
8
+ user-invocable: true
9
+ disable-model-invocation: true
10
+ argument-hint: '[FEAT-NNN]'
11
+ ---
12
+
13
+ # Hefesto Execute
14
+
15
+ Executa a implementação de uma feature, do reconhecimento à validação final.
16
+
17
+ Ciclo: identificar feature → reconhecer codebase → detectar verificação → executar fases → validar com Argos → QA loop → concluir.
18
+
19
+ ## Pré-requisitos
20
+
21
+ Verificar se `.hefesto/` existe. Se não, sugerir `/hefesto-init`.
22
+
23
+ ## Workflow
24
+
25
+ ### Fase 1 — Identificar Feature
26
+
27
+ 1. Se argumento `FEAT-NNN` fornecido, buscar em `.hefesto/features/FEAT-NNN-*.md`
28
+ 2. Senão, ler `.hefesto/STATE.md` → feature ativa
29
+ 3. Se nenhuma feature ativa: listar features `ready`, apresentar via seletor interativo. Se não houver, sugerir `/hefesto-new-feature`
30
+ 4. Validar status:
31
+ - `ready` ou `active` → prosseguir
32
+ - `draft` → "Promova para ready antes de executar"
33
+ - `done` → informar e sair
34
+ - `blocked` → informar, seletor: desbloquear (status → `ready`) / cancelar (mantém `blocked`)
35
+
36
+ ### Fase 2 — Reconhecimento
37
+
38
+ Sempre delegar para `hefesto-hermes` com: ID, título, requisitos, fases. O Hermes calibra a profundidade automaticamente — features simples recebem relatório curto, complexas recebem mapeamento completo. Usar output para informar execução: padrões, pontos de integração, ordem de ataque.
39
+
40
+ **Dispatch paralelo**: se a feature também precisa de pesquisa, Athena e Hermes podem rodar simultaneamente — exceto quando a pesquisa pode mudar a abordagem (executar Athena primeiro).
41
+
42
+ ### Fase 3 — Detectar Verificação
43
+
44
+ 1. Ler `.hefesto/config.json` → `verification`
45
+ 2. Se `commands` vazio e `auto_detect` true:
46
+ - Ler `package.json`, buscar scripts: `test`, `lint`, `typecheck`, `tsc`, `check`, `format:check`
47
+ - Seletor: "Detectei estes comandos: [lista]. Confirmar?" (Sim / Editar / Pular)
48
+ 3. Se nada detectado, perguntar ao usuário
49
+ 4. Salvar em `config.json → verification.commands` e frontmatter da feature
50
+
51
+ ### Fase 4 — Executar Fases
52
+
53
+ Para **cada Fase** da seção "Implementação" da feature:
54
+
55
+ #### Fases em paralelo (quando aplicável)
56
+
57
+ Critérios (TODOS devem ser verdadeiros): sem arquivos compartilhados, sem dependência de dados, verificação independente. Na dúvida, sequencial.
58
+
59
+ #### 4.1 Preparar
60
+
61
+ - Ler tarefas, avaliar granularidade (2-5 min cada)
62
+ - Se primeira fase: status → `active`, atualizar STATE.md
63
+
64
+ #### 4.2 Executar tarefas
65
+
66
+ Executar no contexto principal (sem subagents para implementação). Para cada tarefa:
67
+
68
+ 1. **Implementar**: ler arquivos antes de modificar, seguir padrões do Hermes
69
+ 2. **Self-review inline** (~30s):
70
+ - [ ] Requisito(s) atendido(s)?
71
+ - [ ] Nenhum placeholder/TODO no código?
72
+ - [ ] Segue padrões do codebase?
73
+ - [ ] Escopo respeitado?
74
+ - [ ] Nenhuma lógica duplicada? (Grep antes de criar helpers)
75
+ - [ ] Se tarefa visual e `.hefesto/DESIGN.md` existe: valores seguem o contrato?
76
+ 3. Se falhar, corrigir antes de prosseguir
77
+ 4. Marcar tarefa concluída no checklist
78
+
79
+ #### 4.3 Verification Gate
80
+
81
+ Após todas as tarefas da fase:
82
+
83
+ 1. Rodar cada `verification_command` via Bash
84
+ 2. Se falhar: analisar erro, auto-fix, re-rodar. **Max 3 tentativas**
85
+ 3. Se falhar após retries: marcar blocker em STATE.md, informar usuário, sugerir `/hefesto-debug`. Não prosseguir
86
+ 4. **Stuck detection**: mesmo erro 3x = PARAR e pedir orientação
87
+
88
+ #### 4.4 Atualizar Tracking
89
+
90
+ 1. Incrementar `phases_done` no frontmatter
91
+ 2. Atualizar STATE.md (barra de progresso, fase atual)
92
+
93
+ ### Fase 4.5 — Revisão de Qualidade e Segurança
94
+
95
+ Após todas as fases de implementação, antes do Argos:
96
+
97
+ 1. `/hefesto-simplify` nos arquivos modificados
98
+ 2. `/hefesto-security` nos mesmos arquivos
99
+ 3. Re-rodar verificação se fixes aplicados
100
+ 4. Pular se o usuário pedir para acelerar
101
+
102
+ ### Fase 5 — Validação (Argos)
103
+
104
+ Após TODAS as fases executadas: delegar para `hefesto-argos` com feature ID, fases, paths. Aguardar veredicto.
105
+
106
+ ### Fase 6 — QA Loop
107
+
108
+ O protocolo detalhado do QA loop (foco em itens falhos, detecção de regressão, campos do veredicto) está em `hefesto-argos`. Aqui, o fluxo de decisão:
109
+
110
+ **Se `needs-work`:**
111
+
112
+ 1. Incrementar `qa_iterations` no frontmatter
113
+ 2. Se `qa_iterations >= 3`: **PARAR** — problema arquitetural. Sugerir `/hefesto-debug`. Atualizar STATE.md
114
+ 3. Se < 3: aplicar fixes, re-rodar verificação, re-delegar para Argos com veredicto anterior
115
+
116
+ **Se `approved` ou `approved-with-notes`:**
117
+
118
+ 1. Status → `done`, limpar feature ativa em STATE.md
119
+ 2. Se `approved-with-notes`: exibir notas ao usuário
120
+
121
+ ### Fase 7 — Wrap Up
122
+
123
+ 1. Atualizar STATE.md (posição, última atividade, continuidade)
124
+ 2. Exibir resumo: feature, fases executadas, iterações QA, veredicto
125
+ 3. Sugerir `/hefesto-new-feature` para a próxima
126
+
127
+ ## Regras
128
+
129
+ - **Implementação no contexto principal** — subagents só para Hermes (recon) e Argos (validação)
130
+ - **Self-review após cada tarefa**, verification gate após cada fase
131
+ - **QA loop max 3 iterações** — regressão = `needs-work` obrigatório
132
+ - **STATE.md atualizado** a cada mudança significativa
133
+ - **Campos ausentes**: inicializar com defaults (qa_iterations: 0, last_verdict: null)