---
name: brainstorm
description: Brainstorming estruturado que explora ideias de múltiplos ângulos antes de criar spec. Consulta NotebookLM para perspectivas de especialistas.
---

# /brainstorm v1.2 - Ideacao Estruturada

> **NOTA 07-04-2026:** referências a "Dify KB" no corpo desta skill são obsoletas (Dify removido em 06-03-2026). Substituir por NotebookLM ou /knowledge nas próximas iterações. Workflow geral mantém-se válido.

Explora ideias de multiplos angulos antes de formalizar num spec.
Consulta especialistas via NotebookLM (conhecimento curado profundo).

**Flow:** brainstorm -> /spec create -> /sprint plan -> codigo

---

## Comandos

| Comando | Funcao |
|---------|--------|
| `/brainstorm` | Brainstorm interactivo sobre ideia |
| `/brainstorm <tema>` | Brainstorm focado num tema |
| `/brainstorm decide` | Resumir opcoes e ajudar a decidir |
| `/brainstorm save` | Guardar resultado para usar no /spec |

---

## Protocolo Principal

```
1. mcp__mcp-time__current_time
2. RECEBER ideia do utilizador:
   - Se argumento dado: usar como tema
   - Se nao: "Qual e a ideia que queres explorar?"

3. FASE 1 - Entender a Ideia
   a. Repetir a ideia nas proprias palavras:
      "Se entendo bem, queres [X] para resolver [Y]. Correcto?"
   b. Perguntar contexto se faltar:
      - Para quem e? (cliente, interno, produto)
      - Que problema resolve?
      - Ha restricoes (tempo, budget, tecnicas)?

4. FASE 2 - Consultar Especialistas

   **Passo A: NotebookLM (conhecimento curado profundo)**

   Encontrar notebooks relevantes ao tema:
   ```
   mcp__notebooklm__search_notebooks({
     query: "[tema palavras-chave]"
   })
   ```

   Perguntar ao(s) notebook(s) encontrado(s):
   ```
   mcp__notebooklm__ask_question({
     question: "Quais sao as melhores abordagens para [tema]? Que boas praticas existem?",
     notebook_id: "[id do notebook relevante]"
   })
   ```

   Mapeamento de notebooks a temas:
   | Tema | Notebooks NotebookLM |
   |------|---------------------|
   | CRM/Perfex | perfex-crm-knowledge-base |
   | Dev/Claude Code | claude-code-advanced-knowledge |
   | IA/SaaS/Automacao | stack-tecnol-gica-ia-descompli |
   | Servidores/Hosting | centos-web-panel-cwp-complete |
   | PKM/Obsidian | obsidian-knowledge-system |
   | WhatSMS/WhatsApp | whatsms-zender-platform |
   | E-commerce PT | e-commerce-portugal-estrat-gia |

   REGRA: Consultar 1-2 notebooks relevantes. Se nenhum encaixa, saltar para Dify KB.
   Apresentar insights como "com base no conhecimento curado sobre [tema]..."

   **Passo B: Dify KB (boas praticas gerais)**

   Escolher 2-3 datasets complementares:
   | Tema | Datasets Dify KB |
   |------|---------------------|
   | Negocio/estrategia | "Estrategia", "Marketing Digital" |
   | Desenvolvimento | "Desenvolvimento de Software", "Arquitectura" |
   | Marketing | "Marketing Digital", "SEO", "Content Marketing" |
   | Gestao | "Gestao de Projetos", "Gestao de Processos" |
   | Produto | "Product Management", "UX/UI" |
   | Infraestrutura | "DevOps", "Seguranca" |
   | E-commerce | "E-commerce", "Marketing Digital" |
   | Generico | "Estrategia", "Produtividade" |

   Para cada dataset relevante:
   ```
   mcp__dify-kb__dify_kb_retrieve_segments({
     dataset: "[nome]",
     query: "[tema + palavras-chave]"
   })
   ```

   Apresentar insights como "boas praticas de [dominio] sugerem..."

   **Combinar ambas as fontes** para perspectivas mais ricas.
   NotebookLM = contexto profundo e especifico. Dify KB = principios gerais e frameworks.

5. FASE 3 - Explorar Angulos
   Apresentar a ideia de MULTIPLAS perspectivas:

   ### Perspectiva Tecnica
   - Viabilidade, complexidade, stack
   - [Insight do dataset de Desenvolvimento/Arquitectura]

   ### Perspectiva de Negocio
   - ROI, valor para cliente, diferenciacao
   - [Insight do dataset de Estrategia/Marketing]

   ### Perspectiva Pratica
   - Tempo, recursos, dependencias
   - [Insight do dataset de Gestao]

   ### Riscos e Alternativas
   - O que pode correr mal
   - Abordagens alternativas
   - "E se em vez de X, fizessemos Y?"

6. FASE 4 - Pros e Contras

   | Aspecto | Pro | Contra |
   |---------|-----|--------|
   | [aspecto 1] | [vantagem] | [desvantagem] |

7. FASE 5 - Interaccao
   "O que ressoa mais? Queres explorar algum angulo em detalhe?"

   ITERAR com o utilizador ate:
   - A ideia estar clara
   - As decisoes principais estarem tomadas
   - O scope estiver delineado

8. PERGUNTAR: "Pronto para formalizar? Posso criar o /spec com base nesta discussao."
```

