atualiza definições de skills e plugins do Claude com melhorias locais

This commit is contained in:
2026-06-10 13:27:46 +01:00
parent cb8699075f
commit f9f8f5135f
14 changed files with 543 additions and 252 deletions
+239 -200
View File
@@ -1,188 +1,225 @@
---
name: knowledge
description: Router de conhecimento Família A/B. Família A (operacional interna) consultada em paralelo para qualquer pergunta sobre processos, projectos, decisões, histórico. Família B (NotebookLM externa) só para conhecimento conceptual/teórico. v2.2.0
description: Router de conhecimento unificado. Classifica pergunta por tipo e encaminha para fonte certa (Hub granular/NLM/Context7/CC memory/Supabase/Desk CRM/Git). v3.1.0
---
# /knowledge — Router Família A/B v2.2.0
# /knowledge — Router Unificado v3.1.0
> **Correcção arquitectural 08-04-2026:** a v2.0.0 tratava NotebookLM como fonte primária. Isso estava errado — NotebookLM não vê operações, não vê estado real, só tem ebooks e transcripts. Em `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/feedback_knowledge-router-arquitectura.md` está o racional completo.
> **v2.2.0 (13-04-2026):** LightRAG removido da Família A — serviço com 0 documentos desactivado. Família A passa a 4 fontes: Supabase, CC memory, Hub, Desk CRM.
> **Reescrita 13-04-2026:** v2.2.0 usava modelo Familia A/B com NLM restrito a "externo".
> v3.0.0 classifica por tipo de pergunta (8 rotas), adiciona Hub granular
> (QR/KB/APIs/Manuais/PROCs/Troubleshooting), reclassifica NLM como referencia
> tecnica primaria, e torna Supabase complementar (nao alicerce).
> Racional: `plans/atomic-fluttering-flame.md`
## Princípio de routing
## Principio
**o é fallback linear.** É router por tipo de pergunta:
**Classificar pergunta → fonte certa.** Nao e fallback linear, nao e "Familia A depois B". E routing directo por tipo.
- **Operacional / processual / histórico / decisões / projectos / código interno** → **Família A em paralelo**, consolidar com citação de origem.
- **Conceptual / teórico / externo / research / mercado / ebooks** → **Família B (NotebookLM)** com routing por tema (tabela em baixo).
- **Ambíguo** → perguntar ao utilizador qual o tipo.
---
## Família A — Operacional interna (paralelo, complementares)
## Router principal (8 tipos)
| Fonte | Tool | Conteúdo |
|-------|------|----------|
| **memory-supabase** | `mcp__memory-supabase__search_memories(query, threshold=0.7, limit=10)` | Memórias persistentes cross-sessão com embeddings. Decisões, contexto, lacunas anteriores. |
| **Memória CC cross-projecto** | `Grep` recursivo em `~/.claude/projects/*/memory/*.md` | **110 ficheiros em 34 projectos.** Harness só carrega automaticamente a memória do `cwd` — este grep é **obrigatório** para não perder contexto de outros projectos. |
| **Obsidian / Hub** | `Grep` em `/media/ealmeida/Dados/Hub/**/*.md` | PROCs, QRs, INDEX, frontmatter, procedimentos, histórico. |
| **Desk CRM** | `mcp__desk-crm-v3__*` (tasks, projects, tickets, customers) | Fonte de verdade operacional: tarefas, projectos, clientes, tickets, horas. |
### 1. Facto rapido (ID, path, comando, credencial)
### Workflow Família A
**Sinais:** "qual e o ID de", "path para", "comando para", "porta do"
```
1. Classificar pergunta como operacional (default para queries internas)
2. Disparar em PARALELO (mesma mensagem, vários tool calls):
- mcp__memory-supabase__search_memories(query, threshold=0.65, limit=8) [graceful se MCP indisponível]
- Grep ~/.claude/projects/*/memory/*.md
- Grep Hub/**/*.md (limitar a pastas relevantes quando possível)
- Desk CRM search (se query menciona cliente/projecto/tarefa)
3. Consolidar resposta citando origem de cada fragmento
4. Se Família A insuficiente → perguntar ao utilizador ou escalar para Família B
```
**Fontes (sequencial — parar ao primeiro hit):**
1. `Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/Quick-Reference/QR-*.md`
2. `Grep` em `~/.claude/projects/*/memory/*.md` (cross-projecto)
**Nota sobre graceful fallback:** as tools `mcp__*` podem estar indisponíveis em sessões específicas por razões de auto-discovery do harness. Se a chamada falhar com "No such tool available", continuar o paralelismo com as outras fontes e reportar a lacuna no output final.
**QR routing por keyword:**
### Formato de resposta Família A
| Keywords | Ficheiro |
|----------|----------|
| servidor, ip, porta, ssh | QR-Servidores.md |
| cwp, virtualhost, conta cwp | QR-CWP.md |
| site cwp, dominio cwp | QR-Sites-CWP.md |
| easypanel, servico, container | QR-EasyPanel.md |
| desk, tabela, campo bd, relacao | QR-Desk-BD.md |
| staff id, project id, category id | QR-IDs-Frequentes.md |
| moloni, serie, imposto, metodo | QR-Moloni.md |
| path, directorio, pasta | QR-Paths-Locais.md |
| backup, rota backup, destino | QR-Backups.md |
| sync, syncthing, rsync | QR-Sync-Ficheiros.md |
| script, claudedev | QR-Scripts.md |
| credencial, password, api key | QR-Credenciais.md |
| rank math, seo wp-cli | QR-RankMath-WP-CLI.md |
| capa, cover, podcast imagem | QR-Cover-Generator.md |
| alurin, desktop, laptop | QR-Alurin-Desktop.md |
### 2. Como funciona X / Como fazer Y (referencia tecnica)
**Sinais:** "como funciona", "como configurar", "como fazer", "melhores praticas", "tutorial", "deep dive"
**Fontes (paralelo — consolidar):**
1. **Hub Knowledge-Base**`Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Knowledge-Base/*.md` (preferir ficheiro local se existir match directo)
2. **NotebookLM** — max 2 notebooks por query (routing por tema abaixo)
3. **Hub Manuais**`Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/Manuais/**/*.md`
4. **Context7**`resolve-library-id``query-docs` (para frameworks/bibliotecas com docs oficiais)
5. **CC memory cross-projecto**`Grep` em `~/.claude/projects/*/memory/*.md`
6. **Supabase**`search_memories(query, threshold=0.5, limit=5)` [graceful se indisponivel]
**Prioridade por tipo de tema:**
- Framework/biblioteca com docs oficiais (Next.js, React, Laravel...) → **KB local primeiro** + **Context7** + NLM
- Stack interna (CWP, Perfex, n8n...) → **NLM primeiro** (fonte mais densa para estes) + KB
- Conceito generico (design patterns, boas praticas...) → **NLM primeiro**
**NLM routing por tema (top 15):**
| Tema | Notebook | ID |
|------|----------|----|
| Claude Code, skills, hooks, plugins | Claude Code | `2876d1fe-5cea-4d98-8140-b0e1a81c6bc4` |
| CWP, servidor, hosting, virtualhost | CWP | `0ded7bd6-69b3-4c76-b327-452396bf7ea7` |
| WordPress, WP-CLI, temas, config | WordPress Config CLI | `fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d` |
| Elementor, widgets, templates | WordPress e Elementor | `5be0d1a6-00f2-4cd9-b835-978cb7721601` |
| Seguranca WP, malware, hardening | Ciberseguranca WordPress | `5f60adfd-2435-4725-8c12-9c11c5f51d75` |
| Perfex/Desk CRM, modulos, hooks | Perfex CRM | `df4688bb-c2c0-4aba-98c1-38c3b50a353c` |
| n8n, automacoes, workflows | n8n | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` |
| Marketing digital, SEO, ads, funil | Marketing Digital PT | `4c595973-ba10-420a-a3bf-e4389e424ad3` |
| AI agents, orquestracao, MCPs | AI Agents e Orquestracao | `bc480d68-5835-415e-82bc-4583f36b8c29` |
| Proxmox, VMs, clustering, HA | Proxmox | `276ccdde-6b95-42a3-ad96-4e64d64c8d52` |
| Design, branding, visual, automacao | Design Profissional | `b568b13b-0eed-48c9-b513-5c5b7ec0b102` |
| UI/UX, WCAG, acessibilidade | UI/UX Design | `081ca512-8279-4850-b2b9-dff090267482` |
| Gestao operacoes, KPIs, agencia | Gestao Operacoes | `f9dc59c2-718b-4b12-bd06-095d4bfa3e34` |
| Remotion, video programatico | Remotion | `f2b75baa-1ab1-48d3-8f7c-a6a9e516934c` |
| Obsidian, vault, Claude workflow | Obsidian + Claude | `ebee9fe1-78fd-4f85-8938-f19f3ea32131` |
| Programacao, padroes, api design | Programacao | `24947ffa-0019-448a-a340-2f4a275d2eb1` |
| Copywriting, persuasao, texto | Copywriting e Persuasao | `7b8fec17-d34f-4e3f-a8c6-8231e51f6323` |
| Video, producao, youtube | Producao de Video e Youtube | `058a896e-6c9a-4e51-ae7d-9adb2738bc5f` |
| WooCommerce, loja, produtos | Documentacao WooCommerce | `bd06acff-4b9d-44aa-b3f7-60434bbd6b49` |
> Inventario completo 65 notebooks: `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md`
**Hub KB: ficheiros locais densos (usar quando match directo):**
| Keywords | Ficheiro KB |
|----------|-------------|
| next.js, app router, server components | `Next.js 14_15 App Router Deep Dive.md` |
| php, laravel | `PHP 8+ e Laravel 11_12_ Pesquisa Profunda.md` |
| core web vitals, ga4, performance | `Core Web Vitals, GA4, Performance Web.md` |
| n8n, automacao | `Base-Conhecimento-n8n.md` |
| perfex crm, modulos | `Base-Conhecimento-Perfex-CRM.md` |
| remotion, video codigo | `Base-Conhecimento-Remotion-Video.md` |
| ui, ux, design systems | `Base-Conhecimento-UI-UX-Design-Systems.md` |
| tipografia, cor, web design | `Base-Conhecimento-Web-Design-Tipografia-Cor.md` |
| youtube, video producao | `Base-Conhecimento-Video-YouTube.md` |
| openrouter, modelos ai | `OpenRouter-Matrix-v1.1.md` |
| postfix, email security | `Postfix Email Security Best Practices.md` |
| wcag, acessibilidade | `Relatório Acessibilidade Web WCAG 2.2.md` |
| gestao, operacoes, agencia | `Gestao-Operacoes-Agencias-Marketing-Tecnologia.md` |
**Context7 para docs oficiais:** usar `resolve-library-id``query-docs` quando a pergunta e sobre uma biblioteca/framework com documentacao oficial actualizada (Next.js, React, Tailwind, Laravel, etc). Context7 tem docs mais frescos que NLM.
### 3. API / implementacao (endpoint, payload, autenticacao)
**Sinais:** "endpoint", "API de", "payload", "autenticacao", "integrar com"
**Fontes (sequencial — Read directo do ficheiro):**
| Keywords | Ficheiro em `Hub/06-Operacoes/Documentacao/APIs/` |
|----------|----------------------------------------------------|
| perfex, desk crm api | Perfex-CRM-API.md |
| cwp api, cwp endpoint | CWP-API.md |
| whatsms, sms api | WhatSMS-API.md + WhatSMS-Admin-API.md |
| paperclip api | Paperclip-API.md |
| dify api | Dify-API.md |
| bookstack api | BookStack-API.md |
| mcp desenvolvimento | MCP-Dev-Manual.md |
Se API nao listada → NLM notebook relevante + Context7.
### 4. Processo / procedimento (como fazemos X internamente)
**Sinais:** "procedimento", "como fazemos", "PROC", "workflow interno", "passo-a-passo"
**Fontes:**
1. `Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/**/*.md` (38 PROCs)
2. `Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/Manuais/**/*.md`
**Departamentos PROC:**
| Tema | Pasta |
|------|-------|
| Comercial, CRM, catalogo | D1-Comercial/ |
| Suporte, tickets | D2-Suporte/ |
| Contabilidade, facturas | D3-Contabilidade/ |
| RH | D4-RH/ |
| Design | D5-Design/ |
| Marketing, conteudo | D6-Marketing/ |
| Tecnologia, MCP, Claude, infra | D7-Tecnologia/ |
| Multi-departamental | Cross-Departamental/ |
### 5. Troubleshooting (erro, problema, nao funciona)
**Sinais:** "erro", "nao funciona", "problema com", "fix para", "troubleshoot"
**Fontes (paralelo):**
1. `Grep` em `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/Troubleshooting/*.md`
2. CC memory cross-projecto — `Grep` em `~/.claude/projects/*/memory/*.md`
3. Supabase — `search_memories(query, threshold=0.5, limit=5)` [graceful]
4. NLM notebook relevante (contexto tecnico)
### 6. Estado actual (quem, quando, quanto, aberto/fechado)
**Sinais:** nome de cliente, "#" + numero, "tarefas abertas", "horas", "facturas", "tickets"
**Fontes:** Directo ao **Desk CRM** via MCP:
- `get_tasks`, `get_projects`, `get_tickets`, `get_customers`
- `get_timesheets`, `get_invoices`, `get_estimates`
**NLM e Hub NAO entram** — nao veem estado vivo.
### 7. Decisao / historico (porque fizemos X, quando decidimos Y)
**Sinais:** "decisao", "porque fizemos", "historico de", "quando decidimos", "ultima vez que"
**Fontes (paralelo):**
1. **Supabase**`search_memories(query, threshold=0.5, limit=8)` [graceful]
2. **CC memory cross-projecto**`Grep` em `~/.claude/projects/*/memory/*.md`
3. **Desk CRM discussions**`get_discussion_comments` (#31 worklogs, #32 reflexoes, #33 accoes)
4. **Git log**`git log --oneline --grep="keyword"` nos repos relevantes
### 8. Codigo / projecto (o que mudou, como esta o repo)
**Sinais:** "changelog", "ultimo commit", "o que mudou em", "estado do repo"
**Fontes:**
1. `Read` CHANGELOG.md do projecto
2. `git log` do repo
3. CC memory do projecto especifico
---
## Classificador de pergunta (heuristica)
| Sinal | Tipo |
|-------|------|
| ID, path, porta, comando concreto | **1. Facto rapido** |
| "como funciona", "como configurar", "melhores praticas" | **2. Referencia tecnica** |
| "endpoint", "API", "payload" | **3. API** |
| "procedimento", "PROC", "como fazemos internamente" | **4. Processo** |
| "erro", "nao funciona", "problema" | **5. Troubleshooting** |
| Cliente, tarefa #N, ticket, factura, horas | **6. Estado actual** |
| "decisao", "porque", "historico", "ultima vez" | **7. Decisao/historico** |
| "changelog", "commit", "repo" | **8. Codigo** |
| **Ambiguo** | **Perguntar ao utilizador** |
---
## Formato de resposta
```markdown
## [pergunta]
**memory-supabase:** [excerto] _(id N, tags)_
**memory/<projecto>:** [excerto] _(ficheiro)_
**Hub:** [excerto] _(caminho:linha)_
**Desk CRM:** [excerto] _(task #N, projecto #M)_
**[Fonte 1]:** [excerto] _(origem especifica)_
**[Fonte 2]:** [excerto] _(origem especifica)_
**Síntese:** [consolidação em 2-3 frases citando as fontes mais fortes]
**Sintese:** [consolidacao em 2-3 frases citando as fontes mais fortes]
```
**Regra:** nunca responder sem citar fonte. Se 0 fontes, dizer "sem hits em Família A" explicitamente.
Origens possiveis: `QR:ficheiro`, `NLM:notebook`, `KB:ficheiro`, `API:ficheiro`, `PROC:codigo`, `Manual:ficheiro`, `Troubleshooting:ficheiro`, `memory/projecto:ficheiro`, `Supabase:id`, `Desk CRM:task #N`, `Git:commit`
---
## Família B — Conhecimento externo (NotebookLM)
**Quando usar:** só para perguntas **conceptuais, teóricas, de research externo ou mercado**. Nunca para operacional.
Exemplos de queries Família B:
- "Quais são as melhores práticas de Core Web Vitals em 2025?"
- "Como funciona o algoritmo de ranking do YouTube Shorts?"
- "Arquétipos de Jung aplicados a branding"
- "Stoicismo na gestão de equipas"
**Workflow Família B:**
1. Classificar tema → tabela de routing
2. Consultar **max 3 notebooks** (performance)
3. `mcp__notebooklm-mcp__notebook_query({ notebook_id, query })`
4. Se score <70 → fallback a Context7 (docs bibliotecas)
### Routing por tema (65 notebooks)
> Inventário completo: `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md`
**WordPress/Web**
| Keywords | Notebook | ID |
|----------|----------|----|
| wordpress, wp-cli, config | WordPress Config CLI | `fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d` |
| elementor, templates, widgets | WordPress e Elementor | `5be0d1a6-00f2-4cd9-b835-978cb7721601` |
| woocommerce, loja, produtos | Documentacao WooCommerce | `bd06acff-4b9d-44aa-b3f7-60434bbd6b49` |
| kivicare, ehr, clinica | KiviCare EHR WP | `78621405-a5bc-433f-856f-296260a80bd9` |
| seguranca wp, malware, hardening | Ciberseguranca WordPress | `5f60adfd-2435-4725-8c12-9c11c5f51d75` |
**Marketing e Conteúdo**
| Keywords | Notebook | ID |
|----------|----------|----|
| marketing, digital, campanha, funil | Marketing Digital PT | `4c595973-ba10-420a-a3bf-e4389e424ad3` |
| marketing avancado, ads, growth | Marketing Digital Avancado | `76647e0f-3ae2-4c00-a0a8-f457aebf5655` |
| seo, keywords, ranking, serp | Marketing Digital PT | `4c595973-ba10-420a-a3bf-e4389e424ad3` |
| copywriting, persuasao, texto | Copywriting e Persuasao | `7b8fec17-d34f-4e3f-a8c6-8231e51f6323` |
| social media, branding, instagram | Social Media e Branding | `9053d0e8-dd39-460b-b5ea-e67af3e9a675` |
| video, producao, youtube | Producao de Video e Youtube | `058a896e-6c9a-4e51-ae7d-9adb2738bc5f` |
| youtube, monetizacao, compliance | YouTube Monetizacao e Compliance | `60a209a7-e205-4d57-a6f3-fef3de61e87a` |
| podcast, audio | Podcast Descomplicar | `a5bef96b-a1af-4293-9979-5da46f8d2301` |
| ecommerce, loja online | E-commerce Pratico | `226e384e-d4bc-48f4-bb82-7927360436cc` |
| ecommerce portugal, marketplace | E-Commerce Portugal | `8a430cf2-ed99-413d-b4bf-a1400deaf49e` |
**Desenvolvimento / Código (externo)**
| Keywords | Notebook | ID |
|----------|----------|----|
| programacao externa, padroes, api design | Programacao | `24947ffa-0019-448a-a340-2f4a275d2eb1` |
| claude code, mcp dev externo | Claude Code | `2876d1fe-5cea-4d98-8140-b0e1a81c6bc4` |
| mcp protocolo | Desenvolvimento de MCPs | `73102308-70ef-403e-9be9-eae0cfc62d55` |
| ai editor, cursor, copilot | AI Code Editors | `57d9c6c9-48ba-4d83-8f71-cc890f348a53` |
| github trends | GitHub Trends | `922b7532-ddf3-4dba-9d3c-6d5f83b89378` |
| open source, foss | Open Source Software and Platforms | `cabf9821-c1ff-44cb-9bfd-59bda3599792` |
| n8n, workflow automacao | n8n | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` |
| perfex dev, hooks externos | Dev PerfexCRM | `80606de8-2783-4d36-b08d-5825e6f9a8da` |
| remotion, video code | Remotion | `f2b75baa-1ab1-48d3-8f7c-a6a9e516934c` |
> **Nota:** código do projecto (`/Dev/*`, plugins locais, MCPs desenvolvidos internamente) é **Família A** (grep Hub + filesystem), não Família B.
**Infraestrutura**
| Keywords | Notebook | ID |
|----------|----------|----|
| cwp externo | CWP | `0ded7bd6-69b3-4c76-b327-452396bf7ea7` |
| cloud, devops patterns | Cloud e Infraestrutura TI | `f9a79b5a-649f-4443-afaf-7ff562b6c2e7` |
| proxmox | Proxmox | `276ccdde-6b95-42a3-ad96-4e64d64c8d52` |
**Design/UX**
| Keywords | Notebook | ID |
|----------|----------|----|
| design, branding externo | Design Profissional AItomatizado | `b568b13b-0eed-48c9-b513-5c5b7ec0b102` |
| ui, ux, wcag | UI/UX Design | `081ca512-8279-4850-b2b9-dff090267482` |
| tipografia, cores | Tipografia e Cor para Web | `f97a0d2b-a5b3-4640-b941-3cbb184b1b81` |
**Gestão e Estratégia**
| Keywords | Notebook | ID |
|----------|----------|----|
| gestao projectos, agile, scrum | Gestao de Projectos e Agile | `0c9c079c-a426-486c-99eb-1564d42d37ad` |
| operacoes externas, kpi | Gestao de Operacoes | `f9dc59c2-718b-4b12-bd06-095d4bfa3e34` |
| estrategia, empreendedorismo | Estrategia e Empreendedorismo | `79d43410-0e29-4be1-881d-84db6bdc239a` |
| transformacao digital, ia negocio | Transformacao Digital e IA | `ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8` |
| ai automation stack | AI Automation Stack | `929ef67b-c131-4f01-abd0-8b078491a6b7` |
| ai agents curso | AI Agents Intensive Course | `f4be0e3f-4d9e-4c5c-a743-9f14427f2e43` |
**Produtos externos / Mercado**
| Keywords | Notebook | ID |
|----------|----------|----|
| zaia, chatbot | Zaia | `087d76f1-e929-49da-9e3c-4edc22b42b3f` |
| zender, whatsapp api | Zender 3 | `7095e5fa-1465-4496-b1a3-48f2e6e07f79` |
| solar, fotovoltaico | Solar FV Engenharia | `03d54e00-aefa-45dc-ba01-f3864a7c3112` |
| opensolar | OpenSolar | `0082bcaf-1e17-4b84-87cc-2256b1719b55` |
**Pessoal / SelfRescueProtocol** (só se explicitamente pessoal)
| Keywords | Notebook | ID |
|----------|----------|----|
| jung, arquetipos | Jung | `d5c67d7f-7fe8-4542-9e5c-22403f3193ee` |
| taoismo, wu wei | Taoism | `aea85baf-9ddf-4d79-bf07-81391a275b09` |
| adhd, phda | ADHD | `a4ff3fd7-fb7c-49a1-94ff-0433193e2338` |
| autismo | Autismo | `66eff78e-318f-4a8b-a3c7-039a4124b1ad` |
| heroi, jornada | Essencia de Heroi | `6dcd08e8-79d9-4ae0-b6bf-b2ee96717bf2` |
| kintsugi | Auto Kintsugi | `82a95c2f-be56-4c4a-a96f-96f6677a6991` |
| somatica, trauma | Psicologia Somatica | `3410893b-16a3-4178-9091-42650a41086f` |
| estoicismo | Marcus Aurelius / Stoic | `4b986ad4-49da-4604-a423-4fcdf20dd9da` |
---
## Classificador de pergunta (heurística)
Usar estes sinais para decidir Família A vs B:
| Sinal na pergunta | Família |
|---|---|
| Nome de cliente, projecto, tarefa #N, ticket #N | **A** |
| "quando", "histórico", "última vez", "decisão", "porque fizemos" | **A** |
| Nome de ficheiro, path, skill, plugin, MCP interno | **A** |
| "como funciona (abstracto)", "melhores práticas", "teoria de" | **B** |
| Nome de biblioteca externa + versão | **B** (+ Context7) |
| Pessoal explícito (jung, adhd, estoicismo, …) | **B** pessoal |
| Ambíguo | **perguntar** |
**Regra:** nunca responder sem citar fonte. Se 0 fontes, dizer explicitamente.
---
@@ -190,69 +227,69 @@ Usar estes sinais para decidir Família A vs B:
| Comando | Uso |
|---------|-----|
| `/knowledge [pergunta]` | Router automático A/B com paralelismo |
| `/knowledge [pergunta]` | Router automatico por tipo |
| `/kb [pergunta]` | Alias curto |
| `/kb-save [conteúdo]` | Guardar na fonte adequada (Supabase se decisão/solução, Hub se processual, NotebookLM source_add se externo) |
| `/kb-gaps` | Listar lacunas detectadas em `memory-supabase` |
| `/kb-save [conteudo]` | Guardar na fonte adequada (ver abaixo) |
| `/kb-gaps` | Listar lacunas detectadas em Supabase |
---
## Gravar conhecimento (/kb-save)
Router inverso por tipo:
| Tipo | Destino | Tool |
|---|---|---|
| Decisão / contexto / solução técnica | memory-supabase | `mcp__memory-supabase__save_memory` com tags |
| Procedimento operacional | Hub/06-Operacoes/Procedimentos/ | `Write` PROC-*.md |
| Conhecimento externo | NotebookLM notebook adequado | `mcp__notebooklm-mcp__source_add` |
|------|---------|------|
| Decisao / solucao tecnica / workaround | Supabase | `save_memory` com tags `[tipo, dominio, projecto?, data]` |
| Feedback / regra estavel | CC memory | `Write` em `~/.claude/projects/*/memory/` |
| Procedimento operacional | Hub PROCs | `Write` PROC-*.md |
| Referencia rapida (ID, path) | Hub QR | `Edit` QR-*.md |
| Conhecimento externo | NotebookLM | `source_add` no notebook adequado |
---
## Detecção e reporte de lacunas
## Deteccao de lacunas
Quando query retorna 0 hits úteis em Família A (o caso relevante) ou <30% score em Família B:
Quando 0 hits uteis em todas as fontes consultadas para o tipo:
```javascript
mcp__memory-supabase__save_memory({
content: `LACUNA: "${query}" — Família A 0 hits, classificada como ${classificacao}.`,
tags: ["lacuna-kb", classificacao],
metadata: { query, timestamp, source_families: ["A","B"] }
content: `LACUNA: "${query}" — tipo ${tipo}, 0 hits`,
tags: ["lacuna-kb", tipo, dominio]
});
```
Depois sugerir acção: criar PROC, guardar no Supabase, adicionar fonte ao notebook NotebookLM adequado.
Sugerir accao: criar PROC, actualizar QR, adicionar fonte a NLM, guardar em Supabase.
---
## Regras operacionais
1. **Família A é default.** Só escalar para B quando classificador sinalizar externo.
2. **Paralelismo obrigatório em Família A.** Todas as tools na mesma mensagem (regra global #1: "NEVER run independent tool calls sequentially").
3. **Grep cross-projecto obrigatório** em `~/.claude/projects/*/memory/*.md` — o harness só carrega a memória do `cwd`, este grep compensa esse gap.
4. **Nunca responder sem citar fonte.** Se 0 hits, dizer explicitamente.
5. **Max 3 notebooks** por query Família B.
6. **PT-PT sempre** na consolidação.
7. **Se a pergunta é sobre estado presente** (tarefas abertas, tickets, horas, facturas), ir **directo ao Desk CRM**, não a NotebookLM.
1. **Classificar primeiro, consultar depois.** Nao despejar todas as fontes para todas as perguntas.
2. **Paralelismo obrigatorio** dentro de cada tipo quando ha multiplas fontes.
3. **Grep cross-projecto obrigatorio** para tipos 2, 5, 7 — `~/.claude/projects/*/memory/*.md`.
4. **Nunca responder sem citar fonte.**
5. **Max 2 notebooks NLM** por query (performance).
6. **Supabase sempre graceful** — se indisponivel ou 0 resultados, continuar com outras fontes.
7. **Estado presente = Desk CRM directo** — nunca NLM/Hub para tarefas/facturas/tickets.
8. **PT-PT sempre.**
---
## Anti-patterns
- ❌ Começar por NotebookLM para perguntas operacionais (era o erro da v2.0.0)
- ❌ Só consultar o `cwd` e ignorar memory cross-projecto
- ❌ Responder sem citar fonte
- ❌ Chamar Família A em série — tem de ser paralelo
- ❌ Classificar "como funciona o nosso router /knowledge?" como Família B (é Família A — é sobre infra interna)
- ❌ Fallback linear A→B quando a pergunta é claramente externa (vai directo a B)
- Consultar NLM para "quantas tarefas abertas tem o projecto X" (estado vivo → Desk CRM)
- Fazer grep generico em `Hub/**/*.md` quando a pergunta e claramente sobre um QR especifico
- Consultar Supabase como unica fonte (usar como complemento, nao alicerce)
- Classificar "como funciona o nosso router /knowledge" como referencia externa (e interno → CC memory + Hub)
- Ignorar CC memory cross-projecto (harness so carrega cwd)
- Disparar 5 fontes para um facto rapido que esta num QR (sequencial, parar ao hit)
---
## Referências
## Referencias
- `references/routing-guide.md` — mapeamento detalhado de routing (pendente v2.1 — actualizar)
- `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/feedback_knowledge-router-arquitectura.md` — decisão arquitectural
- `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md` — inventário completo 65 notebooks
- `~/.claude/plans/atomic-fluttering-flame.md` — plano RAG-System completo
- `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/feedback_knowledge-router-arquitectura.md` — decisao arquitectural
- `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md` — inventario 65 notebooks NLM
---
@@ -260,12 +297,14 @@ Depois sugerir acção: criar PROC, guardar no Supabase, adicionar fonte ao note
```jsonl
{"date":"2026-04-08","issue":"v2.0.0 tratava NotebookLM como fonte primaria para tudo","fix":"v2.1.0 router Familia A/B — NotebookLM so para externo","source":"user"}
{"date":"2026-04-08","issue":"v2.1.0 assumia FastMCP file-based (11 tools lightrag_*) apos migracao temporaria da outra sessao","fix":"v2.1.1 restaurado para LightRAG-HKU completo com 17 tools originais (query_document, insert_document, get_pipeline_status, etc), UI em rag.descomplicar.pt, PG storage 331 docs","source":"user"}
{"date":"2026-04-13","issue":"LightRAG com 0 documentos — servico sem utilidade a consumir recursos","fix":"v2.2.0 removido LightRAG da Familia A — 4 fontes restantes: Supabase, CC memory, Hub, Desk CRM","source":"user"}
{"date":"2026-04-08","issue":"memoria Claude Code fragmentada em ~/.claude/projects/*/memory/ (101 ficheiros, 34 projectos)","fix":"grep cross-projecto obrigatorio no router Familia A","source":"user"}
{"date":"2026-04-08","issue":"mcp__memory-supabase__search_memories pode estar indisponivel no harness","fix":"graceful fallback no router — continuar paralelismo com outras fontes e reportar lacuna","source":"auto"}
{"date":"2026-04-08","issue":"v2.1.0 assumia FastMCP file-based (11 tools lightrag_*)","fix":"v2.1.1 restaurado LightRAG-HKU 17 tools","source":"user"}
{"date":"2026-04-13","issue":"LightRAG com 0 docs, servico sem utilidade","fix":"v2.2.0 removido LightRAG da Familia A","source":"user"}
{"date":"2026-04-08","issue":"memoria CC fragmentada por projecto","fix":"grep cross-projecto obrigatorio","source":"user"}
{"date":"2026-04-13","issue":"Supabase degradado (stats/paginacao/embeddings raw)","fix":"MCP reparado — stats, paginacao e sanitize embeddings corrigidos. 6 registos com credentials eliminados","source":"fase-2"}
{"date":"2026-04-13","issue":"v2.2.0 modelo A/B subestimava Hub e NLM para queries operacionais","fix":"v3.0.0 router por tipo (8 rotas), Hub granular (QR/KB/APIs/Manuais/PROCs/Troubleshooting), NLM referencia tecnica primaria, Supabase complementar","source":"plano RAG-System"}
{"date":"2026-04-13","issue":"v3.0.0 nao tinha routing para frameworks (Next.js foi ao notebook errado), KB local subutilizado","fix":"v3.1.0 prioridade por tipo de tema (KB local > Context7 > NLM para frameworks), 13 ficheiros KB mapeados, 4 notebooks NLM adicionados, Context7 como fonte para docs oficiais","source":"testes fase 5"}
```
---
**v2.2.0** | 13-04-2026 | LightRAG removido (0 docs, serviço desactivado). Família A: 4 fontes — Supabase, CC memory, Hub, Desk CRM
**v3.1.0** | 13-04-2026 | KB local mapeado (13 ficheiros), Context7 para docs oficiais, prioridade por tipo de tema, 19 notebooks NLM