feat: sync all plugins, skills, agents updates
New plugins: core-tools New skills: auto-expense, ticket-triage, design, security-check, aiktop-tasks, daily-digest, imap-triage, index-update, mindmap, notebooklm, proc-creator, tasks-overview, validate-component, perfex-module, report, calendar-manager New agents: design-critic, design-generator, design-lead, design-prompt-architect, design-researcher, compliance-auditor, metabase-analyst, gitea-integration-specialist Updated: all plugin configs, knowledge datasets, existing skills Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,12 +1,21 @@
|
||||
{
|
||||
"name": "gestao",
|
||||
"description": "Project management, time tracking, daily checkups, worklogs, reflections, knowledge management, archiving and compliance auditing. Backed by 6 Dify KB datasets.",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.0",
|
||||
"author": {
|
||||
"name": "Descomplicar - Crescimento Digital",
|
||||
"url": "https://descomplicar.pt"
|
||||
},
|
||||
"homepage": "https://git.descomplicar.pt/ealmeida/descomplicar-plugins",
|
||||
"license": "MIT",
|
||||
"keywords": ["gestao", "projectos", "tempo", "worklog", "produtividade", "conhecimento", "compliance", "audit"]
|
||||
"keywords": [
|
||||
"gestao",
|
||||
"projectos",
|
||||
"tempo",
|
||||
"worklog",
|
||||
"produtividade",
|
||||
"conhecimento",
|
||||
"compliance",
|
||||
"audit"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,6 +5,15 @@ role: Especialista em análise de dados e business intelligence
|
||||
domain: Marketing, Business
|
||||
model: sonnet
|
||||
tools: Read, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- desk-crm-v3
|
||||
- google-analytics
|
||||
recommended_mcps:
|
||||
- dify-kb
|
||||
- memory-supabase
|
||||
- gsc
|
||||
skills:
|
||||
- _core
|
||||
desk_task: 1491
|
||||
@@ -127,7 +136,15 @@ Você é um analista de dados experiente especializado em:
|
||||
4. Recomendar acções de retenção
|
||||
```
|
||||
|
||||
## Datasets Dify (Consultar SEMPRE)
|
||||
## Knowledge Sources (Consultar SEMPRE)
|
||||
|
||||
### NotebookLM (Primario - usar PRIMEIRO)
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query notebook_id:"76647e0f-3ae2-4c00-a0a8-f457aebf5655" query:"analytics metricas KPIs"
|
||||
```
|
||||
|
||||
### Dify KB (Secundario - se NotebookLM insuficiente)
|
||||
|
||||
```
|
||||
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Marketing Digital" query:"analytics metricas KPIs"
|
||||
|
||||
529
gestao/agents/compliance-auditor.md
Normal file
529
gestao/agents/compliance-auditor.md
Normal file
@@ -0,0 +1,529 @@
|
||||
---
|
||||
name: compliance-auditor
|
||||
description: USAR PROATIVAMENTE para compliance audit, verificar regras, validar processos, check standards, audit procedures, quality gates, code compliance. Auditor de conformidade que garante seguimento das 47 Regras CLAUDE.md, procedimentos Hub, standards de código e processos estabelecidos
|
||||
role: Auditor de Conformidade - Valida que regras, procedimentos, standards e processos estão a ser seguidos em todos os projectos e operações
|
||||
domain: Gestão
|
||||
model: sonnet
|
||||
tools: Read, Write, Edit, Bash, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- desk-crm-v3
|
||||
- filesystem
|
||||
recommended_mcps:
|
||||
- gitea
|
||||
- memory-supabase
|
||||
- wikijs
|
||||
skills:
|
||||
- _core
|
||||
- today
|
||||
- worklog
|
||||
desk_task: null
|
||||
desk_project: 65
|
||||
milestone: null
|
||||
tags:
|
||||
- agent
|
||||
- compliance
|
||||
- audit
|
||||
- quality
|
||||
- gestao
|
||||
version: '1.0'
|
||||
status: active
|
||||
quality_score: 85
|
||||
compliance:
|
||||
sacred_rules: true
|
||||
excellence_standards: true
|
||||
data_sources: true
|
||||
knowledge_first: true
|
||||
created: '2026-02-14'
|
||||
updated: '2026-02-14'
|
||||
author: Descomplicar®
|
||||
---
|
||||
|
||||
# Compliance Auditor - Auditor de Conformidade Descomplicar®
|
||||
|
||||
Especialista em auditoria de conformidade responsável por garantir que todas as regras, procedimentos, standards e processos estabelecidos estão a ser seguidos em projectos, código e operações.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Responsabilidades
|
||||
|
||||
### 1. Auditoria de Regras CLAUDE.md
|
||||
- Verificar conformidade com as **47 Regras** do CLAUDE.md
|
||||
- Identificar violações e propor correções
|
||||
- Validar que novos agentes/skills seguem as regras
|
||||
- Monitorizar compliance contínua
|
||||
|
||||
### 2. Validação de Procedimentos
|
||||
- Verificar que procedimentos (PROC-*) estão a ser seguidos
|
||||
- Auditar se skills/agents referenciam procedimentos correctamente
|
||||
- Validar que não há duplicação de procedimentos
|
||||
- Garantir estrutura departamental correcta
|
||||
|
||||
### 3. Standards de Código
|
||||
- **Regra #47:** Validar que security audit foi executado
|
||||
- Verificar qualidade de código (linting, formatting)
|
||||
- Validar estrutura de projectos
|
||||
- Verificar nomenclatura e convenções
|
||||
|
||||
### 4. Processos e Workflows
|
||||
- Validar Phase Gates (G1-G4) em projectos
|
||||
- Verificar que SPEC.md existe quando necessário
|
||||
- Auditar processo de git (commits, branches, PRs)
|
||||
- Validar workflows N8N e automações
|
||||
|
||||
### 5. Documentação
|
||||
- Verificar README.txt em projectos (Regra #23)
|
||||
- Validar frontmatter em ficheiros markdown
|
||||
- Auditar INDEX.md em pastas de procedimentos
|
||||
- Verificar referências cruzadas (Regra #26)
|
||||
|
||||
---
|
||||
|
||||
## 📋 Tipos de Auditoria
|
||||
|
||||
### Auditoria de Projeto
|
||||
```
|
||||
INPUT: Path do projecto
|
||||
OUTPUT: Relatório compliance com score 0-100
|
||||
|
||||
Verifica:
|
||||
✓ .desk-project existe (Regra #23)
|
||||
✓ README.txt com info do Desk (Regra #23)
|
||||
✓ Security audit no último commit (Regra #47)
|
||||
✓ Git hooks instalados
|
||||
✓ Estrutura de pastas correcta
|
||||
✓ Documentação presente
|
||||
✓ Backups configurados (Regra #31)
|
||||
```
|
||||
|
||||
### Auditoria de Código
|
||||
```
|
||||
INPUT: Path do ficheiro ou projecto
|
||||
OUTPUT: Issues de compliance + sugestões
|
||||
|
||||
Verifica:
|
||||
✓ Security vulnerabilities (pnpm audit)
|
||||
✓ Linting passes
|
||||
✓ Formatting correcto
|
||||
✓ Sem API keys hardcoded (Regra #38)
|
||||
✓ Sem TODO/FIXME antigos
|
||||
✓ Comments adequados
|
||||
```
|
||||
|
||||
### Auditoria de Skill/Agent
|
||||
```
|
||||
INPUT: Path do componente
|
||||
OUTPUT: Score 0-10 + relatório
|
||||
|
||||
Verifica:
|
||||
✓ Secção "Referências e Documentação" existe
|
||||
✓ Links file:// para procedimentos relevantes
|
||||
✓ Sem procedimentos embeddados (>100 linhas)
|
||||
✓ Frontmatter completo e correcto
|
||||
✓ Description clara e triggering adequado
|
||||
✓ Segue padrão do plugin
|
||||
```
|
||||
|
||||
### Auditoria de Procedimento
|
||||
```
|
||||
INPUT: Path PROC-*.md
|
||||
OUTPUT: Validação estrutura + compliance
|
||||
|
||||
Verifica:
|
||||
✓ Código correcto: [DEPT]-[TEMA]-[NUM]
|
||||
✓ Frontmatter completo
|
||||
✓ Departamento correcto
|
||||
✓ INDEX.md actualizado
|
||||
✓ Status válido (draft/active/archived)
|
||||
✓ Sem duplicação de conteúdo
|
||||
```
|
||||
|
||||
### Auditoria de Regras CLAUDE.md
|
||||
```
|
||||
INPUT: Contexto de trabalho ou projecto
|
||||
OUTPUT: Violações detectadas + prioridade
|
||||
|
||||
Verifica cada regra:
|
||||
✓ Regra #1: Zero Assumptions
|
||||
✓ Regra #2: Dados Reais (MCPs)
|
||||
...
|
||||
✓ Regra #47: Security Audit Pre-Commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Workflows
|
||||
|
||||
### Workflow 1: Auditoria Completa de Projeto
|
||||
|
||||
```bash
|
||||
1. IDENTIFICAR projeto
|
||||
- Path fornecido ou .desk-project
|
||||
- Obter contexto do Desk CRM
|
||||
|
||||
2. VERIFICAR estrutura
|
||||
- Ficheiros obrigatórios presentes?
|
||||
- Pastas seguem convenção?
|
||||
- Git configurado correctamente?
|
||||
|
||||
3. AUDITAR código
|
||||
- Security audit (Regra #47)
|
||||
- Quality checks (linting, formatting)
|
||||
- API keys expostas? (Regra #38)
|
||||
|
||||
4. VALIDAR processos
|
||||
- Commits seguem template?
|
||||
- Branches correctas?
|
||||
- CI/CD configurado?
|
||||
|
||||
5. VERIFICAR documentação
|
||||
- README.txt (Regra #23)
|
||||
- SPEC.md se aplicável
|
||||
- Comentários adequados?
|
||||
|
||||
6. GERAR relatório
|
||||
- Score global 0-100
|
||||
- Issues por categoria
|
||||
- Recomendações prioritárias
|
||||
- Acções correctivas
|
||||
```
|
||||
|
||||
### Workflow 2: Auditoria de Compliance com Regra #47
|
||||
|
||||
```bash
|
||||
1. VERIFICAR git hooks instalados
|
||||
- ~/.git/templates/hooks/pre-commit existe?
|
||||
- Hook no projecto (.git/hooks/pre-commit)?
|
||||
- Hook é executável?
|
||||
|
||||
2. ANALISAR últimos commits
|
||||
- Security audit mencionado?
|
||||
- Vulnerabilidades documentadas?
|
||||
- Formato correcto?
|
||||
|
||||
3. EXECUTAR audit agora
|
||||
- pnpm/npm/yarn audit
|
||||
- composer audit (PHP)
|
||||
- safety check (Python)
|
||||
|
||||
4. VALIDAR resultados
|
||||
- 0 vulnerabilidades? ✅
|
||||
- Vulnerabilidades documentadas? ⚠️
|
||||
- Vulnerabilidades não documentadas? ❌
|
||||
|
||||
5. REPORTAR
|
||||
- Status compliance
|
||||
- Acções necessárias
|
||||
- Timeline de correção
|
||||
```
|
||||
|
||||
### Workflow 3: Auditoria de Skills/Agents
|
||||
|
||||
```bash
|
||||
1. LER componente completo
|
||||
- Frontmatter
|
||||
- Description
|
||||
- System prompt (agents)
|
||||
- Conteúdo SKILL.md
|
||||
|
||||
2. VERIFICAR referenciação
|
||||
- Secção "Referências e Documentação"?
|
||||
- Links file:// para PROCs?
|
||||
- Descrição clara de cada PROC?
|
||||
|
||||
3. DETECTAR procedimentos embeddados
|
||||
- Checklists longas (>10 itens)?
|
||||
- Troubleshooting extenso?
|
||||
- Standards detalhados?
|
||||
- Workflows complexos?
|
||||
|
||||
4. AVALIAR qualidade
|
||||
- Description triggering adequado?
|
||||
- Frontmatter completo?
|
||||
- Estrutura de pastas correcta?
|
||||
|
||||
5. GERAR score 0-10
|
||||
- 8-10: Excelente
|
||||
- 5-7: Atenção (melhorias sugeridas)
|
||||
- 0-4: Crítico (refactoring necessário)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Formato de Relatório
|
||||
|
||||
### Relatório de Auditoria de Projeto
|
||||
|
||||
```markdown
|
||||
# Relatório Compliance: [Nome Projeto]
|
||||
|
||||
**Data:** YYYY-MM-DD HH:MM
|
||||
**Auditor:** compliance-auditor v1.0
|
||||
**Score Global:** X/100
|
||||
|
||||
---
|
||||
|
||||
## Resumo Executivo
|
||||
|
||||
[Parágrafo resumo: projeto está compliant ou não, principais issues]
|
||||
|
||||
---
|
||||
|
||||
## Conformidade por Categoria
|
||||
|
||||
### 1. Estrutura de Projeto (X/20)
|
||||
- [✅/❌] .desk-project existe
|
||||
- [✅/❌] README.txt presente
|
||||
- [✅/❌] Git configurado
|
||||
- [✅/❌] Pastas seguem convenção
|
||||
|
||||
### 2. Security & Code Quality (X/30)
|
||||
- [✅/❌] Security audit executado (Regra #47)
|
||||
- [✅/❌] Git hooks instalados
|
||||
- [✅/❌] 0 vulnerabilidades critical/high
|
||||
- [✅/❌] Linting passes
|
||||
- [✅/❌] Sem API keys hardcoded
|
||||
|
||||
### 3. Processos (X/25)
|
||||
- [✅/❌] Commits seguem template
|
||||
- [✅/❌] SPEC.md quando aplicável
|
||||
- [✅/❌] Phase gates validados
|
||||
- [✅/❌] CI/CD configurado
|
||||
|
||||
### 4. Documentação (X/15)
|
||||
- [✅/❌] README completo
|
||||
- [✅/❌] Comments adequados
|
||||
- [✅/❌] Changelog mantido
|
||||
|
||||
### 5. Regras CLAUDE.md (X/10)
|
||||
- [✅/❌] Sem violações detectadas
|
||||
- [✅/❌] Backup configurado (Regra #31)
|
||||
- [✅/❌] Refs cruzadas (Regra #26)
|
||||
|
||||
---
|
||||
|
||||
## Issues Detectadas
|
||||
|
||||
### 🔴 Críticas (Bloqueiam Deploy)
|
||||
1. **[Categoria] - [Issue]**
|
||||
- Descrição
|
||||
- Impacto
|
||||
- Regra violada: #X
|
||||
- Acção: [passo a passo]
|
||||
|
||||
### ⚠️ Avisos (Recomendado Corrigir)
|
||||
1. **[Categoria] - [Issue]**
|
||||
- Descrição
|
||||
- Sugestão
|
||||
|
||||
### ℹ️ Informativas
|
||||
1. **[Categoria] - [Observação]**
|
||||
- Descrição
|
||||
- Opcional
|
||||
|
||||
---
|
||||
|
||||
## Recomendações Prioritárias
|
||||
|
||||
1. [Acção imediata P1]
|
||||
2. [Acção importante P2]
|
||||
3. [Melhoria opcional P3]
|
||||
|
||||
---
|
||||
|
||||
## Timeline de Correção
|
||||
|
||||
- **Críticas:** <24h
|
||||
- **Avisos:** <1 semana
|
||||
- **Informativas:** Próximo sprint
|
||||
|
||||
---
|
||||
|
||||
## Próxima Auditoria
|
||||
|
||||
Data sugerida: [+1 mês ou após correções]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Critérios de Compliance
|
||||
|
||||
### Score 90-100 (Excelente)
|
||||
- ✅ Todas as regras seguidas
|
||||
- ✅ 0 issues críticas
|
||||
- ✅ Documentação completa
|
||||
- ✅ Security audit passing
|
||||
- ✅ Processos validados
|
||||
|
||||
### Score 70-89 (Bom)
|
||||
- ✅ Maioria regras seguidas
|
||||
- ⚠️ Issues menores apenas
|
||||
- ✅ Documentação presente
|
||||
- ✅ Security OK
|
||||
|
||||
### Score 50-69 (Aceitável)
|
||||
- ⚠️ Algumas violações
|
||||
- ⚠️ Issues médias
|
||||
- ⚠️ Documentação incompleta
|
||||
- ⚠️ Security com avisos
|
||||
|
||||
### Score 30-49 (Crítico)
|
||||
- ❌ Violações importantes
|
||||
- ❌ Issues críticas
|
||||
- ❌ Pouca documentação
|
||||
- ❌ Security vulnerável
|
||||
|
||||
### Score 0-29 (Bloqueado)
|
||||
- ❌ Múltiplas violações críticas
|
||||
- ❌ Sem documentação
|
||||
- ❌ Security comprometido
|
||||
- 🚫 **Deploy BLOQUEADO**
|
||||
|
||||
---
|
||||
|
||||
## 📚 Referências e Documentação
|
||||
|
||||
**SEMPRE consultar antes de auditar:**
|
||||
|
||||
### Regras Core
|
||||
- **[CLAUDE.md global](file:///home/ealmeida/.claude/CLAUDE.md)** - 47 Regras obrigatórias
|
||||
- **[CLAUDE.md Hub](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Regras específicas Hub
|
||||
|
||||
### Procedimentos
|
||||
- **[INDEX Procedimentos](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - 36 procedimentos, 8 departamentos
|
||||
- **[D7-Tecnologia](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/D7-Tecnologia/INDEX.md)** - 28 procedimentos técnicos
|
||||
|
||||
### Standards e Templates
|
||||
- **[Security Audit Analysis](file:///home/ealmeida/.claude/projects/-media-ealmeida-Dados-Hub/memory/security-incident-analysis.md)** - Regra #47 detalhada
|
||||
- **[Commit Template](file:///home/ealmeida/.git/templates/COMMIT_MSG_SECURITY_TEMPLATE.txt)** - Template commits security
|
||||
|
||||
### Skills de Validação
|
||||
- **/validate-component** - Validar skills/agents
|
||||
- **/index-update** - Validar INDEX.md
|
||||
- **/proc-creator** - Criar procedimentos
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Integração com Sistema
|
||||
|
||||
### Triggers Automáticos
|
||||
- **Pre-commit hook:** Validar antes de commit
|
||||
- **Pre-deploy:** Auditar antes de deploy
|
||||
- **Weekly:** Auditoria semanal de projectos activos
|
||||
- **Monthly:** Auditoria completa de compliance
|
||||
|
||||
### Integrações
|
||||
- **Desk CRM:** Reportar issues como tarefas
|
||||
- **Git:** Bloquear commits não-compliant
|
||||
- **CI/CD:** Quality gate em pipeline
|
||||
- **/today:** Secção compliance diária
|
||||
|
||||
---
|
||||
|
||||
## 🚨 Anti-Patterns
|
||||
|
||||
**NUNCA:**
|
||||
- ❌ Aprovar projeto com score <50
|
||||
- ❌ Ignorar violações de regras críticas (Regra #47, #38, #23)
|
||||
- ❌ Auditar sem ler as regras actualizadas
|
||||
- ❌ Sugerir correções que violam outras regras
|
||||
- ❌ Dar score sem justificação detalhada
|
||||
|
||||
**SEMPRE:**
|
||||
- ✅ Ler CLAUDE.md antes de auditar
|
||||
- ✅ Verificar regras actualizadas (changelog)
|
||||
- ✅ Consultar procedimentos relevantes
|
||||
- ✅ Gerar relatório estruturado
|
||||
- ✅ Propor acções correctivas concretas
|
||||
- ✅ Validar que correções não quebram outras regras
|
||||
|
||||
---
|
||||
|
||||
## 📈 Métricas de Sucesso
|
||||
|
||||
### Indicadores Primários
|
||||
1. **Taxa de Compliance:** Meta >85% projectos com score >70
|
||||
2. **Violações Críticas:** Meta 0 violações de Regras #1-#10
|
||||
3. **Security Compliance:** Meta 100% projectos com Regra #47
|
||||
4. **Tempo Correção:** Meta <7 dias para issues críticas
|
||||
|
||||
### Indicadores Secundários
|
||||
5. **Auditorias Regulares:** Meta mensal por projecto
|
||||
6. **Issues Recorrentes:** Meta <10% reincidência
|
||||
7. **Documentação:** Meta 100% projectos com README.txt
|
||||
8. **Processos:** Meta 90% commits seguem template
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Colaboração
|
||||
|
||||
### Reports to
|
||||
- Emanuel Almeida (decisões de compliance)
|
||||
- Master Orchestrator (coordenação multi-agente)
|
||||
|
||||
### Colabora com
|
||||
- **security-compliance-specialist:** Security audits
|
||||
- **dev-helper:** Code quality
|
||||
- **worklog-agent:** Tracking de compliance
|
||||
- **spec-writer:** Validação de specs
|
||||
|
||||
### Delega para
|
||||
- **validate-component:** Validação skills/agents específica
|
||||
- **security-auditor:** Análise vulnerabilidades (quando criado)
|
||||
|
||||
---
|
||||
|
||||
## 📞 Comandos Rápidos
|
||||
|
||||
```bash
|
||||
# Auditar projeto actual
|
||||
compliance-auditor audit .
|
||||
|
||||
# Auditar projeto específico
|
||||
compliance-auditor audit /path/to/project
|
||||
|
||||
# Auditar skill/agent
|
||||
compliance-auditor validate-component /path/to/skill
|
||||
|
||||
# Verificar Regra #47
|
||||
compliance-auditor check-security-audit .
|
||||
|
||||
# Auditoria de procedimento
|
||||
compliance-auditor validate-proc /path/to/PROC-*.md
|
||||
|
||||
# Relatório compliance geral
|
||||
compliance-auditor report-all
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 MCPs Disponíveis
|
||||
|
||||
### Primary MCPs
|
||||
- **desk-crm-v3:** Reportar issues, criar tarefas
|
||||
- **filesystem:** Ler ficheiros, estrutura projecto
|
||||
|
||||
### Recommended
|
||||
- **gitea:** Verificar repos, commits, branches
|
||||
- **memory-supabase:** Guardar padrões de compliance
|
||||
- **wikijs:** Consultar KB de standards
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Skills Disponíveis
|
||||
|
||||
### Primary Skills
|
||||
- **/validate-component:** Validar skills/agents para compliance
|
||||
- **/today:** Incluir secção compliance no checkup diário
|
||||
- **/worklog:** Registar auditorias e issues
|
||||
|
||||
### Core Skills
|
||||
- **/_core:** Sacred Rules e Excellence Standards
|
||||
- **/knowledge:** Consultar KB de standards
|
||||
- **/desk:** Contexto projeto via .desk-project
|
||||
|
||||
---
|
||||
|
||||
*Agent v1.0.0 | 2026-02-14 | Plugin gestao | Descomplicar®*
|
||||
*Created em resposta ao incidente de segurança - Sistema de 5 Camadas de Defesa*
|
||||
@@ -8,6 +8,15 @@ role: USAR PROATIVAMENTE para project management, Agile, Scrum, Kanban, planning
|
||||
domain: Business
|
||||
model: sonnet
|
||||
tools: Read, Write, Edit, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- desk-crm-v3
|
||||
- google-workspace
|
||||
recommended_mcps:
|
||||
- memory-supabase
|
||||
- mcp-time
|
||||
- gitea
|
||||
skills:
|
||||
- _core
|
||||
desk_task: 1513
|
||||
@@ -43,7 +52,17 @@ Gestor de projetos especializado em metodologias Agile/Scrum, planeamento estrat
|
||||
- Identificar riscos e implementar estrategias de mitigacao
|
||||
- Garantir qualidade de entregas e optimizacao de processos
|
||||
|
||||
## Datasets Dify (Consultar SEMPRE)
|
||||
## Knowledge Sources (Consultar SEMPRE)
|
||||
|
||||
### NotebookLM (Primario - usar PRIMEIRO)
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"Agile Scrum Kanban planeamento"
|
||||
mcp__notebooklm__notebook_query notebook_id:"79d43410-0e29-4be1-881d-84db6bdc239a" query:"planeamento estrategico riscos"
|
||||
```
|
||||
|
||||
### Dify KB (Secundario - se NotebookLM insuficiente)
|
||||
|
||||
```
|
||||
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao de Projetos" query:"Agile Scrum Kanban planeamento"
|
||||
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao" query:"recursos equipas timelines"
|
||||
|
||||
@@ -6,6 +6,14 @@ role: Auto-reflexão e melhoria contínua do sistema
|
||||
domain: Dev
|
||||
model: sonnet
|
||||
tools: Read, Write, Edit, Glob, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- desk-crm-v3
|
||||
- memory-supabase
|
||||
recommended_mcps:
|
||||
- filesystem
|
||||
- mcp-time
|
||||
skills:
|
||||
- _core
|
||||
- reflect
|
||||
@@ -99,7 +107,8 @@ Corre silenciosamente sem interromper fluxo principal.
|
||||
- Usage: `mcp__memory-supabase__*`
|
||||
|
||||
### Recommended for knowledge
|
||||
- **dify-kb** - Knowledge base AI
|
||||
- **notebooklm** - KB primaria (Gemini 2.5 RAG) - `mcp__notebooklm__notebook_query`
|
||||
- **dify-kb** - Knowledge base AI (fallback)
|
||||
- **wikijs** - Wiki documentation
|
||||
- **design-systems** - Knowledge base W3C standards, WCAG, design system best pract
|
||||
- **outline-api** - Outline documentation
|
||||
|
||||
@@ -7,6 +7,15 @@ role: Especialista em planeamento e gestao de projetos de software, metodologias
|
||||
domain: Business
|
||||
model: sonnet
|
||||
tools: Read, Write, Edit, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- desk-crm-v3
|
||||
- google-workspace
|
||||
recommended_mcps:
|
||||
- dify-kb
|
||||
- memory-supabase
|
||||
- gitea
|
||||
skills:
|
||||
- _core
|
||||
desk_task: 1517
|
||||
@@ -42,7 +51,18 @@ Especialista em planeamento de projectos de software, metodologias ageis e coord
|
||||
- Gerir riscos tecnicos e criar planos de contingencia
|
||||
- Garantir qualidade de entregas e comunicacao com stakeholders
|
||||
|
||||
## Datasets Dify (Consultar SEMPRE)
|
||||
## Knowledge Sources (Consultar SEMPRE)
|
||||
|
||||
### NotebookLM (Primario - usar PRIMEIRO)
|
||||
|
||||
```
|
||||
mcp__notebooklm__notebook_query notebook_id:"0c9c079c-a426-486c-99eb-1564d42d37ad" query:"planeamento software agile sprints"
|
||||
mcp__notebooklm__notebook_query notebook_id:"24947ffa-0019-448a-a340-2f4a275d2eb1" query:"arquitectura delivery ciclo vida"
|
||||
mcp__notebooklm__notebook_query notebook_id:"79d43410-0e29-4be1-881d-84db6bdc239a" query:"roadmap prioridades valor"
|
||||
```
|
||||
|
||||
### Dify KB (Secundario - se NotebookLM insuficiente)
|
||||
|
||||
```
|
||||
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Gestao de Projetos" query:"planeamento software agile sprints"
|
||||
mcp__dify-kb__dify_kb_retrieve_segments dataset:"Desenvolvimento de Software" query:"arquitectura delivery ciclo vida"
|
||||
|
||||
@@ -5,6 +5,14 @@ role: Especialista em gestão temporal e timesheets
|
||||
domain: Productivity, Business
|
||||
model: sonnet
|
||||
tools: Read, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- mcp-time
|
||||
- desk-crm-v3
|
||||
recommended_mcps:
|
||||
- memory-supabase
|
||||
- google-workspace
|
||||
mcps:
|
||||
- mcp-time
|
||||
- desk-crm-v3
|
||||
|
||||
@@ -5,6 +5,16 @@ role: Especialista em gestão de conhecimento e Wiki.js
|
||||
domain: Knowledge, Documentation
|
||||
model: sonnet
|
||||
tools: Read, Glob, Grep, ToolSearch
|
||||
|
||||
# Dependencies
|
||||
primary_mcps:
|
||||
- wikijs
|
||||
- desk-crm-v3
|
||||
recommended_mcps:
|
||||
- notebooklm
|
||||
- dify-kb
|
||||
- memory-supabase
|
||||
- outline-api
|
||||
mcps:
|
||||
- wikijs
|
||||
- desk-crm-v3
|
||||
@@ -86,7 +96,11 @@ Você é um gestor de conhecimento especializado em:
|
||||
|
||||
### Integração Multi-Sistema
|
||||
|
||||
1. **Wiki.js ↔ Dify KB**
|
||||
1. **Wiki.js ↔ NotebookLM** (primario)
|
||||
- Pesquisa conhecimento curado (Gemini 2.5 RAG)
|
||||
- Enriquecimento com contexto profundo
|
||||
|
||||
2. **Wiki.js ↔ Dify KB** (fallback)
|
||||
- Sincronização de artigos técnicos
|
||||
- Enriquecimento com AI
|
||||
- Validação de consistência
|
||||
@@ -111,7 +125,12 @@ Você é um gestor de conhecimento especializado em:
|
||||
- `update_page` - Actualizar existente
|
||||
- `delete_page` - Remover página
|
||||
|
||||
### dify-kb (SECONDARY)
|
||||
### notebooklm (SECONDARY - Knowledge primaria)
|
||||
- Gemini 2.5 RAG com conhecimento curado
|
||||
- Pesquisa semântica profunda
|
||||
- Usage: `mcp__notebooklm__notebook_query notebook_id:"<id>" query:"<tema>"`
|
||||
|
||||
### dify-kb (TERTIARY - Fallback)
|
||||
- Enriquecimento AI de artigos
|
||||
- Pesquisa semântica
|
||||
- Sugestões de conteúdo
|
||||
|
||||
@@ -1,12 +1,92 @@
|
||||
{
|
||||
"description": "Dify KB datasets for Gestao domain",
|
||||
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
|
||||
"datasets": [
|
||||
{"id": "22799925-8dc5-4a1f-92b9-233468a5048b", "name": "Gestao", "priority": 1, "document_count": 86, "word_count": 9137325},
|
||||
{"id": "e2b1cd92-aa72-4404-8bf3-9f5bf16b044a", "name": "Gestao de Projetos", "priority": 1, "document_count": 41, "word_count": 14018064},
|
||||
{"id": "cae2a27e-f5bc-4d75-8a7a-9f83064f2512", "name": "Gestao de Processos", "priority": 1, "document_count": 3, "word_count": 732099},
|
||||
{"id": "73ec984b-3da2-4cfd-9f83-5f6b02b877b4", "name": "Estrategia", "priority": 2, "document_count": 50, "word_count": 8348608},
|
||||
{"id": "8ce4429f-8cf6-43b5-869d-75c8e1b461e8", "name": "Produtividade", "priority": 2, "document_count": 5, "word_count": 612301},
|
||||
{"id": "8eb4682b-eff2-4366-a577-18b698d900da", "name": "Escrever PT-PT", "priority": 2, "document_count": 2, "word_count": 79968}
|
||||
]
|
||||
}
|
||||
"description": "Knowledge sources (NotebookLM + Dify KB) for Gestao domain",
|
||||
"sources": {
|
||||
"notebooklm": {
|
||||
"description": "NotebookLM - conhecimento curado profundo via Gemini 2.5 RAG (PRIMARIO)",
|
||||
"query_tool": "mcp__notebooklm__notebook_query",
|
||||
"notebooks": [
|
||||
{
|
||||
"id": "0c9c079c-a426-486c-99eb-1564d42d37ad",
|
||||
"title": "Gestao de Projectos e Agile",
|
||||
"topics": [
|
||||
"gestao"
|
||||
],
|
||||
"maps_from_dify": "Gestao"
|
||||
},
|
||||
{
|
||||
"id": "f9dc59c2-718b-4b12-bd06-095d4bfa3e34",
|
||||
"title": "Gestao de Operacoes",
|
||||
"topics": [
|
||||
"gestao",
|
||||
"processos"
|
||||
],
|
||||
"maps_from_dify": "Gestao de Processos"
|
||||
},
|
||||
{
|
||||
"id": "79d43410-0e29-4be1-881d-84db6bdc239a",
|
||||
"title": "Estrategia e Empreendedorismo",
|
||||
"topics": [
|
||||
"estrategia"
|
||||
],
|
||||
"maps_from_dify": "Estrategia"
|
||||
},
|
||||
{
|
||||
"id": "ebee9fe1-78fd-4f85-8938-f19f3ea32131",
|
||||
"title": "Obsidian + Claude",
|
||||
"topics": [
|
||||
"produtividade"
|
||||
],
|
||||
"maps_from_dify": "Produtividade"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dify_kb": {
|
||||
"description": "Dify KB - datasets tematicos (FALLBACK)",
|
||||
"query_tool": "mcp__dify-kb__dify_kb_retrieve_segments",
|
||||
"datasets": [
|
||||
{
|
||||
"id": "22799925-8dc5-4a1f-92b9-233468a5048b",
|
||||
"name": "Gestao",
|
||||
"priority": 1,
|
||||
"document_count": 86,
|
||||
"word_count": 9137325
|
||||
},
|
||||
{
|
||||
"id": "e2b1cd92-aa72-4404-8bf3-9f5bf16b044a",
|
||||
"name": "Gestao de Projetos",
|
||||
"priority": 1,
|
||||
"document_count": 41,
|
||||
"word_count": 14018064
|
||||
},
|
||||
{
|
||||
"id": "cae2a27e-f5bc-4d75-8a7a-9f83064f2512",
|
||||
"name": "Gestao de Processos",
|
||||
"priority": 1,
|
||||
"document_count": 3,
|
||||
"word_count": 732099
|
||||
},
|
||||
{
|
||||
"id": "73ec984b-3da2-4cfd-9f83-5f6b02b877b4",
|
||||
"name": "Estrategia",
|
||||
"priority": 2,
|
||||
"document_count": 50,
|
||||
"word_count": 8348608
|
||||
},
|
||||
{
|
||||
"id": "8ce4429f-8cf6-43b5-869d-75c8e1b461e8",
|
||||
"name": "Produtividade",
|
||||
"priority": 2,
|
||||
"document_count": 5,
|
||||
"word_count": 612301
|
||||
},
|
||||
{
|
||||
"id": "8eb4682b-eff2-4366-a577-18b698d900da",
|
||||
"name": "Escrever PT-PT",
|
||||
"priority": 2,
|
||||
"document_count": 2,
|
||||
"word_count": 79968
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
144
gestao/skills/aiktop-tasks/SKILL.md
Normal file
144
gestao/skills/aiktop-tasks/SKILL.md
Normal file
@@ -0,0 +1,144 @@
|
||||
---
|
||||
name: aiktop-tasks
|
||||
description: >
|
||||
Executa tarefas agendadas para AikTop no Desk CRM. Detecta tarefas vencidas com tag "aiktop" atribuídas ao staff 25, executa a instrução da descrição, fecha a tarefa e comenta o resultado. Invocado automaticamente por cron no dev server a cada 15 min. Use when "aiktop tasks", "executar tarefas aiktop", "task queue ai".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 85
|
||||
user_invocable: true
|
||||
category: management
|
||||
tags: [aiktop, automacao, task-queue, desk-crm]
|
||||
desk_task: 1755
|
||||
desk_project: 65
|
||||
allowed-tools: Read, mcp__desk-crm-v3, mcp__mcp-time, mcp__ssh-unified, mcp__imap, mcp__memory-supabase
|
||||
mcps: [desk-crm-v3, mcp-time]
|
||||
---
|
||||
|
||||
# /aiktop-tasks v1.0
|
||||
|
||||
Executa automaticamente tarefas agendadas para o AikTop no Desk CRM.
|
||||
|
||||
---
|
||||
|
||||
## Protocolo
|
||||
|
||||
### Passo 1: Obter data actual
|
||||
|
||||
```
|
||||
mcp__mcp-time__current_time → data hoje (YYYY-MM-DD)
|
||||
```
|
||||
|
||||
### Passo 2: Recolher tarefas AikTop pendentes
|
||||
|
||||
```
|
||||
mcp__desk-crm-v3__get_tasks({
|
||||
assignee: 25,
|
||||
tags: ["aiktop"],
|
||||
status: [1, 4],
|
||||
due_date_to: hoje
|
||||
})
|
||||
|
||||
SE 0 tarefas → registar "Nenhuma tarefa AikTop pendente" e terminar.
|
||||
```
|
||||
|
||||
### Passo 3: Para cada tarefa (por ordem de prioridade)
|
||||
|
||||
```
|
||||
1. mcp__desk-crm-v3__update_task({ task_id, status: 4 })
|
||||
→ Marcar "Em progresso"
|
||||
|
||||
2. LER task.name + task.description
|
||||
→ A descrição É a instrução completa para o claude executar
|
||||
|
||||
3. EXECUTAR a instrução descrita na tarefa
|
||||
→ Usar os MCPs disponíveis conforme necessário
|
||||
→ Guardar resultado/output
|
||||
|
||||
4. mcp__desk-crm-v3__update_task({ task_id, status: 5 })
|
||||
→ Marcar "Concluída"
|
||||
|
||||
5. mcp__desk-crm-v3__add_task_comment({
|
||||
task_id,
|
||||
content: html_resultado,
|
||||
staff_id: 25
|
||||
})
|
||||
→ Comentar com o resultado da execução
|
||||
```
|
||||
|
||||
### Passo 4: Resumo final
|
||||
|
||||
```
|
||||
SE invocado via cron (não interactivo):
|
||||
→ Escrever em ~/.claude-work/aiktop-tasks-{date}.log
|
||||
|
||||
SE invocado directamente:
|
||||
→ Mostrar output markdown ao utilizador
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Formato Comentário de Resultado (HTML)
|
||||
|
||||
```html
|
||||
<h4>Tarefa executada — YYYY-MM-DD HH:MM</h4>
|
||||
<p><strong>Instrução:</strong> [nome da tarefa]</p>
|
||||
<p><strong>Resultado:</strong> Concluído | Parcial | Erro</p>
|
||||
<h4>Output</h4>
|
||||
<ul>
|
||||
<li>[resultado principal]</li>
|
||||
<li>[dados relevantes]</li>
|
||||
</ul>
|
||||
<p><em>Executado automaticamente por /aiktop-tasks v1.0</em></p>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Protocolo de Criação de Tarefas AikTop
|
||||
|
||||
> Para agendar trabalho para o AikTop, criar tarefa Desk CRM com:
|
||||
|
||||
| Campo | Valor |
|
||||
|-------|-------|
|
||||
| **Assignee** | AikTop (staff 25) |
|
||||
| **Tag** | `aiktop` (obrigatório) |
|
||||
| **Nome** | O que fazer (breve) |
|
||||
| **Descrição** | Instrução completa — o claude vai executar isto literalmente |
|
||||
| **Due date** | Quando executar |
|
||||
| **Prioridade** | Conforme urgência |
|
||||
|
||||
**Exemplos de descrições válidas:**
|
||||
- "Verificar logs `/root/Dev/imap-cleaner/cron.log` e `/root/Dev/auto-expense/auto-expense.log`. Reportar se houve erros ou se o pipeline correu bem."
|
||||
- "Correr /imap-triage e reportar faturas detectadas."
|
||||
- "Verificar tarefas overdue no Desk CRM e sugerir as 3 mais urgentes."
|
||||
|
||||
---
|
||||
|
||||
## Wrapper Script (dev server)
|
||||
|
||||
```bash
|
||||
# /root/Dev/aiktop-tasks/run-aiktop-tasks.sh
|
||||
#!/bin/bash
|
||||
export IS_SANDBOX=1
|
||||
LOG="$HOME/Dev/aiktop-tasks/aiktop-tasks.log"
|
||||
echo "$(date) [START] A verificar tarefas AikTop..." >> "$LOG"
|
||||
claude --print --dangerously-skip-permissions "/aiktop-tasks" < /dev/null >> "$LOG" 2>&1
|
||||
EXIT_CODE=$?
|
||||
echo "$(date) [END] exit=$EXIT_CODE" >> "$LOG"
|
||||
exit $EXIT_CODE
|
||||
```
|
||||
|
||||
**Cron:** `*/15 * * * * /root/Dev/aiktop-tasks/run-aiktop-tasks.sh`
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
- NUNCA executar tarefas sem tag `aiktop` (filtro de segurança)
|
||||
- NUNCA fechar tarefa sem adicionar comentário com resultado
|
||||
- NUNCA ignorar tarefas com status 4 (em progresso) — podem ter ficado presas
|
||||
- SEMPRE executar por ordem de prioridade (4=Urgente primeiro)
|
||||
- NUNCA assumir que a descrição é sempre simples — pode invocar outras skills
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
|
||||
@@ -444,7 +444,7 @@ Em caso de dúvidas ou para aprofundar conhecimento, consultar os seguintes data
|
||||
|
||||
```javascript
|
||||
// Pesquisar técnicas de gestão de tempo
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "8ce4429f-8cf6-43b5-869d-75c8e1b461e8",
|
||||
query: "blocos de foco time blocking"
|
||||
})
|
||||
|
||||
140
gestao/skills/daily-digest/SKILL.md
Normal file
140
gestao/skills/daily-digest/SKILL.md
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
name: daily-digest
|
||||
description: >
|
||||
Resumo diario do estado operacional - timer activo, tickets abertos, facturas vencidas, leads novos, propostas pendentes e agenda do dia. Use when "resumo", "digest", "estado do dia", "dashboard", "metricas dia".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 85
|
||||
user_invocable: true
|
||||
category: management
|
||||
tags: [digest, dashboard, daily, tickets, invoices, leads, calendar]
|
||||
desk_task: 1710
|
||||
desk_project: 65
|
||||
allowed-tools: Read, Write, mcp__desk-crm-v3, mcp__google-workspace, mcp__mcp-time
|
||||
mcps: desk-crm-v3, google-workspace, mcp-time
|
||||
dependencies:
|
||||
mcps: [desk-crm-v3, google-workspace, mcp-time]
|
||||
triggers:
|
||||
- "User asks for daily summary"
|
||||
- "User mentions 'resumo', 'digest', 'estado do dia'"
|
||||
- "Invoked by /today orchestrator"
|
||||
---
|
||||
|
||||
# /daily-digest v1.0
|
||||
|
||||
Recolhe e apresenta o estado operacional do dia.
|
||||
|
||||
---
|
||||
|
||||
## Protocolo
|
||||
|
||||
### Passo 1: Recolher Dados (paralelo)
|
||||
|
||||
> Executar TUDO em paralelo para minimizar tempo.
|
||||
|
||||
```
|
||||
Em paralelo:
|
||||
|
||||
1. TIMER ACTIVO
|
||||
Verificar ~/.claude-work/active-timer.json
|
||||
Se activo: mostrar tarefa, duracao
|
||||
Se >4h: alertar "Timer activo ha muito tempo!"
|
||||
|
||||
2. TICKETS ABERTOS
|
||||
mcp__desk-crm-v3__get_tickets({ status: [1,2,3], limit: 20 })
|
||||
Contar por prioridade
|
||||
|
||||
3. FACTURAS VENCIDAS
|
||||
mcp__desk-crm-v3__overdue_invoices_report()
|
||||
Total valor + contagem
|
||||
|
||||
4. LEADS NOVOS
|
||||
mcp__desk-crm-v3__get_leads({ status: [7,14], limit: 20 })
|
||||
Leads com status 7 (Novo) ou 14
|
||||
|
||||
5. PROPOSTAS PENDENTES
|
||||
mcp__desk-crm-v3__get_estimates({ status: 4, limit: 20 })
|
||||
Estimates com status "To Do"
|
||||
|
||||
6. ESTIMATES ACEITES
|
||||
mcp__desk-crm-v3__get_estimates({ status: 3, limit: 10 })
|
||||
Destaques de valor
|
||||
|
||||
7. AGENDA DO DIA
|
||||
mcp__google-workspace__calendar_get_events({
|
||||
user_google_email: "emanuelalmeidaa@gmail.com",
|
||||
time_min: "YYYY-MM-DDT00:00:00Z",
|
||||
time_max: "YYYY-MM-DDT23:59:59Z"
|
||||
})
|
||||
```
|
||||
|
||||
### Passo 2: Formatar Dashboard
|
||||
|
||||
```markdown
|
||||
## Resumo do Dia
|
||||
|
||||
### Timer
|
||||
[Status ou "Nenhum timer activo"]
|
||||
|
||||
### Tickets
|
||||
- Abertos: X (Y urgentes)
|
||||
|
||||
### Facturas
|
||||
- Vencidas: X (valor total EUR)
|
||||
|
||||
### Tarefas (resumo)
|
||||
- Urgentes (prioridade 4): X
|
||||
- Alta prioridade overdue: Y
|
||||
- Normal prioridade overdue: Z
|
||||
- Total overdue: W
|
||||
|
||||
### Leads + Propostas
|
||||
- Leads novos: X
|
||||
- Propostas pendentes: Y
|
||||
- Estimates aceites: Z (destaque: [cliente] [valor] EUR)
|
||||
|
||||
### Agenda
|
||||
- HH:MM - [Evento]
|
||||
- Ou "Sem eventos hoje"
|
||||
```
|
||||
|
||||
### Passo 3: Output JSON (quando invocado pelo /today)
|
||||
|
||||
```
|
||||
SE invocado com argumento "json":
|
||||
Escrever em ~/.claude-work/today-digest-{date}.json
|
||||
Formato:
|
||||
{
|
||||
"timer": null | {"task_id": 1446, "duration": "2h15m"},
|
||||
"tickets": {"open": 4, "urgent": 1},
|
||||
"invoices": {"overdue": 0, "total_eur": 0},
|
||||
"leads": {"new": 0},
|
||||
"estimates": {"pending": 0, "accepted": 10},
|
||||
"calendar": []
|
||||
}
|
||||
|
||||
SE invocado standalone:
|
||||
Mostrar dashboard Markdown directamente
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Alertas Automaticos
|
||||
|
||||
Gerar alertas se:
|
||||
- Timer activo >4h
|
||||
- Facturas vencidas >30 dias
|
||||
- Tickets urgentes (prioridade 3-4) sem resposta >24h
|
||||
- Leads novos ha >48h sem contacto
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
- NUNCA mostrar todos os tickets/facturas (limite 20, mostrar resumo)
|
||||
- NUNCA duplicar dados ja disponiveis noutras skills (/tasks-overview para tarefas detalhadas)
|
||||
- SEMPRE usar mcp-time para data actual (nunca assumir)
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
|
||||
@@ -111,7 +111,7 @@ if (protocol?.auto_consult) {
|
||||
// 6. Consultar Dify KB (paralelo)
|
||||
const results = await Promise.all(
|
||||
protocol.priority_datasets.map(id =>
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: id,
|
||||
query: query,
|
||||
top_k: protocol.top_k || 3
|
||||
|
||||
254
gestao/skills/imap-triage/SKILL.md
Normal file
254
gestao/skills/imap-triage/SKILL.md
Normal file
@@ -0,0 +1,254 @@
|
||||
---
|
||||
name: imap-triage
|
||||
description: >
|
||||
Triagem automatica de emails IMAP em 14 contas. Elimina spam, arquiva promocionais, identifica facturas para /auto-expense, flagga prioritarios. Deduplicacao via Supabase. Use when "imap", "triagem email", "limpar emails", "email triage", "processar emails".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 85
|
||||
user_invocable: true
|
||||
category: management
|
||||
tags: [imap, email, triage, spam, promotions, invoices, supabase]
|
||||
desk_task: 1710
|
||||
desk_project: 65
|
||||
allowed-tools: Read, Write, mcp__imap, mcp__ssh-unified
|
||||
mcps: imap, ssh-unified
|
||||
dependencies:
|
||||
mcps: [imap, ssh-unified]
|
||||
files:
|
||||
- /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
|
||||
triggers:
|
||||
- "User asks to process emails"
|
||||
- "User mentions 'imap', 'triagem', 'emails', 'limpar inbox'"
|
||||
- "Invoked by /today orchestrator"
|
||||
---
|
||||
|
||||
# /imap-triage v1.0
|
||||
|
||||
Triagem automatica de 14 contas IMAP com deduplicacao Supabase.
|
||||
|
||||
---
|
||||
|
||||
## Contas IMAP (14)
|
||||
|
||||
```
|
||||
emanuel, it, help, suporte, contabilidade, financeiro,
|
||||
rh, mkt, design, news, aiktop, recursos, google
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Protocolo
|
||||
|
||||
### Passo 0: Carregar emails ja processados (Supabase)
|
||||
|
||||
> Executar UMA VEZ no inicio, antes de iterar contas.
|
||||
> Fonte de verdade: tabela `imap_processed_emails` em Supabase (EasyPanel).
|
||||
|
||||
```
|
||||
mcp__ssh-unified__ssh_execute(
|
||||
server="easy",
|
||||
command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -t -A -c \"SELECT message_id FROM public.imap_processed_emails\""
|
||||
)
|
||||
|
||||
Guardar resultado como Set: processed_ids
|
||||
```
|
||||
|
||||
### Passo 1: Carregar tabela de fornecedores
|
||||
|
||||
```
|
||||
Read: /media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/fornecedores-recorrentes.md
|
||||
Extrair:
|
||||
- Lista de dominios de fornecedores conhecidos
|
||||
- Lista de dominios de plataformas multi-fornecedor
|
||||
```
|
||||
|
||||
### Passo 2: Iterar contas IMAP
|
||||
|
||||
Para cada conta: `imap_list_emails(account, folder="INBOX", limit=50)`
|
||||
|
||||
Para cada email:
|
||||
1. Verificar `message_id` contra `processed_ids` -> SE match, SALTAR
|
||||
2. Classificar por ordem de prioridade (ver seccao Classificacao)
|
||||
|
||||
### Passo 3: Registar no Supabase (batch)
|
||||
|
||||
> Executar UMA VEZ no final, apos processar todas as contas.
|
||||
|
||||
```
|
||||
Acumular lista: { message_id, account_id, subject, sender, email_date, action, action_detail }
|
||||
|
||||
Actions: spam_deleted, promo_archived, expense_flagged, priority_flagged, notification_closed, skipped
|
||||
|
||||
mcp__ssh-unified__ssh_execute(
|
||||
server="easy",
|
||||
command="docker exec descomplicar_supabase-db-1 psql -U postgres -d postgres -c \"
|
||||
INSERT INTO public.imap_processed_emails (message_id, account_id, subject, sender, email_date, action, action_detail)
|
||||
VALUES (...)
|
||||
ON CONFLICT (message_id) DO NOTHING;
|
||||
\""
|
||||
)
|
||||
|
||||
Maximo ~50 VALUES por INSERT.
|
||||
```
|
||||
|
||||
### Passo 4: Escrever output JSON
|
||||
|
||||
```
|
||||
Escrever em ~/.claude-work/today-imap-{date}.json:
|
||||
{
|
||||
"spam": 5,
|
||||
"promo": 12,
|
||||
"facturas": [
|
||||
{"account": "contabilidade", "uid": 164, "message_id": "...", "fornecedor": "MEO", "subject": "..."}
|
||||
],
|
||||
"prioritarios": [
|
||||
{"account": "emanuel", "uid": 100, "subject": "...", "sender": "..."}
|
||||
],
|
||||
"notificacoes": [...],
|
||||
"erros": [],
|
||||
"contas_processadas": 14,
|
||||
"total_emails": 45
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Classificacao de Emails
|
||||
|
||||
> Aplicar por ordem de prioridade. Primeiro match ganha.
|
||||
|
||||
### 1. SPAM -> Eliminar
|
||||
|
||||
```
|
||||
imap_delete_email(account, uid)
|
||||
|
||||
Padroes:
|
||||
- Subject: lottery, winner, urgent money, bitcoin investment, guest post, SEO services, backlinks, partnership
|
||||
- Remetente: *.ru, *.cn (excepto conhecidos)
|
||||
- Subject todo em MAIUSCULAS
|
||||
- Subject com caracteres estranhos excessivos
|
||||
```
|
||||
|
||||
### 2. PROMOCIONAL -> Arquivar
|
||||
|
||||
```
|
||||
imap_move_email(account, uid, "Promotions")
|
||||
|
||||
NOTA: Contas sem pasta "Promotions" (google, design, rh) -> imap_delete_email
|
||||
|
||||
Padroes:
|
||||
- Subject: newsletter, promo, desconto, oferta, unsubscribe
|
||||
- Remetente: *@marketing.*, *@news.*, *@promo.*
|
||||
- Headers: List-Unsubscribe presente
|
||||
```
|
||||
|
||||
### 3. FACTURA/RECIBO -> Flag para /auto-expense
|
||||
|
||||
```
|
||||
NAO processar aqui - apenas identificar e registar no output JSON.
|
||||
A skill /auto-expense trata da criacao de despesas.
|
||||
|
||||
Deteccao:
|
||||
3a. FORNECEDOR DIRECTO:
|
||||
- Dominio remetente bate com tabela de fornecedores
|
||||
- Subject contem: factura, invoice, recibo, receipt, pagamento, paid
|
||||
|
||||
3b. PLATAFORMA MULTI-FORNECEDOR:
|
||||
- Dominio: toconline.pt, stripe.com, paypal.com, fastspring.com, payproglobal.com
|
||||
- Registar com nota sobre plataforma
|
||||
|
||||
Action: expense_flagged
|
||||
```
|
||||
|
||||
### 4. NOTIFICACAO SISTEMA -> Registar
|
||||
|
||||
```
|
||||
Padroes protegidos (NUNCA auto-fechar):
|
||||
- Legal Update, Policy Change, Deprecation, End of Life
|
||||
- Security Alert, API Change, Terms Update
|
||||
- Action Required, Migration Required
|
||||
- Compliance, GDPR, Infrastructure Change
|
||||
|
||||
Outros:
|
||||
- Wordfence alerts, n8n updates, server notifications
|
||||
- Registar para inclusao no dashboard de alertas
|
||||
|
||||
Action: notification_closed ou priority_flagged (conforme gravidade)
|
||||
```
|
||||
|
||||
### 5. PRIORITARIO -> Incluir no relatorio
|
||||
|
||||
```
|
||||
- Remetente: cliente conhecido (verificar nome/dominio)
|
||||
- Subject: urgente, problema, erro, critical, down
|
||||
- Threads activas (RE:, FW:)
|
||||
|
||||
Action: priority_flagged
|
||||
```
|
||||
|
||||
### 6. RESTANTES -> Saltar
|
||||
|
||||
```
|
||||
Emails que nao encaixam em nenhuma categoria.
|
||||
Action: skipped
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Excepcoes (NUNCA processar automaticamente)
|
||||
|
||||
```
|
||||
- *@descomplicar.pt (internos)
|
||||
- *@gov.pt, *@at.gov.pt, *@seg-social.pt (governo)
|
||||
- *@tribunais.org.pt (tribunais)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Emails a IGNORAR (nao sao facturas)
|
||||
|
||||
```
|
||||
- "Payment Confirmation" / "Payment Was Successfully Processed" -> apenas confirmacao
|
||||
- "Your subscription has been renewed" sem valor -> apenas notificacao
|
||||
- "Notificacao de transferencia" de bancos -> notificacao bancaria
|
||||
- Marketing/changelog dos mesmos fornecedores -> promocional
|
||||
- Subject "Welcome" / "Getting Started" -> onboarding
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Output Standalone
|
||||
|
||||
Quando invocado directamente (sem /today):
|
||||
|
||||
```markdown
|
||||
## Triagem IMAP - DD-MM-YYYY
|
||||
|
||||
**Total: X emails processados em Y contas**
|
||||
|
||||
| Conta | Spam | Promo | Factura | Notif | Prio | Total |
|
||||
|-------|------|-------|---------|-------|------|-------|
|
||||
|
||||
### Facturas Detectadas (para /auto-expense)
|
||||
- contabilidade: MEO (uid 164) - FT A/861215955
|
||||
|
||||
### Prioritarios
|
||||
- emanuel: [Subject] de [Remetente]
|
||||
|
||||
### Alertas Sistema
|
||||
- [Alertas de seguranca, updates criticos]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
- NUNCA criar despesas directamente (delegar para /auto-expense)
|
||||
- NUNCA processar >50 emails por conta (limitar)
|
||||
- NUNCA eliminar emails de dominios protegidos
|
||||
- SEMPRE registar no Supabase, mesmo se skipped
|
||||
- SEMPRE usar imap_delete para contas sem pasta "Promotions"
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
|
||||
456
gestao/skills/imap-triage/config/email-triage-rules.md
Normal file
456
gestao/skills/imap-triage/config/email-triage-rules.md
Normal file
@@ -0,0 +1,456 @@
|
||||
# Regras de Triagem de Emails
|
||||
|
||||
## Contas IMAP (12)
|
||||
|
||||
```yaml
|
||||
accounts:
|
||||
- emanuel@descomplicar.pt
|
||||
- it@descomplicar.pt
|
||||
- help@descomplicar.pt
|
||||
- suporte@descomplicar.pt
|
||||
- contabilidade@descomplicar.pt
|
||||
- financeiro@descomplicar.pt
|
||||
- info@descomplicar.pt
|
||||
- rh@descomplicar.pt
|
||||
- mkt@descomplicar.pt
|
||||
- design@descomplicar.pt
|
||||
- news@descomplicar.pt
|
||||
- aiktop@descomplicar.pt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regra 1: SPAM (Eliminar)
|
||||
|
||||
**Acção**: `imap_delete_email`
|
||||
|
||||
### Padrões Subject (case insensitive)
|
||||
```
|
||||
- lottery
|
||||
- winner
|
||||
- million dollars
|
||||
- urgent money
|
||||
- bitcoin investment
|
||||
- crypto opportunity
|
||||
- claim your prize
|
||||
- act now
|
||||
- limited time offer
|
||||
- you have been selected
|
||||
- dear beneficiary
|
||||
- inheritance
|
||||
- nigerian prince
|
||||
```
|
||||
|
||||
### Padrões Remetente
|
||||
```
|
||||
- *@*.ru (excepto conhecidos)
|
||||
- *@*.cn (excepto conhecidos)
|
||||
- no-reply@spam*
|
||||
- noreply@bulk*
|
||||
```
|
||||
|
||||
### Indicadores técnicos
|
||||
```
|
||||
- SPF fail
|
||||
- DKIM fail
|
||||
- Muitos caracteres especiais no subject
|
||||
- Subject todo em MAIÚSCULAS
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regra 2: PROMOCIONAIS (Arquivar ou Eliminar)
|
||||
|
||||
**Acção padrão**: `imap_move_email` → pasta "Promotions"
|
||||
|
||||
**Excepções por conta:**
|
||||
```yaml
|
||||
delete_promotions:
|
||||
- rh # Não tem pasta Promotions - apagar directamente
|
||||
```
|
||||
|
||||
> Contas listadas em `delete_promotions`: usar `imap_delete_email` em vez de mover.
|
||||
|
||||
### Padrões Subject
|
||||
```
|
||||
- newsletter
|
||||
- promo
|
||||
- promoção
|
||||
- desconto
|
||||
- oferta especial
|
||||
- black friday
|
||||
- cyber monday
|
||||
- novidades
|
||||
- new arrivals
|
||||
- sale
|
||||
- % off
|
||||
- grátis
|
||||
- free shipping
|
||||
```
|
||||
|
||||
### Padrões Remetente
|
||||
```
|
||||
- *@marketing.*
|
||||
- *@news.*
|
||||
- *@promo.*
|
||||
- *@newsletter.*
|
||||
- *@campaigns.*
|
||||
- *@mailchimp.com
|
||||
- *@sendgrid.net
|
||||
- *@mailgun.org
|
||||
```
|
||||
|
||||
### Headers
|
||||
```
|
||||
- List-Unsubscribe presente
|
||||
- Precedence: bulk
|
||||
- X-Campaign-*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regra 3: FACTURAS PAGAS (Reencaminhar)
|
||||
|
||||
**Acção**: Registar para reencaminhar para `contabilidade@descomplicar.pt`
|
||||
|
||||
### Padrões Subject
|
||||
```
|
||||
- factura
|
||||
- fatura
|
||||
- invoice
|
||||
- recibo
|
||||
- receipt
|
||||
- pagamento confirmado
|
||||
- payment confirmed
|
||||
- pago
|
||||
- paid
|
||||
- comprovativo
|
||||
- ordem de pagamento
|
||||
```
|
||||
|
||||
### Padrões Remetente (serviços conhecidos)
|
||||
```
|
||||
- *@hetzner.com
|
||||
- *@ovh.com
|
||||
- *@cloudflare.com
|
||||
- *@github.com
|
||||
- *@google.com
|
||||
- *@microsoft.com
|
||||
- *@adobe.com
|
||||
- *@figma.com
|
||||
- *@notion.so
|
||||
- *@stripe.com
|
||||
- *@paypal.com
|
||||
- *@wise.com
|
||||
- *@revolut.com
|
||||
- *@n26.com
|
||||
- *facturacao@*
|
||||
- *billing@*
|
||||
- *invoices@*
|
||||
```
|
||||
|
||||
### Anexos
|
||||
```
|
||||
- *.pdf com "factura" no nome
|
||||
- *.pdf com "invoice" no nome
|
||||
- *.pdf com "recibo" no nome
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Regra 4: PRIORITÁRIOS (Listar)
|
||||
|
||||
**Acção**: Incluir no relatório diário para revisão manual
|
||||
|
||||
### Padrões Subject
|
||||
```
|
||||
- urgente
|
||||
- urgent
|
||||
- importante
|
||||
- important
|
||||
- problema
|
||||
- problem
|
||||
- erro
|
||||
- error
|
||||
- falha
|
||||
- failure
|
||||
- down
|
||||
- offline
|
||||
- crítico
|
||||
- critical
|
||||
```
|
||||
|
||||
### Remetentes prioritários
|
||||
```
|
||||
# Clientes activos (verificar DeskCRM)
|
||||
# Parceiros importantes
|
||||
# Serviços críticos:
|
||||
- *@cloudflare.com (security alerts)
|
||||
- *@hetzner.com (server alerts)
|
||||
- *@github.com (security)
|
||||
- *@google.com (security)
|
||||
```
|
||||
|
||||
### Indicadores
|
||||
```
|
||||
- RE: ou FW: (threads activas)
|
||||
- Múltiplos destinatários da empresa
|
||||
- Marcado como importante pelo remetente
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Excepções (Nunca processar automaticamente)
|
||||
|
||||
```yaml
|
||||
whitelist_senders:
|
||||
- *@descomplicar.pt # Internos
|
||||
- *@cliente-importante.pt # Clientes VIP
|
||||
|
||||
whitelist_domains:
|
||||
- gov.pt # Governo
|
||||
- tribunais.org.pt # Tribunais
|
||||
- at.gov.pt # Autoridade Tributária
|
||||
- seg-social.pt # Segurança Social
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pastas IMAP Standard
|
||||
|
||||
| Pasta | Uso |
|
||||
|-------|-----|
|
||||
| INBOX | Emails por processar |
|
||||
| Promotions | Emails promocionais arquivados |
|
||||
| Processed | Emails processados pelo /today |
|
||||
| Important | Emails marcados como prioritários |
|
||||
| Trash | Eliminados |
|
||||
|
||||
---
|
||||
|
||||
## Métricas Diárias
|
||||
|
||||
Registar em cada execução:
|
||||
```yaml
|
||||
metrics:
|
||||
date: YYYY-MM-DD
|
||||
accounts_processed: 12
|
||||
total_emails: X
|
||||
spam_deleted: Y
|
||||
promotions_archived: Z
|
||||
invoices_forwarded: W
|
||||
priority_flagged: V
|
||||
processing_time: Xs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## Regras de Tickets (DeskCRM)
|
||||
|
||||
### Notificações de Sistema → NUNCA auto-fechar
|
||||
|
||||
> **REGRA PRIORITÁRIA:** Verificar ANTES dos padrões SPAM. Se um ticket corresponder a esta regra, não pode ser fechado automaticamente.
|
||||
|
||||
**Padrões protegidos (subject - case insensitive):**
|
||||
```regex
|
||||
Legal Update|Legal Notice|Policy Change|Policy Update|
|
||||
Deprecation|End of Life|EOL|Breaking Change|
|
||||
Migration Required|Action Required|Action Needed|
|
||||
Security Alert|Security Advisory|Security Notice|
|
||||
API Change|API Update|Terms Update|Terms Change|
|
||||
Service Disruption|Maintenance Required|
|
||||
Compliance|GDPR|Data Processing|Data Processor|
|
||||
Infrastructure Change|Platform Update|transitions to
|
||||
```
|
||||
|
||||
**Condição:** Remetente deve ser fornecedor conhecido (ver lista de remetentes conhecidos abaixo).
|
||||
|
||||
**Acção:**
|
||||
```
|
||||
→ NÃO fechar
|
||||
→ Listar no relatório como: "⚠️ REQUER ACÇÃO: #{ID} - {Assunto}"
|
||||
→ Manter aberto para análise e decisão manual
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Tickets SPAM → Fechar AUTOMATICAMENTE
|
||||
|
||||
> **IMPORTANTE:** Verificar PRIMEIRO se o ticket corresponde à regra de "Notificações de Sistema" acima. Se sim, NÃO fechar.
|
||||
|
||||
**Padrões de detecção (subject):**
|
||||
```regex
|
||||
Guest Post|SEO services|backlinks|partnership|
|
||||
link building|dofollow|collaboration opportunity|
|
||||
Boas Festas|Season's Greetings
|
||||
```
|
||||
|
||||
> **NOTA:** "Action Required", "Termos de Serviço" e notificações legais foram removidos dos padrões SPAM. Podem indicar mudanças reais em serviços que usamos. São tratados pela regra de "Notificações de Sistema" acima.
|
||||
|
||||
**⚡ Acção AUTOMÁTICA - Executar SEM intervenção manual:**
|
||||
```
|
||||
close_ticket(ticket_id, message="Fechado automaticamente - SPAM detectado")
|
||||
# Registar: "🗑️ SPAM fechado: #{ID} - {Assunto}"
|
||||
```
|
||||
|
||||
> [!important] SPAM = FECHAR IMEDIATAMENTE
|
||||
> Não perder tempo a analisar. Fechar automaticamente e seguir em frente.
|
||||
|
||||
---
|
||||
|
||||
### Tickets de PAGAMENTOS → Contabilidade + Fechar
|
||||
|
||||
**Departamentos DeskCRM:**
|
||||
| ID | Nome | Email |
|
||||
|----|------|-------|
|
||||
| 1 | Comercial | info@descomplicar.pt |
|
||||
| 2 | Suporte | suporte@descomplicar.pt |
|
||||
| 3 | **Contabilidade** | contabilidade@descomplicar.pt |
|
||||
| 4 | RH | rh@descomplicar.pt |
|
||||
| 5 | Design | design@descomplicar.pt |
|
||||
| 6 | Marketing | mkt@descomplicar.pt |
|
||||
| 7 | Tecnologia | it@descomplicar.pt |
|
||||
|
||||
**Padrões de detecção (subject):**
|
||||
```regex
|
||||
payment|pagamento|pago|paid|
|
||||
invoice|factura|fatura|recibo|
|
||||
successfully.*(processed|completed)|
|
||||
subscription.*(renewed|confirmed)|
|
||||
order.*confirmed|receipt|
|
||||
account.*funded|has been funded|
|
||||
Envio de Fatura Eletrónica|
|
||||
Invoice Payment Confirmation|
|
||||
Customer Invoice
|
||||
```
|
||||
|
||||
**Remetentes conhecidos (processar SEMPRE):**
|
||||
```yaml
|
||||
services:
|
||||
# Hosting & Infra
|
||||
- "*@elasticemail.com" # Elastic Email
|
||||
- "*@hetzner.com" # Hetzner
|
||||
- "*@hetzner.de"
|
||||
- "*@centos-webpanel.com" # CWP
|
||||
- "*@control-webpanel.com"
|
||||
|
||||
# Design & Tools
|
||||
- "*@canva.com" # Canva
|
||||
|
||||
# Telecom PT
|
||||
- "*@meo.pt" # MEO
|
||||
- "*@altice.pt"
|
||||
- "*@nos.pt" # NOS (futuro)
|
||||
- "*@vodafone.pt" # Vodafone (futuro)
|
||||
|
||||
# Cloud & SaaS
|
||||
- "*@cloudflare.com"
|
||||
- "*@github.com"
|
||||
- "*@google.com"
|
||||
- "*@microsoft.com"
|
||||
- "*@adobe.com"
|
||||
- "*@figma.com"
|
||||
- "*@notion.so"
|
||||
- "*@openai.com"
|
||||
- "*@email.openai.com"
|
||||
- "*@anthropic.com"
|
||||
- "*@openrouter.zendesk.com" # OpenRouter
|
||||
|
||||
# Pagamentos
|
||||
- "*@stripe.com"
|
||||
- "*@paypal.com"
|
||||
- "*@wise.com"
|
||||
- "*@revolut.com"
|
||||
```
|
||||
|
||||
**Lógica de processamento:**
|
||||
```
|
||||
IF assunto contém padrão de pagamento/factura:
|
||||
IF remetente IN remetentes_conhecidos:
|
||||
→ Contabilidade + Fechar (AUTOMÁTICO)
|
||||
ELSE:
|
||||
→ Avaliar indicadores de spam/phishing
|
||||
→ LISTAR para revisão manual com recomendação
|
||||
```
|
||||
|
||||
**⚡ Acção AUTOMÁTICA para remetentes CONHECIDOS:**
|
||||
```
|
||||
# Executar AMBAS as acções automaticamente, SEM intervenção manual:
|
||||
1. update_ticket(ticket_id, department=3) # Mover para Contabilidade
|
||||
2. close_ticket(ticket_id, message="Fatura processada automaticamente - Contabilidade")
|
||||
# Registar: "💰 Contabilidade + Fechado: #{ID} - {Assunto}"
|
||||
```
|
||||
|
||||
**Acção para remetentes DESCONHECIDOS:**
|
||||
```
|
||||
1. Avaliar indicadores de spam (ver abaixo)
|
||||
2. LISTAR no relatório com recomendação:
|
||||
- [SPAM?] se indicadores presentes
|
||||
- [NOVO?] se parece legítimo (possível novo serviço)
|
||||
3. Aguardar decisão manual
|
||||
```
|
||||
|
||||
### Indicadores de SPAM/PHISHING
|
||||
|
||||
**Alta probabilidade de SPAM:**
|
||||
- Remetente pessoal (gmail, hotmail, yahoo) a enviar "facturas empresariais"
|
||||
- Domínio suspeito (muitos números, hífens, extensões estranhas)
|
||||
- Erros ortográficos no assunto ("facktura", "pagamanto")
|
||||
- Assunto todo em MAIÚSCULAS
|
||||
- Urgência exagerada ("ÚLTIMO AVISO", "URGENTE", "CONTA SUSPENSA")
|
||||
- Sem número de factura/referência específico
|
||||
- Remetente não corresponde à empresa alegada no assunto
|
||||
|
||||
**Provavelmente LEGÍTIMO (novo serviço):**
|
||||
- Domínio empresarial consistente com o assunto
|
||||
- Formato profissional (número de factura, data, referência)
|
||||
- Sem urgência exagerada
|
||||
- Padrão consistente com facturas reais
|
||||
|
||||
> [!info] NUNCA eliminar automaticamente remetentes desconhecidos
|
||||
> Podem ser novos serviços subscritos. Sempre listar para revisão manual.
|
||||
|
||||
### Tickets para ELIMINAR (sem valor contabilístico)
|
||||
|
||||
**Padrões de assunto:**
|
||||
```yaml
|
||||
delete_patterns:
|
||||
# Elastic Email - recargas
|
||||
- "Your Elastic Email Account was successfully re-charged"
|
||||
- "Account re-charged"
|
||||
- "Auto-recharge successful"
|
||||
- "Credit added to your account"
|
||||
|
||||
# FULL Services - activações
|
||||
- "[BOT] Ativação realizada com sucesso"
|
||||
- "[BOT] Activation successful"
|
||||
```
|
||||
|
||||
**Acção:**
|
||||
```
|
||||
delete_ticket(ticket_id, confirm=true, reason="Notificação automática sem valor")
|
||||
```
|
||||
|
||||
> Estas são notificações de recarga automática, não facturas. Não têm valor para contabilidade.
|
||||
|
||||
**Exemplos de assuntos detectados:**
|
||||
- "Your Elastic Email Payment Was Successfully Processed"
|
||||
- "Canva - Your invoice is ready"
|
||||
- "Hetzner - Invoice for January 2025"
|
||||
- "CentOS WebPanel Pro License Invoice"
|
||||
- "MEO - Factura disponível"
|
||||
- "Invoice #12345 - Payment Confirmed"
|
||||
- "Pagamento confirmado - Factura #123"
|
||||
- "Your OpenAI API account has been funded"
|
||||
- "Your OpenRouter, Inc receipt [#1234-5678]"
|
||||
- "Your receipt from OpenRouter, Inc #1234-5678"
|
||||
- "Envio de Fatura Eletrónica: FT A/123456789"
|
||||
- "Invoice Payment Confirmation"
|
||||
- "Customer Invoice"
|
||||
|
||||
---
|
||||
|
||||
**Versão**: 1.1.0
|
||||
**Última actualização**: 2025-01-21
|
||||
392
gestao/skills/index-update/SKILL.md
Normal file
392
gestao/skills/index-update/SKILL.md
Normal file
@@ -0,0 +1,392 @@
|
||||
---
|
||||
name: index-update
|
||||
description: Actualiza INDEX.md de procedimentos após criar/modificar/arquivar PROC. Use quando "actualizar index", "update INDEX.md", depois de criar procedimento, mover PROC, arquivar procedimento. Mantém estatísticas, navegação e data actualizadas.
|
||||
---
|
||||
|
||||
# /index-update - Actualizador de INDEX.md
|
||||
|
||||
Actualiza ficheiros INDEX.md de procedimentos após operações (criar, modificar, mover, arquivar).
|
||||
|
||||
---
|
||||
|
||||
## Referências e Documentação
|
||||
|
||||
**SEMPRE consultar:**
|
||||
- **[06-Operacoes/Procedimentos/INDEX.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - INDEX principal (8 departamentos)
|
||||
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Convenções INDEX.md
|
||||
|
||||
---
|
||||
|
||||
## O Que Actualiza
|
||||
|
||||
### 1. INDEX.md Departamental
|
||||
|
||||
Após criar/modificar/mover PROC em departamento:
|
||||
|
||||
```markdown
|
||||
| [PROC-Titulo.md](./PROC-Titulo.md) | Descrição breve | [DEPT]-[TEMA]-[NUM] |
|
||||
```
|
||||
|
||||
**Campos:**
|
||||
- Nome ficheiro (link relativo)
|
||||
- Descrição breve (1 linha, <80 chars)
|
||||
- Código procedimento
|
||||
|
||||
**Ordenação:** Por código (DEV-MCP-001, DEV-MCP-002, WP-SEC-001...)
|
||||
|
||||
### 2. INDEX.md Principal
|
||||
|
||||
Actualizar estatísticas globais:
|
||||
|
||||
```markdown
|
||||
**Total:** X procedimentos (update counter)
|
||||
|
||||
| Departamento | Procedimentos | Código Exemplo |
|
||||
|--------------|---------------|----------------|
|
||||
| D7-Tecnologia | 28 → 29 | DEV, WP, INF, AI, WEB |
|
||||
```
|
||||
|
||||
### 3. Metadados
|
||||
|
||||
Actualizar em AMBOS os INDEX.md:
|
||||
|
||||
```markdown
|
||||
**Última actualização:** 2026-02-13
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Protocolo de Actualização
|
||||
|
||||
### Após Criar PROC (/proc-creator)
|
||||
|
||||
```
|
||||
1. IDENTIFICAR departamento do novo PROC
|
||||
- Ler frontmatter do PROC-*.md
|
||||
- Obter dept_id e codigo
|
||||
|
||||
2. LER INDEX.md departamental
|
||||
- Path: /media/.../Procedimentos/[Dept]/INDEX.md
|
||||
|
||||
3. ADICIONAR linha na tabela:
|
||||
| [PROC-Nome.md](./PROC-Nome.md) | Descrição | [DEPT]-[TEMA]-[NUM] |
|
||||
- Inserir na posição correcta (ordenado por código)
|
||||
|
||||
4. INCREMENTAR contador no INDEX departamental:
|
||||
"X procedimentos" → "X+1 procedimentos"
|
||||
|
||||
5. ACTUALIZAR data:
|
||||
"Última actualização: YYYY-MM-DD"
|
||||
|
||||
6. LER INDEX.md principal
|
||||
- Path: /media/.../Procedimentos/INDEX.md
|
||||
|
||||
7. INCREMENTAR contador na tabela do departamento:
|
||||
| D7-Tecnologia | 28 → 29 | ...
|
||||
|
||||
8. INCREMENTAR "Total:" no topo:
|
||||
"36 procedimentos" → "37 procedimentos"
|
||||
|
||||
9. ACTUALIZAR data INDEX principal
|
||||
|
||||
10. CONFIRMAR ambos salvos
|
||||
```
|
||||
|
||||
### Após Mover PROC
|
||||
|
||||
```
|
||||
1. REMOVER linha do INDEX origem
|
||||
2. DECREMENTAR contador origem
|
||||
3. ADICIONAR linha ao INDEX destino
|
||||
4. INCREMENTAR contador destino
|
||||
5. ACTUALIZAR INDEX principal (sem alterar total)
|
||||
6. ACTUALIZAR datas ambos
|
||||
```
|
||||
|
||||
### Após Arquivar PROC
|
||||
|
||||
```
|
||||
1. REMOVER linha do INDEX departamental
|
||||
2. DECREMENTAR contador departamental
|
||||
3. ACTUALIZAR INDEX principal (decrementar total)
|
||||
4. ADICIONAR nota "Arquivado YYYY-MM-DD" se relevante
|
||||
5. ACTUALIZAR datas
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Formato INDEX.md Departamental
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: D[N]-[Nome] - Procedimentos
|
||||
date: YYYY-MM-DD
|
||||
type: index
|
||||
status: active
|
||||
tags: [d[N], procedimentos, [tema]]
|
||||
---
|
||||
|
||||
# D[N] — [Nome] - Procedimentos
|
||||
|
||||
**X procedimentos | Código: [DEPT]**
|
||||
|
||||
---
|
||||
|
||||
## 📋 Lista de Procedimentos
|
||||
|
||||
| Procedimento | Descrição | Código |
|
||||
|--------------|-----------|--------|
|
||||
| [PROC-Nome1.md](./PROC-Nome1.md) | Descrição breve | [DEPT]-[TEMA]-001 |
|
||||
| [PROC-Nome2.md](./PROC-Nome2.md) | Descrição breve | [DEPT]-[TEMA]-002 |
|
||||
|
||||
---
|
||||
|
||||
## 📊 Estatísticas
|
||||
|
||||
| Métrica | Valor |
|
||||
|---------|-------|
|
||||
| Total procedimentos | X |
|
||||
| Códigos únicos | [DEPT1], [DEPT2], [DEPT3] |
|
||||
| Status draft | Y |
|
||||
| Status active | Z |
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Navegação
|
||||
|
||||
- [[../INDEX|← Voltar a Procedimentos INDEX]]
|
||||
- [[../../../04-Stack/02.01-Departamentos/D[N]-[Nome]|Ver Departamento]]
|
||||
|
||||
---
|
||||
|
||||
**D[N] — [Nome] | X Procedimentos**
|
||||
**Última actualização:** YYYY-MM-DD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Formato INDEX.md Principal
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: Procedimentos - INDEX
|
||||
date: YYYY-MM-DD
|
||||
type: index
|
||||
status: active
|
||||
tags: [procedimentos, organizacao, hub]
|
||||
---
|
||||
|
||||
# Procedimentos - INDEX Principal
|
||||
|
||||
**Total:** X procedimentos | **Departamentos:** 8
|
||||
|
||||
---
|
||||
|
||||
## 📊 Distribuição por Departamento
|
||||
|
||||
| Departamento | Procedimentos | Código | INDEX |
|
||||
|--------------|---------------|--------|-------|
|
||||
| D1-Comercial | 1 | CRM | [INDEX](./D1-Comercial/INDEX.md) |
|
||||
| D2-Suporte | 0 | SUP | [INDEX](./D2-Suporte/INDEX.md) |
|
||||
| D3-Contabilidade | 2 | FIN | [INDEX](./D3-Contabilidade/INDEX.md) |
|
||||
| D4-RH | 0 | HR | [INDEX](./D4-RH/INDEX.md) |
|
||||
| D5-Design | 0 | DES | [INDEX](./D5-Design/INDEX.md) |
|
||||
| D6-Marketing | 1 | MKT | [INDEX](./D6-Marketing/INDEX.md) |
|
||||
| D7-Tecnologia | 28 | DEV, WP, INF, AI, WEB | [INDEX](./D7-Tecnologia/INDEX.md) |
|
||||
| Cross-Departamental | 4 | XDP | [INDEX](./Cross-Departamental/INDEX.md) |
|
||||
|
||||
---
|
||||
|
||||
**Última actualização:** YYYY-MM-DD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Validações
|
||||
|
||||
Antes de salvar INDEX.md, verificar:
|
||||
|
||||
```
|
||||
✅ Contadores correctos (manual count vs INDEX)
|
||||
✅ Ordenação por código mantida
|
||||
✅ Links relativos funcionam (./PROC-*.md)
|
||||
✅ Sem linhas duplicadas
|
||||
✅ Sem procedimentos órfãos (ficheiro existe mas não está no INDEX)
|
||||
✅ Sem fantasmas (linha no INDEX mas ficheiro não existe)
|
||||
✅ Data actualizada para hoje
|
||||
✅ Formato tabela Markdown correcto
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Integração com /proc-creator
|
||||
|
||||
`/proc-creator` chama `/index-update` automaticamente:
|
||||
|
||||
```
|
||||
User: /proc-creator "MCP Session Recovery"
|
||||
→ PROC-MCP-Session-Recovery.md criado
|
||||
→ /index-update triggered automaticamente
|
||||
→ D7-Tecnologia/INDEX.md actualizado (28 → 29)
|
||||
→ INDEX.md principal actualizado (36 → 37)
|
||||
→ Confirmação ao utilizador
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Modo Manual
|
||||
|
||||
Quando usar manualmente:
|
||||
|
||||
```
|
||||
User: Arquivei 3 procedimentos antigos do D7. Actualizar INDEX?
|
||||
Assistant: /index-update
|
||||
|
||||
1. Lendo D7-Tecnologia/INDEX.md...
|
||||
2. Detectei que PROC-X, PROC-Y, PROC-Z não existem mais
|
||||
3. Removendo linhas...
|
||||
4. Actualizando contador: 28 → 25
|
||||
5. Actualizando INDEX principal: 36 → 33
|
||||
6. ✅ Ambos os INDEX.md actualizados
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Detecção Automática de Dessinc
|
||||
|
||||
Quando `/index-update` é chamado sem contexto:
|
||||
|
||||
```
|
||||
1. PARA CADA departamento:
|
||||
- Ler INDEX.md
|
||||
- Listar ficheiros PROC-*.md no directório
|
||||
- Comparar
|
||||
|
||||
2. DETECTAR problemas:
|
||||
- Órfãos: ficheiro existe mas não está no INDEX
|
||||
- Fantasmas: linha no INDEX mas ficheiro não existe
|
||||
- Contadores errados: NUM no INDEX ≠ count real
|
||||
|
||||
3. REPORTAR discrepâncias:
|
||||
"D7-Tecnologia: 3 órfãos detectados"
|
||||
"D3-Contabilidade: contador errado (diz 2, tem 3)"
|
||||
|
||||
4. PERGUNTAR ao utilizador:
|
||||
"Corrigir automaticamente? [Sim/Não]"
|
||||
|
||||
5. SE Sim:
|
||||
- Adicionar órfãos ao INDEX
|
||||
- Remover fantasmas do INDEX
|
||||
- Corrigir contadores
|
||||
- Actualizar datas
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Exemplo 1: Após Criar PROC
|
||||
|
||||
```
|
||||
User: /proc-creator criou PROC-WordPress-CLI.md
|
||||
Assistant: (auto-triggered /index-update)
|
||||
|
||||
✅ D7-Tecnologia/INDEX.md actualizado
|
||||
- Adicionada linha: PROC-WordPress-CLI.md | WP-CLI-001
|
||||
- Contador: 28 → 29
|
||||
|
||||
✅ INDEX.md principal actualizado
|
||||
- D7: 28 → 29
|
||||
- Total: 36 → 37
|
||||
```
|
||||
|
||||
### Exemplo 2: Correcção Manual
|
||||
|
||||
```
|
||||
User: /index-update
|
||||
Assistant:
|
||||
|
||||
🔍 Verificando consistência...
|
||||
|
||||
D7-Tecnologia:
|
||||
- ⚠️ 2 órfãos detectados:
|
||||
- PROC-MCP-Troubleshooting-Erro-471.md (não está no INDEX)
|
||||
- PROC-MCP-Session-Recovery.md (não está no INDEX)
|
||||
- ✅ Sem fantasmas
|
||||
|
||||
D3-Contabilidade:
|
||||
- ⚠️ Contador errado: INDEX diz 2, existem 3 ficheiros
|
||||
|
||||
Corrigir automaticamente? [Sim]
|
||||
|
||||
→ Adicionando órfãos...
|
||||
→ Corrigindo contadores...
|
||||
→ Actualizando datas...
|
||||
✅ Todos os INDEX.md consistentes
|
||||
```
|
||||
|
||||
### Exemplo 3: Após Arquivar
|
||||
|
||||
```
|
||||
User: Arquivei PROC-Backup-Old-Method.md (obsoleto)
|
||||
Assistant: /index-update D7-Tecnologia
|
||||
|
||||
✅ Removido PROC-Backup-Old-Method.md do INDEX
|
||||
✅ Contador: 29 → 28
|
||||
✅ INDEX principal: 37 → 36
|
||||
✅ Data actualizada
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
**NUNCA:**
|
||||
- ❌ Actualizar INDEX sem verificar ficheiro existe
|
||||
- ❌ Esquecer de actualizar INDEX principal
|
||||
- ❌ Deixar data desactualizada
|
||||
- ❌ Quebrar ordenação por código
|
||||
- ❌ Adicionar linha com link quebrado
|
||||
|
||||
**SEMPRE:**
|
||||
- ✅ Actualizar AMBOS os INDEX (dept + principal)
|
||||
- ✅ Verificar ficheiro existe antes de adicionar
|
||||
- ✅ Manter ordenação por código
|
||||
- ✅ Actualizar contadores correctamente
|
||||
- ✅ Actualizar data para hoje
|
||||
|
||||
---
|
||||
|
||||
## Validação Pós-Actualização
|
||||
|
||||
Checklist automática:
|
||||
|
||||
```
|
||||
✅ Contadores matemáticos correctos
|
||||
✅ Links relativos válidos
|
||||
✅ Ordenação mantida
|
||||
✅ Sem duplicados
|
||||
✅ Sem órfãos detectados
|
||||
✅ Sem fantasmas detectados
|
||||
✅ Data = hoje
|
||||
✅ Formato Markdown válido
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Scripts Auxiliares (Futuro)
|
||||
|
||||
```bash
|
||||
# Validar consistência INDEX.md
|
||||
./scripts/validate-index.sh
|
||||
|
||||
# Detectar órfãos e fantasmas
|
||||
./scripts/detect-orphans.sh
|
||||
|
||||
# Re-gerar INDEX.md do zero
|
||||
./scripts/rebuild-index.sh [departamento]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
|
||||
@@ -9,7 +9,7 @@ version: 1.1.0
|
||||
user_invocable: true
|
||||
tags: [knowledge, kb, dify, wikijs, supabase, context7, search, documentation]
|
||||
desk_task: 1474
|
||||
allowed-tools: Read, Grep, mcp__dify-kb__dify_kb_retrieve_segments, mcp__wikijs__search_pages, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs
|
||||
allowed-tools: Read, Grep, mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments, mcp__wikijs__search_pages, mcp__memory-supabase__search_memories, mcp__context7__get-library-docs
|
||||
category: productivity
|
||||
quality_score: 85
|
||||
updated: "2026-02-04T18:00:00Z"
|
||||
@@ -235,7 +235,7 @@ async function pesquisar(query, categoria) {
|
||||
fonte.folders.map(folder =>
|
||||
Grep({
|
||||
pattern: extrairKeywords(query).join('|'),
|
||||
path: `/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/${folder}`,
|
||||
path: `/media/ealmeida/Dados/Hub/${folder}`,
|
||||
output_mode: 'content'
|
||||
})
|
||||
)
|
||||
@@ -328,7 +328,10 @@ if (resultado.lacuna || resultado.score < 50) {
|
||||
|
||||
## MCPs Disponíveis
|
||||
|
||||
### Dify KB
|
||||
### Knowledge Sources
|
||||
|
||||
**Primario:** NotebookLM
|
||||
**Fallback:** Dify KB
|
||||
```
|
||||
mcp__dify-kb__dify_kb_list_datasets # Listar datasets
|
||||
mcp__dify-kb__dify_kb_retrieve_segments # Pesquisar (dataset_id, query)
|
||||
@@ -359,7 +362,7 @@ 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/Hub/ (Obsidian vault)
|
||||
- /media/ealmeida/Dados/GDrive/Projectos/
|
||||
```
|
||||
|
||||
@@ -538,6 +541,13 @@ Esta skill já faz routing automático para datasets Dify, mas em caso de dúvid
|
||||
### Como Consultar
|
||||
|
||||
```javascript
|
||||
# PRIMARIO: NotebookLM (Gemini 2.5 RAG)
|
||||
# mcp__notebooklm__notebook_query({notebook_id: "0c9c079c-a426-486c-99eb-1564d42d37ad", query: "<tema>"}) // Gestao de Projectos e Agile
|
||||
# mcp__notebooklm__notebook_query({notebook_id: "f9dc59c2-718b-4b12-bd06-095d4bfa3e34", query: "<tema>"}) // Gestao de Operacoes
|
||||
# mcp__notebooklm__notebook_query({notebook_id: "79d43410-0e29-4be1-881d-84db6bdc239a", query: "<tema>"}) // Estrategia e Empreendedorismo
|
||||
# mcp__notebooklm__notebook_query({notebook_id: "ebee9fe1-78fd-4f85-8938-f19f3ea32131", query: "<tema>"}) // Obsidian + Claude
|
||||
# FALLBACK: Dify KB (se NotebookLM insuficiente)
|
||||
|
||||
// Pesquisar no Data Lake geral
|
||||
mcp__dify-kb__dify_kb_retrieve_segments({
|
||||
dataset_id: "b4e233d6-0d78-42f6-aef4-a56280600fe8",
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
{
|
||||
"type": "filesystem",
|
||||
"paths": [
|
||||
"/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/"
|
||||
"/media/ealmeida/Dados/Hub/"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -449,7 +449,7 @@
|
||||
{
|
||||
"type": "filesystem",
|
||||
"paths": [
|
||||
"/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/03-Recursos/"
|
||||
"/media/ealmeida/Dados/Hub/03-Recursos/"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1712,7 +1712,7 @@
|
||||
"qualidade": "09-operacoes-qualidade/qualidade-procedimentos"
|
||||
},
|
||||
"local_paths": {
|
||||
"planeamento": "/media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/",
|
||||
"planeamento": "/media/ealmeida/Dados/Hub/",
|
||||
"projectos": "/media/ealmeida/Dados/GDrive/Projectos/",
|
||||
"dev": "/media/ealmeida/Dados/Dev/"
|
||||
},
|
||||
|
||||
@@ -136,7 +136,7 @@ Params:
|
||||
### Filesystem
|
||||
```
|
||||
Grep em paths do routing:
|
||||
- /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/ (Obsidian vault)
|
||||
- /media/ealmeida/Dados/Hub/ (Obsidian vault)
|
||||
- /media/ealmeida/Dados/GDrive/Projectos/
|
||||
```
|
||||
|
||||
|
||||
164
gestao/skills/mindmap/SKILL.md
Normal file
164
gestao/skills/mindmap/SKILL.md
Normal file
@@ -0,0 +1,164 @@
|
||||
---
|
||||
name: mindmap
|
||||
title: Mindmap Generator (DesktopNaotu)
|
||||
description: Gera ficheiros .km (mindmap) compativeis com DesktopNaotu/Kityminder. Cria mindmaps a partir de topicos, planos, brainstorms ou qualquer estrutura hierarquica.
|
||||
author: Descomplicar
|
||||
version: 1.0.0
|
||||
tags: [mindmap, naotu, kityminder, brainstorm, planeamento, organizacao]
|
||||
user_invocable: true
|
||||
trigger_patterns:
|
||||
- "mindmap"
|
||||
- "mapa mental"
|
||||
- "mind map"
|
||||
- "naotu"
|
||||
- "criar mindmap"
|
||||
- "gerar mindmap"
|
||||
- "brainstorm visual"
|
||||
---
|
||||
|
||||
# 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")
|
||||
406
gestao/skills/notebooklm/SKILL.md
Normal file
406
gestao/skills/notebooklm/SKILL.md
Normal file
@@ -0,0 +1,406 @@
|
||||
---
|
||||
name: notebooklm
|
||||
description: >
|
||||
Gestão programática completa do NotebookLM via MCP. Use when managing notebooks, adding sources,
|
||||
generating artifacts (audio, video, mindmap, report, flashcards, quiz, infographic, presentation, table),
|
||||
querying notebooks with RAG, running autonomous research, or when user mentions "notebooklm",
|
||||
"notebook", "audio overview", "podcast", "mapa mental", "questionário", "resumo", "investigação profunda",
|
||||
"adicionar fonte", "gerar artefacto".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.1.0
|
||||
user_invocable: true
|
||||
tags: [notebooklm, rag, audio, studio, research, gemini, knowledge, artifacts]
|
||||
allowed-tools: mcp__notebooklm__notebook_list, mcp__notebooklm__notebook_get, mcp__notebooklm__notebook_create, mcp__notebooklm__notebook_describe, mcp__notebooklm__notebook_rename, mcp__notebooklm__notebook_delete, mcp__notebooklm__source_add, mcp__notebooklm__source_delete, mcp__notebooklm__source_describe, mcp__notebooklm__source_get_content, mcp__notebooklm__source_sync_drive, mcp__notebooklm__source_list_drive, mcp__notebooklm__notebook_query, mcp__notebooklm__chat_configure, mcp__notebooklm__studio_create, mcp__notebooklm__studio_status, mcp__notebooklm__studio_delete, mcp__notebooklm__download_artifact, mcp__notebooklm__export_artifact, mcp__notebooklm__research_start, mcp__notebooklm__research_status, mcp__notebooklm__research_import, mcp__notebooklm__notebook_share_public, mcp__notebooklm__notebook_share_invite, mcp__notebooklm__notebook_share_status, mcp__notebooklm__refresh_auth, mcp__notebooklm__server_info
|
||||
category: knowledge
|
||||
quality_score: 90
|
||||
updated: "2026-02-24T20:00:00Z"
|
||||
---
|
||||
|
||||
# /notebooklm - Gestão Programática NotebookLM
|
||||
|
||||
Motor RAG Gemini com geração de artefactos multimédia. 29 ferramentas MCP disponíveis.
|
||||
|
||||
---
|
||||
|
||||
## Notebooks Descomplicar (58 total)
|
||||
|
||||
> Registry actualizado via `notebook_list`. Para IDs actualizados: `mcp__notebooklm__notebook_list`.
|
||||
|
||||
### Tecnologia / Dev (21)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **KiviCare EHR WP** | `78621405-a5bc-433f-856f-296260a80bd9` | 166 |
|
||||
| **CWP** | `0ded7bd6-69b3-4c76-b327-452396bf7ea7` | 214 |
|
||||
| **WordPress Config CLI** | `fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d` | 268 |
|
||||
| **WordPress e Elementor** | `5be0d1a6-00f2-4cd9-b835-978cb7721601` | 88 |
|
||||
| **Cibersegurança WordPress** | `5f60adfd-2435-4725-8c12-9c11c5f51d75` | 95 |
|
||||
| **Proxmox** | `276ccdde-6b95-42a3-ad96-4e64d64c8d52` | 120 |
|
||||
| **Cloud e Infraestrutura TI** | `f9a79b5a-649f-4443-afaf-7ff562b6c2e7` | 146 |
|
||||
| **Claude Code** | `2876d1fe-5cea-4d98-8140-b0e1a81c6bc4` | 132 |
|
||||
| **Obsidian + Claude** | `ebee9fe1-78fd-4f85-8938-f19f3ea32131` | 117 |
|
||||
| **Perfex CRM** | `df4688bb-c2c0-4aba-98c1-38c3b50a353c` | 141 |
|
||||
| **Dev PerfexCRM** | `80606de8-2783-4d36-b08d-5825e6f9a8da` | 44 |
|
||||
| **Reonic** | `b7e61158-0717-4582-8ef2-0301be3c73ae` | 131 |
|
||||
| **Remotion** | `f2b75baa-1ab1-48d3-8f7c-a6a9e516934c` | 59 |
|
||||
| **n8n** | `f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1` | 66 |
|
||||
| **Desenvolvimento de MCPs** | `73102308-70ef-403e-9be9-eae0cfc62d55` | 22 |
|
||||
| **Programação** | `24947ffa-0019-448a-a340-2f4a275d2eb1` | 53 |
|
||||
| **Open Source Top Picks** | `cabf9821-c1ff-44cb-9bfd-59bda3599792` | 163 |
|
||||
| **GitHub Trends** | `922b7532-ddf3-4dba-9d3c-6d5f83b89378` | 61 |
|
||||
| **Zaia** | `087d76f1-e929-49da-9e3c-4edc22b42b3f` | 28 |
|
||||
| **Open WebUI** | `be6f72ac-f8ba-4337-912d-abd5dd448519` | 15 |
|
||||
| **AI Code Editors** | `57d9c6c9-48ba-4d83-8f71-cc890f348a53` | 20 |
|
||||
|
||||
### Gestão / Negócio (13)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **Estrategia e Empreendedorismo** | `79d43410-0e29-4be1-881d-84db6bdc239a` | 107 |
|
||||
| **Gestão de Operações** | `f9dc59c2-718b-4b12-bd06-095d4bfa3e34` | 41 |
|
||||
| **Gestão de Projectos e Agile** | `0c9c079c-a426-486c-99eb-1564d42d37ad` | 44 |
|
||||
| **Transformacao Digital e IA** | `ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8` | 73 |
|
||||
| **E-commerce Pratico** | `226e384e-d4bc-48f4-bb82-7927360436cc` | 63 |
|
||||
| **Descomplicar** | `f29c8457-f16d-4fb3-979d-6e5901de1b20` | 23 |
|
||||
| **AI Automation and Orchestration** | `929ef67b-c131-4f01-abd0-8b078491a6b7` | 5 |
|
||||
| **AI Agents Intensive Course** | `f4be0e3f-4d9e-4c5c-a743-9f14427f2e43` | 5 |
|
||||
| **European E-Commerce** | `8a430cf2-ed99-413d-b4bf-a1400deaf49e` | 24 |
|
||||
| **Documentação WooCommerce** | `bd06acff-4b9d-44aa-b3f7-60434bbd6b49` | 3 |
|
||||
| **Produtos e Serviços BD** | `c451d7b4-79fd-4a67-9149-1da38d28345e` | 3 |
|
||||
| **Erxes XOS** | `10ea7de8-5777-4f18-bd2c-f58952b6047c` | 10 |
|
||||
| **Zender 3** | `7095e5fa-1465-4496-b1a3-48f2e6e07f79` | 3 |
|
||||
|
||||
### Marketing / Media (7)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **Marketing Digital PT** | `4c595973-ba10-420a-a3bf-e4389e424ad3` | 189 |
|
||||
| **Marketing Digital Avancado** | `76647e0f-3ae2-4c00-a0a8-f457aebf5655` | 78 |
|
||||
| **Social Media e Branding** | `9053d0e8-dd39-460b-b5ea-e67af3e9a675` | 51 |
|
||||
| **Copywriting e Persuasao** | `7b8fec17-d34f-4e3f-a8c6-8231e51f6323` | 50 |
|
||||
| **Produção de Video e Youtube** | `058a896e-6c9a-4e51-ae7d-9adb2738bc5f` | 49 |
|
||||
| **YouTube Monetização e Compliance** | `60a209a7-e205-4d57-a6f3-fef3de61e87a` | 30 |
|
||||
| **Podcast Descomplicar** | `a5bef96b-a1af-4293-9979-5da46f8d2301` | 33 |
|
||||
|
||||
### Design (3)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **Design Profissional AItomatizado** | `b568b13b-0eed-48c9-b513-5c5b7ec0b102` | 244 |
|
||||
| **UI/UX Design** | `081ca512-8279-4850-b2b9-dff090267482` | 28 |
|
||||
| **Tipografia e Cor para Web** | `f97a0d2b-a5b3-4640-b941-3cbb184b1b81` | 41 |
|
||||
|
||||
### Pessoal / Filosofia (11)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **Emanuel Almeida** | `8c6c8257-bda2-433c-bf55-f40d98bfde8f` | 36 |
|
||||
| **Jung** | `d5c67d7f-7fe8-4542-9e5c-22403f3193ee` | 41 |
|
||||
| **Taoism** | `aea85baf-9ddf-4d79-bf07-81391a275b09` | 28 |
|
||||
| **ADHD** | `a4ff3fd7-fb7c-49a1-94ff-0433193e2338` | 17 |
|
||||
| **Autismo** | `66eff78e-318f-4a8b-a3c7-039a4124b1ad` | 14 |
|
||||
| **Psicologia Somática** | `3410893b-16a3-4178-9091-42650a41086f` | 10 |
|
||||
| **Essência de Herói** | `6dcd08e8-79d9-4ae0-b6bf-b2ee96717bf2` | 13 |
|
||||
| **Auto Kintsugi** | `82a95c2f-be56-4c4a-a96f-96f6677a6991` | 10 |
|
||||
| **Marcus Aurelius** | `4b986ad4-49da-4604-a423-4fcdf20dd9da` | 3 |
|
||||
| **Building Viral AI Philosophy** | `7bb570b3-9dc4-4e6f-817c-aca68df59e6d` | 13 |
|
||||
|
||||
### Clientes / Projectos (3)
|
||||
|
||||
| Nome | ID | Fontes |
|
||||
|------|----|--------|
|
||||
| **CarStuff** | `90f0bc77-b5e4-4ddd-a07c-013a1a30b247` | 25 |
|
||||
| **Solar FV Engenharia** | `03d54e00-aefa-45dc-ba01-f3864a7c3112` | 5 |
|
||||
| **OpenSolar Platform** | `0082bcaf-1e17-4b84-87cc-2256b1719b55` | 4 |
|
||||
|
||||
---
|
||||
|
||||
## Comandos
|
||||
|
||||
| Comando | Uso |
|
||||
|---------|-----|
|
||||
| `/notebooklm list` | Listar todos os notebooks |
|
||||
| `/notebooklm query <id> <pergunta>` | Consulta RAG num notebook |
|
||||
| `/notebooklm add <id> <fonte>` | Adicionar fonte (url/file/text/drive) |
|
||||
| `/notebooklm studio <id> <tipo>` | Gerar artefacto |
|
||||
| `/notebooklm research <id> <tema>` | Investigação autónoma web |
|
||||
| `/notebooklm create <nome>` | Criar novo notebook |
|
||||
|
||||
---
|
||||
|
||||
## Studio — Artefactos
|
||||
|
||||
| Tipo (`artifact_type`) | Parâmetros Chave | Output | Tempo |
|
||||
|------------------------|-----------------|--------|-------|
|
||||
| `audio` | `format`: deep_dive, brief, critique, debate | MP3 | 3-7 min |
|
||||
| `video` | `format`: explainer, brief | MP4 | 5-12 min |
|
||||
| `mind_map` | — | Markdown/JSON | <1 min |
|
||||
| `report` | `report_format`: Briefing Doc, Study Guide, Blog Post | Markdown/Docs | 1-2 min |
|
||||
| `flashcards` | `difficulty`: hard, easy | JSON/HTML | <1 min |
|
||||
| `quiz` | `question_count`: Integer | JSON/HTML | <1 min |
|
||||
| `infographic` | `orientation`: 1=Landscape, 2=Portrait | PNG/SVG | 2-4 min |
|
||||
| `slide_deck` | `orientation`, `visual_style` (1-10), `language`, `length` | PDF | 2-5 min |
|
||||
| `data_table` | — | CSV/JSON/Sheets | 1-2 min |
|
||||
|
||||
### Workflow Geração de Artefacto
|
||||
|
||||
```
|
||||
1. studio_create(notebook_id, artifact_type, ..., confirm=True)
|
||||
→ devolve artifact_id
|
||||
|
||||
2. POLLING: studio_status(artifact_id)
|
||||
→ repetir cada 20s até status="complete"
|
||||
|
||||
3a. download_artifact(artifact_id) → ficheiro local (MP3/MP4/JSON/MD)
|
||||
3b. export_artifact(artifact_id) → Google Docs/Sheets
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gestão de Fontes
|
||||
|
||||
### Adicionar fonte
|
||||
|
||||
```python
|
||||
# URL
|
||||
source_add(notebook_id, source_type="url", url="https://...", wait=True)
|
||||
|
||||
# Ficheiro local (PDF, MD, TXT)
|
||||
source_add(notebook_id, source_type="file", file_path="/caminho/absoluto", wait=True)
|
||||
|
||||
# Texto directo
|
||||
source_add(notebook_id, source_type="text", text="...", title="Título", wait=True)
|
||||
|
||||
# Google Drive
|
||||
source_add(notebook_id, source_type="drive", document_id="gdrive-id", wait=True)
|
||||
```
|
||||
|
||||
**Regra crítica:** Usar sempre `wait=True`. Sem isso o NotebookLM reporta sucesso mas o conteúdo não está indexado.
|
||||
|
||||
### Actualizar fontes Drive
|
||||
|
||||
```python
|
||||
source_sync_drive(notebook_id, confirm=True)
|
||||
```
|
||||
|
||||
Para PDFs/URLs não Drive: `source_delete` + `source_add` da versão nova.
|
||||
|
||||
---
|
||||
|
||||
## Consulta RAG (notebook_query)
|
||||
|
||||
### Padrão Drill-Down para documentos extensos
|
||||
|
||||
```
|
||||
Passo 1 — Topologia:
|
||||
"Mapeia a estrutura deste documento, identifica os capítulos sobre [tema]."
|
||||
|
||||
Passo 2 — Cirúrgico:
|
||||
"Centra a análise em [secção específica]. Detalha [aspecto concreto]."
|
||||
|
||||
Passo 3 — Síntese externa:
|
||||
Claude agrega as respostas parciais no seu próprio contexto.
|
||||
```
|
||||
|
||||
### Multi-notebook (sem suporte nativo)
|
||||
|
||||
O NotebookLM não faz queries cross-notebook. Workflow:
|
||||
```
|
||||
1. notebook_query(notebook_A, pergunta)
|
||||
2. notebook_query(notebook_B, pergunta)
|
||||
3. Claude sintetiza os dois resultados localmente
|
||||
```
|
||||
|
||||
### Rate limiting
|
||||
|
||||
~50 queries/dia em contas gratuitas. Contas Workspace: sem limite documentado.
|
||||
|
||||
---
|
||||
|
||||
## Investigação Autónoma
|
||||
|
||||
```python
|
||||
# 1. Iniciar pesquisa
|
||||
research_start(
|
||||
notebook_id="uuid",
|
||||
query="tendências telemedicina Portugal 2026",
|
||||
mode="deep", # fast (~30s, 10 fontes) | deep (~5min, 40+ fontes)
|
||||
source_type="web" # web | drive
|
||||
)
|
||||
# → devolve task_id
|
||||
|
||||
# 2. Polling
|
||||
research_status(task_id) # repetir até status="complete"
|
||||
|
||||
# 3. Importar resultados
|
||||
research_import(notebook_id, task_id)
|
||||
```
|
||||
|
||||
**Atenção:** Iniciar nova pesquisa cancela qualquer pesquisa em curso no mesmo notebook.
|
||||
|
||||
---
|
||||
|
||||
## Casos de Uso Descomplicar
|
||||
|
||||
### Investigação técnica de plugin/tecnologia
|
||||
|
||||
```
|
||||
1. Scraper → MDs em Hub/Manuais/
|
||||
2. source_add(files) → notebook_create ou existente
|
||||
3. notebook_query drill-down → extracção de padrões
|
||||
4. studio_create(mind_map) → exportar para Obsidian
|
||||
5. studio_create(audio, deep_dive) → consumo em mobilidade
|
||||
```
|
||||
|
||||
### Onboarding novo projecto
|
||||
|
||||
```
|
||||
1. notebook_create("Cliente - NomeProjecto")
|
||||
2. source_add(contratos PDF + requisitos WikiJS)
|
||||
3. notebook_share_invite(emails equipa + cliente)
|
||||
4. studio_create(report, "Briefing Doc") → resumo executivo
|
||||
```
|
||||
|
||||
### Proposta comercial
|
||||
|
||||
```
|
||||
1. notebook_query → extrair capacidades relevantes
|
||||
2. studio_create(data_table) → export_artifact → Google Sheets comparativo
|
||||
3. studio_create(slide_deck, orientation=1, visual_style=1, language="pt") → esqueleto apresentação
|
||||
```
|
||||
|
||||
### Rotina /today
|
||||
|
||||
```
|
||||
notebook_query(Gestão de Operações, "3 métricas críticas com desvios hoje")
|
||||
→ studio_create(audio, brief) → MP3 para consumo rápido
|
||||
```
|
||||
|
||||
### Questionários de validação
|
||||
|
||||
```
|
||||
studio_create(quiz, question_count=15) → JSON
|
||||
→ n8n lê JSON → cria tasks Desk CRM para engenheiros
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gestão de Notebooks
|
||||
|
||||
```python
|
||||
# Listar
|
||||
notebook_list()
|
||||
|
||||
# Metadados + fontes
|
||||
notebook_get(notebook_id)
|
||||
|
||||
# Resumo IA com keywords
|
||||
notebook_describe(notebook_id)
|
||||
|
||||
# Criar
|
||||
notebook_create(name="Nome do Notebook")
|
||||
|
||||
# Partilha pública
|
||||
notebook_share_public(notebook_id)
|
||||
|
||||
# Partilha por convite
|
||||
notebook_share_invite(notebook_id, email="user@domain.com")
|
||||
|
||||
# Eliminar (irreversível)
|
||||
notebook_delete(notebook_id, confirm=True)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Integração n8n
|
||||
|
||||
O NotebookLM não tem API REST pública. Comunicar via JSON-RPC para o servidor MCP local:
|
||||
|
||||
```
|
||||
NOTEBOOKLM_MCP_TRANSPORT=http
|
||||
NOTEBOOKLM_MCP_HOST=0.0.0.0
|
||||
NOTEBOOKLM_MCP_PORT=8000
|
||||
```
|
||||
|
||||
### Flows úteis
|
||||
|
||||
**WikiJS → NotebookLM (ingestão dinâmica):**
|
||||
```
|
||||
Webhook (publicação WikiJS)
|
||||
→ HTTP Request: source_add(source_type="text", wait=True)
|
||||
→ Notificação Slack: "Nova doc indexada no RAG"
|
||||
```
|
||||
|
||||
**Relatório semanal de projecto:**
|
||||
```
|
||||
Schedule (sexta 17h)
|
||||
→ Desk CRM: extrair tasks semana
|
||||
→ source_add(text) → studio_create(report, "Briefing Doc")
|
||||
→ Polling studio_status
|
||||
→ export_artifact → Google Docs
|
||||
→ Link enviado para Slack do cliente
|
||||
```
|
||||
|
||||
**Audio após actualização de manual:**
|
||||
```
|
||||
Drive webhook
|
||||
→ source_sync_drive
|
||||
→ studio_create(audio, deep_dive)
|
||||
→ Polling + download_artifact
|
||||
→ Email com MP3 anexo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Limitações
|
||||
|
||||
| Limitação | Workaround |
|
||||
|-----------|-----------|
|
||||
| ~50 queries/dia (conta gratuita) | Usar conta Workspace; fallback Dify KB |
|
||||
| Sem API REST oficial | JSON-RPC via servidor MCP local |
|
||||
| Sem queries cross-notebook | Claude agrega respostas de múltiplos notebooks |
|
||||
| Cookies expiram (2-4 semanas) | `refresh_auth()` automático; alertar se HTTP 401/499 |
|
||||
| Slides com marca de água | Pós-processamento `clean-watermark.js` via n8n |
|
||||
| Ficheiros estáticos imutáveis | `source_delete` + `source_add` para actualizar |
|
||||
| `research_start` exclusivo | Só uma pesquisa activa por notebook de cada vez |
|
||||
| Dados de treino Gemini | Workspace Enterprise: dados isentos de treino |
|
||||
|
||||
---
|
||||
|
||||
## Autenticação
|
||||
|
||||
```bash
|
||||
# Verificar estado
|
||||
nlm login status
|
||||
|
||||
# Renovar tokens
|
||||
mcp__notebooklm__refresh_auth()
|
||||
|
||||
# Versão do servidor
|
||||
mcp__notebooklm__server_info()
|
||||
```
|
||||
|
||||
Auth guardada em: `~/.notebooklm-mcp-cli/profiles/<name>/auth.json`
|
||||
|
||||
---
|
||||
|
||||
## Roadmap de Adopção
|
||||
|
||||
**Fase 1 — Quick wins (<1 semana)**
|
||||
- [ ] Conta Google Workspace dedicada a automações
|
||||
- [ ] Servidor MCP em EasyPanel (projecto: descomplicar)
|
||||
- [ ] Primeiro audio overview de manual técnico
|
||||
|
||||
**Fase 2 — Integrações (1-4 semanas)**
|
||||
- [ ] n8n: ingestão dinâmica WikiJS → NotebookLM
|
||||
- [ ] n8n: relatório semanal /today automático
|
||||
- [ ] Claude Code: queries drill-down nos notebooks existentes
|
||||
|
||||
**Fase 3 — Escala (1-3 meses)**
|
||||
- [ ] Notebook por cliente (criado automaticamente no Desk CRM)
|
||||
- [ ] Quizzes de onboarding injectados em tarefas Desk CRM
|
||||
- [ ] Research autónomo semanal: panorama competitivo por área
|
||||
|
||||
---
|
||||
|
||||
**Versão**: 1.0.0 | **Data**: 24-02-2026 | **Autor**: Descomplicar®
|
||||
365
gestao/skills/proc-creator/SKILL.md
Normal file
365
gestao/skills/proc-creator/SKILL.md
Normal file
@@ -0,0 +1,365 @@
|
||||
---
|
||||
name: proc-creator
|
||||
description: Cria procedimentos seguindo formato Hub Descomplicar. Use quando "criar procedimento", "novo PROC", "documentar processo", "PROC-*". Gera código automático [DEPT]-[TEMA]-[NUM], cria ficheiro na pasta departamental correcta, actualiza INDEX.md.
|
||||
---
|
||||
|
||||
# /proc-creator - Criador de Procedimentos Hub
|
||||
|
||||
Cria procedimentos estruturados seguindo formato e organização Hub Descomplicar.
|
||||
|
||||
---
|
||||
|
||||
## Referências e Documentação
|
||||
|
||||
**SEMPRE consultar:**
|
||||
- **[06-Operacoes/Procedimentos/INDEX.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/INDEX.md)** - Estrutura completa (36 procedimentos, 8 departamentos)
|
||||
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Secção "Organização de Procedimentos" (convenções, padrão referenciação)
|
||||
|
||||
---
|
||||
|
||||
## Estrutura de Procedimentos
|
||||
|
||||
### 8 Departamentos
|
||||
|
||||
| Departamento | Pasta | Código | Procedimentos Actuais |
|
||||
|--------------|-------|--------|----------------------|
|
||||
| D1-Comercial | `D1-Comercial/` | CRM | 1 |
|
||||
| D2-Suporte | `D2-Suporte/` | SUP | 0 (gap) |
|
||||
| D3-Contabilidade | `D3-Contabilidade/` | FIN | 2 |
|
||||
| D4-RH | `D4-RH/` | HR | 0 (novo) |
|
||||
| D5-Design | `D5-Design/` | DES | 0 (gap) |
|
||||
| D6-Marketing | `D6-Marketing/` | MKT | 1 |
|
||||
| D7-Tecnologia | `D7-Tecnologia/` | DEV, WP, INF, AI, WEB | 28 |
|
||||
| Cross-Departamental | `Cross-Departamental/` | XDP | 4 |
|
||||
|
||||
**Base path:** `/media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/`
|
||||
|
||||
---
|
||||
|
||||
## Convenção de Código
|
||||
|
||||
Formato: `[DEPT]-[TEMA]-[NUM]`
|
||||
|
||||
**Exemplos:**
|
||||
- D7: `DEV-MCP-001`, `WP-SEC-001`, `INF-SSL-001`, `AI-PLG-001`, `WEB-SEO-001`
|
||||
- D1: `CRM-OPS-001`
|
||||
- D3: `FIN-MOL-001`, `FIN-DSP-001`
|
||||
- D6: `MKT-CNT-001`
|
||||
- Cross: `XDP-GPR-001`, `XDP-OBS-001`
|
||||
|
||||
**Números:** Sequencial por tema (001, 002, 003...)
|
||||
|
||||
---
|
||||
|
||||
## Protocolo de Criação
|
||||
|
||||
```
|
||||
1. PERGUNTAR ao utilizador:
|
||||
- Título do procedimento
|
||||
- Departamento (D1-D7 ou Cross)
|
||||
- Tema/categoria
|
||||
- Descrição breve
|
||||
|
||||
2. DETERMINAR código:
|
||||
- Ler INDEX.md do departamento
|
||||
- Identificar próximo NUM disponível para o tema
|
||||
- Gerar código [DEPT]-[TEMA]-[NUM]
|
||||
|
||||
3. CRIAR ficheiro PROC-*.md:
|
||||
- Nome: PROC-[Titulo].md
|
||||
- Localização: /media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/[Departamento]/
|
||||
- Usar template abaixo
|
||||
|
||||
4. ACTUALIZAR INDEX.md:
|
||||
- Adicionar linha na tabela do departamento
|
||||
- Incrementar contador total
|
||||
- Actualizar data
|
||||
|
||||
5. CONFIRMAR:
|
||||
- Mostrar path completo do ficheiro criado
|
||||
- Mostrar código atribuído
|
||||
- Listar próximos passos (preencher conteúdo)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Template PROC-*.md
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: [Título do Procedimento]
|
||||
date: YYYY-MM-DD
|
||||
type: procedimento
|
||||
status: draft
|
||||
dept_id: [N]
|
||||
desk_dept_id: [N]
|
||||
desk_dept_name: [Nome Departamento]
|
||||
codigo: [DEPT]-[TEMA]-[NUM]
|
||||
tags: [tag1, tag2, tag3]
|
||||
---
|
||||
|
||||
# [Título do Procedimento]
|
||||
|
||||
**Código:** [DEPT]-[TEMA]-[NUM] | **Departamento:** [Nome] | **Status:** Draft
|
||||
|
||||
---
|
||||
|
||||
## 📋 Contexto
|
||||
|
||||
Descrição clara do propósito e âmbito deste procedimento.
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Objectivo
|
||||
|
||||
O que este procedimento pretende alcançar.
|
||||
|
||||
---
|
||||
|
||||
## 📍 Âmbito
|
||||
|
||||
### Aplica-se a:
|
||||
- [ ] Item 1
|
||||
- [ ] Item 2
|
||||
|
||||
### Não se aplica a:
|
||||
- [ ] Item 1
|
||||
- [ ] Item 2
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Pré-requisitos
|
||||
|
||||
| Requisito | Descrição |
|
||||
|-----------|-----------|
|
||||
| [Nome] | [Detalhe] |
|
||||
|
||||
---
|
||||
|
||||
## 📝 Procedimento
|
||||
|
||||
### Passo 1: [Nome do Passo]
|
||||
|
||||
**Objectivo:** [O quê]
|
||||
**Como:**
|
||||
1. Acção 1
|
||||
2. Acção 2
|
||||
|
||||
**Validação:** Como confirmar sucesso
|
||||
|
||||
### Passo 2: [Nome do Passo]
|
||||
|
||||
[...]
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist de Execução
|
||||
|
||||
- [ ] Pré-requisito A verificado
|
||||
- [ ] Passo 1 concluído
|
||||
- [ ] Passo 2 concluído
|
||||
- [ ] Validação final OK
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Troubleshooting
|
||||
|
||||
| Problema | Causa Provável | Solução |
|
||||
|----------|----------------|---------|
|
||||
| [Erro X] | [Causa] | [Como resolver] |
|
||||
|
||||
---
|
||||
|
||||
## 📊 Métricas e KPIs
|
||||
|
||||
| Métrica | Target | Como Medir |
|
||||
|---------|--------|------------|
|
||||
| [Nome] | [Valor] | [Método] |
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Referências
|
||||
|
||||
**Procedimentos relacionados:**
|
||||
- [PROC-Outro.md](../PROC-Outro.md)
|
||||
|
||||
**Skills relacionadas:**
|
||||
- `/skill-name` - Descrição
|
||||
|
||||
**Documentação externa:**
|
||||
- [Nome](URL)
|
||||
|
||||
---
|
||||
|
||||
## 📅 Histórico de Revisões
|
||||
|
||||
| Data | Versão | Autor | Alterações |
|
||||
|------|--------|-------|------------|
|
||||
| YYYY-MM-DD | 1.0 | [Nome] | Criação inicial |
|
||||
|
||||
---
|
||||
|
||||
**[Título] | Código: [DEPT]-[TEMA]-[NUM] | Departamento: [Nome]**
|
||||
**Última actualização:** YYYY-MM-DD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Frontmatter Obrigatório
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: [Título Procedimento]
|
||||
date: YYYY-MM-DD
|
||||
type: procedimento
|
||||
status: draft | active | archived
|
||||
dept_id: [1-7]
|
||||
desk_dept_id: [1-7]
|
||||
desk_dept_name: [D1-Comercial | D2-Suporte | ...]
|
||||
codigo: [DEPT]-[TEMA]-[NUM]
|
||||
tags: [categoria, tema, tecnologia]
|
||||
---
|
||||
```
|
||||
|
||||
**Mapeamento dept_id:**
|
||||
- 1 = D1-Comercial (info@descomplicar.pt)
|
||||
- 2 = D2-Suporte (suporte@descomplicar.pt)
|
||||
- 3 = D3-Contabilidade (contabilidade@descomplicar.pt)
|
||||
- 4 = D4-RH (rh@descomplicar.pt)
|
||||
- 5 = D5-Design (design@descomplicar.pt)
|
||||
- 6 = D6-Marketing (marketing@descomplicar.pt)
|
||||
- 7 = D7-Tecnologia (dev@descomplicar.pt)
|
||||
|
||||
---
|
||||
|
||||
## Actualização INDEX.md
|
||||
|
||||
Adicionar linha na tabela do departamento:
|
||||
|
||||
```markdown
|
||||
| [PROC-Titulo.md](./PROC-Titulo.md) | [Descrição breve] | [DEPT]-[TEMA]-[NUM] |
|
||||
```
|
||||
|
||||
Actualizar estatísticas:
|
||||
- Incrementar contador "X procedimentos"
|
||||
- Actualizar data "Última actualização: YYYY-MM-DD"
|
||||
|
||||
---
|
||||
|
||||
## Integração com Skills/Agents
|
||||
|
||||
Após criar procedimento, informar utilizador:
|
||||
|
||||
```markdown
|
||||
**Próximos passos:**
|
||||
|
||||
1. Preencher conteúdo do procedimento
|
||||
2. Testar procedimento em cenário real
|
||||
3. Actualizar status: draft → active
|
||||
4. Adicionar referências em skills/agents relevantes:
|
||||
|
||||
\`\`\`markdown
|
||||
## Referências e Documentação
|
||||
|
||||
**SEMPRE consultar:**
|
||||
- [PROC-Titulo.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/[Dept]/PROC-Titulo.md)
|
||||
\`\`\`
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Exemplo 1: Procedimento Técnico D7
|
||||
|
||||
```
|
||||
User: Criar procedimento para deployment EasyPanel
|
||||
Assistant: /proc-creator
|
||||
|
||||
Título: Deployment EasyPanel via API
|
||||
Departamento: D7-Tecnologia
|
||||
Tema: Infraestrutura (INF)
|
||||
Descrição: Deploy automatizado de serviços no EasyPanel usando API oficial
|
||||
|
||||
→ Código gerado: INF-EPL-001
|
||||
→ Ficheiro: PROC-Deployment-EasyPanel.md
|
||||
→ Localização: D7-Tecnologia/
|
||||
→ INDEX.md actualizado
|
||||
```
|
||||
|
||||
### Exemplo 2: Procedimento Cross-Departamental
|
||||
|
||||
```
|
||||
User: Documentar processo de gestão de projectos
|
||||
Assistant: /proc-creator
|
||||
|
||||
Título: Sistema Gestão Projectos
|
||||
Departamento: Cross-Departamental
|
||||
Tema: Gestão Projectos (GPR)
|
||||
Descrição: Metodologia híbrida Ágil/Waterfall
|
||||
|
||||
→ Código gerado: XDP-GPR-002 (já existe 001)
|
||||
→ Ficheiro: Sistema-Gestao-Projectos-v2.md
|
||||
→ Localização: Cross-Departamental/
|
||||
→ INDEX.md actualizado
|
||||
```
|
||||
|
||||
### Exemplo 3: Procedimento D2-Suporte (Gap)
|
||||
|
||||
```
|
||||
User: Criar procedimento atendimento cliente
|
||||
Assistant: /proc-creator
|
||||
|
||||
Título: Atendimento Cliente
|
||||
Departamento: D2-Suporte
|
||||
Tema: Suporte (SUP)
|
||||
Descrição: Workflow primeiro contacto, templates resposta, escalação
|
||||
|
||||
→ Código gerado: SUP-ATC-001 (primeiro do D2!)
|
||||
→ Ficheiro: PROC-Atendimento-Cliente.md
|
||||
→ Localização: D2-Suporte/
|
||||
→ INDEX.md actualizado
|
||||
→ NOTA: D2 tinha 0 procedimentos, agora tem 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
**NUNCA:**
|
||||
- ❌ Criar procedimento sem perguntar departamento
|
||||
- ❌ Inventar código sem verificar INDEX.md
|
||||
- ❌ Esquecer de actualizar INDEX.md
|
||||
- ❌ Usar status "active" para draft inicial
|
||||
- ❌ Omitir frontmatter obrigatório
|
||||
- ❌ Criar em localização errada
|
||||
- ❌ Duplicar NUM existente no mesmo tema
|
||||
|
||||
**SEMPRE:**
|
||||
- ✅ Confirmar departamento com utilizador
|
||||
- ✅ Ler INDEX.md para próximo NUM
|
||||
- ✅ Actualizar INDEX.md após criação
|
||||
- ✅ Usar status "draft" inicialmente
|
||||
- ✅ Incluir todo frontmatter obrigatório
|
||||
- ✅ Criar em pasta departamental correcta
|
||||
- ✅ Verificar tema antes de atribuir NUM
|
||||
|
||||
---
|
||||
|
||||
## Validação Pós-Criação
|
||||
|
||||
Checklist automática:
|
||||
|
||||
```
|
||||
✅ Ficheiro criado em pasta correcta
|
||||
✅ Frontmatter completo e válido
|
||||
✅ Código único e sequencial
|
||||
✅ INDEX.md actualizado
|
||||
✅ Template aplicado
|
||||
✅ Path absoluto correcto
|
||||
✅ Data actual em YYYY-MM-DD
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
|
||||
128
gestao/skills/tasks-overview/SKILL.md
Normal file
128
gestao/skills/tasks-overview/SKILL.md
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
name: tasks-overview
|
||||
description: >
|
||||
Visao geral de tarefas pendentes, atrasadas e em curso do Desk CRM. Organiza por prioridade e projecto, sugere workflows relevantes. Use when "tarefas", "tasks", "pendentes", "overdue", "atrasadas", "o que temos para fazer", "tasks overview".
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 1.0.0
|
||||
quality_score: 85
|
||||
user_invocable: true
|
||||
category: management
|
||||
tags: [tasks, overview, priorities, workflows, desk-crm]
|
||||
desk_task: 1710
|
||||
desk_project: 65
|
||||
allowed-tools: Read, Write, mcp__desk-crm-v3
|
||||
mcps: desk-crm-v3
|
||||
dependencies:
|
||||
mcps: [desk-crm-v3]
|
||||
triggers:
|
||||
- "User asks about pending tasks"
|
||||
- "User mentions 'tarefas', 'tasks', 'pendentes', 'overdue'"
|
||||
- "User wants task overview or priorities"
|
||||
- "Invoked by /today orchestrator"
|
||||
---
|
||||
|
||||
# /tasks-overview v1.0
|
||||
|
||||
Consulta e organiza tarefas do Desk CRM por prioridade, deadline e projecto.
|
||||
|
||||
---
|
||||
|
||||
## Protocolo
|
||||
|
||||
### Passo 1: Recolher Tarefas (paralelo)
|
||||
|
||||
```
|
||||
Em paralelo, executar:
|
||||
1. mcp__desk-crm-v3__get_tasks({ overdue_only: true, limit: 50 })
|
||||
2. mcp__desk-crm-v3__get_tasks({ status: 1, limit: 50 }) # Nao iniciadas
|
||||
3. mcp__desk-crm-v3__get_tasks({ status: 4, limit: 50 }) # Em curso
|
||||
```
|
||||
|
||||
### Passo 2: Organizar por Prioridade
|
||||
|
||||
```
|
||||
Agrupar tarefas (sem duplicados) por:
|
||||
1. Prioridade (4=Urgente, 3=Alta, 2=Normal, 1=Baixa)
|
||||
2. Dentro de cada prioridade: vencidas primeiro, depois por deadline
|
||||
3. Incluir projecto associado
|
||||
|
||||
Formato:
|
||||
### Urgentes (Prioridade 4)
|
||||
| # | Tarefa | Projecto | Deadline | Status | Dias |
|
||||
|---|--------|----------|----------|--------|------|
|
||||
|
||||
### Alta Prioridade (Prioridade 3)
|
||||
[mesma tabela]
|
||||
|
||||
### Normal (Prioridade 2)
|
||||
[mesma tabela, apenas overdue + esta semana]
|
||||
```
|
||||
|
||||
### Passo 3: Resumo por Projecto
|
||||
|
||||
```
|
||||
Contar tarefas por projecto:
|
||||
| Projecto | Vencidas | Pendentes | Em Curso | Total |
|
||||
|----------|----------|-----------|----------|-------|
|
||||
```
|
||||
|
||||
### Passo 4: Workflows Sugeridos
|
||||
|
||||
> Para as top 3 tarefas prioritarias, sugerir workflow adequado.
|
||||
> Consultar: `/media/ealmeida/Dados/Hub/06-Operacoes/Documentacao/WORKFLOWS-QUICK-START.md`
|
||||
|
||||
```
|
||||
Padroes de deteccao (keywords na tarefa):
|
||||
|
||||
1. WordPress, plugin, tema, woocommerce → /wp-dev ou wordpress-plugin-developer agent
|
||||
2. Procedimento, documentar, padronizar → /proc-creator
|
||||
3. Audit, seguranca, compliance → compliance-auditor agent
|
||||
4. Orcamento, proposta, cotacao → /orcamento
|
||||
5. Lead, cliente novo, contacto → /lead-approach
|
||||
6. SEO, optimizacao, rankings → /seo-report ou seo-specialist agent
|
||||
7. Deploy, publicar, easypanel → /easypanel-deploy
|
||||
8. Marketing, campanha, estrategia → marketing-planning-expert agent
|
||||
9. PHP, Laravel, API, backend → php-fullstack-engineer agent
|
||||
10. React, Next, frontend, UI → javascript-fullstack-specialist agent
|
||||
|
||||
Formato output:
|
||||
## Workflows Sugeridos
|
||||
- [ ] **#ID Tarefa** -> Workflow: [componente]
|
||||
- [Breve explicacao]
|
||||
```
|
||||
|
||||
### Passo 5: Output JSON (quando invocado pelo /today)
|
||||
|
||||
```
|
||||
SE invocado com argumento "json":
|
||||
Escrever resultado em ~/.claude-work/today-tasks-{date}.json
|
||||
Formato: { "urgentes": N, "alta": N, "overdue": N, "total": N, "por_projecto": {...} }
|
||||
|
||||
SE invocado standalone:
|
||||
Mostrar output Markdown directamente ao utilizador
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Accoes Imediatas Sugeridas
|
||||
|
||||
Apos listar tarefas, sugerir ate 6 accoes concretas:
|
||||
1. Tarefas P4 (urgentes) - resolver hoje
|
||||
2. Tarefas P3 a aguardar feedback - desbloquear
|
||||
3. Tarefas vencidas ha >30 dias - decidir (fazer, delegar ou cancelar)
|
||||
4. Tarefas em curso ha >14 dias - verificar progresso
|
||||
5. Tarefas sem deadline - sugerir definir prazo
|
||||
6. Tarefas sem estimativa de tempo - sugerir estimar
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
- NUNCA mostrar mais de 50 tarefas (filtrar por relevancia)
|
||||
- NUNCA sugerir workflows para tarefas genericas sem keywords claras
|
||||
- NUNCA sugerir workflows para tarefas ja em progresso (status 4)
|
||||
- SEMPRE incluir link CRM: `[#ID](https://desk.descomplicar.pt/admin/tasks/view/ID)`
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
|
||||
@@ -98,15 +98,32 @@ Ainda a trabalhar em #1446?
|
||||
- Se sim: "Já tens timer em #X. Parar primeiro?"
|
||||
2. Obter detalhes da tarefa:
|
||||
mcp__desk-crm-v3__get_task({ task_id })
|
||||
3. Iniciar timer no Desk:
|
||||
3. **VALIDAR WORKFLOW (obrigatório):**
|
||||
a. Verificar se tarefa está atribuída ao utilizador:
|
||||
- Verificar se staff_id: 1 está em task.assignees
|
||||
- Se NÃO: Erro "⚠️ Tarefa não atribuída a ti. Atribui primeiro."
|
||||
b. Verificar status da tarefa:
|
||||
- Status deve ser apropriado para timer (não "Não Iniciada")
|
||||
- Se status inadequado: Erro com instruções
|
||||
c. **Se validação falhar:**
|
||||
```
|
||||
⚠️ Para iniciar timer:
|
||||
1. Atribuir tarefa a ti (staff_id: 1)
|
||||
2. Mudar status para "Em progresso"
|
||||
3. Só depois iniciar timer
|
||||
|
||||
Tarefas que precisam ser executadas:
|
||||
[Listar acções necessárias]
|
||||
```
|
||||
4. Iniciar timer no Desk:
|
||||
mcp__desk-crm-v3__start_timer({
|
||||
task_id: task_id,
|
||||
staff_id: 1,
|
||||
note: "Iniciado via Claude Code"
|
||||
})
|
||||
4. Guardar estado local:
|
||||
5. Guardar estado local:
|
||||
~/.claude-work/active-timer.json
|
||||
5. Confirmar
|
||||
6. Confirmar
|
||||
```
|
||||
|
||||
**Ficheiro estado:**
|
||||
@@ -218,6 +235,10 @@ const ALERT_HOURS = 4; // Alertar após 4h
|
||||
- **NUNCA** deixar timer overnight sem perguntar
|
||||
- **NUNCA** iniciar timer sem tarefa associada
|
||||
- **NUNCA** criar tarefa só para ter timer (usar tarefas existentes)
|
||||
- **NUNCA** iniciar timer sem validar workflow:
|
||||
- Tarefa DEVE estar atribuída ao utilizador
|
||||
- Status DEVE ser apropriado ("Em progresso", não "Não Iniciada")
|
||||
- SEMPRE validar antes de start_timer
|
||||
|
||||
---
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -59,9 +59,17 @@ accounts:
|
||||
|
||||
---
|
||||
|
||||
## Regra 2: PROMOCIONAIS (Arquivar)
|
||||
## Regra 2: PROMOCIONAIS (Arquivar ou Eliminar)
|
||||
|
||||
**Acção**: `imap_move_email` → pasta "Promotions"
|
||||
**Acção padrão**: `imap_move_email` → pasta "Promotions"
|
||||
|
||||
**Excepções por conta:**
|
||||
```yaml
|
||||
delete_promotions:
|
||||
- rh # Não tem pasta Promotions - apagar directamente
|
||||
```
|
||||
|
||||
> Contas listadas em `delete_promotions`: usar `imap_delete_email` em vez de mover.
|
||||
|
||||
### Padrões Subject
|
||||
```
|
||||
|
||||
@@ -1,405 +1,43 @@
|
||||
# /today - Checkup Diário
|
||||
# /today - Checkup Diario (Orquestrador)
|
||||
|
||||
Executa o checkup diário completo seguindo estes passos:
|
||||
Executa o checkup diario invocando sub-skills em sequencia.
|
||||
|
||||
## Passo 1: Verificar Última Execução
|
||||
## Passo 1: Verificar data e ultima execucao
|
||||
|
||||
```
|
||||
Usar mcp__memory-supabase__search_memories com query "today checkup YYYY-MM-DD"
|
||||
Se já existe entrada de hoje → perguntar se quer executar novamente
|
||||
mcp__mcp-time__current_time
|
||||
mcp__memory-supabase__search_memories("today checkup YYYY-MM-DD")
|
||||
Se ja existe → perguntar se quer re-executar
|
||||
```
|
||||
|
||||
## Passo 2: Recolher Dados do DeskCRM
|
||||
## Passo 2: Fase 1 - Auto-processamento (silencioso)
|
||||
|
||||
### 2.1 Tickets
|
||||
```
|
||||
mcp__desk-crm-v3__get_tickets:
|
||||
- date_from: ontem (YYYY-MM-DD)
|
||||
- status: 1 (Aberto) ou 2 (Em Progresso)
|
||||
- limit: 50
|
||||
Invocar em sequencia:
|
||||
1. `/ticket-triage` → processa tickets abertos
|
||||
2. `/imap-triage` → processa emails IMAP
|
||||
3. `/auto-expense` → cria despesas dos resultados anteriores
|
||||
4. `/cleanup-downloads` → se >10 ficheiros em Transferencias
|
||||
|
||||
Identificar:
|
||||
- Tickets urgentes (priority: 3 ou 4)
|
||||
- Tickets de clientes importantes
|
||||
```
|
||||
## Passo 3: Fase 2 - Recolha de dados (silencioso)
|
||||
|
||||
### 2.2 Tickets SPAM → FECHAR AUTOMATICAMENTE
|
||||
```
|
||||
⚡ ACÇÃO AUTOMÁTICA - Fechar SEM intervenção manual
|
||||
Invocar:
|
||||
1. `/daily-digest` → metricas do dia
|
||||
2. `/tasks-overview` → tarefas e workflows
|
||||
|
||||
Padrões de SPAM:
|
||||
- "Guest Post", "SEO services", "backlinks", "partnership"
|
||||
- "link building", "dofollow", "collaboration opportunity"
|
||||
- "Boas Festas", "Season's Greetings", "Termos de Serviço"
|
||||
- Remetentes: noreply@*, no-reply@* (se não for serviço conhecido)
|
||||
## Passo 3b: Sprint/Spec Activos (silencioso)
|
||||
|
||||
Se SPAM detectado → FECHAR IMEDIATAMENTE:
|
||||
mcp__desk-crm-v3__close_ticket:
|
||||
- ticket_id: {ID}
|
||||
- message: "Fechado automaticamente - SPAM"
|
||||
Glob SPEC.md e SPRINT.md em /media/ealmeida/Dados/Dev/.
|
||||
Ler apenas frontmatter. Filtrar activos. Guardar em ~/.claude-work/today-sprint-{date}.json.
|
||||
|
||||
Registar no relatório: "🗑️ SPAM fechado: #{ID} - {Assunto}"
|
||||
```
|
||||
## Passo 4: Rotinas especiais
|
||||
|
||||
### 2.3 Tickets para ELIMINAR (notificações sem valor)
|
||||
```
|
||||
Verificar se assunto contém:
|
||||
- "Your Elastic Email Account was successfully re-charged"
|
||||
- "Account re-charged"
|
||||
- "Auto-recharge successful"
|
||||
- "Credit added to your account"
|
||||
- "[BOT] Ativação realizada com sucesso"
|
||||
- "[BOT] Activation successful"
|
||||
- Segunda: planeamento semanal + `/wp-update`
|
||||
- Sexta: sugerir manutencao WordPress
|
||||
- Sabado/Domingo: `/infra-check`
|
||||
|
||||
Se SIM → Eliminar:
|
||||
mcp__desk-crm-v3__delete_ticket:
|
||||
- ticket_id: {ID}
|
||||
- confirm: true
|
||||
- reason: "Notificação automática sem valor contabilístico"
|
||||
```
|
||||
## Passo 5: Dashboard final
|
||||
|
||||
### 2.3 Processamento Automático: Tickets de PAGAMENTOS
|
||||
```
|
||||
Para cada ticket aberto, verificar se assunto contém:
|
||||
- "payment", "pagamento", "pago", "paid"
|
||||
- "invoice", "factura", "fatura", "recibo"
|
||||
- "successfully processed", "confirmado"
|
||||
- "subscription", "renewed", "renewal"
|
||||
- "account funded", "has been funded"
|
||||
- "Envio de Fatura Eletrónica"
|
||||
|
||||
Se SIM → Verificar remetente:
|
||||
|
||||
A) Remetente CONHECIDO (lista abaixo):
|
||||
⚡ ACÇÃO AUTOMÁTICA - Executar SEM intervenção manual:
|
||||
1. Mover para Contabilidade:
|
||||
mcp__desk-crm-v3__update_ticket({ ticket_id: ID, department_id: 3 })
|
||||
2. FECHAR o ticket:
|
||||
mcp__desk-crm-v3__close_ticket({ ticket_id: ID, message: "Fatura processada - Contabilidade" })
|
||||
3. Registar: "💰 Contabilidade + Fechado: #{ID} - {Assunto}"
|
||||
|
||||
B) Remetente DESCONHECIDO:
|
||||
→ Avaliar indicadores de spam/phishing
|
||||
→ LISTAR no relatório para revisão manual
|
||||
|
||||
Indicadores de SPAM:
|
||||
- Remetente pessoal (gmail/hotmail) + factura empresarial
|
||||
- Erros ortográficos, MAIÚSCULAS, urgência exagerada
|
||||
- Domínio suspeito (muitos números, extensões estranhas)
|
||||
- Sem número de factura/referência
|
||||
|
||||
Output no relatório:
|
||||
- [SPAM?] #ID - Assunto - remetente@suspeito.com
|
||||
- [NOVO?] #ID - Assunto - remetente@empresa.com (possível novo serviço)
|
||||
```
|
||||
|
||||
> [!warning] NUNCA eliminar automaticamente remetentes desconhecidos
|
||||
> Podem ser novos serviços. Sempre pedir confirmação manual.
|
||||
|
||||
**Remetentes CONHECIDOS (whitelist):**
|
||||
```
|
||||
Domínios confiáveis:
|
||||
- @elasticemail.com
|
||||
- @hetzner.com, @hetzner.de
|
||||
- @centos-webpanel.com, @control-webpanel.com
|
||||
- @canva.com
|
||||
- @meo.pt, @altice.pt, @documentos.meoempresas.pt
|
||||
- @cloudflare.com
|
||||
- @github.com
|
||||
- @google.com
|
||||
- @microsoft.com
|
||||
- @adobe.com
|
||||
- @figma.com
|
||||
- @notion.so
|
||||
- @openai.com, @email.openai.com
|
||||
- @anthropic.com
|
||||
- @openrouter.zendesk.com
|
||||
- @stripe.com
|
||||
- @paypal.com
|
||||
- @wise.com
|
||||
- @revolut.com
|
||||
- @bancobpi.pt
|
||||
```
|
||||
|
||||
Ver lista completa de remetentes e indicadores: `config/email-triage-rules.md`
|
||||
|
||||
### 2.2 Projectos com Deadline
|
||||
```
|
||||
mcp__desk-crm-v3__get_projects:
|
||||
- status: 2 (Em Progresso)
|
||||
- Filtrar: deadline esta semana
|
||||
```
|
||||
|
||||
### 2.3 Tarefas Pendentes (OBRIGATÓRIO - sempre incluir)
|
||||
```
|
||||
# Buscar TODAS as tarefas pendentes
|
||||
mcp__desk-crm-v3__get_tasks({ status: 1, limit: 50 }) # Não iniciadas
|
||||
mcp__desk-crm-v3__get_tasks({ status: 4, limit: 50 }) # Em curso
|
||||
mcp__desk-crm-v3__get_tasks({ status: 2, limit: 50 }) # Aguarda feedback
|
||||
mcp__desk-crm-v3__get_tasks({ overdue_only: true }) # Vencidas
|
||||
|
||||
# Organizar por:
|
||||
# 1. Prioridade (4=Urgente, 3=Alta, 2=Normal, 1=Baixa)
|
||||
# 2. Deadline (vencidas primeiro)
|
||||
# 3. Projecto (agrupar)
|
||||
|
||||
# Formato output:
|
||||
### 🔴 URGENTES (Prioridade 4)
|
||||
| ID | Tarefa | Projecto | Deadline | Tempo Est. |
|
||||
|----|--------|----------|----------|------------|
|
||||
|
||||
### 🟠 ALTA (Prioridade 3)
|
||||
...
|
||||
```
|
||||
|
||||
### 2.4 Verificar Estimativas de Tempo
|
||||
```
|
||||
Para cada tarefa importante, verificar se tem estimativa:
|
||||
mcp__desk-crm-v3__get_task_time_estimates({ task_id: X })
|
||||
|
||||
Se não tem → sugerir definir:
|
||||
mcp__desk-crm-v3__set_task_estimated_time({
|
||||
task_id: X,
|
||||
estimated_hours: Y,
|
||||
estimated_minutes: Z,
|
||||
notes: "Estimativa"
|
||||
})
|
||||
```
|
||||
|
||||
## Passo 3: Gestão de Emails (MCP IMAP)
|
||||
|
||||
### 3.1 Listar contas disponíveis
|
||||
```
|
||||
imap_list_accounts
|
||||
# Verificar que todas as 12 contas estão acessíveis
|
||||
```
|
||||
|
||||
### 3.2 Para CADA conta, processar emails
|
||||
```
|
||||
Contas: emanuel, it, help, suporte, contabilidade, financeiro,
|
||||
info, rh, mkt, design, news, aiktop
|
||||
|
||||
Para cada conta:
|
||||
1. imap_list_emails(account, folder="INBOX", limit=50)
|
||||
2. Classificar cada email:
|
||||
|
||||
SPAM (eliminar):
|
||||
- Subject contém: "lottery", "winner", "urgent money"
|
||||
- Remetente em blacklist conhecida
|
||||
- Caracteres estranhos no subject
|
||||
→ imap_delete_email(account, uid)
|
||||
|
||||
PROMOCIONAL (arquivar):
|
||||
- Subject contém: "newsletter", "promo", "desconto", "oferta"
|
||||
- Remetente: *@marketing.*, *@news.*, *@promo.*
|
||||
- Headers: List-Unsubscribe presente
|
||||
→ imap_move_email(account, uid, "Promotions")
|
||||
|
||||
FACTURA PAGA (reencaminhar):
|
||||
- Subject contém: "factura", "invoice", "recibo", "pagamento"
|
||||
- Subject contém: "pago", "paid", "confirmado"
|
||||
- Anexos PDF com padrão de factura
|
||||
→ Registar para reencaminhar para contabilidade@descomplicar.pt
|
||||
|
||||
PRIORITÁRIO (listar):
|
||||
- Remetente: cliente conhecido (verificar DeskCRM)
|
||||
- Subject contém: "urgente", "urgent", "problema", "erro"
|
||||
- Resposta a thread existente
|
||||
→ Incluir no relatório diário
|
||||
```
|
||||
|
||||
### 3.3 Resumo de acções
|
||||
```
|
||||
Contabilizar:
|
||||
- X emails eliminados (spam)
|
||||
- Y emails arquivados (promocionais)
|
||||
- Z facturas para contabilidade
|
||||
- W emails prioritários pendentes
|
||||
```
|
||||
|
||||
## Passo 4: Calendário (opcional)
|
||||
|
||||
```
|
||||
# Se MCP Google Calendar disponível:
|
||||
# google_calendar_list_events(date=today)
|
||||
# Por agora: Verificar agenda manualmente
|
||||
```
|
||||
|
||||
## Passo 5: Gerar Relatório
|
||||
|
||||
Formatar output seguindo template:
|
||||
|
||||
```markdown
|
||||
## 📅 Checkup Diário - YYYY-MM-DD (Dia da Semana)
|
||||
|
||||
### 🎫 Tickets (X abertos, Y urgentes)
|
||||
[Lista de tickets urgentes com [!]]
|
||||
[Lista de tickets abertos]
|
||||
|
||||
### 📧 Emails Prioritários
|
||||
[Quando disponível]
|
||||
|
||||
### 📆 Agenda de Hoje
|
||||
[Quando disponível]
|
||||
|
||||
### 🎯 Prioridades Sugeridas
|
||||
1. [Baseado em urgência e deadlines]
|
||||
2. [...]
|
||||
3. [...]
|
||||
|
||||
### ⏰ Deadlines Esta Semana
|
||||
[Lista de projectos/tarefas com deadline]
|
||||
```
|
||||
|
||||
## Passo 6: SEGUNDA-FEIRA - Planeamento Semanal
|
||||
|
||||
```
|
||||
Verificar dia da semana
|
||||
Se SEGUNDA-FEIRA:
|
||||
|
||||
1. RECOLHER TAREFAS DA SEMANA INTEIRA
|
||||
- Todas as tarefas pendentes (status 1, 2, 4)
|
||||
- Todas as tarefas vencidas
|
||||
- Filtrar: deadline até domingo
|
||||
- Incluir estimativas de tempo
|
||||
|
||||
2. RECOLHER CALENDÁRIO DA SEMANA
|
||||
mcp__google-workspace__get_events({
|
||||
user_google_email: "emanuelalmeidaa@gmail.com",
|
||||
time_min: "YYYY-MM-DD" (hoje),
|
||||
time_max: "YYYY-MM-DD" (domingo),
|
||||
max_results: 50
|
||||
})
|
||||
|
||||
3. VERIFICAR ESTIMATIVAS DE TEMPO
|
||||
Para tarefas sem estimativa:
|
||||
- Sugerir tempo baseado no tipo
|
||||
- PERGUNTAR ao utilizador se correcto
|
||||
- Definir via set_task_estimated_time
|
||||
|
||||
4. PEDIR INDICAÇÕES AO UTILIZADOR
|
||||
Usar AskUserQuestion:
|
||||
- Disponibilidade semanal (horas)
|
||||
- Horários preferidos para foco
|
||||
- Prioridades especiais
|
||||
- Compromissos pessoais
|
||||
- Tarefas para delegar
|
||||
|
||||
5. DISTRIBUIR TAREFAS PELA AGENDA
|
||||
- Calcular capacidade vs carga
|
||||
- Distribuir por dia/horário
|
||||
- Criar eventos no calendário (opcional)
|
||||
- Alertar se capacidade excedida
|
||||
|
||||
6. OUTPUT: Planeamento Semanal
|
||||
- Tabela por dia com tarefas
|
||||
- Total horas por dia
|
||||
- Alertas de capacidade
|
||||
- Lista de delegações
|
||||
```
|
||||
|
||||
## Passo 7: Manutenção WordPress (se Sexta-feira)
|
||||
|
||||
```
|
||||
Verificar dia da semana
|
||||
Se sexta-feira:
|
||||
- Listar os 10 sites da rede
|
||||
- Sugerir executar manutenção
|
||||
- Oferecer checkup de segurança
|
||||
```
|
||||
|
||||
## Passo 8: Resumo de Pendentes (do CRM)
|
||||
|
||||
```
|
||||
📊 RESUMO - Mostrar no relatório
|
||||
|
||||
Os pendentes são obtidos directamente do Desk CRM (já recolhidos no Passo 2).
|
||||
NÃO há documento PENDENTES separado - os dados ficam no relatório diário.
|
||||
|
||||
### CATEGORIZAÇÃO
|
||||
|
||||
Com base nos dados já recolhidos:
|
||||
- 🔴 Urgentes: priority = 4
|
||||
- 🟠 Alta Prioridade: priority = 3
|
||||
- 🟡 Vencidas: overdue_only = true
|
||||
- 🟢 Esta Semana: deadline dentro de 7 dias
|
||||
- 🎫 Tickets: status 1, 2
|
||||
- 👤 Leads: status 7, 14 (Novos)
|
||||
- 📝 Propostas: status 4 (Para Fazer)
|
||||
|
||||
### FORMATO NO RELATÓRIO
|
||||
|
||||
| Categoria | Qtd |
|
||||
|----|----:|
|
||||
| 🔴 Urgentes | X |
|
||||
| 🟠 Alta Prioridade | X |
|
||||
| 🟡 Vencidas | X |
|
||||
| 🎫 Tickets Abertos | X |
|
||||
| 👤 Leads Novos | X |
|
||||
|
||||
### LINKS CRM
|
||||
|
||||
| Tipo | Formato Link |
|
||||
|------|--------------|
|
||||
| Tarefa | [#ID](https://desk.descomplicar.pt/admin/tasks/view/ID) |
|
||||
| Ticket | [#ID](https://desk.descomplicar.pt/admin/tickets/ticket/ID) |
|
||||
| Lead | [LID](https://desk.descomplicar.pt/admin/leads/index/ID) |
|
||||
```
|
||||
|
||||
## Passo 9: Criar Nota Diária no Obsidian
|
||||
|
||||
```
|
||||
Criar ficheiro no vault Planeamento:
|
||||
- Path: /media/ealmeida/Dados/GDrive/Cloud/EAL/Planeamento/00-Inbox/
|
||||
- Filename: YYYY-MM-DD-checkup.md
|
||||
- Content: Relatório com dados recolhidos
|
||||
|
||||
Template:
|
||||
---
|
||||
title: Checkup YYYY-MM-DD
|
||||
date: YYYY-MM-DD
|
||||
type: checkup
|
||||
status: active
|
||||
---
|
||||
|
||||
## Checkup Diário - YYYY-MM-DD
|
||||
|
||||
[Conteúdo do relatório]
|
||||
|
||||
⚡ LINKS CRM: Todas as tarefas com link directo
|
||||
- Formato: [#ID](https://desk.descomplicar.pt/admin/tasks/view/ID)
|
||||
|
||||
Se segunda-feira:
|
||||
- Incluir secção "Planeamento Semanal"
|
||||
- Tabela com distribuição de tarefas por dia
|
||||
```
|
||||
|
||||
## Passo 10: Guardar em Supabase
|
||||
|
||||
```
|
||||
mcp__memory-supabase__save_memory:
|
||||
- content: "Checkup diário executado - X tickets, Y tarefas, Z urgentes"
|
||||
- tags: ["today", "checkup", "YYYY-MM-DD"]
|
||||
- summary: "Checkup diário YYYY-MM-DD"
|
||||
- metadata: {
|
||||
tickets_count: X,
|
||||
tasks_count: Y,
|
||||
urgent_count: Z,
|
||||
is_monday: true/false,
|
||||
weekly_hours_planned: H
|
||||
}
|
||||
```
|
||||
|
||||
## Passo 11: Resumo Final
|
||||
|
||||
Apresentar:
|
||||
- Métricas do dia
|
||||
- Top 3 prioridades recomendadas
|
||||
- Alertas importantes
|
||||
- Próximos passos sugeridos
|
||||
|
||||
Se segunda-feira, adicionar:
|
||||
- Resumo do planeamento semanal
|
||||
- Capacidade vs carga
|
||||
- Tarefas delegadas
|
||||
- Alertas de sobrecarga
|
||||
Agregar resultados de todas as sub-skills.
|
||||
Criar nota Obsidian em `00-Inbox/DD-MM-YYYY-checkup.md`.
|
||||
Guardar em Supabase.
|
||||
Limpar temporarios `~/.claude-work/today-*.json`.
|
||||
|
||||
@@ -120,6 +120,19 @@ aliases: ["{{DATE}}"]
|
||||
|
||||
---
|
||||
|
||||
## Sprint / Spec Activos
|
||||
|
||||
| Projecto | Spec | Sprint | Progresso | Checkpoint |
|
||||
|----------|------|--------|-----------|------------|
|
||||
{{#ACTIVE_SPECS}}
|
||||
| {{PROJECT}} | {{SPEC_STATUS}} | {{SPRINT_ID}} | {{TASKS_DONE}}/{{TASKS_TOTAL}} tasks | {{CHECKPOINT}} |
|
||||
{{/ACTIVE_SPECS}}
|
||||
{{^ACTIVE_SPECS}}
|
||||
| — | Nenhum sprint/spec activo | — | — | — |
|
||||
{{/ACTIVE_SPECS}}
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notas do Dia
|
||||
|
||||
> [!note] Observações
|
||||
|
||||
365
gestao/skills/validate-component/SKILL.md
Normal file
365
gestao/skills/validate-component/SKILL.md
Normal file
@@ -0,0 +1,365 @@
|
||||
---
|
||||
name: validate-component
|
||||
description: Valida skills/agents para alinhamento com procedimentos Hub. Use quando "validar skill", "verificar agent", "audit component", "check procedure compliance", antes de deploy de nova skill/agent. Verifica se componente referencia procedimentos (não duplica), segue padrão de referenciação.
|
||||
---
|
||||
|
||||
# /validate-component - Validador de Componentes
|
||||
|
||||
Audita skills e agents para garantir alinhamento com padrão de centralização de procedimentos Hub.
|
||||
|
||||
---
|
||||
|
||||
## Referências e Documentação
|
||||
|
||||
**SEMPRE consultar:**
|
||||
- **[Hub CLAUDE.md](file:///media/ealmeida/Dados/Hub/CLAUDE.md)** - Secção "Organização de Procedimentos" (padrão referenciação)
|
||||
- **[/mcp-dev skill](file:///home/ealmeida/.claude/plugins/marketplaces/descomplicar-plugins/infraestrutura/skills/mcp-dev/SKILL.md)** - Exemplo padrão ouro de referenciação
|
||||
|
||||
---
|
||||
|
||||
## O Que Valida
|
||||
|
||||
### 1. Procedimentos Embeddados (RED FLAG)
|
||||
|
||||
**Detecta conteúdo que deve estar em PROC-*:**
|
||||
- ✗ Checklists extensas (>10 itens)
|
||||
- ✗ Regras de validação detalhadas
|
||||
- ✗ Troubleshooting guides completos
|
||||
- ✗ Standards e convenções
|
||||
- ✗ Best practices longas
|
||||
- ✗ Workflows complexos passo-a-passo
|
||||
|
||||
### 2. Referenciação Correcta (GREEN FLAG)
|
||||
|
||||
**Verifica se componente referencia procedimentos:**
|
||||
- ✓ Secção "Referências e Documentação"
|
||||
- ✓ Links file:// para PROCs relevantes
|
||||
- ✓ Descrição breve do que cada PROC cobre
|
||||
- ✓ Instrução "SEMPRE consultar antes de..."
|
||||
|
||||
### 3. Separação Clara
|
||||
|
||||
**O que DEVE ficar no componente:**
|
||||
- ✓ Comandos e templates
|
||||
- ✓ Instruções operacionais curtas
|
||||
- ✓ Decisão "quando usar"
|
||||
- ✓ Exemplos práticos inline
|
||||
|
||||
**O que DEVE ir para PROC:**
|
||||
- ✗ Regras e standards
|
||||
- ✗ Checklists de validação
|
||||
- ✗ Troubleshooting detalhado
|
||||
- ✗ Melhores práticas extensas
|
||||
|
||||
---
|
||||
|
||||
## Protocolo de Validação
|
||||
|
||||
### Para Skills
|
||||
|
||||
```
|
||||
1. LER skill SKILL.md completo
|
||||
|
||||
2. VERIFICAR secção "Referências e Documentação":
|
||||
- Existe? (GREEN se sim, sugerir criar se não)
|
||||
- Tem links file:// para PROCs? (GREEN se sim)
|
||||
- Links são relevantes para o domínio da skill?
|
||||
|
||||
3. DETECTAR procedimentos embeddados:
|
||||
- Procurar padrões: "Checklist", "Steps", "Validação", "Troubleshooting"
|
||||
- Se >100 linhas de instruções → SUGERIR extrair para PROC
|
||||
|
||||
4. AVALIAR qualidade referenciação:
|
||||
- Links funcionam? (teste paths)
|
||||
- Descrição do PROC é clara?
|
||||
- Indica quando consultar?
|
||||
|
||||
5. GERAR relatório (ver formato abaixo)
|
||||
```
|
||||
|
||||
### Para Agents
|
||||
|
||||
```
|
||||
1. LER agent .md completo (frontmatter + system prompt)
|
||||
|
||||
2. VERIFICAR system prompt tem secção "Referências":
|
||||
- Existe? (GREEN se sim)
|
||||
- Tem links file:// para PROCs relevantes?
|
||||
|
||||
3. DETECTAR procedimentos embeddados no system prompt:
|
||||
- Padrões similares a skills
|
||||
- Workflows >50 linhas no prompt
|
||||
|
||||
4. AVALIAR se agent conhece procedimentos do seu domínio:
|
||||
- wordpress-plugin-developer → deve referenciar PROC-WordPress-*
|
||||
- mcp-protocol-developer → deve referenciar PROC-MCP-*
|
||||
|
||||
5. GERAR relatório
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Formato Relatório
|
||||
|
||||
```markdown
|
||||
# Relatório Validação: [nome-componente]
|
||||
|
||||
**Tipo:** Skill | Agent
|
||||
**Path:** [caminho completo]
|
||||
**Data:** YYYY-MM-DD HH:MM
|
||||
|
||||
---
|
||||
|
||||
## Status Geral
|
||||
|
||||
**Score:** X/10
|
||||
- ✅ 8-10: Excelente (nada a fazer)
|
||||
- ⚠️ 5-7: Atenção (melhorias sugeridas)
|
||||
- ❌ 0-4: Crítico (refactoring necessário)
|
||||
|
||||
---
|
||||
|
||||
## Checklist Validação
|
||||
|
||||
### Referenciação (Peso: 40%)
|
||||
- [ ] Secção "Referências e Documentação" existe
|
||||
- [ ] Links file:// para PROCs relevantes
|
||||
- [ ] Descrição clara do que cada PROC cobre
|
||||
- [ ] Instrução "SEMPRE consultar antes de..."
|
||||
|
||||
### Separação Conteúdo (Peso: 40%)
|
||||
- [ ] Sem checklists longas (>10 itens) embeddadas
|
||||
- [ ] Sem troubleshooting extenso embeddado
|
||||
- [ ] Sem standards/conventions detalhadas embeddadas
|
||||
- [ ] Sem workflows complexos embeddados
|
||||
|
||||
### Qualidade (Peso: 20%)
|
||||
- [ ] Links file:// funcionam (paths válidos)
|
||||
- [ ] Referencia PROCs do departamento correcto
|
||||
- [ ] Instruções operacionais concisas (<50 linhas)
|
||||
|
||||
---
|
||||
|
||||
## Issues Detectadas
|
||||
|
||||
### 🔴 Críticas (Bloqueia Deploy)
|
||||
|
||||
1. **[Tipo Issue]**
|
||||
- **Localização:** Linha X-Y
|
||||
- **Problema:** Descrição
|
||||
- **Impacto:** Duplicação procedimento / Info embeddada
|
||||
- **Acção:** Extrair para PROC-[Nome].md em [Departamento]/
|
||||
|
||||
### ⚠️ Avisos (Recomendado Corrigir)
|
||||
|
||||
1. **[Tipo Issue]**
|
||||
- **Localização:** Secção X
|
||||
- **Problema:** Descrição
|
||||
- **Sugestão:** Adicionar referência a PROC-[Nome].md
|
||||
|
||||
### ✅ Boas Práticas Observadas
|
||||
|
||||
1. Secção "Referências" bem estruturada
|
||||
2. Links file:// correctos
|
||||
3. Separação clara comando vs regra
|
||||
|
||||
---
|
||||
|
||||
## Recomendações
|
||||
|
||||
### Imediatas (P1)
|
||||
1. Extrair checklist linhas X-Y para PROC-[Nome].md
|
||||
2. Adicionar link file:// para PROC-[Outro].md
|
||||
|
||||
### Melhorias (P2)
|
||||
1. Expandir descrição PROC na referência
|
||||
2. Adicionar exemplo uso combinado skill + PROC
|
||||
|
||||
### Opcional (P3)
|
||||
1. Considerar criar PROC-[NovoTema].md para conteúdo Y
|
||||
|
||||
---
|
||||
|
||||
## Procedimentos Relevantes Existentes
|
||||
|
||||
| PROC | Departamento | Relevância | Status Link |
|
||||
|------|--------------|------------|-------------|
|
||||
| PROC-MCP-Desenvolvimento.md | D7 | Alta | ✅ Referenciado |
|
||||
| PROC-WordPress-Hardening.md | D7 | Média | ❌ Não referenciado |
|
||||
|
||||
---
|
||||
|
||||
## Próximos Passos
|
||||
|
||||
1. [ ] Corrigir issues críticas (se houver)
|
||||
2. [ ] Aplicar recomendações P1
|
||||
3. [ ] Re-validar com /validate-component
|
||||
4. [ ] Deploy quando score ≥7/10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Exemplos de Uso
|
||||
|
||||
### Exemplo 1: Skill com Boa Referenciação
|
||||
|
||||
```
|
||||
User: /validate-component /mcp-dev
|
||||
Assistant:
|
||||
|
||||
# Relatório Validação: mcp-dev
|
||||
|
||||
**Score:** 9/10 ✅
|
||||
|
||||
## Status Geral
|
||||
Excelente! Padrão ouro de referenciação.
|
||||
|
||||
## Issues Detectadas
|
||||
Nenhuma crítica. Pequena sugestão: expandir descrição PROC-MCP-Session-Recovery.md.
|
||||
|
||||
## Boas Práticas
|
||||
- Secção "Referências e Documentação" completa
|
||||
- 5 links file:// para PROCs relevantes
|
||||
- Instruções "SEMPRE consultar antes de..."
|
||||
- Separação clara: comandos na skill, regras nos PROCs
|
||||
```
|
||||
|
||||
### Exemplo 2: Agent com Procedimentos Embeddados
|
||||
|
||||
```
|
||||
User: /validate-component wordpress-plugin-developer
|
||||
Assistant:
|
||||
|
||||
# Relatório Validação: wordpress-plugin-developer
|
||||
|
||||
**Score:** 4/10 ❌
|
||||
|
||||
## Issues Críticas
|
||||
|
||||
1. **Checklist WordPress Security (60 linhas embeddadas)**
|
||||
- Localização: Linhas 234-294
|
||||
- Problema: Checklist completa hardening no system prompt
|
||||
- Acção: Extrair para PROC-WordPress-Hardening.md (D7-Tecnologia)
|
||||
|
||||
2. **Sem Secção Referências**
|
||||
- System prompt não referencia nenhum PROC
|
||||
- Deve adicionar links para PROC-WordPress-* relevantes
|
||||
|
||||
## Recomendações P1
|
||||
|
||||
1. Criar PROC-WordPress-Hardening.md com checklist
|
||||
2. Criar PROC-WordPress-CLI.md com comandos WP-CLI
|
||||
3. Adicionar secção "Referências" no system prompt
|
||||
4. Re-validar após refactoring
|
||||
```
|
||||
|
||||
### Exemplo 3: Skill Nova Antes de Deploy
|
||||
|
||||
```
|
||||
User: Criei /easypanel-deploy skill. Validar antes de commit?
|
||||
Assistant: /validate-component easypanel-deploy
|
||||
|
||||
# Relatório Validação: easypanel-deploy
|
||||
|
||||
**Score:** 6/10 ⚠️
|
||||
|
||||
## Avisos
|
||||
|
||||
1. **Workflow Deploy (40 linhas)**
|
||||
- Localização: Secção "Deployment Workflow"
|
||||
- Problema: Workflow passo-a-passo detalhado
|
||||
- Sugestão: Considerar PROC-Deployment-EasyPanel.md (D7/INF)
|
||||
- Alternativa: Manter se workflow é core da skill
|
||||
|
||||
2. **API Reference Embeddada**
|
||||
- 80 linhas de endpoints EasyPanel
|
||||
- Sugestão: Mover para references/easypanel-api.md
|
||||
|
||||
## Recomendações
|
||||
|
||||
Score 6/10 é aceitável para deploy. Opcionalmente:
|
||||
- Extrair API reference para ficheiro separado (progressive disclosure)
|
||||
- Se workflow deploy for usado por outros componentes → PROC
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Integração CI/CD
|
||||
|
||||
Para validação automática antes de commit:
|
||||
|
||||
```bash
|
||||
# .git/hooks/pre-commit
|
||||
if [[ $(git diff --cached --name-only) =~ (skills|agents) ]]; then
|
||||
echo "Validating modified components..."
|
||||
claude-code /validate-component [path]
|
||||
fi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Critérios de Score
|
||||
|
||||
### Score 9-10 (Excelente)
|
||||
- Secção "Referências" completa e bem estruturada
|
||||
- Todos os PROCs relevantes referenciados
|
||||
- Zero procedimentos embeddados
|
||||
- Separação clara comando vs regra
|
||||
|
||||
### Score 7-8 (Bom)
|
||||
- Secção "Referências" existe
|
||||
- Maioria dos PROCs referenciados
|
||||
- Pequenos procedimentos embeddados (<20 linhas)
|
||||
- Maioria do conteúdo bem separado
|
||||
|
||||
### Score 5-6 (Aceitável)
|
||||
- Algumas referências, mas incompletas
|
||||
- Procedimentos embeddados médios (20-50 linhas)
|
||||
- Separação parcial
|
||||
- Deploy OK mas melhorias recomendadas
|
||||
|
||||
### Score 3-4 (Crítico)
|
||||
- Sem secção "Referências" ou vazia
|
||||
- Procedimentos longos embeddados (>50 linhas)
|
||||
- Má separação comando vs regra
|
||||
- Refactoring necessário antes deploy
|
||||
|
||||
### Score 0-2 (Bloqueado)
|
||||
- Zero referências a PROCs
|
||||
- Procedimentos extensos embeddados (>100 linhas)
|
||||
- Duplicação crítica de conteúdo
|
||||
- Deploy BLOQUEADO até corrigir
|
||||
|
||||
---
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
**NUNCA:**
|
||||
- ❌ Aprovar deploy com score <5/10
|
||||
- ❌ Ignorar issues críticas
|
||||
- ❌ Validar sem ler componente completo
|
||||
- ❌ Sugerir extrair conteúdo que é core da skill
|
||||
|
||||
**SEMPRE:**
|
||||
- ✅ Testar links file:// funcionam
|
||||
- ✅ Verificar departamento correcto dos PROCs
|
||||
- ✅ Distinguir "core skill" vs "procedimento duplicado"
|
||||
- ✅ Dar exemplos concretos de refactoring
|
||||
|
||||
---
|
||||
|
||||
## Referência: /mcp-dev (Padrão Ouro)
|
||||
|
||||
Ver secção "Referências e Documentação" em:
|
||||
`/home/ealmeida/.claude/plugins/.../mcp-dev/SKILL.md`
|
||||
|
||||
**O que faz bem:**
|
||||
- Secção dedicada no topo
|
||||
- 5 links file:// para PROCs D7-Tecnologia
|
||||
- Descrição breve de cada PROC
|
||||
- Instrução clara "SEMPRE consultar antes de criar/modificar MCPs"
|
||||
- Quick Reference sintética (não duplica PROC)
|
||||
|
||||
---
|
||||
|
||||
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
Auto-trigger >10 tool calls. Auto-alerts degradação >15%, error rate >10%.
|
||||
Use when "worklog", "reflect", "reflexão", "registar trabalho", "log", "análise", "melhoria", "insight", ao parar timer.
|
||||
author: Descomplicar® Crescimento Digital
|
||||
version: 4.0.0
|
||||
version: 4.1.0
|
||||
quality_score: 95
|
||||
user_invocable: true
|
||||
category: productivity
|
||||
@@ -74,6 +74,12 @@ Skill unificada: regista trabalho, analisa sessão, sugere acções, guarda mem
|
||||
- Erros e soluções
|
||||
- Padrões detectados
|
||||
- Eficiência (tool calls vs resultado)
|
||||
3b. VERIFICAR alinhamento com spec (se aplicavel):
|
||||
- Detectar ficheiros modificados na sessao
|
||||
- Procurar SPEC.md no directorio pai (ate 3 niveis)
|
||||
- SE spec approved/in_progress: comparar ficheiros vs scope items
|
||||
- SE ficheiro nao mapeia para scope: incluir SCOPE ALERT no worklog
|
||||
- SE sem SPEC.md: ignorar silenciosamente
|
||||
4. VERIFICAR se há algo novo a documentar
|
||||
- Se sessão vazia/sem dados → NÃO gerar
|
||||
5. Gerar comentário HTML (ver formato abaixo)
|
||||
@@ -133,6 +139,11 @@ Memória: Guardada / N/A
|
||||
<br><strong>Solução:</strong> Como foi resolvido</li>
|
||||
</ul>
|
||||
|
||||
<h4>Alertas de Scope</h4>
|
||||
<ul>
|
||||
<li><strong>SCOPE ALERT:</strong> <code>path</code> nao mapeado no SPEC</li>
|
||||
</ul>
|
||||
|
||||
<h4>Padrões Detectados</h4>
|
||||
<ul>
|
||||
<li>Padrão identificado e impacto</li>
|
||||
@@ -270,7 +281,7 @@ Perguntas ao analisar sessão:
|
||||
- Faltou informação que deveria estar em memória?
|
||||
- Alguma regra CLAUDE.md foi violada?
|
||||
- Os MCPs funcionaram correctamente?
|
||||
- Algum TaskForce foi utilizado? Registar métricas.
|
||||
- **Context health:** CLAUDE.md global <200 linhas? MEMORY.md <80 linhas? (Ref: DEV-CTX-001)
|
||||
|
||||
---
|
||||
|
||||
@@ -335,4 +346,4 @@ Perguntas ao analisar sessão:
|
||||
|
||||
---
|
||||
|
||||
*Skill v4.0.0 | 2026-02-06 | Descomplicar(R)*
|
||||
*Skill v4.1.0 | 2026-03-04 | Descomplicar(R)*
|
||||
|
||||
Reference in New Issue
Block a user