---
name: mindmap
description: Gera ficheiros .km (mindmap) compatíveis com DesktopNaotu/Kityminder. Cria mindmaps a partir de tópicos, planos, brainstorms ou qualquer estrutura hierárquica. Usar quando "mindmap", "mapa mental", "naotu", "criar mindmap", "brainstorm visual".
disable-model-invocation: true
---

# Mindmap Generator - DesktopNaotu

Gera ficheiros `.km` compativeis com DesktopNaotu (Kityminder) para visualizacao de mindmaps.

## Formato .km

Ficheiro JSON com a seguinte estrutura:

```json
{
  "root": {
    "data": {
      "id": "<unique-id>",
      "created": <timestamp-ms>,
      "text": "Topico Central"
    },
    "children": [
      {
        "data": {
          "id": "<unique-id>",
          "created": <timestamp-ms>,
          "text": "Sub-topico"
        },
        "children": []
      }
    ]
  },
  "template": "default",
  "theme": "fresh-blue",
  "version": "1.4.43"
}
```

## Templates Disponiveis

| Template | Descricao |
|----------|-----------|
| `default` | Layout classico radial (centro para fora) |
| `right` | Todos os ramos para a direita |
| `structure` | Organograma (cima para baixo) |
| `filetree` | Arvore de ficheiros (esquerda para direita) |
| `filetree-up` | Arvore ascendente |
| `filetree-down` | Arvore descendente |
| `fish-bone` | Diagrama espinha de peixe (Ishikawa) |
| `tianpan` | Layout circular (tianpan) |

## Themes Disponiveis

| Theme | Cor |
|-------|-----|
| `fresh-blue` | Azul (default) |
| `fresh-green` | Verde |
| `fresh-pink` | Rosa |
| `fresh-purple` | Roxo |
| `fresh-red` | Vermelho |
| `fresh-soil` | Terra/Castanho |
| `classic-compact` | Classico compacto |
| `snow-compact` | Branco/neve compacto |
| `tianpan-compact` | Tianpan compacto |

## Instrucoes de Geracao

Quando o utilizador pedir um mindmap:

1. **Identificar o topico central** e sub-topicos a partir do pedido
2. **Escolher template** adequado ao tipo de conteudo:
   - Brainstorm geral -> `default`
   - Plano/processo linear -> `right`
   - Organograma/hierarquia -> `structure`
   - Analise causa-efeito -> `fish-bone`
   - Listagem/arvore -> `filetree`
3. **Escolher theme** (default: `fresh-blue`, ou perguntar preferencia)
4. **Gerar o JSON** com IDs unicos (usar formato `km<timestamp><random>`)
5. **Guardar** em `/home/ealmeida/.config/desktopnaotu/backup/<nome>.km` para acesso facil pela app
6. **Informar** o utilizador do path e como abrir

### Regras de geracao de IDs

Cada node precisa de um `id` unico. Usar o formato: `km` + base36 do timestamp + sequencia aleatoria.

Gerar com Python:
```python
import time, random, string, json

def gen_id():
    ts = int(time.time() * 1000)
    rand = ''.join(random.choices(string.ascii_lowercase + string.digits, k=4))
    return f"km{ts}{rand}"

def node(text, children=None):
    return {
        "data": {
            "id": gen_id(),
            "created": int(time.time() * 1000),
            "text": text
        },
        "children": children or []
    }
```

### Exemplo de geracao

```python
mindmap = {
    "root": node("Projecto X", [
        node("Fase 1 - Discovery", [
            node("Pesquisa mercado"),
            node("Entrevistas"),
            node("Analise competitiva")
        ]),
        node("Fase 2 - Design", [
            node("Wireframes"),
            node("Prototipo"),
            node("Testes UX")
        ]),
        node("Fase 3 - Desenvolvimento", [
            node("Frontend"),
            node("Backend"),
            node("Integracao")
        ])
    ]),
    "template": "right",
    "theme": "fresh-blue",
    "version": "1.4.43"
}

with open("/home/ealmeida/.config/desktopnaotu/backup/projecto-x.km", "w") as f:
    json.dump(mindmap, f, ensure_ascii=False)
```

### Abrir o ficheiro

Depois de gerar, o utilizador pode abrir directamente:
```bash
/home/ealmeida/Programas/DesktopNaotu/DesktopNaotu "/home/ealmeida/.config/desktopnaotu/backup/<nome>.km"
```

Ou abrir a app e usar File > Open para navegar ate ao ficheiro.

## Boas Praticas

- **Profundidade maxima:** 4-5 niveis (mais que isso fica ilegivel)
- **Nos por nivel:** Maximo 7-8 (regra de Miller)
- **Texto curto:** 2-5 palavras por node (mindmap, nao documento)
- **Template adequado:** Fish-bone para causa/efeito, structure para hierarquias, right para processos
- **Nome descritivo:** Usar nome do topico no ficheiro (nao "mindmap1.km")

---

## 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.*
