up-cc 0.2.3 → 0.3.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/up-analista-codigo.md +446 -0
- package/agents/up-auditor-modernidade.md +378 -0
- package/agents/up-auditor-performance.md +426 -0
- package/agents/up-auditor-ux.md +396 -0
- package/agents/up-consolidador-ideias.md +493 -0
- package/agents/up-pesquisador-mercado.md +350 -0
- package/agents/up-sintetizador-melhorias.md +407 -0
- package/bin/lib/core.cjs +3 -3
- package/bin/up-tools.cjs +490 -23
- package/commands/ajuda.md +19 -0
- package/commands/ideias.md +49 -0
- package/commands/melhorias.md +45 -0
- package/package.json +1 -1
- package/references/audit-modernidade.md +1617 -0
- package/references/audit-performance.md +478 -0
- package/references/audit-ux.md +1544 -0
- package/templates/report.md +177 -0
- package/templates/suggestion.md +152 -0
- package/workflows/ideias.md +381 -0
- package/workflows/melhorias.md +409 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Executar ideacao de features com 2 agentes paralelos (analise de codigo + pesquisa de mercado) e consolidar resultados em relatorio com ICE scoring e anti-features. Funciona standalone -- nao requer /up:novo-projeto.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<process>
|
|
6
|
+
|
|
7
|
+
**Passo 1: Inicializar e carregar contexto**
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init ideias)
|
|
11
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Parse JSON: `planning_exists`, `ideias_dir`, `ideias_exists`, `has_claude_md`, `has_package_json`, `date`, `timestamp`, `commit_docs`, `stack_hints`.
|
|
15
|
+
|
|
16
|
+
Exibir banner:
|
|
17
|
+
```
|
|
18
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
19
|
+
UP > IDEACAO DE FEATURES
|
|
20
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
**Passo 2: Setup standalone (INFRA-04)**
|
|
26
|
+
|
|
27
|
+
Se `ideias_exists` = true: perguntar ao usuario se quer sobrescrever a ideacao anterior ou cancelar.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
AskUserQuestion(
|
|
31
|
+
header: "Ideacao Anterior Encontrada",
|
|
32
|
+
question: "Ja existe uma ideacao em .plano/ideias/. Deseja sobrescrever?",
|
|
33
|
+
followUp: null
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Se usuario diz nao/cancelar, sair com mensagem: "Ideacao cancelada. Relatorio anterior permanece em .plano/ideias/RELATORIO.md"
|
|
38
|
+
|
|
39
|
+
Se `ideias_exists` = false:
|
|
40
|
+
```bash
|
|
41
|
+
mkdir -p .plano/ideias
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Se `planning_exists` = false (nao tem .plano/ de nenhum tipo):
|
|
45
|
+
```bash
|
|
46
|
+
mkdir -p .plano/ideias
|
|
47
|
+
```
|
|
48
|
+
(O mkdir -p cria ambos diretorios).
|
|
49
|
+
|
|
50
|
+
Reportar:
|
|
51
|
+
```
|
|
52
|
+
Diretorio de ideacao: .plano/ideias/
|
|
53
|
+
Modo: Standalone (sem pre-requisitos)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
**Passo 3: Reportar deteccao de stack**
|
|
59
|
+
|
|
60
|
+
Usar `stack_hints` do init JSON para reportar ao usuario o que foi detectado:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
## Stack Detectada
|
|
64
|
+
|
|
65
|
+
[Listar: framework frontend, meta-framework, CSS, ORM, TypeScript -- baseado nos booleans de stack_hints]
|
|
66
|
+
|
|
67
|
+
Agentes farao deteccao granular durante a analise.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Se `has_package_json` = false:
|
|
71
|
+
```
|
|
72
|
+
Nenhum package.json encontrado. Agentes tentarao detectar stack por outros sinais.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
**Passo 4: Spawn 2 agentes de ideias em PARALELO**
|
|
78
|
+
|
|
79
|
+
Spawnar os 2 agentes na MESMA mensagem (paralelo via Task). Cada agente recebe contexto minimo -- eles leem seus proprios templates e fazem sua propria deteccao de stack internamente.
|
|
80
|
+
|
|
81
|
+
**Agente 1: Analista de Codigo**
|
|
82
|
+
```
|
|
83
|
+
Task(
|
|
84
|
+
subagent_type="up-analista-codigo",
|
|
85
|
+
prompt="
|
|
86
|
+
<objective>
|
|
87
|
+
Analisar o codebase deste projeto para identificar gaps funcionais e oportunidades de features novas.
|
|
88
|
+
Salvar resultado em .plano/ideias/codigo-sugestoes.md
|
|
89
|
+
</objective>
|
|
90
|
+
|
|
91
|
+
<files_to_read>
|
|
92
|
+
- ./CLAUDE.md (se existir -- instrucoes do projeto)
|
|
93
|
+
</files_to_read>
|
|
94
|
+
|
|
95
|
+
<constraints>
|
|
96
|
+
- Carregar template: $HOME/.claude/up/templates/suggestion.md
|
|
97
|
+
- Detectar stack do projeto (step 1 do agente)
|
|
98
|
+
- Mapear features existentes (step 2)
|
|
99
|
+
- Analisar gaps nas 4 categorias: funcionalidade incompleta, feature adjacente, integracao ausente, DX
|
|
100
|
+
- Produzir sugestoes IDEA-NNN no formato do template com Dimensao=Ideias
|
|
101
|
+
- Incluir mapa de cobertura obrigatorio (INFRA-03)
|
|
102
|
+
- Limitar a 10-15 sugestoes (qualidade sobre quantidade)
|
|
103
|
+
- Salvar resultado em .plano/ideias/codigo-sugestoes.md
|
|
104
|
+
- Retornar resumo no formato: ## ANALISE DE CODIGO COMPLETA
|
|
105
|
+
</constraints>
|
|
106
|
+
",
|
|
107
|
+
description="Analise de codigo para identificar gaps e oportunidades de features"
|
|
108
|
+
)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Agente 2: Pesquisador de Mercado**
|
|
112
|
+
```
|
|
113
|
+
Task(
|
|
114
|
+
subagent_type="up-pesquisador-mercado",
|
|
115
|
+
prompt="
|
|
116
|
+
<objective>
|
|
117
|
+
Pesquisar concorrentes e tendencias de mercado para sugerir features novas para este projeto.
|
|
118
|
+
Salvar resultado em .plano/ideias/mercado-sugestoes.md
|
|
119
|
+
</objective>
|
|
120
|
+
|
|
121
|
+
<files_to_read>
|
|
122
|
+
- ./CLAUDE.md (se existir -- instrucoes do projeto)
|
|
123
|
+
- ./README.md (se existir -- descricao do projeto)
|
|
124
|
+
- ./package.json (se existir -- dominio e dependencias)
|
|
125
|
+
</files_to_read>
|
|
126
|
+
|
|
127
|
+
<constraints>
|
|
128
|
+
- Carregar template: $HOME/.claude/up/templates/suggestion.md
|
|
129
|
+
- Entender dominio do projeto (step 1)
|
|
130
|
+
- Pesquisar concorrentes via WebSearch (step 2)
|
|
131
|
+
- Analisar tendencias de mercado via WebSearch (step 3)
|
|
132
|
+
- Produzir sugestoes IDEA-NNN no formato do template com Dimensao=Ideias
|
|
133
|
+
- Cada sugestao DEVE ter evidencia de mercado (concorrente ou tendencia)
|
|
134
|
+
- Sinalizar LOW confidence quando baseado em dados de treinamento
|
|
135
|
+
- Limitar a 10-15 sugestoes (qualidade sobre quantidade)
|
|
136
|
+
- Salvar resultado em .plano/ideias/mercado-sugestoes.md
|
|
137
|
+
- Retornar resumo no formato: ## PESQUISA DE MERCADO COMPLETA
|
|
138
|
+
</constraints>
|
|
139
|
+
",
|
|
140
|
+
description="Pesquisa de mercado e concorrentes para sugestoes de features"
|
|
141
|
+
)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**IMPORTANTE:** Os 2 Task DEVEM ser spawnados na MESMA mensagem para execucao paralela. NAO spawnar sequencialmente.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
**Passo 5: Coletar e verificar resultados dos agentes**
|
|
149
|
+
|
|
150
|
+
Apos os 2 agentes retornarem:
|
|
151
|
+
|
|
152
|
+
1. Verificar existencia dos 2 arquivos:
|
|
153
|
+
- `.plano/ideias/codigo-sugestoes.md`
|
|
154
|
+
- `.plano/ideias/mercado-sugestoes.md`
|
|
155
|
+
|
|
156
|
+
2. Reportar resultado de cada agente extraindo do retorno:
|
|
157
|
+
```
|
|
158
|
+
## Resultados dos Agentes
|
|
159
|
+
|
|
160
|
+
| Agente | Sugestoes | Cobertura/Confianca | Status |
|
|
161
|
+
|--------|-----------|---------------------|--------|
|
|
162
|
+
| Analista de Codigo | N | X/Y (Z%) | Completo |
|
|
163
|
+
| Pesquisador de Mercado | N | HIGH/MIXED/LOW | Completo |
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
3. Se algum arquivo faltando: reportar qual agente falhou, mas continuar com o disponivel (consolidador aceita 1-2 fontes, minimo 1 obrigatoria).
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
**Passo 6: Spawn consolidador**
|
|
171
|
+
|
|
172
|
+
Spawnar o consolidador SEQUENCIALMENTE (apos passo 5 confirmar que arquivos existem).
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Task(
|
|
176
|
+
subagent_type="up-consolidador-ideias",
|
|
177
|
+
prompt="
|
|
178
|
+
<objective>
|
|
179
|
+
Consolidar sugestoes dos 2 agentes idealizadores em relatorio final.
|
|
180
|
+
Deduplicar cross-fonte, aplicar ICE scoring, gerar anti-features.
|
|
181
|
+
Salvar em .plano/ideias/RELATORIO.md
|
|
182
|
+
</objective>
|
|
183
|
+
|
|
184
|
+
<files_to_read>
|
|
185
|
+
- .plano/ideias/codigo-sugestoes.md (sugestoes do analista de codigo)
|
|
186
|
+
- .plano/ideias/mercado-sugestoes.md (sugestoes do pesquisador de mercado)
|
|
187
|
+
- ./CLAUDE.md (se existir -- contexto do projeto)
|
|
188
|
+
</files_to_read>
|
|
189
|
+
|
|
190
|
+
<constraints>
|
|
191
|
+
- Carregar template: $HOME/.claude/up/templates/report.md
|
|
192
|
+
- Carregar template: $HOME/.claude/up/templates/suggestion.md
|
|
193
|
+
- Deduplicar findings cross-fonte (2 criterios: mesma feature proposta, sobreposicao de escopo)
|
|
194
|
+
- Aplicar ICE scoring a cada sugestao (Impact x Confidence x Ease, 1-10 cada)
|
|
195
|
+
- Gerar anti-features na proporcao ceil(positivas/3)
|
|
196
|
+
- Ranking por ICE score decrescente (maior primeiro)
|
|
197
|
+
- Sumario executivo OPINATIVO (recomendar top 3 features e por onde comecar)
|
|
198
|
+
- IDs mantidos como IDEA-NNN (namespace de ideias)
|
|
199
|
+
- Salvar em .plano/ideias/RELATORIO.md
|
|
200
|
+
- Retornar resumo no formato: ## CONSOLIDACAO DE IDEIAS COMPLETA
|
|
201
|
+
</constraints>
|
|
202
|
+
",
|
|
203
|
+
description="Consolidar sugestoes e criar relatorio final com ICE scoring"
|
|
204
|
+
)
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Apos consolidador retornar:
|
|
208
|
+
1. Verificar existencia de `.plano/ideias/RELATORIO.md`
|
|
209
|
+
2. Se nao existe: erro -- "Consolidador falhou ao criar RELATORIO.md"
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
**Passo 7: Apresentar relatorio e concluir**
|
|
214
|
+
|
|
215
|
+
1. Ler `.plano/ideias/RELATORIO.md`
|
|
216
|
+
2. Extrair: sumario executivo, tabela de visao geral, top 3 ICE, contagem de anti-features, proximos passos
|
|
217
|
+
|
|
218
|
+
3. Exibir output final:
|
|
219
|
+
```
|
|
220
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
221
|
+
UP > IDEACAO COMPLETA
|
|
222
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
223
|
+
|
|
224
|
+
[Sumario Executivo do relatorio -- 2-3 paragrafos opinativos]
|
|
225
|
+
|
|
226
|
+
## Visao Geral
|
|
227
|
+
|
|
228
|
+
[Tabela de Visao Geral do relatorio com contagens por faixa ICE]
|
|
229
|
+
|
|
230
|
+
## Top Features por ICE Score
|
|
231
|
+
|
|
232
|
+
| # | Feature | ICE Score | Categoria |
|
|
233
|
+
|---|---------|-----------|-----------|
|
|
234
|
+
| 1 | IDEA-NNN: [titulo] | NNN | must-have/performance/delighter |
|
|
235
|
+
| 2 | IDEA-NNN: [titulo] | NNN | must-have/performance/delighter |
|
|
236
|
+
| 3 | IDEA-NNN: [titulo] | NNN | must-have/performance/delighter |
|
|
237
|
+
|
|
238
|
+
## Anti-Features
|
|
239
|
+
|
|
240
|
+
[Total] features que NAO devem ser implementadas (ver relatorio completo)
|
|
241
|
+
|
|
242
|
+
## Proximos Passos
|
|
243
|
+
|
|
244
|
+
[Secao Proximos Passos do relatorio]
|
|
245
|
+
|
|
246
|
+
───────────────────────────────────────────────────────────────
|
|
247
|
+
|
|
248
|
+
Relatorio completo: .plano/ideias/RELATORIO.md
|
|
249
|
+
Sugestoes (codigo): .plano/ideias/codigo-sugestoes.md
|
|
250
|
+
Sugestoes (mercado): .plano/ideias/mercado-sugestoes.md
|
|
251
|
+
|
|
252
|
+
───────────────────────────────────────────────────────────────
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**NAO committar automaticamente.** O relatorio e informativo -- o usuario decide o que fazer com ele. Se o projeto tem .plano/ com STATE.md, NAO atualizar STATE.md (ideias e standalone, nao parte do ciclo de fases).
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
**Passo 8: Aprovacao interativa e integracao com roadmap (opcional)**
|
|
260
|
+
|
|
261
|
+
Este passo permite converter ideias aprovadas em fases executaveis no ROADMAP.md.
|
|
262
|
+
|
|
263
|
+
1. Perguntar ao usuario se quer integrar ideias ao roadmap:
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
AskUserQuestion(
|
|
267
|
+
header: "Integrar ao Roadmap",
|
|
268
|
+
question: "Deseja converter ideias aprovadas em fases no ROADMAP.md?",
|
|
269
|
+
multiSelect: false,
|
|
270
|
+
options: [
|
|
271
|
+
{ label: "Sim, selecionar ideias", description: "Escolher quais ideias viram fases executaveis" },
|
|
272
|
+
{ label: "Nao, apenas o relatorio", description: "Manter apenas o relatorio como referencia" }
|
|
273
|
+
]
|
|
274
|
+
)
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Se usuario escolher "Nao": sair com mensagem "Relatorio salvo em .plano/ideias/RELATORIO.md. Use /up:ideias novamente para integrar ao roadmap quando quiser."
|
|
278
|
+
|
|
279
|
+
2. Se sim, ler `.plano/ideias/RELATORIO.md` e extrair todas as ideias (ID + titulo + ICE score + categoria).
|
|
280
|
+
|
|
281
|
+
Para extrair ideias do RELATORIO.md: usar regex `### (IDEA-\d+): (.+)` para capturar ID e titulo. Extrair ICE score da tabela de campos ou da secao de ranking. Extrair categoria (must-have, performance, delighter) da mesma tabela. Detectar Anti-Features pela secao "## Anti-Features" no RELATORIO e excluir da lista.
|
|
282
|
+
|
|
283
|
+
3. Apresentar ideias ordenadas por ICE score decrescente para selecao:
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
AskUserQuestion(
|
|
287
|
+
header: "Selecionar Ideias",
|
|
288
|
+
question: "Quais ideias devem virar fases no roadmap? (Maior ICE score = maior retorno)",
|
|
289
|
+
multiSelect: true,
|
|
290
|
+
options: [
|
|
291
|
+
// Ordenadas por ICE decrescente
|
|
292
|
+
{ label: "IDEA-001: [titulo]", description: "ICE: 648 | must-have | I:9 C:9 E:8" },
|
|
293
|
+
{ label: "IDEA-003: [titulo]", description: "ICE: 480 | performance | I:8 C:8 E:7.5" },
|
|
294
|
+
{ label: "IDEA-007: [titulo]", description: "ICE: 280 | delighter | I:7 C:5 E:8" },
|
|
295
|
+
]
|
|
296
|
+
)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**IMPORTANTE:** NAO incluir ideias da secao "Anti-Features" na lista de opcoes. Se o usuario perguntar, explicar que anti-features sao features que NAO devem ser implementadas.
|
|
300
|
+
|
|
301
|
+
Labels no multiSelect devem ser curtos: "IDEA-001: Titulo curto" (max ~60 chars). Description complementa: "ICE: 648 | must-have | I:9 C:9 E:8".
|
|
302
|
+
|
|
303
|
+
4. Verificar se existe `.plano/ROADMAP.md`:
|
|
304
|
+
- Se existe: usar diretamente
|
|
305
|
+
- Se NAO existe: perguntar ao usuario:
|
|
306
|
+
```
|
|
307
|
+
AskUserQuestion(
|
|
308
|
+
header: "Criar Roadmap",
|
|
309
|
+
question: "Nao existe ROADMAP.md. Deseja criar um para adicionar as fases?",
|
|
310
|
+
multiSelect: false,
|
|
311
|
+
options: [
|
|
312
|
+
{ label: "Sim, criar roadmap", description: "Cria .plano/ROADMAP.md com as fases selecionadas" },
|
|
313
|
+
{ label: "Nao, cancelar", description: "Manter apenas o relatorio" }
|
|
314
|
+
]
|
|
315
|
+
)
|
|
316
|
+
```
|
|
317
|
+
Se sim, criar ROADMAP.md minimo:
|
|
318
|
+
```bash
|
|
319
|
+
mkdir -p .plano
|
|
320
|
+
```
|
|
321
|
+
Escrever `.plano/ROADMAP.md` com:
|
|
322
|
+
```markdown
|
|
323
|
+
# Roadmap: [nome do projeto de package.json ou diretorio]
|
|
324
|
+
|
|
325
|
+
## Fases
|
|
326
|
+
|
|
327
|
+
## Detalhes das Fases
|
|
328
|
+
|
|
329
|
+
## Tabela de Progresso
|
|
330
|
+
|
|
331
|
+
| Fase | Planos Completos | Status | Completado |
|
|
332
|
+
|------|-----------------|--------|------------|
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
5. Chamar CLI para gerar fases:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
echo '{"source":"ideias","report_path":".plano/ideias/RELATORIO.md","approved_ids":["IDEA-001","IDEA-003","IDEA-007"],"grouping":"auto"}' | node "$HOME/.claude/up/bin/up-tools.cjs" phase generate-from-report
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Substituir approved_ids pela lista real selecionada pelo usuario.
|
|
342
|
+
|
|
343
|
+
6. Parsear resultado JSON e apresentar resumo:
|
|
344
|
+
|
|
345
|
+
```
|
|
346
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
347
|
+
UP > FASES GERADAS NO ROADMAP
|
|
348
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
349
|
+
|
|
350
|
+
[Para cada fase criada:]
|
|
351
|
+
Fase [N]: [Nome]
|
|
352
|
+
Sugestoes: [IDs listados]
|
|
353
|
+
Diretorio: [caminho]
|
|
354
|
+
|
|
355
|
+
Total: [N] fases criadas com [M] sugestoes
|
|
356
|
+
|
|
357
|
+
───────────────────────────────────────────────────────────────
|
|
358
|
+
|
|
359
|
+
## Proximos Passos
|
|
360
|
+
|
|
361
|
+
Para cada fase gerada:
|
|
362
|
+
1. `/up:discutir-fase [N]` -- Refinar escopo e decisoes
|
|
363
|
+
2. `/up:planejar-fase [N]` -- Criar planos de execucao
|
|
364
|
+
3. `/up:executar-fase [N]` -- Implementar
|
|
365
|
+
|
|
366
|
+
<sub>/clear primeiro -- janela de contexto limpa</sub>
|
|
367
|
+
|
|
368
|
+
───────────────────────────────────────────────────────────────
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
</process>
|
|
372
|
+
|
|
373
|
+
<success_criteria>
|
|
374
|
+
- [ ] Init ideias retornou JSON valido
|
|
375
|
+
- [ ] Diretorio .plano/ideias/ criado (standalone)
|
|
376
|
+
- [ ] Stack detectada e reportada ao usuario
|
|
377
|
+
- [ ] 2 agentes idealizadores spawnados em paralelo
|
|
378
|
+
- [ ] Pelo menos 1 arquivo de sugestoes gerado
|
|
379
|
+
- [ ] Consolidador gerou RELATORIO.md com ICE scoring e anti-features
|
|
380
|
+
- [ ] Relatorio apresentado ao usuario com sumario, top features e anti-features
|
|
381
|
+
</success_criteria>
|