@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
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: hefesto-simplify
3
+ description: >
4
+ Revisão de código para reuso, qualidade e eficiência. Corrige issues preservando funcionalidade.
5
+ ATIVAR quando: "simplificar", "refatorar", "code review", "código duplicado", "limpar código",
6
+ "otimizar", "extrair pra lib", "checar qualidade", "código repetido", "performance".
7
+ Também: revisar reuso de utilitários, code smells, leaky abstractions, memory leaks.
8
+ user-invocable: true
9
+ disable-model-invocation: false
10
+ argument-hint: '[arquivos ou escopo opcional]'
11
+ ---
12
+
13
+ # Hefesto Simplify
14
+
15
+ Revisão de código modificado focada em reuso, qualidade e eficiência. Corrige issues encontradas preservando funcionalidade.
16
+
17
+ ## Fase 1 — Identificar Escopo
18
+
19
+ Rodar `git diff` (ou `git diff HEAD` se houver staged changes) para ver o que mudou. Determinar o escopo:
20
+
21
+ 1. Se argumentos foram fornecidos (paths de arquivos), usar esses arquivos como escopo
22
+ 2. Senão, identificar a feature ativa:
23
+ - Ler `.hefesto/STATE.md` → seção "Feature Ativa"
24
+ - Se houver feature ativa, ler o frontmatter do arquivo da feature em `.hefesto/features/`
25
+ - Usar `git diff --name-only` para listar arquivos modificados e não comitados
26
+ 3. Fallback: `git diff --name-only HEAD~1`
27
+ 4. Se nenhuma mudança no git, revisar os arquivos mais recentemente modificados que o usuário mencionou ou que foram editados anteriormente na conversa
28
+ 5. Filtrar: incluir apenas arquivos de código-fonte (`.ts`, `.tsx`, `.js`, `.jsx`, `.py`, `.go`, `.rs`, `.java`, etc.). Excluir: `node_modules/`, `.next/`, `dist/`, `build/`, arquivos de configuração, lockfiles, testes, arquivos gerados
29
+
30
+ ## Fase 2 — Lançar Três Agentes de Revisão em Paralelo
31
+
32
+ Usar a ferramenta Agent para lançar os três agentes concorrentemente em uma única mensagem. Passar para cada agente o diff completo para que tenha o contexto completo.
33
+
34
+ ### Agent 1: Code Reuse Review
35
+
36
+ Para cada mudança:
37
+
38
+ 1. **Buscar utilitários e helpers existentes** que possam substituir código recém-escrito. Procurar padrões similares em outros lugares do codebase — locais comuns são diretórios de utilitários, módulos compartilhados e arquivos adjacentes aos modificados
39
+ 2. **Flaggar qualquer função nova que duplica funcionalidade existente.** Sugerir a função existente para usar no lugar
40
+ 3. **Flaggar lógica inline que poderia usar utilitário existente** — manipulação de string manual, path handling customizado, checks de ambiente ad-hoc, type guards manuais e padrões similares são candidatos comuns
41
+ 4. **Duplicação cross-feature**: para funções exportadas nos arquivos do escopo, grep pelo nome em todo o projeto (excluindo o arquivo de origem). Se encontrar implementação idêntica ou muito similar em outro local, flaggar e sugerir extração para módulo compartilhado
42
+ 5. **Helpers não externalizados**: identificar funções helper definidas dentro de componentes/módulos que não dependem de state/props local e são genéricas o suficiente para compartilhar. Verificar se já existe algo similar nos diretórios compartilhados do projeto
43
+
44
+ ### Agent 2: Code Quality Review
45
+
46
+ Revisar as mesmas mudanças para padrões problemáticos:
47
+
48
+ 1. **Redundant state**: state que duplica state existente, valores cacheados que poderiam ser derivados, observers/effects que poderiam ser chamadas diretas
49
+ 2. **Parameter sprawl**: adicionar novos parâmetros a uma função ao invés de generalizar ou reestruturar os existentes
50
+ 3. **Copy-paste com variação leve**: blocos de código near-duplicate que deveriam ser unificados com uma abstração compartilhada
51
+ 4. **Leaky abstractions**: expor detalhes internos que deveriam ser encapsulados, ou quebrar boundaries de abstração existentes
52
+ 5. **Stringly-typed code**: usar strings raw onde constants, enums (string unions) ou branded types já existem no codebase
53
+ 6. **Unnecessary JSX nesting**: wrapper Boxes/elements que não adicionam valor de layout — verificar se props do componente interno (flexShrink, alignItems, etc.) já fornecem o comportamento necessário
54
+ 7. **Unnecessary comments**: comentários explicando O QUE o código faz (identificadores bem nomeados já fazem isso), narrando a mudança, ou referenciando task/caller — deletar; manter apenas WHY não óbvio (constraints escondidas, invariantes sutis, workarounds)
55
+ 8. **Ternários aninhados**: substituir por `if/else` ou `switch`. Um nível de ternário é ok; dois ou mais precisa simplificar
56
+ 9. **Nesting excessivo**: funções com mais de 3 níveis de indentação. Aplicar early return ou extrair subfunção
57
+ 10. **Código morto**: imports não usados, variáveis declaradas mas não referenciadas, branches de condição inalcançáveis
58
+ 11. **Nomes pouco descritivos**: variáveis de 1-2 letras (exceto iteradores `i`, `j`), nomes genéricos como `data`, `temp`, `result` quando o contexto permite ser mais específico
59
+ 12. **Abstrações prematuras**: wrappers que apenas chamam outra função sem adicionar lógica, abstrações de uso único (classes, interfaces, factories usadas por apenas um consumidor), configurabilidade excessiva (parâmetros que só têm um valor possível)
60
+ 13. **Padrões do projeto**: ler `CLAUDE.md` e `.hefesto/PROJECT.md` (se existir). Comparar código do escopo contra convenções estabelecidas — imports, naming conventions, error handling, estrutura de features. Reportar desvios
61
+
62
+ ### Agent 3: Efficiency Review
63
+
64
+ Revisar as mesmas mudanças para eficiência:
65
+
66
+ 1. **Trabalho desnecessário**: computações redundantes, leituras de arquivo repetidas, chamadas de rede/API duplicadas, padrões N+1
67
+ 2. **Concorrência perdida**: operações independentes executadas sequencialmente quando poderiam ser paralelas
68
+ 3. **Hot-path bloat**: novo trabalho bloqueante adicionado a startup ou hot paths per-request/per-render
69
+ 4. **Updates recorrentes no-op**: updates de state/store dentro de polling loops, intervals, ou event handlers que disparam incondicionalmente — adicionar guard de change-detection para que consumidores downstream não sejam notificados quando nada mudou. Também: se uma função wrapper recebe um callback updater/reducer, verificar que respeita retornos same-reference (ou qualquer que seja o sinal de "sem mudança") — senão, early-return no-ops dos callers são silenciosamente derrotados
70
+ 5. **Checks de existência desnecessários**: verificar existência de arquivo/recurso antes de operar (anti-pattern TOCTOU) — operar diretamente e tratar o erro
71
+ 6. **Memory**: data structures unbounded, cleanup faltando, event listener leaks
72
+ 7. **Operações broad demais**: ler arquivos inteiros quando apenas uma porção é necessária, carregar todos os items quando filtrando por um
73
+
74
+ ## Fase 3 — Aplicar Correções
75
+
76
+ Aguardar os três agentes completarem. Agregar os findings e corrigir cada issue diretamente. Se um finding é false positive ou não vale a pena endereçar, anotar e seguir em frente — não argumentar com o finding, apenas pular.
77
+
78
+ Restrições: não modificar configs/testes/gerados, respeitar boundaries de packages em monorepo, rodar `verification.commands` após fixes.
79
+
80
+ Relatório via `TPL-SIMPLIFY.md`. Omitir dimensões sem issues. Código limpo → confirmar sem relatório.
81
+
82
+ Funciona sem `.hefesto/` (usa `git diff` e `CLAUDE.md`). Se invocado pelo `/hefesto-execute`, relatório vai para o Argos.
@@ -0,0 +1,54 @@
1
+ # CLAUDE.md
2
+
3
+ Este arquivo orienta o Claude Code (claude.ai/code) ao trabalhar com o código deste repositório.
4
+
5
+ # {{PROJECT_NAME}}
6
+
7
+ {{PROJECT_DESCRIPTION}}
8
+
9
+ ## Comandos
10
+
11
+ {{COMMANDS}}
12
+
13
+ ## Arquitetura
14
+
15
+ {{ARCHITECTURE}}
16
+
17
+ ## Convenções
18
+
19
+ {{CONVENTIONS}}
20
+
21
+ ## Idioma
22
+
23
+ - Comunicação com o usuário: Português BR
24
+ - Identificadores de código: Inglês
25
+
26
+ ## Hefesto
27
+
28
+ Este projeto usa o [Hefesto](https://www.npmjs.com/package/@lugom.io/hefesto) para gestão de features e desenvolvimento feature-driven.
29
+
30
+ ### Estrutura .hefesto/
31
+
32
+ - `PROJECT.md` — Visão, restrições, features e decisões
33
+ - `STATE.md` — Memória entre sessões (manter < 80 linhas)
34
+ - `config.json` — Configuração e counters
35
+ - `features/` — Documentos de feature (FEAT-NNN-slug.md)
36
+ - `research/` — Documentos de pesquisa (RES-NNN-slug.md)
37
+ - `DESIGN.md` — Contrato visual (cores, tipografia, componentes, tokens)
38
+
39
+ ### Skills disponíveis
40
+
41
+ - `/hefesto-init` — Inicializar ou atualizar configuração do projeto
42
+ - `/hefesto-new-feature` — Criar nova feature
43
+ - `/hefesto-execute` — Executar implementação de feature (verificação + QA loop)
44
+ - `/hefesto-debug` — Debugging sistemático (causa raiz → hipótese → fix)
45
+ - `/hefesto-design` — Criar contrato visual do projeto
46
+ - `/hefesto-security` — Auditoria de segurança (OWASP, secrets, boundaries)
47
+ - `/hefesto-simplify` — Simplificação e reuso de código
48
+
49
+ ### Workflow
50
+
51
+ 1. Features seguem o ciclo: `draft` → `ready` → `active` → `done`
52
+ 2. Cada feature tem Fases de implementação (stories atômicas)
53
+ 3. `STATE.md` é atualizado a cada mudança de estado
54
+ 4. IDs são sequenciais e nunca reutilizados
@@ -0,0 +1,19 @@
1
+ {
2
+ "version": "{{HEFESTO_VERSION}}",
3
+ "project": {
4
+ "name": "",
5
+ "description": "",
6
+ "language": "pt-BR",
7
+ "platform": "",
8
+ "lang": "",
9
+ "monorepo": false
10
+ },
11
+ "runtime": "claude",
12
+ "feature": { "id_prefix": "FEAT", "counter": 0 },
13
+ "research": { "id_prefix": "RES", "counter": 0 },
14
+ "design": { "status": "none" },
15
+ "verification": {
16
+ "commands": [],
17
+ "auto_detect": true
18
+ }
19
+ }
@@ -0,0 +1,305 @@
1
+ # {{DESIGN_NAME}}
2
+
3
+ {{DESIGN_DESCRIPTION}}
4
+
5
+ ## Overview
6
+
7
+ {{DESIGN_OVERVIEW}}
8
+
9
+ ## Colors
10
+
11
+ ### Brand Palette
12
+
13
+ | Token | Hex | Role |
14
+ | --------- | --------- | -------- |
15
+ | Primary | `{{HEX}}` | {{ROLE}} |
16
+ | Secondary | `{{HEX}}` | {{ROLE}} |
17
+ | Tertiary | `{{HEX}}` | {{ROLE}} |
18
+
19
+ ### Surface Palette
20
+
21
+ | Token | Hex | Role |
22
+ | -------------- | --------- | -------- |
23
+ | Background | `{{HEX}}` | {{ROLE}} |
24
+ | Surface | `{{HEX}}` | {{ROLE}} |
25
+ | Surface Raised | `{{HEX}}` | {{ROLE}} |
26
+
27
+ ### Content Palette
28
+
29
+ | Token | Hex | Role |
30
+ | -------------- | --------- | -------- |
31
+ | Text Primary | `{{HEX}}` | {{ROLE}} |
32
+ | Text Secondary | `{{HEX}}` | {{ROLE}} |
33
+ | Text Tertiary | `{{HEX}}` | {{ROLE}} |
34
+
35
+ ### Border Palette
36
+
37
+ | Token | Hex |
38
+ | ------------- | --------- |
39
+ | Border Subtle | `{{HEX}}` |
40
+ | Border Medium | `{{HEX}}` |
41
+ | Border Strong | `{{HEX}}` |
42
+
43
+ ### Semantic Colors
44
+
45
+ | Token | Hex |
46
+ | ------- | --------- |
47
+ | Success | `{{HEX}}` |
48
+ | Warning | `{{HEX}}` |
49
+ | Error | `{{HEX}}` |
50
+ | Info | `{{HEX}}` |
51
+
52
+ ## Typography
53
+
54
+ ### Font Stack
55
+
56
+ | Role | Font |
57
+ | ---------------- | ---------------- |
58
+ | Display/Headings | {{FONT_DISPLAY}} |
59
+ | UI/Body | {{FONT_BODY}} |
60
+ | Mono/Code | {{FONT_MONO}} |
61
+
62
+ ### Type Scale
63
+
64
+ | Level | Font | Size | Weight | Line Height | Letter Spacing | Usage |
65
+ | ---------- | -------- | -------- | ---------- | --------------- | ------------------ | --------- |
66
+ | Display | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
67
+ | Headline | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
68
+ | Subhead | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
69
+ | Body Large | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
70
+ | Body | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
71
+ | Body Small | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
72
+ | Caption | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
73
+ | Overline | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
74
+ | Code | {{FONT}} | {{SIZE}} | {{WEIGHT}} | {{LINE_HEIGHT}} | {{LETTER_SPACING}} | {{USAGE}} |
75
+
76
+ ## Spacing
77
+
78
+ | Property | Value |
79
+ | -------------------------- | --------------- |
80
+ | Base unit | {{BASE_UNIT}}px |
81
+ | Scale | {{SCALE}} |
82
+ | Component padding — small | {{PAD_SM}}px |
83
+ | Component padding — medium | {{PAD_MD}}px |
84
+ | Component padding — large | {{PAD_LG}}px |
85
+ | Section spacing — mobile | {{SPACE_MOB}}px |
86
+ | Section spacing — tablet | {{SPACE_TAB}}px |
87
+ | Section spacing — desktop | {{SPACE_DSK}}px |
88
+
89
+ ## Border Radius
90
+
91
+ {{BORDER_RADIUS_PHILOSOPHY}}
92
+
93
+ | Token | Value | Usage |
94
+ | ------ | ----------------- | --------- |
95
+ | None | {{RADIUS_NONE}}px | {{USAGE}} |
96
+ | Small | {{RADIUS_SM}}px | {{USAGE}} |
97
+ | Medium | {{RADIUS_MD}}px | {{USAGE}} |
98
+ | Large | {{RADIUS_LG}}px | {{USAGE}} |
99
+ | XL | {{RADIUS_XL}}px | {{USAGE}} |
100
+ | Full | 9999px | {{USAGE}} |
101
+
102
+ ## Shadows
103
+
104
+ {{SHADOW_PHILOSOPHY}}
105
+
106
+ | Level | CSS Value | Usage |
107
+ | ------- | ---------------- | --------- |
108
+ | Subtle | {{SHADOW_VALUE}} | {{USAGE}} |
109
+ | Medium | {{SHADOW_VALUE}} | {{USAGE}} |
110
+ | Large | {{SHADOW_VALUE}} | {{USAGE}} |
111
+ | Overlay | {{SHADOW_VALUE}} | {{USAGE}} |
112
+
113
+ {{SPECIAL_TREATMENTS}}
114
+
115
+ ## Motion
116
+
117
+ {{MOTION_PHILOSOPHY}}
118
+
119
+ | Property | Value | Usage |
120
+ | --------------- | --------------------- | --------- |
121
+ | Duration Fast | {{DURATION_FAST}}ms | {{USAGE}} |
122
+ | Duration Normal | {{DURATION_NORMAL}}ms | {{USAGE}} |
123
+ | Duration Slow | {{DURATION_SLOW}}ms | {{USAGE}} |
124
+ | Easing Default | {{EASING_DEFAULT}} | {{USAGE}} |
125
+ | Easing Enter | {{EASING_ENTER}} | {{USAGE}} |
126
+ | Easing Exit | {{EASING_EXIT}} | {{USAGE}} |
127
+
128
+ ## Components
129
+
130
+ ### Buttons
131
+
132
+ **Primary**
133
+
134
+ - Background: `{{HEX}}`
135
+ - Text: `{{HEX}}`
136
+ - Border: {{BORDER}}
137
+ - Padding: {{PADDING}}
138
+ - Font: {{FONT_SPEC}}
139
+ - Radius: {{RADIUS}}
140
+ - Hover: {{HOVER_STATE}}
141
+ - Active: {{ACTIVE_STATE}}
142
+
143
+ **Secondary**
144
+
145
+ - Background: {{BACKGROUND}}
146
+ - Text: `{{HEX}}`
147
+ - Border: {{BORDER}}
148
+ - Padding: {{PADDING}}
149
+ - Font: {{FONT_SPEC}}
150
+ - Radius: {{RADIUS}}
151
+ - Hover: {{HOVER_STATE}}
152
+ - Active: {{ACTIVE_STATE}}
153
+
154
+ **Ghost**
155
+
156
+ - Background: transparent
157
+ - Text: `{{HEX}}`
158
+ - Border: none
159
+ - Padding: {{PADDING}}
160
+ - Font: {{FONT_SPEC}}
161
+ - Radius: {{RADIUS}}
162
+ - Hover: {{HOVER_STATE}}
163
+ - Active: {{ACTIVE_STATE}}
164
+
165
+ **Destructive**
166
+
167
+ - Background: `{{HEX}}`
168
+ - Text: `{{HEX}}`
169
+ - Border: {{BORDER}}
170
+ - Padding: {{PADDING}}
171
+ - Font: {{FONT_SPEC}}
172
+ - Radius: {{RADIUS}}
173
+ - Hover: {{HOVER_STATE}}
174
+ - Active: {{ACTIVE_STATE}}
175
+
176
+ **Sizes:** Small {{SIZE_SM}} / Medium {{SIZE_MD}} / Large {{SIZE_LG}}
177
+
178
+ **Disabled:** {{DISABLED_STATE}}
179
+
180
+ ### Cards
181
+
182
+ **Default**
183
+
184
+ - Background: `{{HEX}}`
185
+ - Border: {{BORDER}}
186
+ - Radius: {{RADIUS}}
187
+ - Padding: {{PADDING}}
188
+ - Shadow: {{SHADOW}}
189
+ - Hover: {{HOVER_STATE}}
190
+
191
+ **Elevated**
192
+
193
+ - Background: `{{HEX}}`
194
+ - Border: {{BORDER}}
195
+ - Radius: {{RADIUS}}
196
+ - Padding: {{PADDING}}
197
+ - Shadow: {{SHADOW}}
198
+
199
+ ### Inputs
200
+
201
+ **Text Input**
202
+
203
+ - Height: {{INPUT_HEIGHT}}px
204
+ - Background: `{{HEX}}`
205
+ - Border: {{BORDER}}
206
+ - Radius: {{RADIUS}}
207
+ - Padding: {{PADDING}}
208
+ - Font: {{FONT_SPEC}}
209
+ - Text color: `{{HEX}}`
210
+ - Placeholder color: `{{HEX}}`
211
+ - Focus: {{FOCUS_STATE}}
212
+ - Error: {{ERROR_STATE}}
213
+ - Disabled: {{DISABLED_STATE}}
214
+
215
+ **Label:** {{LABEL_SPEC}}
216
+
217
+ **Helper Text:** {{HELPER_SPEC}}
218
+
219
+ ### Chips
220
+
221
+ **Filter Chip**
222
+
223
+ - Background: {{BACKGROUND}}
224
+ - Border: {{BORDER}}
225
+ - Radius: {{RADIUS}}
226
+ - Padding: {{PADDING}}
227
+ - Font: {{FONT_SPEC}}
228
+ - Text: `{{HEX}}`
229
+ - Selected: {{SELECTED_STATE}}
230
+
231
+ **Status Chip**
232
+
233
+ - Padding: {{PADDING}}
234
+ - Font: {{FONT_SPEC}}
235
+ - Radius: {{RADIUS}}
236
+ - Success: {{SUCCESS_STATE}}
237
+ - Warning: {{WARNING_STATE}}
238
+ - Error: {{ERROR_STATE}}
239
+
240
+ ### Lists
241
+
242
+ **Default List Item**
243
+
244
+ - Padding: {{PADDING}}
245
+ - Border bottom: {{BORDER}}
246
+ - Font: {{FONT_SPEC}}
247
+ - Text: `{{HEX}}`
248
+ - Secondary text: {{SECONDARY_SPEC}}
249
+ - Hover: {{HOVER_STATE}}
250
+ - Active: {{ACTIVE_STATE}}
251
+ - Leading element: {{LEADING_SPEC}}
252
+
253
+ ### Checkboxes
254
+
255
+ - Size: {{CHECKBOX_SIZE}}px
256
+ - Border: {{BORDER}}
257
+ - Radius: {{RADIUS}}
258
+ - Background: `{{HEX}}`
259
+ - Checked: {{CHECKED_STATE}}
260
+ - Indeterminate: {{INDETERMINATE_STATE}}
261
+ - Hover: {{HOVER_STATE}}
262
+ - Focus: {{FOCUS_STATE}}
263
+ - Disabled: {{DISABLED_STATE}}
264
+ - Label: {{LABEL_SPEC}}
265
+
266
+ ### Radio Buttons
267
+
268
+ - Size: {{RADIO_SIZE}}px
269
+ - Border: {{BORDER}}
270
+ - Radius: 9999px
271
+ - Background: `{{HEX}}`
272
+ - Selected: {{SELECTED_STATE}}
273
+ - Hover: {{HOVER_STATE}}
274
+ - Focus: {{FOCUS_STATE}}
275
+ - Disabled: {{DISABLED_STATE}}
276
+ - Label: {{LABEL_SPEC}}
277
+
278
+ ### Tooltips
279
+
280
+ - Background: `{{HEX}}`
281
+ - Text: `{{HEX}}`
282
+ - Font: {{FONT_SPEC}}
283
+ - Padding: {{PADDING}}
284
+ - Radius: {{RADIUS}}
285
+ - Max width: {{TOOLTIP_MAX_WIDTH}}px
286
+ - Arrow: {{ARROW_SPEC}}
287
+ - Delay: {{DELAY_ENTER}}ms enter, {{DELAY_LEAVE}}ms leave
288
+ - Shadow: {{SHADOW}}
289
+
290
+ ## Do's and Don'ts
291
+
292
+ 1. **Do** {{SPECIFIC_DO_1}}
293
+ 2. **Don't** {{SPECIFIC_DONT_1}}
294
+ 3. **Do** {{SPECIFIC_DO_2}}
295
+ 4. **Don't** {{SPECIFIC_DONT_2}}
296
+ 5. **Do** {{SPECIFIC_DO_3}}
297
+ 6. **Don't** {{SPECIFIC_DONT_3}}
298
+ 7. **Do** {{SPECIFIC_DO_4}}
299
+ 8. **Do** {{SPECIFIC_DO_5}}
300
+ 9. **Don't** {{SPECIFIC_DONT_4}}
301
+ 10. **Do** {{SPECIFIC_DO_6}}
302
+
303
+ ---
304
+
305
+ _Gerado por /hefesto-design em {{DATE}}_
@@ -1,11 +1,14 @@
1
1
  ---
2
- id: { { FEATURE_ID } }
3
- title: "{{FEATURE_TITLE}}"
2
+ id: '{{FEATURE_ID}}'
3
+ title: '{{FEATURE_TITLE}}'
4
4
  status: draft
5
- created: { { DATE } }
6
- updated: { { DATE } }
5
+ created: '{{DATE}}'
6
+ updated: '{{DATE}}'
7
7
  phases_total: 0
8
8
  phases_done: 0
9
+ qa_iterations: 0
10
+ last_verdict: null
11
+ verification_commands: []
9
12
  ---
10
13
 
11
14
  # {{FEATURE_ID}}: {{FEATURE_TITLE}}
@@ -33,14 +36,18 @@ phases_done: 0
33
36
 
34
37
  ### Fase 1: {{PHASE_1_NAME}}
35
38
 
39
+ **Requisitos:** {{REQ_IDS}}
40
+
36
41
  **Arquivos:**
37
42
 
38
43
  - `{{FILE_PATH}}` — {{FILE_DESCRIPTION}}
39
44
 
40
45
  **Tarefas:**
41
46
 
42
- - [ ] {{TASK_1}}
43
- - [ ] {{TASK_2}}
47
+ - [ ] **{{TASK_1}}**
48
+ Arquivo: `{{FILE_PATH}}`
49
+ Verificar: `{{VERIFY_COMMAND}}`
50
+ - [ ] **{{TASK_2}}**
44
51
 
45
52
  **Critérios de Aceitação:**
46
53
 
@@ -0,0 +1,50 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ ## O Que É
4
+
5
+ {{PROJECT_DESCRIPTION}}
6
+
7
+ ## Valor Central
8
+
9
+ {{CORE_VALUE}}
10
+
11
+ ## Contexto
12
+
13
+ {{CONTEXT}}
14
+
15
+ ## Restrições
16
+
17
+ - **Stack**: {{STACK_CONSTRAINT}}
18
+ - **Prazo**: {{DEADLINE_CONSTRAINT}}
19
+
20
+ ## Convenções
21
+
22
+ {{CONVENTIONS}}
23
+
24
+ ## Features
25
+
26
+ | ID | Título | Status | Fases | Progresso |
27
+ | --- | ------ | ------ | ----- | --------- |
28
+ | — | — | — | — | — |
29
+
30
+ ### Legenda
31
+
32
+ - `draft` — Em definição
33
+ - `ready` — Pronta para execução
34
+ - `active` — Em andamento
35
+ - `done` — Completa e verificada
36
+ - `blocked` — Bloqueada
37
+
38
+ ## Receitas Disponíveis
39
+
40
+ {{RECIPES}}
41
+
42
+ ## Decisões
43
+
44
+ | Decisão | Justificativa | Resultado |
45
+ | ------- | ------------- | --------- |
46
+ | — | — | — |
47
+
48
+ ---
49
+
50
+ _Última atualização: {{DATE}}_
@@ -0,0 +1,60 @@
1
+ ## Reconhecimento: {{FEATURE_ID}} — {{FEATURE_TITLE}}
2
+
3
+ profundidade: {{DEPTH}}
4
+
5
+ ### 1. Estrutura Relevante
6
+
7
+ (árvore de diretórios mostrando APENAS o que importa para a feature)
8
+
9
+ ```
10
+ {{RELEVANT_TREE}}
11
+ ```
12
+
13
+ (descrição do que cada arquivo faz e por que é relevante)
14
+
15
+ ### 2. Padrões a Seguir
16
+
17
+ Para cada tipo de artefato que a feature precisa criar:
18
+
19
+ **{{ARTIFACT_TYPE}}** — baseado em `{{EXAMPLE_PATH}}:{{LINES}}`
20
+
21
+ - Convenção: {{CONVENTION}}
22
+ - Imports: {{IMPORTS}}
23
+ - Exemplo real: (trecho de código copiado do codebase)
24
+
25
+ ### 3. Pontos de Integração
26
+
27
+ | Arquivo | Ação | O que fazer | Linha |
28
+ | --------------- | --------- | ----------- | --------- |
29
+ | `{{FILE_PATH}}` | modificar | {{ACTION}} | :{{LINE}} |
30
+ | `{{FILE_PATH}}` | criar | {{ACTION}} | — |
31
+
32
+ ### 4. Dependências e Riscos
33
+
34
+ **Consumers** (importam o que vai mudar):
35
+
36
+ - `{{FILE_PATH}}:{{LINE}}` importa `{{MODULE}}`
37
+
38
+ **Testes adjacentes**:
39
+
40
+ - `{{TEST_PATH}}` — {{RELEVANCE}}
41
+
42
+ **Configs**:
43
+
44
+ - `{{CONFIG_FILE}}` precisa de `{{NEW_ENTRY}}`
45
+
46
+ **Riscos**:
47
+
48
+ - Risco: {{RISK}} → Mitigação: {{MITIGATION}}
49
+
50
+ ### 5. Ordem de Ataque
51
+
52
+ 1. **{{TASK_1}}** — {{REASON}} (desbloqueia {{WHAT}})
53
+ 2. **{{TASK_2}}** — {{REASON}}
54
+ 3. **{{TASK_3}}** — pode ser paralelo com {{N}}
55
+ 4. **{{TASK_4}}** — deixar por último ({{REASON}})
56
+
57
+ ### 6. Perguntas Abertas
58
+
59
+ - {{OPEN_QUESTION_1}}
60
+ - {{OPEN_QUESTION_2}}