@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.
- package/agents/hefesto-argos.md +93 -0
- package/agents/hefesto-athena.md +99 -0
- package/agents/hefesto-hermes.md +96 -0
- package/bin/install.js +122 -52
- package/hooks/hefesto-check-update.cjs +32 -11
- package/hooks/hefesto-statusline.cjs +8 -17
- package/hooks/hefesto-workflow.cjs +68 -0
- package/package.json +14 -4
- package/skills/hefesto-context/SKILL.md +67 -14
- package/skills/hefesto-debug/SKILL.md +54 -0
- package/skills/hefesto-design/SKILL.md +184 -0
- package/skills/hefesto-execute/SKILL.md +133 -0
- package/skills/hefesto-init/SKILL.md +105 -0
- package/skills/hefesto-init/references/api.md +116 -0
- package/skills/hefesto-init/references/cli.md +91 -0
- package/skills/hefesto-init/references/mobile.md +69 -0
- package/skills/hefesto-init/references/web.md +246 -0
- package/skills/hefesto-new-feature/SKILL.md +87 -0
- package/skills/hefesto-security/SKILL.md +89 -0
- package/skills/hefesto-security/references/boundaries-and-bypasses.md +152 -0
- package/skills/hefesto-security/references/secrets-detection.md +121 -0
- package/skills/hefesto-security/references/severity-and-judgment.md +176 -0
- package/skills/hefesto-simplify/SKILL.md +82 -0
- package/templates/TPL-CLAUDE.md +54 -0
- package/templates/TPL-CONFIG.json +19 -0
- package/templates/TPL-DESIGN.md +305 -0
- package/templates/{FEATURE.md → TPL-FEATURE.md} +13 -6
- package/templates/TPL-PROJECT.md +50 -0
- package/templates/TPL-RECON.md +60 -0
- package/templates/{RESEARCH.md → TPL-RESEARCH.md} +32 -35
- package/templates/TPL-SECURITY.md +42 -0
- package/templates/TPL-SIMPLIFY.md +40 -0
- package/templates/{STATE.md → TPL-STATE.md} +1 -7
- package/templates/TPL-VERDICT.md +34 -0
- package/agents/.gitkeep +0 -0
- package/agents/hefesto-researcher.md +0 -180
- package/commands/hefesto/init.md +0 -67
- package/commands/hefesto/new-feature.md +0 -50
- package/commands/hefesto/status.md +0 -46
- package/commands/hefesto/update.md +0 -31
- package/templates/PROJECT.md +0 -28
- 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: {
|
|
3
|
-
title:
|
|
2
|
+
id: '{{FEATURE_ID}}'
|
|
3
|
+
title: '{{FEATURE_TITLE}}'
|
|
4
4
|
status: draft
|
|
5
|
-
created: {
|
|
6
|
-
updated: {
|
|
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
|
-
|
|
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}}
|