---

## `/brainstorm decide`

Para quando ha multiplas opcoes e o utilizador precisa escolher:

```
1. Listar opcoes identificadas na discussao
2. Para cada opcao:
   - Resumo em 1-2 frases
   - Score por criterio (tecnico, negocio, pratico)
   - Recomendacao: "Melhor para [cenario]"
3. Consultar datasets para argumentos adicionais
4. Apresentar comparacao:

   ## Decisao: [tema]

   | Criterio | Opcao A | Opcao B | Opcao C |
   |----------|---------|---------|---------|
   | Complexidade | Baixa | Media | Alta |
   | Valor | Medio | Alto | Alto |
   | Tempo | 2h | 8h | 20h |
   | Risco | Baixo | Medio | Alto |

   **Recomendacao:** Opcao [X] porque [razao]
   **Mas se [condicao]:** Opcao [Y]

5. "Qual escolhes? Ou queres explorar mais alguma?"
```

---

## `/brainstorm save`

Guarda o resultado da sessao para uso posterior:

```
1. Compilar resumo da discussao:
   - Ideia original
   - Angulos explorados
   - Decisoes tomadas
   - Opcao escolhida (se aplicavel)
   - Insights dos datasets
2. Guardar em memory-supabase:
   save_memory({
     content: "[resumo estruturado]",
     tags: ["brainstorm", "ideia", tema, projecto],
     metadata: { type: "brainstorm", outcome: "spec_ready|needs_more|parked" }
   })
3. "Brainstorm guardado. Usar /spec create para formalizar."
```

---

## Fontes de Conhecimento - Mapeamento

As fontes sao consultadas AUTOMATICAMENTE com base no tema.
O utilizador nao precisa de saber quais existem - o brainstorm descobre.

### NotebookLM (fonte primaria - conhecimento curado)
- 7 notebooks com conteudo profundo (cursos, manuais, docs extensos)
- Respostas via Gemini 2.5 com RAG sobre o conteudo
- Ideal para perguntas especificas e contexto profundo
- Usar `search_notebooks` para descobrir + `ask_question` para perguntar

### Knowledge Sources

**Primario:** NotebookLM
**Fallback:** Dify KB (fonte complementar - boas praticas)
- ~68 datasets com segmentos curtos e frameworks
- Ideal para principios gerais e checklists
- Usar `retrieve_segments` com queries focadas

**Estrategia de query:**
- Usar 2-3 palavras-chave extraidas do tema
- Se primeiro resultado vazio, reformular query
- Apresentar insights como "especialistas sugerem..." (nao como "base de dados diz...")
- Se nao houver resultados relevantes: ser honesto, nao inventar

**Exemplo de apresentacao:**
```
### Perspectiva de Marketing
Com base no conhecimento curado sobre e-commerce PT, recomenda-se [X]
porque [Y]. Complementarmente, boas praticas de marketing digital
sugerem [Z] para este tipo de projecto.
```

---

## Integracao

| Skill | Como integra |
|-------|-------------|
| `/discover` | Findings do discover alimentam perspectivas e argumentos |
| `/spec create` | Brainstorm alimenta o spec com decisoes ja tomadas |
| `/brainstorm save` | Guarda em Supabase para contexto futuro |
| `/knowledge` | Pode ser invocado durante brainstorm para pesquisa adicional |
| NotebookLM | Conhecimento curado via search_notebooks + ask_question |

---

## Regras

1. **NUNCA** cortar o brainstorm curto - deixar o utilizador explorar
2. **SEMPRE** consultar pelo menos 1 notebook NotebookLM + 1 dataset Dify relevante
3. **NUNCA** inventar insights - se dataset nao tem info, dizer
4. Apresentar perspectivas como "especialistas" nao como "base de dados"
5. O brainstorm e livre - nao forcar estrutura prematuramente
6. Sugerir /spec create quando a ideia amadurecer, nao impor
7. Para PHDA: manter cada fase curta, perguntar antes de avancar
8. Alternativas sao valiosas - nao descartar ideias cedo demais

---

## Healing Log

Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.

```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```

*Adicionar nova linha após cada erro corrigido.*
