Plugins: automacao, crm-ops, design-media, dev-tools, gestao, infraestrutura, marketing, negocio, perfex-dev, project-manager, wordpress + hello-plugin (existente). Totais: 83 skills, 44 agents, 12 datasets.json Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
15 KiB
15 KiB
name, description, author, version, user_invocable, tags, desk_task, allowed-tools, category, quality_score, updated
| name | description | author | version | user_invocable | tags | desk_task | allowed-tools | category | quality_score | updated | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| knowledge | Unified knowledge management with intelligent routing across Dify KB, WikiJS, Supabase, Context7 and local docs. Detects gaps and suggests content creation. Use when searching documentation, looking for best practices, researching solutions, or when user mentions "how to", "documentation", "knowledge base", "search docs", "find information", "best practices", "procedures", "guides". | Descomplicar® Crescimento Digital | 1.1.0 | true |
|
1474 | Read, Grep, mcp__dify-kb__dify_kb_retrieve_segments, mcp__wikijs__search_pages, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs | productivity | 85 | 2026-02-04T18:00:00Z |
/knowledge - Gestão Unificada de Conhecimento
Pesquisa inteligente com routing automático entre todas as fontes de conhecimento.
Arquitectura
Pergunta → Router → Fonte Adequada → Resultado Agregado
↓
Detecta Lacunas → Sugere Criação
| Fonte | MCP | Tipo de Conhecimento |
|---|---|---|
| Dify KB | dify-kb | RAG, 74 datasets temáticos |
| WikiJS | wikijs | Documentação estruturada, procedimentos |
| Supabase | memory-supabase | Memória sessões, decisões, contexto |
| Context7 | context7 | Docs bibliotecas externas |
| Docs Locais | filesystem | Ficheiros GDrive, Obsidian |
Comandos
| Comando | Uso |
|---|---|
/knowledge [termo] |
Pesquisa inteligente com routing |
/kb [termo] |
Alias curto |
/kb-sync |
Sincronizar índice com Dify KB (actualiza IDs e docs) |
/kb-save [tema] |
Guardar conhecimento na fonte adequada |
/kb-gaps |
Listar lacunas identificadas |
/kb-new [tema] |
Criar novo dataset Dify |
Routing por Tema
Marketing e Conteúdo
Tema: marketing, SEO, copywriting, redes sociais
1ª Fonte: Dify (Marketing Digital, SEO, Neil Patel, Copywriting)
2ª Fonte: WikiJS (estratégias)
3ª Fonte: Supabase (decisões passadas)
WordPress e Web
Tema: WordPress, Elementor, WooCommerce, plugins
1ª Fonte: Dify (WordPress, Elementor, Crocoblock)
2ª Fonte: Context7 (docs oficiais)
3ª Fonte: Docs Locais (código)
CRM e Clientes
Tema: clientes, Perfex, projectos, facturação
1ª Fonte: Supabase (contexto recente)
2ª Fonte: Dify (PerfexCRM)
3ª Fonte: WikiJS (procedimentos)
Desenvolvimento
Tema: código, API, PHP, React, Node
1ª Fonte: Context7 (docs bibliotecas)
2ª Fonte: Dify (TI, Dev Software)
3ª Fonte: Docs Locais (projectos)
Infraestrutura
Tema: servidor, CWP, Linux, deploy
1ª Fonte: WikiJS (procedimentos)
2ª Fonte: Dify (TI, CWP, Linux)
3ª Fonte: Supabase (configurações)
Estratégia e Gestão
Tema: estratégia, projectos, processos
1ª Fonte: Dify (Estratégia, Gestão Projetos)
2ª Fonte: WikiJS (planos)
3ª Fonte: Supabase (decisões)
Decisões e Contexto
Tema: decisão, porque, contexto, histórico
1ª Fonte: Supabase (memória longo prazo)
2ª Fonte: Obsidian (notas)
3ª Fonte: Dify (Data Lake)
Workflow Completo
Passo 1: Análise do Termo
// Input: "/knowledge como configurar crocoblock filters"
function analisarQuery(query) {
const keywords = {
tecnico: /código|api|php|react|node|servidor|linux|deploy|git/i,
wordpress: /wordpress|elementor|crocoblock|woocommerce|plugin/i,
marketing: /seo|marketing|copywriting|redes sociais|instagram/i,
crm: /cliente|perfex|crm|facturação|orçamento/i,
estrategia: /estratégia|plano|decisão|porque|contexto/i,
procedimento: /como|tutorial|guia|passo a passo|procedimento/i
};
for (const [categoria, pattern] of Object.entries(keywords)) {
if (pattern.test(query)) {
return categoria;
}
}
return 'geral'; // Default se não detectar categoria
}
const categoria = analisarQuery(query); // 'wordpress'
Passo 2: Determinar Fontes Prioritárias
const routing = {
wordpress: [
{ fonte: 'dify', datasets: ['crocoblock-kb', 'elementor', 'wordpress'] },
{ fonte: 'context7', libraries: ['elementor', 'woocommerce'] },
{ fonte: 'docs-locais', paths: ['/Projectos/*/wp-content/'] }
],
marketing: [
{ fonte: 'dify', datasets: ['marketing-digital', 'seo', 'copywriting'] },
{ fonte: 'wikijs', tags: ['marketing', 'estrategia'] },
{ fonte: 'supabase', tags: ['decisao', 'marketing'] }
],
crm: [
{ fonte: 'supabase', tags: ['cliente', 'crm'] },
{ fonte: 'dify', datasets: ['perfexcrm'] },
{ fonte: 'wikijs', tags: ['procedimento', 'crm'] }
],
tecnico: [
{ fonte: 'context7', libraries: ['auto-detect'] },
{ fonte: 'dify', datasets: ['ti', 'desenvolvimento-software'] },
{ fonte: 'docs-locais', paths: ['/Dev/'] }
],
estrategia: [
{ fonte: 'supabase', tags: ['decisao', 'contexto'] },
{ fonte: 'obsidian', folders: ['01-Projectos/', '02-Areas/'] },
{ fonte: 'dify', datasets: ['data-lake-descomplicar'] }
],
procedimento: [
{ fonte: 'wikijs', all: true },
{ fonte: 'dify', datasets: ['procedimentos'] },
{ fonte: 'obsidian', folders: ['03-Recursos/Procedimentos/'] }
]
};
const fontes_prioritarias = routing[categoria];
Passo 3: Pesquisa Sequencial
async function pesquisar(query, categoria) {
const fontes = routing[categoria];
let resultados = [];
for (const fonte of fontes) {
let resultado;
switch (fonte.fonte) {
case 'dify':
// Pesquisar em paralelo nos datasets
const promessas = fonte.datasets.map(ds_id =>
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: resolverDatasetID(ds_id),
query: query,
top_k: 3
})
);
resultado = await Promise.all(promessas);
break;
case 'wikijs':
resultado = await mcp__wikijs__search_pages({ query });
break;
case 'supabase':
resultado = await mcp__memory-supabase__search_memories({
query,
tags: fonte.tags
});
break;
case 'context7':
// Detectar bibliotecas mencionadas no query
const libs = detectarBibliotecas(query);
resultado = await Promise.all(
libs.map(lib => mcp__context7__get-library-docs({ library: lib }))
);
break;
case 'docs-locais':
// Grep nos paths
resultado = await Grep({
pattern: extrairKeywords(query).join('|'),
path: fonte.paths[0],
output_mode: 'content'
});
break;
case 'obsidian':
// Pesquisa nos folders
resultado = await Promise.all(
fonte.folders.map(folder =>
Grep({
pattern: extrairKeywords(query).join('|'),
path: `/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/${folder}`,
output_mode: 'content'
})
)
);
break;
}
// Avaliar relevância
const relevante = avaliarRelevancia(resultado, query);
if (relevante.score > 70) {
// Resultado suficiente, parar pesquisa
return { resultados: relevante.data, fonte: fonte.fonte };
} else if (relevante.score > 30) {
// Adicionar mas continuar pesquisando
resultados.push({ ...relevante, fonte: fonte.fonte });
}
}
// Retornar agregado se nenhuma fonte teve score >70
return {
resultados: agregrarResultados(resultados),
fonte: 'multiplas',
lacuna: resultados.length === 0
};
}
Passo 4: Resposta Estruturada
## Resultado: como configurar crocoblock filters
### Encontrado em Dify KB (Crocoblock)
**Configuração Filters JetEngine:**
1. Criar Query Builder no JetEngine
2. Definir filtros (taxonomy, meta fields, search)
3. Criar Filter Widget no Elementor
4. Conectar filtro ao Listing Grid
5. Configurar AJAX para loading dinâmico
**Documentação oficial:** [link]
### Relacionado
- [[JetEngine-Query-Builder|Guia Query Builder]]
- Dify KB: Elementor > Filtros Dinâmicos
- WikiJS: Procedimentos > Crocoblock Setup
### Qualidade da Resposta
✅ Completo (score: 85/100)
📊 3 segments de Dify KB
🔗 2 links relacionados
⏱️ Tempo de pesquisa: 1.2s
Passo 5: Detectar e Reportar Lacunas
if (resultado.lacuna || resultado.score < 50) {
// Registar lacuna
await mcp__memory-supabase__save_memory({
content: `LACUNA: Query "${query}" não encontrou informação adequada.`,
metadata: {
type: 'lacuna-kb',
categoria: categoria,
query: query,
score: resultado.score,
date: new Date().toISOString()
}
});
// Sugerir criação de conteúdo
console.log(`
> [!warning] Lacuna Detectada
> Tema "${query}" tem informação insuficiente (score: ${resultado.score}).
>
> **Sugestões:**
> - [ ] Criar dataset Dify: "${categoria}-${extrairTema(query)}"
> - [ ] Criar página WikiJS: "Procedimentos/${extrairTema(query)}"
> - [ ] Guardar em Supabase se for decisão importante
`);
}
MCPs Disponíveis
Dify KB
mcp__dify-kb__dify_kb_list_datasets # Listar datasets
mcp__dify-kb__dify_kb_retrieve_segments # Pesquisar (dataset_id, query)
mcp__dify-kb__dify_kb_create_dataset # Criar dataset
mcp__dify-kb__dify_kb_create_document_text # Adicionar documento
WikiJS
mcp__wikijs__search_pages # Pesquisar (query)
mcp__wikijs__get_page_by_id # Obter página
mcp__wikijs__get_all_pages # Listar todas
Supabase Memory
mcp__memory-supabase__search_memories # Pesquisar (query)
mcp__memory-supabase__save_memory # Guardar (content, metadata)
mcp__memory-supabase__get_all_memories # Listar todas
Context7
mcp__context7__resolve-library-id # Resolver biblioteca
mcp__context7__get-library-docs # Obter docs
Filesystem (Docs Locais)
Grep/Glob em:
- /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/ (Obsidian vault)
- /media/ealmeida/Dados/GDrive/Projectos/
Datasets Dify Principais
Por Categoria
| Categoria | Datasets | Total Docs |
|---|---|---|
| Marketing | Marketing Digital, SEO, Copywriting, Neil Patel | 200+ |
| WordPress | WordPress, Elementor, Crocoblock | 470+ |
| Gestão | Gestão Projetos, Estratégia, Produtividade | 50+ |
| Técnico | TI, Dev Software, Linux, AWS | 130+ |
| Clientes | ESP, SNT, Espiral Senior | 140+ |
IDs Frequentes
Ver mapeamento completo em: config/sources.json
Detecção de Lacunas
Quando Detectar
- Pesquisa retorna 0 resultados
- Resultados irrelevantes para o contexto
- Tema recorrente sem documentação
- Decisão importante não registada
Acção Sugerida
> [!warning] Lacuna Detectada
> Tema "[X]" não tem documentação adequada.
>
> Sugestão:
> - [ ] Criar dataset Dify: [nome sugerido]
> - [ ] Criar página WikiJS: [path sugerido]
> - [ ] Guardar em Supabase: [se for decisão/contexto]
Lacunas Conhecidas
Datasets Dify em Falta
- Claude Code (boas práticas, skills, hooks)
- MCP Servers (configuração, troubleshooting)
- Obsidian (workflows, plugins, templates)
- Git/Gitea (workflows, CI/CD)
- EasyPanel (deploy, containers)
Páginas WikiJS em Falta
- Arquitectura do Sistema (Stack completo)
- Guia MCPs Disponíveis
- Procedimentos de Backup
- Onboarding Novos Projectos
Sincronização (/kb-sync)
O comando /kb-sync actualiza automaticamente o índice de datasets Dify.
O que faz
- Lista todos os datasets via
mcp__dify-kb__dify_kb_list_datasets - Compara com
config/sources.json - Actualiza IDs, nomes e contagem de documentos
- Detecta datasets novos (não mapeados)
- Detecta datasets removidos
- Actualiza timestamp
last_sync
Quando usar
- Após criar/remover datasets no Dify
- Periodicamente (semanal recomendado)
- Quando pesquisas falham por ID inválido
Output esperado
## Sync Concluído
**Datasets:** 73 (anterior: 74)
**Actualizados:** 5
**Novos:** 0
**Removidos:** 1 (Demo Teste Agosto 2025)
### Alterações
| Dataset | Mudança |
|---------|---------|
| marketing-digital | docs: 81 → 85 |
| crocoblock-kb | docs: 403 → 410 |
Estrutura do sources.json
{
"version": "1.1.0",
"updated": "2026-01-25T15:30:00Z",
"last_sync": "2026-01-25T15:30:00Z",
"total_datasets": 73,
"dify_datasets": {
"nome-slug": {
"id": "uuid-do-dify",
"name": "Nome Original",
"docs": 123
}
}
}
Workflow Guardar Conhecimento
/kb-save [tema]
1. Analisar tipo de conhecimento
2. Determinar destino:
- Decisão/Contexto → Supabase
- Procedimento → WikiJS
- Conhecimento temático → Dify KB
3. Formatar conteúdo
4. Guardar com metadata adequada
5. Confirmar gravação
Exemplos de Uso
Pesquisa Técnica
/kb como configurar crocoblock filters
→ Dify (Crocoblock) → Context7 (docs) → resultado agregado
Pesquisa Contexto
/kb porque escolhemos easypanel
→ Supabase (decisões) → Obsidian (notas) → resultado
Pesquisa Procedimento
/kb como fazer backup wordpress
→ WikiJS (procedimentos) → Dify (WordPress) → resultado
Guardar Decisão
/kb-save decisão
"Escolhemos Remotion para vídeos porque..."
→ Supabase com tags: [decisão, video, remotion]
Referências
- 03-Recursos/Indice-Conhecimento - Inventário completo de fontes
- StackUpdate - Roadmap do sistema
Datasets Dify (Consulta Obrigatória)
Esta skill já faz routing automático para datasets Dify, mas em caso de dúvidas técnicas sobre a própria gestão de conhecimento:
| Dataset | ID | Prioridade |
|---|---|---|
| Data Lake Descomplicar | b4e233d6-0d78-42f6-aef4-a56280600fe8 |
1 |
| Dify | 44d1517b-65b8-4d81-8253-5683ff0b8830 |
2 |
| Obsidian + Claude Code | e38a510f-ca93-4407-8b44-c4c66efe01f8 |
2 |
Como Consultar
// Pesquisar no Data Lake geral
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "b4e233d6-0d78-42f6-aef4-a56280600fe8",
query: "[termo de pesquisa]"
})
// Configuração e uso do Dify
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "44d1517b-65b8-4d81-8253-5683ff0b8830",
query: "dataset segment retrieval"
})
// Integração Obsidian + Claude
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "e38a510f-ca93-4407-8b44-c4c66efe01f8",
query: "vault workflow dataview"
})
Quando Consultar
- Configurar novo dataset Dify
- Optimizar estratégia de retrieval
- Integrar Obsidian com Claude Code
- Criar workflows de gestão de conhecimento
Checklist de Pesquisa
Antes de responder ao utilizador:
- Categoria correctamente identificada
- Fontes prioritárias consultadas
- Score de relevância >70 (ou >30 agregado)
- Lacunas detectadas e reportadas
- Resultados formatados correctamente
- Links relacionados incluídos
Changelog
v1.1.0 (2026-02-03)
- Workflow completo - 5 passos detalhados com código
- Routing inteligente - Mapeamento categoria → fontes
- Pesquisa paralela - Múltiplos datasets Dify simultâneos
- Score de relevância - Avaliação automática (0-100)
- Detecção de lacunas - Auto-report e sugestões
- Checklist - Validação antes de responder
v1.0.0 (2026-01-25)
- Versão inicial
- Routing manual por tema
- Datasets Dify mapeados
- Integração com 5 fontes
Versão: 1.1.0 | Data: 2026-02-03 | Autor: Descomplicar®