fix(project-manager): remover Dify KB das descriptions, marcar nota TODO

Dify foi removido 06-03-2026. Skills brainstorm/discover ainda referenciam-no
no corpo. Bump v1.2 + nota top-of-file. Reescrita workflow para próxima sessão.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 04:52:03 +01:00
parent 6285be6c2e
commit faef9b47dc
185 changed files with 9238 additions and 589 deletions
+14 -2
View File
@@ -8,7 +8,7 @@ allowed-tools: Read, Write, Edit, Bash, mcp__gitea__list_repo_action_workflows,
Skill para criar e gerir pipelines CI/CD do AcidaOS via **Gitea Actions**.
> **Atenção:** O AcidaOS usa **Gitea Actions**, não GitHub Actions. A sintaxe é compatível mas o runner é self-hosted em `mcp-hub.descomplicar.pt`.
> **Atenção:** O AcidaOS usa **Gitea Actions**, não GitHub Actions. A sintaxe é compatível mas o runner é self-hosted em `gateway.descomplicar.pt`.
## Contexto
@@ -18,7 +18,7 @@ Repositórios Gitea:
acidaos-dashboard → Next.js Dashboard
Runners:
self-hosted @ mcp-hub.descomplicar.pt
self-hosted @ gateway.descomplicar.pt
Labels: [self-hosted, linux, rust, node]
Deploy target:
@@ -314,3 +314,15 @@ mcp__gitea__get_repo_action_job_log_preview({ owner: "descomplicar", repo: "acid
---
**Versão**: 1.0.0 | **Autor**: Descomplicar® | **Plugin**: acidaos
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -189,3 +189,15 @@ Antes de marcar tarefa como concluída:
---
**Versão**: 1.0.0 | **Autor**: Descomplicar® | **Plugin**: acidaos
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -230,3 +230,15 @@ cargo fmt --check # formatação correcta
---
**Versão**: 1.0.0 | **Autor**: Descomplicar® | **Plugin**: acidaos
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -237,3 +237,15 @@ pnpm lint # zero erros ESLint
---
**Versão**: 1.0.0 | **Autor**: Descomplicar® | **Plugin**: acidaos
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -104,3 +104,15 @@ A sandbox fornece um ambiente isolado com dados fictícios para desenvolvimento
- **[references/endpoints.md](references/endpoints.md)** - Catálogo completo de endpoints
- **Docs oficiais:** https://www.moloni.pt/dev/endpoints/
- **Sandbox:** https://www.moloni.pt/dev/sandbox/
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -299,3 +299,15 @@ mcp__n8n__search_templates({
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -112,3 +112,15 @@ curl -H "X-N8N-API-KEY: $KEY" https://automator.descomplicar.pt/api/v1/workflows
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -232,3 +232,15 @@ mcp__n8n__search_templates({
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -167,3 +167,15 @@ mcp__n8n__n8n_executions({
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -166,3 +166,15 @@ Slack (alertar)
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -158,3 +158,15 @@ curl -X POST https://automator.descomplicar.pt/webhook/meu-webhook \
---
*Skill v1.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -122,3 +122,15 @@ mcp__memory-supabase__save_memory {
---
*Core Standards v1.1 | 2026-03-12*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+43 -127
View File
@@ -1,149 +1,65 @@
---
name: agent-context-injector
description: Injecção dinâmica de contexto específico para cada agente — MCPs disponíveis, skills relevantes e datasets Dify.
description: Injeccao dinamica de contexto (MCPs e Skills) nos agentes via script Python + hook SessionStart com deteccao de staleness.
user-invocable: false
allowed-tools: Read, Glob, Grep, ToolSearch
---
# Agent Context Injector
Injecção dinâmica de contexto específico para cada agente.
Regeneracao automatica das seccoes "Your Available MCPs" e "Your Available Skills" em todos os agentes.
## Triggers
## Como funciona
Esta skill é activada automaticamente via hook `SubagentStart` quando:
- Um subagente é iniciado via Task tool
- Contexto precisa ser enriquecido com recursos do agente
1. **Hook SessionStart** (`~/.claude/hooks/agent-context-refresh.sh`) calcula hash dos inputs
2. Se hash mudou → executa `~/.claude/scripts/regenerate-agent-context.py`
3. Script le frontmatter de cada agente, inventario MCPs, mapeamento domain e skills dos plugins
4. Gera seccoes entre marcadores `<!-- BEGIN:AUTO-CONTEXT -->` / `<!-- END:AUTO-CONTEXT -->`
5. Guarda novo hash em `~/.claude/.agent-context-hash`
## Capabilities
## Ficheiros
### 1. Context Building
- Consultar mapeamento agente → recursos na BD
- Gerar lista de MCPs disponíveis para o agente
- Gerar lista de skills relevantes
- Incluir datasets Dify para consulta automática
| Ficheiro | Funcao |
|----------|--------|
| `~/.claude/scripts/regenerate-agent-context.py` | Script principal de regeneracao |
| `~/.claude/hooks/agent-context-refresh.sh` | Hook SessionStart com staleness |
| `~/.claude/_resources/domain-mcp-map.json` | Mapeamento domain -> MCPs recomendados |
| `~/.claude/_resources/mcps.json` | Inventario de 34+ MCPs |
| `~/.claude/.agent-context-hash` | Hash MD5 dos inputs (staleness) |
### 2. Token Optimization
- Calcular tokens do contexto gerado
- Priorizar recursos por relevância
- Truncar se exceder limite (~800 tokens)
- Cache de contextos frequentes
## Dados de entrada
### 3. Dynamic Injection
- Adicionar contexto ao prompt do agente
- Incluir instruções de uso dos recursos
- Configurar auto-consult para datasets
- **Agentes:** `~/.claude/agents/*.md` — frontmatter com `domain`, `skills`
- **MCPs:** `~/.claude/_resources/mcps.json` — lista com `id`, `name`, `category`
- **Domain map:** `~/.claude/_resources/domain-mcp-map.json` — primary/recommended por domain
- **Skills:** `descomplicar-plugins/*/skills/*/SKILL.md` — frontmatter com `name`, `description`
## Template de Contexto
## Performance
```markdown
## Recursos Disponíveis
| Cenario | Tempo |
|---------|-------|
| Sem mudancas (hash match) | ~66ms |
| Com regeneracao (61 agentes) | ~2-3s |
### MCPs Activos
$MCP_LIST
- Usar proactivamente para operações relevantes
## Manutencao
### Skills Recomendadas
$SKILLS_LIST
- Invocar quando tarefa corresponder
- **Adicionar MCP:** actualizar `mcps.json` e `domain-mcp-map.json` → proximo SessionStart regenera
- **Adicionar skill:** criar SKILL.md no plugin → proximo SessionStart regenera
- **Adicionar agente:** criar .md com frontmatter `domain:` → proximo SessionStart gera contexto
- **Mudar domain map:** editar `domain-mcp-map.json` → proximo SessionStart regenera
### Knowledge Base (Dify)
$DATASETS_LIST
- AUTO-CONSULT: Consultar ANTES de responder
- Query template: "$QUERY_TEMPLATE"
## Tarefa Desk
### Plugins
$PLUGINS_LIST
- Comandos disponíveis: $PLUGIN_COMMANDS
#1996 — Sistema injeccao Skills e MCPs nos agentes
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
## Workflow
```
SUBAGENT START → QUERY BD → BUILD CONTEXT → INJECT → EXECUTE
```
1. **Hook SubagentStart** dispara
2. **Identificar agente** pelo `subagent_type`
3. **Query MySQL**:
```sql
SELECT r.resource_type, r.resource_id, r.priority
FROM cr_agent_resources r
JOIN cr_agents a ON r.agent_id = a.id
WHERE a.slug = '{agent_slug}'
AND r.auto_inject = TRUE
ORDER BY r.priority ASC;
```
4. **Consultar agent-knowledge-config.json** para datasets
5. **Gerar contexto** com template
6. **Calcular tokens** e optimizar se necessário
7. **Injectar** no prompt do agente
## Métricas Target
| Métrica | Target |
|---------|--------|
| Tempo de injecção | < 2s |
| Tokens médios | ~772 |
| Cache hit rate | > 60% |
| Erro rate | < 1% |
## Exemplo de Output
Para `wordpress-plugin-developer`:
```markdown
## Recursos Disponíveis
### MCPs Activos
- `cwp` - Gestão servidor CentOS WebPanel
- `ssh-unified` - Acesso SSH a servidores
- `filesystem` - Operações de ficheiros
### Skills Recomendadas
- `/wp-dev` - Desenvolvimento WordPress
- `/wp-performance` - Optimização performance
- `/elementor` - Desenvolvimento Elementor
### Knowledge Base (Dify)
- `wordpress-development` - Docs WP, hooks, filters
- `woocommerce-api` - API WooCommerce
- AUTO-CONSULT: Consultar ANTES de implementar
### Plugins
- `superpowers` - TDD obrigatório
- `code-review` - Review automático
```
## Configuração
Ficheiro `agent-knowledge-config.json`:
```json
{
"wordpress-plugin-developer": {
"datasets": ["wordpress-development", "woocommerce-api"],
"auto_consult": true,
"query_template": "WordPress {topic} best practices 2026",
"priority_datasets": ["wordpress-development"]
}
}
```
## Integração com Scripts Existentes
Este skill complementa (não substitui) os scripts Python existentes:
- `inject-mcp-context.py` - Continua activo
- `inject-skills-context.py` - Continua activo
A skill adiciona:
- Datasets Dify dinâmicos
- Plugins activos
- Contexto mais rico e actualizado
## Limites
- Máximo ~800 tokens de contexto injectado (para preservar espaço)
- Não modifica comportamento do agente, apenas enriquece contexto
- Depende de mapeamentos correctos em `cr_agent_resources`
- Cache de 5 minutos pode mostrar dados desactualizados
- Não funciona para agentes não registados na BD
*Adicionar nova linha após cada erro corrigido.*
@@ -283,3 +283,14 @@ Component Generator:
- Não cria componentes duplicados (verifica slug existente)
- Requer conexão MySQL para registo em cr_*
- Não modifica componentes existentes (usar Edit tool)
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -260,3 +260,15 @@ Resultado:
- Backup não inclui tabelas não-cr_*
- Optimização pode demorar em tabelas grandes (>1M registos)
- Não substitui backups gerais do Desk CRM
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -203,3 +203,15 @@ Infrastructure Manager:
- Detecção de órfãos limitada a tabelas cr_* conhecidas
- Não corrige problemas automaticamente (apenas reporta)
- Telemetria depende de hooks activos e funcionais
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -175,3 +175,15 @@ Link Desk CRM: `https://desk.descomplicar.pt/admin/projects/view/65`
---
**Desk CRM:** Projecto #65, Task #1637
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -141,3 +141,15 @@ Avalia todas as regras e sugere `/plugin-config apply` se detectar alteracoes ne
---
*Skill v3.0.0 | 04-03-2026 | Descomplicar*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -188,3 +188,15 @@ Quality Validator:
- Não modifica componentes (apenas lê e reporta)
- Não cria componentes (usar component-generator)
- Não executa correções automáticas (usar /descomplicar:upgrade)
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -223,3 +223,15 @@ Relationship Manager:
- Análise de impacto limitada a relacionamentos directos
- Não propaga alterações automaticamente (requer confirmação)
- Depende de consistência das tabelas cr_* na BD
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+77 -29
View File
@@ -1,10 +1,10 @@
---
name: auto-expense
description: Criação automática de despesas a partir de facturas detectadas no IMAP e tickets. Extrai dados, verifica duplicados e cria despesas no Desk CRM com PDF anexo.
description: Criação automática de despesas a partir de facturas detectadas no IMAP e tickets. Extrai dados, verifica duplicados por reference_no e cria despesas no Desk CRM com PDF anexo.
disable-model-invocation: true
---
# /auto-expense v1.0
# /auto-expense v1.1
Cria despesas automaticamente a partir de facturas detectadas pelo IMAP e tickets.
@@ -49,28 +49,57 @@ Para cada factura na lista:
3. EXTRAIR DO HTML:
- Valor (padroes: $XX.XX, XX,XX EUR, USD XX.XX, Total: XX.XX)
- Referencia/Invoice number
- Referencia/Invoice number (OBRIGATORIO — guardar para dedup)
- Data da factura
4. VERIFICAR DUPLICADO (2 camadas):
Camada 1 - Desk CRM:
Pesquisar: mesmo fornecedor + mesmo valor (±0.05) + mesma data (±3 dias)
Se match → NAO criar, registar como duplicado
5. CRIAR DESPESA:
mcp__desk-crm-v3__create_expense({
category: [cat_id da tabela],
amount: [valor],
date: [data factura YYYY-MM-DD],
expense_name: "[Fornecedor] - [Referencia]",
note: "Auto-criado via /auto-expense",
currency: [2=USD ou 3=EUR],
tax: [0 ou 1],
send_invoice_to_customer: 0
})
```
### Passo 3: PDF (se existir anexo)
### Passo 3: Verificar duplicados (OBRIGATORIO — 3 camadas)
> **CRITICO: Este passo NUNCA pode ser saltado. Se saltado, causa duplicacao massiva de despesas.**
```
Camada 0 — Referencia de factura (PRIMARIA, mais fiavel):
get_expenses(search: "<reference_no>")
Para cada resultado: comparar campo reference_no
Se alguma despesa tem reference_no IGUAL → DUPLICADO CONFIRMADO
→ NAO criar, registar como duplicado com ID existente
Camada 1 — Fornecedor + Valor + Data:
get_expenses(search: "<fornecedor>")
Filtrar: mesmo valor (±0.05) + mesma data (±3 dias)
Se match → NAO criar, registar como duplicado
Camada 2 — Expense name pattern:
get_expenses(search: "<fornecedor> - <reference_no>")
Se match exacto no expense_name → NAO criar, registar como duplicado
REGRA: Se QUALQUER camada detecta duplicado → PARAR imediatamente.
Nunca criar despesa sem passar as 3 camadas com sucesso.
Registar cada duplicado detectado no output JSON (campo "duplicados").
```
### Passo 4: Criar despesa
```
APENAS se Passo 3 passou sem detectar duplicado:
mcp__desk-crm-v3__create_expense({
category: [cat_id da tabela],
amount: [valor],
date: [data factura YYYY-MM-DD],
expense_name: "[Fornecedor] - [Referencia]",
reference_no: "[numero factura/referencia]",
note: "Auto-criado via /auto-expense",
currency: [2=USD ou 3=EUR],
tax: [0 ou 1],
send_invoice_to_customer: 0
})
OBRIGATORIO: campo reference_no DEVE ser preenchido com o numero
de factura extraido. Este campo e a chave primaria de deduplicacao.
```
### Passo 5: PDF (se existir anexo)
```
a. GUARDAR LOCAL:
@@ -100,14 +129,14 @@ c. REGISTAR no Desk BD:
d. LIMPAR temporarios
```
### Passo 4: Actualizar CSV
### Passo 6: Actualizar CSV
```
CSV Path: /media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/MAPA-DESPESAS-YYYY.csv
Formato linha: id_desk;data;categoria;fornecedor;descricao;valor;SIM;ficheiro;email;Auto /auto-expense
```
### Passo 5: Escrever output JSON
### Passo 7: Escrever output JSON
```
Escrever em ~/.claude-work/today-expenses-{date}.json:
@@ -115,12 +144,15 @@ Escrever em ~/.claude-work/today-expenses-{date}.json:
"despesas_criadas": [
{"id": 1180, "fornecedor": "MEO", "valor": 76.26, "moeda": "EUR", "referencia": "FT A/861215955"}
],
"duplicados": 0,
"duplicados": [
{"fornecedor": "MEO", "referencia": "FT A/861215955", "existente_id": 1175, "camada": 0}
],
"flagged": [
{"fornecedor": "Desconhecido", "nota": "TOConline - emitente desconhecido: XPTO LDA"}
],
"erros": [],
"total_processadas": 1
"total_processadas": 1,
"total_duplicados": 0
}
```
@@ -152,7 +184,7 @@ tax = 0 → Fornecedores estrangeiros
send_invoice_to_customer = 0 → OBRIGATORIO (sem default na BD)
reference_no → coluna correcta (NAO "reference")
reference_no → coluna correcta (NAO "reference") — CHAVE DE DEDUPLICACAO
```
---
@@ -167,7 +199,8 @@ reference_no → coluna correcta (NAO "reference")
|--------|-----------|-------|-------|-----|-----|
### Duplicados Detectados (Y)
- [Fornecedor] [Valor] - ja existe como #ID
| Fornecedor | Ref | ID Existente | Camada |
|-----------|-----|-------------|--------|
### Pendentes Revisao (Z)
- [Plataforma] - emitente desconhecido: [nome]
@@ -179,11 +212,26 @@ reference_no → coluna correcta (NAO "reference")
- NUNCA usar currency=1 (nao existe)
- NUNCA converter USD para EUR (manter original com currency=2)
- NUNCA criar despesa sem verificar duplicado primeiro
- NUNCA criar despesa sem verificar duplicado primeiro (3 camadas obrigatorias)
- NUNCA omitir send_invoice_to_customer=0
- NUNCA omitir reference_no ao criar despesa (chave primaria de dedup)
- NUNCA saltar a Camada 0 (referencia de factura) — e a mais fiavel
- SEMPRE ler o email/ticket HTML para extrair valor real (nunca assumir)
- SEMPRE incluir reference_no quando disponivel
- SEMPRE logar duplicados detectados no output JSON com camada e ID existente
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
*Skill v1.1.0 | 30-03-2026 | Descomplicar | Fix: dedup por reference_no (DES-137)*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -293,3 +293,15 @@ Skill:
3. Executar workflow integrado
Output: [resultado completo com referências]
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -223,3 +223,15 @@ Skill:
3. Executar workflow integrado
Output: [resultado completo com referências]
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -430,3 +430,15 @@ User: Criar orçamento para lead João Silva
**Criado:** 2026-01-28
**Actualizado:** 2026-01-28
**Motivo:** Prevenção de erros CRM após incidente de duplicação
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+18
View File
@@ -306,6 +306,24 @@ Skills descontinuadas:
- Distinção Lead vs Customer
- Proposal vs Estimate
---
## Self-Healing
Antes de executar, ler `~/.claude-work/healing/crm.jsonl` (se existir). Cada linha é um padrão de erro conhecido:
```json
{"date":"YYYY-MM-DD","issue":"descrição do problema","fix":"como evitar","source":"user|auto"}
```
Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivamente. Após cada erro ou correcção do utilizador nesta skill, **adicionar nova linha** ao healing log com o padrão aprendido.
---
*Skill v2.0.0 | 2026-02-05 | Descomplicar®*
## Healing Log
<!-- Registo automático de erros e correcções nesta skill -->
+18
View File
@@ -235,6 +235,24 @@ Ao entrar numa pasta:
### v1.0.0
- Versão inicial
---
## Self-Healing
Antes de executar, ler `~/.claude-work/healing/desk.jsonl` (se existir). Cada linha é um padrão de erro conhecido:
```json
{"date":"YYYY-MM-DD","issue":"descrição do problema","fix":"como evitar","source":"user|auto"}
```
Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivamente. Após cada erro ou correcção do utilizador nesta skill, **adicionar nova linha** ao healing log com o padrão aprendido.
---
*Skill v3.0.0 | 2026-02-05 | Descomplicar®*
## Healing Log
<!-- Registo automático de erros e correcções nesta skill -->
+174
View File
@@ -0,0 +1,174 @@
---
name: estrategia-marca
description: Cria estratégias de marca completas seguindo a metodologia Descomplicar® (ACIDA + Framework 16Ps). Inclui fase de pesquisa de mercado com /deep-research antes do briefing. Guia a análise de público, posicionamento, Pitch Canvas, copywriting e documento final entregável. Usar quando o utilizador diz "estratégia de marca", "branding", "criar marca", "posicionamento", "16Ps", "/estrategia-marca", "análise de público", "narrativa de marca", "proposta de valor", "pitch canvas", "pain + gain", "copywriting estratégico", "identidade de marca", "pesquisa de mercado para marca", ou quando um cliente adquire o serviço EST-MRK-010.
---
# Skill: Estratégia de Marca
Guia completo para criar estratégias de marca Descomplicar® — da pesquisa de mercado ao documento final entregável.
---
## Fluxo de trabalho (8 fases)
### Fase 0 — Pesquisa de mercado
Antes do briefing com o cliente, fazer pesquisa independente. Verificar primeiro se já existem ficheiros de pesquisa (ex: pasta `Pesquisas/` no projecto).
**Se a pesquisa já existe:** ler os ficheiros relevantes e extrair síntese.
**Se não existe:** usar `/deep-research` (ou `mcp__tavily__tavily_research`) com os seguintes focos:
1. **Mercado/sector** — dimensão, crescimento, tendências, regulação
2. **Concorrentes** — posicionamento, mensagens, pricing, pontos fracos
3. **Público** — linguagem online, canais activos, dores expressas em fóruns/reviews
4. **Oportunidades** — gaps de mercado, tendências emergentes não exploradas
Guardar síntese em `Pesquisas/sintese-mercado.md` no projecto do cliente.
**Resultado esperado:** chegar ao briefing já com hipóteses validadas sobre o mercado e o público — não para impor, mas para fazer perguntas mais certeiras e poupar tempo ao cliente.
### Fase 1 — Activação e contexto
Ao iniciar, perguntar:
- Qual o nome do cliente/marca?
- Já existe briefing ou material de partida?
- Qual o sector/indústria?
- Temos exemplos de concorrentes?
Se existir projecto no Desk CRM, verificar com `get_project` antes de prosseguir.
### Fase 2 — Briefing estruturado
Conduzir entrevista com as perguntas de `references/perguntas-briefing.md`.
Organizar por blocos:
1. Negócio (problema, serviços, mercado)
2. Público-alvo (segmentos identificados)
3. Posicionamento actual vs desejado
4. Tom de voz e personalidade
5. Concorrência e diferenciação
### Fase 3 — Fundamentos estratégicos
Desenvolver com o cliente:
- **Proposta de valor única** — o que nos torna únicos, diferenciais, benefícios por camada
- **Missão, Visão, Valores e Objectivos** — com exemplos de como se manifestam na prática
- **Apresentação sumária** — empresa + serviços com tabela clara
- **Posicionamento** — declaração de posicionamento testável
Ver `references/framework-16ps.md` → Bloco A para questões orientadoras.
### Fase 4 — Análise de público (20 pontos por segmento)
**Obrigatório:** Antes dos segmentos psicográficos, identificar os nichos sectoriais relevantes para o produto. Usar `references/nichos.md` para seleccionar e analisar **pelo menos 5 nichos específicos** (ex: clínicas de saúde, imobiliárias, agências digitais — não "PMEs" como categoria vaga). Para cada nicho preencher os 8 pontos do guia de análise sectorial. Cruzar com os 20 pontos psicográficos abaixo para construir personas completas.
Para cada segmento identificado, desenvolver os 20 pontos na seguinte ordem:
1. Perfil Demográfico
2. Perfil Psicográfico
3. Dores
4. Anseios
5. Desejos
6. Frustrações
7. Preocupações
8. Medos
9. Inimigos
10. Linguagem
11. Como procuram ajuda/informação/dicas
12. Canais digitais activos
13. Estilo de Decisão
14. Mudanças (que sabem necessárias)
15. Resistência à mudança
16. Objecções típicas (+ como ultrapassar)
17. Forma de gerar emoção
18. Argumentos (a que são mais sensíveis)
19. Concorrentes (que alternativas avaliam)
20. Propostas Recusadas (e porquê)
Ver `references/metodologia-acida.md` para contexto e profundidade em cada ponto.
### Fase 5 — Pitch Canvas
Estrutura de 5 elementos:
- **Para quem:** segmento + problema específico
- **O problema:** dor principal na linguagem do cliente
- **A solução:** mecanismo único de resolução
- **O resultado:** transformação concreta (antes/depois + métrica)
- **Por que nós:** razão para acreditar
Criar também a **Declaração de mudança no mundo** — frase que resume o impacto maior da marca.
### Fase 6 — Copywriting estratégico
Sequência obrigatória:
1. **Questionamento estratégico** — Qual é o objectivo da comunicação? Que transformação prometemos?
2. **Pain + Gain** — formulação problema/resultado na linguagem do cliente; depois refinar com especificidades do sector
3. **Narrativa por segmento** — fórmula: Problema (dor do público) → Solução (serviços) → Resultado (benefícios concretos)
4. **Mensagem central** — 1 frase que toda a equipa sabe de cor
5. **Headlines** — por segmento (principal + secundária)
Ver `references/narrativas-copywriting.md` para templates e exemplos reais.
### Fase 7 — Documento final + Investimentos
Completar as secções finais:
- **Demonstração dos serviços** — como demonstrar, preparação, follow-up
- **Investimentos prioritários** — canais, orçamento, ROI esperado
- **KPIs** — baseline + metas a 3m, 6m, 12m
- **Inventário de activos** — o que existe, estado, prioridade
Ver `references/template-documento.md` para a estrutura completa do documento.
**Checklist de entrega:**
- [ ] Pesquisa de mercado feita (Fase 0)
- [ ] Proposta de valor única definida
- [ ] Missão, Visão, Valores escritos
- [ ] Apresentação sumária da empresa e serviços
- [ ] Mínimo 5 nichos sectoriais analisados (8 pontos cada) — ver `references/nichos.md`
- [ ] Mínimo 2 segmentos psicográficos com 20 pontos completos
- [ ] Pitch Canvas preenchido
- [ ] Declaração de mudança no mundo
- [ ] Pain + Gain (original + refinado)
- [ ] Narrativa por segmento (Problema → Solução → Resultado)
- [ ] Mensagem central definida
- [ ] Investimentos prioritários identificados
- [ ] KPIs definidos com metas
---
## Referências (carregar conforme necessário)
| Ficheiro | Quando carregar |
|----------|----------------|
| `references/metodologia-acida.md` | Fases 3-4: ACIDA, 20 pontos por segmento |
| `references/framework-16ps.md` | Fase 3: fundamentos estratégicos (Bloco A) |
| `references/perguntas-briefing.md` | Fase 2: conduzir entrevista cliente |
| `references/narrativas-copywriting.md` | Fase 6: copywriting, Pain+Gain, narrativas |
| `references/template-documento.md` | Fase 7: estrutura completa do documento |
| `references/nichos.md` | Fase 4: análise sectorial dos 10 nichos PT/EU (mínimo 5 obrigatórios) |
---
## Contexto do serviço
- **Código:** EST-MRK-010
- **Preço:** 900 EUR
- **Prazo médio:** 30h de trabalho
- **Entregáveis:** Documento estratégico completo, dashboard personas, narrativa de marca, apresentação executiva editável, guia de implementação, sessão de alinhamento com equipa
- **Suporte pós-entrega:** WhatsApp 1 mês
Complementar com Branding WOW (BRAND-ESS/DIG/COM: 1.8004.500 EUR) se o cliente precisar de identidade visual.
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -0,0 +1,193 @@
# Framework 16Ps — Referência Completa
Estrutura os 16 elementos da estratégia de marca em 4 blocos. Para cada P, incluir as questões orientadoras ao preencher.
---
## Bloco A — Fundamentos estratégicos
### P1: Problema
> Qual o problema principal que a marca resolve?
- Problema de negócio que a estratégia precisa resolver
- Impacto desse problema no cliente (custo, tempo, risco, reputação)
- Urgência da solução: por que resolver agora?
- Consequências de não resolver
*Exemplo SFV:* "Facturas de electricidade crescentes que consomem margens das empresas e rendimento das famílias, sem solução acessível percebida."
### P2: Propósito
> Por que existe esta marca além do lucro?
- **Missão:** o que fazemos e para quem (hoje)
- **Visão:** onde queremos chegar (3-5 anos)
- **Valores:** 3-5 valores fundamentais com descrição de como se manifestam
- **Propósito:** impacto no mundo que justifica a existência da marca
*Estrutura valores:* [Nome do Valor] — [Como se manifesta na prática]
### P3: Proposta de Valor
> O que tornamos possível que os concorrentes não conseguem?
- Valor único que só esta marca entrega
- Diferenciais competitivos (lista)
- Benefícios principais (funcionais + emocionais)
- Formula: Para [segmento], que [dor/desejo], a [marca] oferece [solução] que [resultado único], ao contrário de [alternativa], porque [razão para acreditar]
### P4: Posicionamento
> Que lugar específico ocupa na mente do cliente?
- Posição actual no mercado (percepção real)
- Posição desejada (percepção target)
- Declaração de posicionamento (1-2 frases)
- Território da marca: categoria, concorrência directa, diferenciação
- Atributos únicos que definem esse território
*Declaração-tipo:* "Para [público], somos a única [categoria] que [benefício único] porque [prova]."
### P5: Performance
> Como medimos o sucesso?
- KPIs principais (5-7 métricas)
- Metas específicas a 3, 6 e 12 meses
- Indicadores de sucesso por área (brand awareness, conversão, satisfação)
- Frequência de monitorização e responsável
---
## Bloco B — Público e pesquisa
### P6: Público-alvo
> Quem são exactamente os nossos clientes?
- Segmento principal + segmentos secundários
- Critérios de segmentação (demográficos, comportamentais, psicográficos)
- Volume estimado de cada segmento
- Comportamento de compra: frequência, ticket médio, canal preferido
### P7: Pesquisa de mercado
> Que dados sustentam as nossas decisões?
- Dados de mercado: dimensão, crescimento, tendências
- Insights de comportamento do consumidor
- Oportunidades identificadas (não aproveitadas pela concorrência)
- Ameaças e riscos do mercado
### P8: Personas
> Quem é o nosso cliente ideal em detalhe?
Para cada persona:
- **Foto + nome fictício + idade + profissão**
- **Biografia resumida** (um dia típico)
- **Dores principais** (3-5)
- **Objectivos** (profissionais + pessoais)
- **Canais preferidos** (onde está, o que consome)
- **Citação representativa** ("Eu quero/preciso/temo...")
- **Frase de posicionamento** para esta persona
### P9: Perfil
> Quais as características quantificáveis de cada segmento?
Análise de 20 pontos por segmento (ver template completo em `template-documento.md`):
- Demográfico: idade, género, localização, rendimento, educação, sector, cargo, empresa
- Comportamental: rotina, hábitos, processo de decisão, critérios de escolha
- Psicográfico: valores, aspirações, mentalidade, atitude à inovação
- Jornada: awareness, consideração, decisão
### P10: Pain Points
> Quais as dores mais urgentes e dolorosas?
- Dores principais (urgentes, que precisam resolver já)
- Frustrações (já tentaram outras soluções sem resultado)
- Necessidades não atendidas (o mercado não resolve bem)
- Medos relacionados com a compra ou com não comprar
---
## Bloco C — Produto e serviço
### P11: Portfolio
> O que vendemos exactamente?
- Lista de produtos/serviços principais
- Características técnicas vs benefícios percebidos
- Arquitectura de oferta: entrada, core, premium
- Casos de uso reais (exemplos concretos de aplicação)
### P12: Preço e valor
> Como justificamos o que cobramos?
- Estratégia de preços (custo+margem, valor percebido, concorrência, freemium)
- Posicionamento de valor: acessível, médio-alto, premium, luxo
- Política comercial: descontos, bundles, condições de pagamento
- ROI estimado para o cliente (quanto ganha/poupa ao escolher-nos)
### P13: Processos críticos
> Que processos garantem a experiência prometida?
- Processo de entrega do serviço/produto (passo a passo)
- Pontos de controlo de qualidade
- Garantias e políticas de satisfação
- Gestão de reclamações
### P14: Parcerias estratégicas
> Com quem nos aliamos para ampliar valor?
- Parceiros principais (nome, tipo, contribuição)
- Tipos de parceria: distribuição, tecnologia, referência, co-marketing
- Benefícios mútuos de cada parceria
- Parcerias a desenvolver (gap de oportunidade)
### P15: Plataforma
> Onde operamos digitalmente?
- Canais digitais activos: website, redes sociais, marketplaces, apps
- Presença online actual vs ideal
- Infraestrutura tecnológica (CRM, email, analytics, automação)
- Prioridades de investimento digital
---
## Bloco D — Promoção e comunicação
### P16: Promoção
> Como chegamos ao público-alvo?
- Canais principais com objectivos específicos por canal
- Tácticas específicas (conteúdo, SEO, email, WhatsApp, eventos)
- Calendário promocional (frequência, momentos-chave)
- Budget orientativo por canal
### P17: Publicidade
> Como amplificamos com investimento pago?
- Estratégia de anúncios: plataformas, formato, objectivo
- Budget mensal e distribuição
- KPIs de publicidade (CPL, ROAS, CPA)
- Frequência e ciclo de renovação de criativos
### P18: PR e referências
> Como construímos credibilidade externa?
- Estratégia de relações públicas
- Parcerias com influenciadores (relevância > alcance)
- Imprensa e media especializada
- Programa de referências/embaixadores
### P19: Presença digital
> Qual a nossa estratégia de conteúdo?
- Estratégia de conteúdo por canal
- Frequência de publicação
- Pilares de conteúdo (3-5 temas centrais)
- Gestão de comunidade: resposta, engagement, moderação
### P20: Proximidade — narrativa e impacto
> Que história contamos que ressoa emocionalmente?
- **Declaração de Impacto:** frase que resume a essência e impacto da marca
- **Narrativa principal:** história de origem ou transformação
- **Pain + Gain por segmento:** o que perdiam antes → o que ganham agora
- **Mensagem central:** 1 frase que todos os colaboradores sabem de cor
*Nota: O "Bloco D" tem 5 Ps numerados de 16 a 20 — alguns documentos listam apenas 16 Ps no total (agrupando Promoção, Publicidade e PR num único P). Adaptar conforme o nível de detalhe necessário.*
@@ -0,0 +1,127 @@
# Metodologia ACIDA — Referência Completa
## 1. As 5 fases ACIDA
### A — Atrair atenção
O público está sobrecarregado de informação. A forma correcta de chamar a atenção não é destacar produtos — é conectar com o que emocionalmente mais interessa ao público: **as suas próprias dores e desejos**.
Acções práticas:
- Headlines que falam directamente da dor ou desejo do segmento
- Conteúdo que provoca reconhecimento imediato ("é exactamente o meu problema")
- Formatos visuais que param o scroll: vídeo curto, imagem disruptiva, estatística chocante
### C — Construir confiança
Após conquistar atenção, estabelecer relacionamentos autênticos através de:
- Transparência, honestidade e autenticidade na comunicação
- Demonstrar compreensão profunda das dores e desejos do cliente
- Partilhar conhecimento e experiência profissional abertamente
- Educar o público para decisões mais informadas
- Estabelecer autoridade que permite influenciar percepções
Formatos: artigos de blog, estudos de caso, testemunhos, webinars, guias gratuitos.
### I — Despertar interesse
Com confiança estabelecida, a comunicação torna-se altamente personalizada.
> "Não vendemos produtos nem serviços; oferecemos soluções específicas para os seus desafios."
Ferramentas:
- Rastreamento de interacções para identificar segmentos de clientes
- Conteúdo customizado baseado em comportamentos anteriores
- Resolução antecipada de objecções conhecidas
- Nutrição de relacionamentos via email, WhatsApp, SMS, redes sociais
### D — Estimular a decisão
A decisão será favorável se o **valor percebido > preço a pagar**.
Obstáculos a superar:
- O "muro invisível" criado por dúvidas do consumidor
- Medo do arrependimento pós-compra
- Necessidade de prova social e garantias sólidas
Ferramentas: comparações, garantias, testemunhos de clientes reais, demonstrações, ROI calculado.
### A — Incentivar a acção
Converter interesse em acção através de:
- Chamadas à acção (CTA) claras e convincentes
- Criação de sentido de urgência (real, não artificial)
- Cumprimento de promessas
- Superação de expectativas na experiência do cliente
---
## 2. Análise do público-alvo — 8 dimensões
Para cada segmento, investigar as 8 dimensões antes de escrever qualquer copy:
### Dimensão 1: Perfil demográfico e psicográfico
- Características mensuráveis: idade, género, localização, rendimento, educação, cargo
- Traços de personalidade: valores, crenças, atitudes, estilo de vida
- *Pergunta-chave: "Quem é esta pessoa na vida real?"*
### Dimensão 2: Dores, desejos e frustrações
- Dores activas: problemas que precisam resolver agora
- Desejos: o que querem alcançar/ter/ser
- Frustrações: o que já tentaram e não funcionou
- *Pergunta-chave: "O que os mantém acordados à noite? O que sonham?"*
### Dimensão 3: Preocupações e geração de emoção
- O que os preocupa a médio/longo prazo
- Como a nossa marca pode responder emocionalmente (não apenas racionalmente)
- *Pergunta-chave: "Que emoção queremos que sintam quando nos encontram?"*
### Dimensão 4: Medos, inimigos e mudanças
- Medos concretos (perder negócio, ser enganado, falhar)
- "Inimigos" percebidos (concorrentes, reguladores, tendências de mercado)
- Mudanças que temem ou resistem
- *Pergunta-chave: "O que os impede de agir?"*
### Dimensão 5: Anseios, interesses e linguagem
- O que aspiram a ser/ter/fazer
- Interesses e hobbies (pistas para onde comunicar)
- Linguagem que usam (jargão do sector, palavras que ressoam vs que afastam)
- *Pergunta-chave: "Como falam entre si? Que palavras usam?"*
### Dimensão 6: Pesquisa de informação e influenciadores
- Onde procuram informação (Google, YouTube, LinkedIn, feiras, colegas)
- A quem pedem conselho (influenciadores, peers, família)
- Fontes que consideram credíveis
- *Pergunta-chave: "Como encontraram a nossa categoria de produto/serviço?"*
### Dimensão 7: Dúvidas e perguntas
- Objecções previsíveis antes da compra
- Perguntas que fazem nas reuniões de vendas
- Informação que precisam para decidir
- *Pergunta-chave: "Quais as 5 objecções mais frequentes?"*
### Dimensão 8: Estilo de decisão e concorrentes
- Processo de decisão: individual vs colectivo, rápido vs lento
- Factores comparativos: preço, qualidade, confiança, referências
- Concorrentes directos que avaliam em paralelo
- *Pergunta-chave: "Com quem nos comparam? Por que nos escolhem ou não?"*
---
## 3. Pilares estratégicos ACIDA
- **Crença central:** o centro do marketing digital são os princípios fundamentais de marketing + website — não as redes sociais
- **Proposta de valor:** "Criamos Resultados" — problema → solução → resultados esperados
- **Website como hub central:** não repositório, mas centro operacional integrado com CRM
- **Ecossistema multi-canal:** email, SMS/WhatsApp, SEO, Google/Meta Ads, website, redes sociais (como parte, não como centro)
- **Melhoria contínua:** métricas objectivas → ciclo iterativo baseado em dados
---
## 4. ACIDA 2.0 — Fases operacionais
| Fase | Acções |
|------|--------|
| **1. Análise** | Segmentação público, posicionamento, estruturação oferta, montagem narrativa |
| **2. Criação** | Recursos, copywriting e design, website e plataformas, automação |
| **3. Implementação** | Conteúdos e canais, blog e email marketing, redes sociais, marketplaces |
| **4. Desenvolvimento** | Funil de vendas, tráfego e anúncios, conteúdos, newsletters |
| **5. Acompanhamento** | Gestão de resultados, métricas e KPIs, optimização contínua, suporte |
@@ -0,0 +1,154 @@
# Narrativas e Copywriting Estratégico
Templates e exemplos reais de narrativas Descomplicar®. Baseados nos projectos SFV, LJM, MCT e Espiral Senior.
---
## 1. Fórmula central: Dor → Solução → Resultado
Estrutura base para qualquer narrativa por segmento:
```
DOR: [Nome do segmento] enfrenta [problema específico e urgente].
Sem solução, [consequência negativa concreta].
SOLUÇÃO: [Nome da marca] resolve isto através de [mecanismo único].
[Diferencial que os concorrentes não têm].
RESULTADO: O resultado é [benefício tangível e mensurável].
[Prova social ou garantia que aumenta credibilidade].
```
**Exemplo SFV (segmento Empresas):**
> Dor: As PMEs enfrentam facturas de electricidade crescentes que consomem margens já apertadas.
> Solução: A SFV instala painéis solares personalizados com análise de consumo prévia — sem adiantamento para projectos qualificados.
> Resultado: Redução de 60-90% na factura eléctrica, com ROI em 4-7 anos e garantia de 25 anos nos painéis.
**Exemplo MCT (segmento Oficinas):**
> Dor: Mecânicos perdem tempo e dinheiro com ferramentas que chegam erradas, incompletas ou que avariam em obra.
> Solução: A Carritools fornece equipamento profissional com assessoria técnica presencial e substituição imediata em caso de avaria.
> Resultado: Menos tempo parado, mais trabalhos concluídos, clientes mais satisfeitos.
---
## 2. Declaração de Impacto
Uma frase poderosa que abre o documento e resume a essência da marca. Deve:
- Ser memorável (10-15 palavras máximo)
- Combinar emoção + resultado
- Não ser genérica ("líderes de mercado", "qualidade e inovação")
**Exemplos reais:**
| Cliente | Declaração de Impacto |
|---------|----------------------|
| SFV Solar | "Energia (quase) Grátis para Famílias e Empresas" |
| Espiral Senior | "Envelhecer em Dignidade, no Lugar que Mais Ama" |
| Descomplicar® | "Criamos Resultados!" |
**Fórmulas para gerar Declaração de Impacto:**
- `[Verbo de transformação] + [benefício desejado] + [para quem]`
- `[Adjectivo emocional] + [resultado concreto]`
- `[Benefício surpreendente] + [para quem] + [sem o custo habitual]`
---
## 3. Mensagens-chave por tipo de segmento
### Segmento decisor (CEO/Gerente)
Foco: ROI, risco reduzido, credibilidade, tempo poupado.
Template:
> "Mais de [N] empresas como a sua já [resultado]. A nossa abordagem garante [benefício financeiro] em [prazo], com [garantia específica]."
### Segmento utilizador final (técnico/operacional)
Foco: facilidade de uso, suporte, fiabilidade, não criar problemas.
Template:
> "Simples de implementar, sem interrupções ao seu trabalho. Em caso de dúvida, temos suporte [detalhe] para que nunca fique bloqueado."
### Segmento referenciador (parceiro/consultor)
Foco: credibilidade para recomendar, win-win, diferenciação para os seus clientes.
Template:
> "Ao recomendar [marca], está a oferecer aos seus clientes [resultado], o que reforça a sua autoridade como [cargo/papel]."
### Segmento influenciador (família/comunidade)
Foco: valores partilhados, impacto positivo, pertença.
Template:
> "Não é só [produto/serviço]. É uma escolha que [impacto maior]: [dimensão ambiental/social/familiar]."
---
## 4. Gestão de objecções — estrutura padrão
Para cada objecção, responder sempre com:
1. **Validar** — reconhecer que é uma preocupação legítima
2. **Reframeamento** — mudar o ângulo de análise
3. **Prova** — exemplo, dado ou testemunho que confirma
4. **CTA suave** — próximo passo de baixo compromisso
**Objecções universais e respostas tipo:**
| Objecção | Resposta base |
|----------|--------------|
| "É caro" | "Entendo a preocupação. O nosso preço reflecte [diferencial]. Clientes como [X] recuperaram o investimento em [prazo]. Posso mostrar-lhe o cálculo?" |
| "Preciso de pensar" | "Faz todo o sentido. O que precisa de esclarecer para se sentir confiante? Posso enviar [recurso específico] que costuma ajudar nesta fase." |
| "Já tentei algo parecido e não funcionou" | "Compreendo — essa experiência é frustrante. O que tipicamente falha é [causa]. A nossa abordagem resolve isto de forma diferente: [diferencial]." |
| "Não tenho tempo agora" | "Respeitamos o seu tempo. É por isso que o nosso processo começa com apenas [X horas], e tratamos nós de [trabalho pesado]." |
| "Preciso de aprovação interna" | "Claro. Posso preparar um resumo executivo de 1 página para facilitar a aprovação? Tenho feito isto para outros clientes com muito bom resultado." |
---
## 5. Tom de voz por personalidade de marca
### Marca especialista/técnica (ex: SFV, Carritools)
- Linguagem precisa, dados concretos, terminologia do sector
- Evitar: exageros sem prova, linguagem emocional excessiva
- Usar: casos reais, números, especificações, garantias técnicas
### Marca próxima/humana (ex: Espiral Senior, Loja da Maria)
- Linguagem calorosa, inclusiva, em 2ª pessoa
- Evitar: jargão técnico, distância corporativa
- Usar: histórias pessoais, empatia directa, linguagem do dia-a-dia
### Marca inovadora/disruptiva (ex: Descomplicar, SaaS)
- Linguagem energética, directa, com algum desafio ao status quo
- Evitar: clichés do sector, promessas vazias
- Usar: contraste antes/depois, resultados surpreendentes, "E se..."
---
## 6. Estrutura de testemunho ideal
Baseado nos testemunhos reais recolhidos nos projectos:
```
[Nome próprio + cargo + empresa] — [cidade, se relevante]
"[Frase de impacto espontânea que resume o resultado]"
Contexto: [Situação antes de contratar]
Resultado: [Mudança concreta e mensurável após]
Recomendação: [Indicação explícita para outros como ele]
```
**Exemplo real SFV:**
> "Ricardo Castelão, Director Financeiro, Empresa de Distribuição — Porto
> 'Reduzimos a nossa factura eléctrica em 73% no primeiro ano.'
> Contexto: Gastávamos 4.200 EUR/mês em electricidade, sem alternativa viável.
> Resultado: Passámos para 1.134 EUR/mês. O sistema pagou-se em 5,5 anos.
> Recomendação: Para qualquer empresa com consumo acima de 1.500 EUR/mês, é obrigatório analisar esta opção."
---
## 7. Headlines de alto impacto — padrões
Padrões que funcionam consistentemente nos projectos Descomplicar:
- **Resultado específico:** "Reduza a sua factura eléctrica em 70% sem investimento inicial"
- **Pergunta dor:** "Ainda a pagar [problema] quando existe solução comprovada?"
- **Autoridade + resultado:** "Como [N] empresas [resultado] com [solução]"
- **Contrafactual:** "E se a sua maior despesa se transformasse no seu maior activo?"
- **Urgência real:** "A [mudança de mercado/regulação] está a mudar tudo — [posição da marca]"
- **Social proof:** "Mais de [N] clientes em [região] já [resultado]"
@@ -0,0 +1,318 @@
# Análise de Nichos — Guia de Segmentação Sectorial
Para marcas com público PME, "PME" é demasiado vasto. Identificar os nichos sectoriais específicos permite mensagens certeiras, canais certos e ROI superior. Qualquer estratégia de marca deve analisar **pelo menos 5 nichos específicos** relevantes para o produto/serviço.
---
## Como usar este guia
1. Identificar os nichos onde o produto/serviço tem tracção real ou potencial
2. Para cada nicho seleccionado, preencher os 8 pontos de análise sectorial
3. Cruzar com os 20 pontos da análise de público (template-documento.md § 5) para o perfil completo
4. Priorizar os 3 nichos de maior potencial para messaging principal
---
## Os 8 pontos de análise por nicho
Para cada nicho, responder:
1. **Dimensão e contexto** — quantas empresas em PT/EU, crescimento do sector, maturidade digital
2. **Dores operacionais específicas** — o que os cansa no dia-a-dia (não genérico: específico do sector)
3. **Funcionalidades mais relevantes** — o que do produto resolve melhor o problema deste nicho
4. **Linguagem de venda** — palavras que usam, palavras que evitam, jargão do sector
5. **Canal de aquisição principal** — onde estão, como chegam ao produto
6. **Objecção principal** — o bloqueio mais frequente e como ultrapassar
7. **Trigger de compra** — o momento/evento que precipita a decisão
8. **Pricing sweet spot** — o que pagam por ferramentas similares, sensibilidade ao preço
---
## Os 10 nichos de PME mais relevantes (PT/EU)
### Nicho 1 — Saúde Privada
**Quem:** Clínicas dentárias, psicólogos, nutricionistas, fisioterapeutas, clínicas médicas privadas, terapeutas.
**Dimensão PT:** +12.000 clínicas e consultórios privados. Sector em crescimento pós-pandemia. Alta concentração em Lisboa, Porto e litoral.
**Dores operacionais:**
- Agenda manual ou em sistemas desactualizados (Doctoralia, papel)
- Falhas de consulta (no-shows) sem sistema de lembretes automatizado
- Secretaria sobrecarregada com marcações e confirmações por telefone
- Facturação em saúde com complexidade fiscal (isenção IVA, recibos verdes)
- RGPD em saúde: dados sensíveis com requisitos legais estritos
**Funcionalidades mais relevantes:** lembretes automáticos de consulta por WhatsApp/SMS, confirmação/cancelamento por WhatsApp, reagendamento automático, facturação PT com isenção IVA, base de conhecimento para FAQ de pacientes.
**Linguagem de venda:** "reduzir faltas à consulta", "libertar a secretária para o que importa", "pacientes confirmam pelo WhatsApp", "agenda sempre actualizada". Evitar: "automação", "IA", "bot".
**Canal de aquisição:** associações profissionais (OMD, Ordem dos Psicólogos), LinkedIn de gestores de clínica, referência entre profissionais de saúde, Google Ads ("software gestão clínica", "agenda online clínica").
**Objecção principal:** "Os meus pacientes são mais velhos e não usam WhatsApp." → Resposta: "O sistema funciona igualmente por SMS. E os cuidadores/filhos que marcam as consultas estão todos no WhatsApp."
**Trigger de compra:** crescimento de lista de espera que a secretária já não consegue gerir; terceira consulta cancelada sem aviso no mesmo mês.
**Pricing sweet spot:** €50-150/mês (referência: Doctoralia €80-200/mês).
---
### Nicho 2 — Imobiliárias e Mediação
**Quem:** Agências imobiliárias independentes, mediadores certificados (AMI), promotores imobiliários, gestoras de condomínios.
**Dimensão PT:** +5.000 agências com licença AMI activas. Mercado em alta, mas muito fragmentado. Alta dependência de WhatsApp para comunicação com compradores/vendedores.
**Dores operacionais:**
- Leads entram por portais (Imovirtual, Idealista, OLX) e ficam sem resposta rápida
- Gestão de visitas manual: telefonemas para confirmar, reagendar, cancelar
- Follow-up de compradores perdido no WhatsApp pessoal do agente
- Quando o agente sai, leva os contactos consigo
- Proposta/minuta demoram dias
**Funcionalidades mais relevantes:** resposta automática a leads de portais, qualificação de leads por WhatsApp, agendamento de visitas com confirmação automática, CRM com histórico centralizado (não no telemóvel do agente), geração de propostas.
**Linguagem de venda:** "nunca perde um lead do Idealista", "as visitas confirmam-se sozinhas", "quando o agente sai, o cliente fica na empresa", "responde ao lead em 2 minutos, a qualquer hora".
**Canal de aquisição:** associações (APEMIP, ASIP), LinkedIn de directores de agência, eventos do sector imobiliário, Google Ads ("CRM imobiliário Portugal", "software mediação imobiliária").
**Objecção principal:** "Já usamos o CRM do Idealista." → Resposta: "O CRM do portal gere os leads do portal. O AcidaOS centraliza todos os portais + WhatsApp + email num só sítio, com o histórico completo de cada cliente."
**Trigger de compra:** perda de uma venda grande por demora na resposta ao lead; saída de um agente que levou a carteira de clientes.
**Pricing sweet spot:** €80-200/mês (referência: Salesforce RE €150-300/mês, CRMs sectoriais €50-150/mês).
---
### Nicho 3 — Construção e Remodelação
**Quem:** Empreiteiros de construção civil, empresas de remodelação e acabamentos, serralheiros, carpinteiros, canalizadores com equipa, empresas de pintura.
**Dimensão PT:** sector fortíssimo — construção representa ~7% do PIB PT. Altamente fragmentado, maioria micro-empresas 1-20 pessoas. Baixa digitalização. Alta dependência de telefonema e referência.
**Dores operacionais:**
- Orçamentos demoram dias ou semanas a chegar ao cliente
- Clientes ligam 5 vezes para saber se o orçamento chegou
- Gestão de obras espalhada por papel, WhatsApp e memória do encarregado
- Facturação atrasada em relação ao trabalho realizado (meses de delay)
- Cobranças de pagamentos em atraso constrangem a relação com o cliente
**Funcionalidades mais relevantes:** geração de orçamentos, follow-up automático ("o seu orçamento foi enviado — alguma dúvida?"), facturação automática por fase de obra, lembretes de pagamento, agenda de obras com alertas de prazo.
**Linguagem de venda:** "orçamento pronto em horas, não dias", "o cliente sabe sempre o estado da obra", "recebe quando acaba, não quando se lembra". Evitar linguagem tech — falar em "tempo poupado" e "dinheiro recebido".
**Canal de aquisição:** referência entre empresários do sector, associações (AICCOPN, AECOPS), Facebook Groups de empreiteiros e remodelações, feiras de construção.
**Objecção principal:** "A minha secretária já faz isso." → Resposta: "E quando ela está de férias? O AcidaOS não vai de férias."
**Trigger de compra:** perda de um contrato por orçamento que chegou tarde; mês com 3 facturas por emitir de obras já concluídas.
**Pricing sweet spot:** €30-80/mês (sector muito sensível ao preço, mas disposto a pagar se ROI for claro e imediato).
---
### Nicho 4 — Agências Digitais e Criativas
**Quem:** Agências de marketing digital, design, comunicação, relações públicas, fotografia/vídeo, produção de conteúdo.
**Dimensão PT:** +3.500 agências activas. Sector muito competitivo, margens a comprimir. Muitas em transição de "serviços de execução" para "serviços de estratégia + produto".
**Dores operacionais:**
- Relatórios mensais para clientes consomem 2-3 dias de trabalho manual
- Gestão de aprovações de conteúdo por WhatsApp e email (versões perdidas)
- Timesheets manuais → facturação imprecisa → conflitos com clientes
- Escalabilidade travada: para crescer precisa de contratar
- Receita 100% baseada em horas → vulnerável a perdas de cliente
**Funcionalidades mais relevantes:** geração automática de relatórios mensais, portal do cliente com aprovação de conteúdos, registo automático de horas, facturação por projecto, upsell/cross-sell automatizado (ex: "o teu plano inclui X — quer adicionar Y?").
**Linguagem de venda:** "relatórios que se fazem sozinhos", "o cliente aprova no portal, não por email", "receita recorrente sem aumentar a equipa", "white-label para revender aos teus clientes".
**Canal de aquisição:** LinkedIn (muito activo neste nicho), eventos de marketing (RD Summit, Social Media Week), comunidades Slack de marketers, referência entre agências.
**Objecção principal:** "Já usamos Monday/Asana/Notion." → Resposta: "O AcidaOS integra com essas ferramentas. Mas adiciona a camada de IA que automatiza o que ainda fazem manualmente: relatórios, aprovações, facturação."
**Trigger de compra:** perda de 20% da margem num trimestre por horas não facturadas; cliente grande que pediu relatórios mais frequentes sem pagar mais.
**Pricing sweet spot:** €100-300/mês; alto potencial para plano Partner/white-label (€500-1.000/mês).
---
### Nicho 5 — Comércio B2B e Distribuição
**Quem:** Distribuidores, grossistas, representantes comerciais, importadores, empresas de venda a retalhistas.
**Dimensão PT:** sector fundamental da economia, muito diversificado. Ciclos de venda mais longos, pedidos recorrentes, relacionamento comercial crítico.
**Dores operacionais:**
- Pedidos chegam por WhatsApp, email e telefone — sem registo centralizado
- Catálogo de produtos actualizado só existe em Excel ou PDF
- Comerciais perdem tempo a dar preços e a verificar stock pelo telefone
- Dívidas de clientes descobertas tarde (só quando o contabilista avisa)
- Fidelização: o cliente vai ao concorrente se não for contactado regularmente
**Funcionalidades mais relevantes:** chatbot de catálogo e preços por WhatsApp, processamento de pedidos automático, alertas de pagamentos em atraso, follow-up automático de clientes inativos ("não nos pede há 30 dias — tudo bem?"), facturação automática por encomenda.
**Linguagem de venda:** "o cliente pede pelo WhatsApp e a factura sai automática", "nunca perde uma encomenda por estar em reunião", "sabe quem não lhe compra há um mês antes de o perder".
**Canal de aquisição:** associações sectoriais, feiras B2B, LinkedIn de directores comerciais, referência entre distribuidores.
**Objecção principal:** "Os meus clientes são empresas — preferem email formal." → Resposta: "O sistema funciona por email também. E o WhatsApp para os urgentes — que são 80% dos pedidos reais."
**Trigger de compra:** perda de cliente para concorrente por resposta mais rápida; mês com facturas em atraso acima de €10K.
**Pricing sweet spot:** €100-250/mês (dispostos a pagar pelo ROI directo em cobranças e pedidos capturados).
---
### Nicho 6 — Restauração e Hotelaria
**Quem:** Restaurantes, cafés, bares, hotéis boutique, alojamentos locais, serviços de catering, espaços de eventos.
**Dimensão PT:** +80.000 estabelecimentos de restauração. Sector de margens apertadas, alta rotatividade de staff, sazonalidade intensa.
**Dores operacionais:**
- Reservas por telefone interrompem o serviço → perdidas quando está cheio
- Grupos e eventos corporativos: orçamentação manual e demorada
- Gestão de feedback online (Google, Tripadvisor) sem resposta sistemática
- Campanhas de WhatsApp para promoções especiais feitas manualmente
- Alojamento local: check-in remoto, comunicação com hóspedes em múltiplas línguas
**Funcionalidades mais relevantes:** reservas e confirmações por WhatsApp, resposta automática a reviews Google, campanhas de promoções ("mesa disponível para amanhã?"), comunicação com hóspedes em PT/EN/ES automática, facturação de eventos.
**Linguagem de venda:** "mesa reservada e confirmada sem tirar o empregado do serviço", "campanhas de promoção para a base de clientes em 2 minutos", "hóspedes atendidos em qualquer língua, a qualquer hora".
**Canal de aquisição:** associações (AHRESP, ARESP), feiras do sector (Horexpo, BTL), Instagram/Facebook de restaurateurs, referência entre proprietários.
**Objecção principal:** "O meu cliente quer falar com uma pessoa." → Resposta: "O sistema trata das confirmações de rotina. Quando o cliente quer falar com alguém, o sistema escala — e o teu staff tem mais tempo para isso."
**Trigger de compra:** mesa dupla marcada no mesmo horário; alta temporada com reservas a escapar por não conseguir atender o telefone.
**Pricing sweet spot:** €30-80/mês (margens apertadas — proposta tem de ser de ROI imediato e muito claro).
---
### Nicho 7 — Contabilidade e Consultoria
**Quem:** Gabinetes de contabilidade, TOCs (Técnicos Oficiais de Contas), escritórios de advogados, consultores de gestão, solicitadores.
**Dimensão PT:** +8.000 gabinetes de contabilidade registados. Sector muito regulado, conservador, mas sob pressão de digitalização e de novas exigências da AT.
**Dores operacionais:**
- Clientes entregam documentação de forma caótica (papel, foto de WhatsApp, email)
- Prazos fiscais críticos (IRS, IRC, IVA, SS) gerem-se manualmente com risco de multa
- Comunicação de alertas a clientes por email → baixa taxa de abertura
- Facturação de honorários por horas não registadas sistematicamente
- Novos clientes: onboarding burocrático e demorado
**Funcionalidades mais relevantes:** portal de recolha de documentos do cliente, alertas de prazos fiscais automáticos por WhatsApp, registo automático de horas, facturação mensal, onboarding digital de clientes.
**Linguagem de venda:** "o cliente entrega os documentos pelo WhatsApp e chegam organizados", "o cliente recebe o alerta de IVA no dia certo, não quando já passou", "sem ligar 5 vezes para pedir o recibo". Evitar: "IA", "automação" — usar "sistema", "organização", "processo".
**Canal de aquisição:** Ordem dos Contabilistas Certificados, formações profissionais obrigatórias, referência entre TOCs, LinkedIn de gestores de gabinetes.
**Objecção principal:** "Os nossos clientes são conservadores e resistem a mudanças." → Resposta: "O cliente não vê nenhuma mudança — continua a mandar fotos para o WhatsApp. Só que chegam organizadas ao sistema em vez de à caixa de entrada da Ana."
**Trigger de compra:** multa de cliente por prazo fiscal falhado por comunicação deficiente; novo quadro legal que aumenta o volume de entregas obrigatórias.
**Pricing sweet spot:** €50-150/mês (sector conservador no pricing mas com ROI muito mensurável em tempo poupado).
---
### Nicho 8 — E-commerce e Retalho Online
**Quem:** Lojas online, marcas DTC (direct-to-consumer), revendedores em marketplace (Amazon PT, FNAC, Worten), lojas omnicanal (físico + online).
**Dimensão PT:** +25.000 lojas online activas. Crescimento acelerado mas altíssima competição e margens em queda.
**Dores operacionais:**
- Volume de mensagens de suporte pós-venda (estado da encomenda, devoluções) insustentável
- Carrinhos abandonados sem follow-up automático → receita perdida
- Campanhas de reactivação de clientes inativos feitas manualmente
- Devoluções: processo manual, email interminável, cliente frustrado
- Avaliações negativas sem resposta → impacto na conversão
**Funcionalidades mais relevantes:** suporte automático de "onde está a minha encomenda" por WhatsApp, follow-up de carrinho abandonado, campanha de reactivação de clientes inativos, gestão de devoluções automatizada, resposta a reviews.
**Linguagem de venda:** "responde a 80% das perguntas de suporte sem intervenção humana", "recupera 15% dos carrinhos abandonados com um WhatsApp certo", "o cliente fica satisfeito sem precisar de esperar por email".
**Canal de aquisição:** comunidades de e-commerce (Shopify PT Facebook Group, grupos LinkedIn de e-commerce), eventos (eCommerce Day, NOS Alive), agências de e-commerce como parceiros.
**Objecção principal:** "Já usamos o suporte do Shopify." → Resposta: "O suporte do Shopify trata do que está dentro da plataforma. O AcidaOS trata do WhatsApp, do email e das mensagens do Instagram — que é de onde vêm 70% das perguntas reais."
**Trigger de compra:** Black Friday com volume de suporte 5x superior ao habitual sem equipa para responder; mês com carrinho abandonado acima de 70% sem follow-up.
**Pricing sweet spot:** €69-149/mês (familiarizados com SaaS, comparam com Gorgias €10-150/mês, Tidio €29-100/mês).
---
### Nicho 9 — Educação e Formação
**Quem:** Centros de formação profissional, explicadores e centros de explicações, escolas de línguas, escolas de música/artes, coaches e mentores, plataformas de formação online.
**Dimensão PT:** sector em expansão acelerada. Formação profissional fortemente subsidiada (FSE/IEFP) com requisitos administrativos pesados.
**Dores operacionais:**
- Matrículas e inscrições por telefone e email — processo manual e demorado
- Comunicação com pais (no caso de menores) caótica e dispersa
- Cobranças de mensalidades em atraso constrangem a relação com o aluno/família
- Certificados e documentação de formação gerados manualmente
- Formação subsidiada: relatórios e documentação obrigatória para financiamento
**Funcionalidades mais relevantes:** inscrições online com confirmação automática, comunicação com pais por WhatsApp, cobranças automáticas com link de pagamento (MB Way), geração de certificados, relatórios de frequência.
**Linguagem de venda:** "os pais recebem updates do filho pelo WhatsApp, sem ligar para a recepção", "as inscrições chegam organizadas, não por telefone", "as mensalidades cobram-se sozinhas no dia certo".
**Canal de aquisição:** DGERT (entidade reguladora de formação), LinkedIn de directores pedagógicos, grupos Facebook de formadores, referência entre centros.
**Objecção principal:** "Temos sistema de gestão escolar." → Resposta: "O AcidaOS complementa — trata da comunicação e cobranças que o sistema escolar não faz."
**Trigger de compra:** período de matrículas com recepção sobrecarregada; mensalidade em atraso de mais de 3 meses por falta de follow-up.
**Pricing sweet spot:** €50-120/mês (sensíveis ao preço mas com ROI claro em cobranças recuperadas).
---
### Nicho 10 — Serviços Técnicos Especializados
**Quem:** Empresas de IT/informática, AVAC, electricistas com empresa, empresas de segurança e alarmes, canalizadores, empresas de manutenção de equipamentos.
**Dimensão PT:** dezenas de milhares de micro e pequenas empresas. Alta dependência de WhatsApp para comunicar com técnicos e clientes. Muito fragmentado.
**Dores operacionais:**
- Chamadas de avaria chegam fora de horas sem registo
- Orçamentos de intervenções demoram dias (técnico tem de ver primeiro)
- Scheduling de técnicos manual — conflitos de agenda e deslocações ineficientes
- Contrato de manutenção: clientes que deviam contactar para revisão e não contactam
- Relatório de intervenção escrito à mão ou por memória do técnico
**Funcionalidades mais relevantes:** triagem automática de avarias fora de horas (gravidade, urgência), agendamento de técnicos por disponibilidade, geração de relatório de intervenção por voz (técnico descreve verbalmente → relatório gerado), alertas de manutenção preventiva, facturação de serviço.
**Linguagem de venda:** "o técnico descreve o trabalho pelo WhatsApp e o relatório fica pronto", "as chamadas de avaria fora de horas ficam registadas e triadas", "o cliente de manutenção recebe o alerta de revisão no mês certo".
**Canal de aquisição:** associações sectoriais (ANEOP, ASIAM), LinkedIn de gestores de empresa técnica, grupos Facebook de técnicos, referência entre pares.
**Objecção principal:** "Os meus técnicos não usam computador." → Resposta: "Exactamente por isso — o AcidaOS funciona pelo WhatsApp que eles já usam. O relatório faz-se com uma nota de voz."
**Trigger de compra:** chamada de avaria urgente perdida fora de horas; técnico que sai e leva o registo das intervenções que fez.
**Pricing sweet spot:** €40-100/mês (dispostos a pagar pelo valor em tempo poupado e em trabalho não perdido).
---
## Tabela resumo — priorização por atractividade
| Nicho | Volume PT | Urgência da dor | Disposição a pagar | Canal de entrada | Score |
|-------|-----------|----------------|-------------------|-----------------|-------|
| Saúde Privada | Alta | Muito alta | Alta | Associações + Google | ⭐⭐⭐⭐⭐ |
| Imobiliárias | Média | Alta | Alta | LinkedIn + portais | ⭐⭐⭐⭐⭐ |
| Agências Digitais | Média | Alta | Muito alta | LinkedIn + eventos | ⭐⭐⭐⭐⭐ |
| E-commerce | Alta | Alta | Alta | Comunidades + parceiros | ⭐⭐⭐⭐ |
| Contabilidade | Alta | Média-alta | Média | Ordem OCC + formação | ⭐⭐⭐⭐ |
| Construção | Muito alta | Alta | Média | Referência + associações | ⭐⭐⭐⭐ |
| Comércio B2B | Alta | Alta | Média-alta | Feiras + LinkedIn | ⭐⭐⭐⭐ |
| Serviços Técnicos | Muito alta | Média | Média | Referência + grupos | ⭐⭐⭐ |
| Educação | Média | Média | Baixa-média | DGERT + referência | ⭐⭐⭐ |
| Restauração | Muito alta | Média | Baixa | AHRESP + Instagram | ⭐⭐⭐ |
**Top 3 para arranque:** Saúde Privada, Imobiliárias, Agências Digitais — dor alta, disposição a pagar alta, canais de entrada claros.
@@ -0,0 +1,113 @@
# Perguntas de Briefing — Entrevista Estratégica
Guia de entrevista estruturado para conduzir o briefing inicial com o cliente.
Adaptar ao sector e nível de maturidade da marca.
---
## Bloco 1 — O negócio
### Contexto actual
1. O que faz a sua empresa, em termos simples?
2. Há quantos anos está no mercado? Como surgiu?
3. Qual a dimensão actual: equipa, facturação, clientes?
4. Qual é o maior desafio que enfrenta hoje no negócio?
5. O que o distingue dos concorrentes? (resposta espontânea — não sugerir)
### Serviços e produtos
6. Quais são os seus produtos/serviços principais?
7. Qual gera mais receita? Qual tem mais potencial?
8. Existe algum produto que quer destacar mais? Porquê?
9. Que resultados concretos entregam aos clientes?
### Posicionamento actual
10. Se pedisse a um cliente para descrever a sua empresa em 3 palavras, o que diria?
11. Existe uma percepção de mercado que quer mudar?
12. Onde se posiciona em preço vs concorrência? (mais caro, igual, mais barato) Porquê?
---
## Bloco 2 — O cliente ideal
### Segmentação
13. Quem é o seu cliente ideal? Descreva-o em detalhe.
14. Tem mais do que um tipo de cliente? Como os diferencia?
15. Qual o cliente que mais valoriza o que fazem e paga melhor?
16. Existe algum cliente que não quer ter? Porquê?
### Comportamento de compra
17. Como é que os clientes chegam até si? (canal principal de aquisição)
18. Quanto tempo demora tipicamente desde o primeiro contacto até fechar negócio?
19. Quem toma a decisão de compra? É uma pessoa ou um grupo?
20. Que objecções ouve mais frequentemente antes de fechar?
### Relação com clientes
21. Qual foi o feedback mais positivo que recebeu de um cliente? (pedir citação exacta)
22. Qual foi a queixa mais comum? Como resolveram?
23. Tem clientes que recomendam espontaneamente? O que dizem?
---
## Bloco 3 — Mercado e concorrência
### Mercado
24. Em que mercado opera? Geográfico (local, nacional, internacional)?
25. O mercado está a crescer, estável ou a contrair?
26. Que tendência do mercado mais o preocupa? Qual mais o entusiasma?
27. Existe sazonalidade? Em que períodos?
### Concorrência
28. Quem são os 3 principais concorrentes?
29. Em que é que são melhores? Em que é que são piores?
30. Por que é que um cliente nos escolhe a nós vs ao concorrente X?
31. Existe algum concorrente que admira (mesmo que de outra área)?
---
## Bloco 4 — Visão e ambição
### Onde quer chegar
32. Qual é o objectivo da empresa a 3 anos?
33. O que precisa de mudar para chegar lá?
34. Existe um modelo de empresa que admira ou quer imitar? Porquê?
35. Se tivesse recursos ilimitados, o que faria primeiro?
### Marca e identidade
36. Que 3 adjectivos descrevem a personalidade ideal da marca?
37. Que marcas (de qualquer sector) admira pela comunicação? O que lhes agrada?
38. Existe uma história de origem da empresa que emociona? (fundador, momento de viragem)
39. Que valores são inegociáveis? O que nunca fariam por dinheiro?
### Tom de voz
40. A marca é mais formal ou informal? Mais técnica ou acessível?
41. Usa humor na comunicação? Em que contextos?
42. Existe linguagem/palavras que NÃO deve usar?
---
## Bloco 5 — Recursos e restrições
### Capacidade
43. Qual o budget mensal disponível para marketing?
44. Existe equipa interna de marketing ou será tudo externalizado?
45. Quem aprova conteúdos? Qual o processo de revisão?
### Prazo
46. Existe algum lançamento, evento ou data importante a curto prazo?
47. Quando precisa de ter a estratégia operacional?
### Material existente
48. Existe alguma estratégia anterior? O que funcionou? O que não funcionou?
49. Que activos existem: website, redes sociais, base de emails, testemunhos, cases?
50. Existem fotos/vídeos profissionais? Em que estado está a identidade visual?
---
## Notas de condução da entrevista
- Fazer max 15-20 perguntas numa sessão (60-90 min)
- Priorizar: Blocos 1, 2 e 4 na primeira sessão
- Blocos 3 e 5 podem ser preenchidos com pesquisa independente
- Pedir sempre exemplos concretos e citações textuais de clientes
- Quando a resposta é vaga, fazer "pode dar-me um exemplo específico?"
- Gravar a sessão (com autorização) para não perder citações úteis
@@ -0,0 +1,374 @@
# Template: Documento de Estratégia de Marca
Estrutura completa do documento entregável ao cliente. Baseado nos projectos SFV, LJM, MCT, Espiral Senior e Sintricare.
Adaptar secções ao sector e complexidade do cliente.
---
## Cabeçalho do documento
```
---
title: [Nome da Marca] — Estratégia de Marca
cliente: [Nome do cliente]
código: EST-MRK-010
versão: 1.0
data: [DD-MM-YYYY]
elaborado: Descomplicar® — Agência de Aceleração Digital
status: draft | aprovado
---
```
---
## DECLARAÇÃO DE IMPACTO
> **[Uma frase poderosa — 10-15 palavras máximo]**
> *A essência e o impacto da marca numa linha.*
---
## ÍNDICE
1. Apresentação e Fundamentos Estratégicos
2. Proposta de Valor Única
3. Missão, Visão, Valores e Objectivos
4. Apresentação Sumária da Empresa e Serviços
5. Segmentação e Análise Detalhada de Público
6. Pitch Canvas
7. Copywriting Estratégico
8. Estratégia de Comunicação e Canais
9. Investimentos Prioritários
10. Monitorização e KPIs
11. Inventário de Activos de Marketing
---
## 1. Apresentação e Fundamentos Estratégicos
### 1.1 Contexto actual
- **Mercado:** [Análise do mercado actual — dimensão, tendências, oportunidades]
- **Concorrência:** [Principais concorrentes e posições]
- **Desafios:** [Principais desafios enfrentados pela marca]
- **Oportunidades:** [Oportunidades identificadas]
### 1.2 Problema a resolver
[Identificação clara do problema de negócio que esta estratégia precisa resolver — qual é o problema central que impede o crescimento ou o impacto da marca?]
---
## 2. Proposta de Valor Única
### 2.1 O que nos torna únicos
[O que tornamos possível que os concorrentes não conseguem. Ser específico — evitar "qualidade e experiência".]
### 2.2 Diferenciais competitivos
1. [Diferencial 1 — explicar o mecanismo único que o cria]
2. [Diferencial 2]
3. [Diferencial 3]
### 2.3 Benefícios por camada
| Tipo | Benefícios |
|------|-----------|
| **Funcionais** | [O que o produto/serviço faz concretamente] |
| **Emocionais** | [Como o cliente se sente ao usar/contratar] |
| **Identitários** | [O que diz sobre o cliente escolher esta marca] |
---
## 3. Missão, Visão, Valores e Objectivos
### 3.1 Missão
> [O que fazemos, para quem e como — acção no presente. Max 2 frases.]
### 3.2 Visão
> [Onde queremos estar e que impacto queremos ter em 3-5 anos. Max 2 frases.]
### 3.3 Valores
- **[Valor 1]** — [Como se manifesta na prática, no dia-a-dia da empresa]
- **[Valor 2]** — [Como se manifesta]
- **[Valor 3]** — [Como se manifesta]
- **[Valor 4]** — [Como se manifesta] *(opcional)*
### 3.4 Objectivos estratégicos
- **Curto prazo (6m):** [2-3 objectivos mensuráveis]
- **Médio prazo (1 ano):** [2-3 objectivos]
- **Longo prazo (3 anos):** [Ambição de impacto]
---
## 4. Apresentação Sumária da Empresa e Serviços
### 4.1 Quem somos
[Parágrafo de apresentação — quem são, o que fazem, há quanto tempo, dimensão, missão em acção]
### 4.2 Serviços/Produtos principais
| Serviço/Produto | Descrição | Para quem | Resultado principal |
|----------------|-----------|-----------|-------------------|
| [Nome] | — | — | — |
| [Nome] | — | — | — |
### 4.3 Posicionamento
[Declaração de posicionamento — o lugar único que a marca ocupa na mente do cliente]
> "Para [público], somos a única [categoria] que [benefício único] porque [prova]."
---
## 5. Segmentação e Análise Detalhada de Público
*Repetir a estrutura completa dos 20 pontos para cada segmento identificado.*
---
### 5.X — [Nome do Segmento]
*[Breve descrição de quem é este segmento — 2 linhas]*
#### 1. Perfil Demográfico
[Idade, género, localização, rendimento, nível de educação, profissão, cargo, tipo/dimensão de empresa, estado civil, composição familiar — tudo o que é mensurável e verificável]
#### 2. Perfil Psicográfico
[Valores pessoais, crenças, atitude perante a vida, estilo de vida, motivações profundas, relação com a categoria de produto/serviço, identidade social — o que não se mede mas define quem são]
#### 3. Dores
[Problemas activos e urgentes que precisam resolver. O que os está a prejudicar agora. Dores específicas do dia-a-dia relacionadas com o que a marca resolve.]
#### 4. Anseios
[O que aspiram a ser, ter ou alcançar. Sonhos profissionais e pessoais. A versão ideal do futuro que imaginam.]
#### 5. Desejos
[O que querem concretamente — mais imediato e específico que os anseios. Desejos práticos relacionados com a nossa oferta.]
#### 6. Frustrações
[O que já tentaram fazer ou comprar sem resultado. Soluções que prometeram e não entregaram. O cansaço acumulado de não resolver o problema.]
#### 7. Preocupações
[O que os inquieta a médio/longo prazo. Cenários negativos que imaginam. Preocupações sistémicas relacionadas com a sua vida ou negócio.]
#### 8. Medos
[Medos concretos associados à compra ou à não-compra. Medo de errar, de ser enganado, de perder dinheiro, de ser julgado. O que os paralisa antes de decidir.]
#### 9. Inimigos
[Os "vilões" da história deste segmento — concorrentes que os desiludiram, sistemas que os prejudicam, tendências que os ameaçam, pessoas ou entidades a quem culpam o problema]
#### 10. Linguagem
[As palavras e expressões exactas que usam para descrever o problema, a solução e os resultados. Jargão do sector. O que dizem aos amigos. O que escrevem no Google. Evitar linguagem que usamos internamente mas eles não usam.]
#### 11. Como procuram ajuda, informação ou dicas?
[Onde vão quando têm o problema: Google (que pesquisas fazem?), YouTube, grupos Facebook, LinkedIn, amigos, consultores, feiras, etc. Que tipo de conteúdo consomem para se informar?]
#### 12. Canais digitais
[Em que plataformas estão activos: Facebook, Instagram, LinkedIn, TikTok, YouTube, email, WhatsApp, fóruns, etc. Com que frequência? Em que contexto (trabalho vs lazer)?]
#### 13. Estilo de Decisão
[Como tomam decisões de compra: rápido vs deliberado, emocional vs racional, individual vs colectivo, impulsivo vs comparativo. Que factores pesam mais? Precisam de aprovação de terceiros?]
#### 14. Mudanças
[Mudanças que sabem e sentem necessárias nas suas vidas ou negócio. Passos que sabem que precisam dar mas ainda não deram. A consciência que já têm do problema.]
#### 15. Resistência à Mudança
[De que maneira resistem à mudança? Que desculpas usam para adiar? Como os podemos ajudar a ultrapassar essa resistência? Que argumentos reduzem o atrito?]
#### 16. Objecções Típicas
[As objecções mais frequentes às ofertas comerciais desta categoria. Como as podemos antecipar e superar? Respostas específicas a cada objecção.]
| Objecção | Como ultrapassar |
|----------|----------------|
| — | — |
| — | — |
| — | — |
#### 17. Forma de Gerar Emoção
[Que tipo de conteúdo, história ou mensagem os move emocionalmente? O que os faz parar no scroll? O que os faz partilhar? Qual o gatilho emocional mais poderoso para este segmento?]
#### 18. Argumentos
[A que argumentos são mais sensíveis? Como os podemos persuadir a agir? Que tipo de prova precisam: dados, testemunhos, demonstrações, garantias? Qual a sequência de persuasão ideal?]
#### 19. Concorrentes
[Que outras entidades lhes oferecem o mesmo tipo de serviço ou solução alternativa? Como se comparam a nós em percepção de valor?]
#### 20. Propostas Recusadas
[Que propostas é que este segmento tem recusado e porquê? O que dizem explicitamente e o que dizem implicitamente? O que não querem mais ouvir?]
---
## 6. Pitch Canvas
### 6.1 O que é o Pitch Canvas?
O Pitch Canvas é uma ferramenta de comunicação estratégica que resume, numa única estrutura visual, o essencial da proposta de valor da empresa. É útil porque:
- Força clareza e síntese (não há espaço para vagueza)
- Alinha toda a equipa na mesma mensagem
- Serve de base para qualquer peça de comunicação
- Torna a proposta de valor testável e iterável
### 6.2 Utilidade específica para [Nome da Marca]
[Como o Pitch Canvas pode ajudar esta marca concretamente — que clareza traz, que conversas simplifica, onde pode ser usado]
### 6.3 Os 5 elementos do Pitch Canvas
**Para quem:**
> [Segmento principal — quem são e qual o problema específico]
**O problema:**
> [Dor principal, urgente e real — formulada na linguagem do cliente]
**A solução:**
> [O que oferecemos — mecanismo único de resolução]
**O resultado:**
> [Transformação concreta — antes vs depois, com métrica se possível]
**Por que nós:**
> [Razão para acreditar — o que nos torna credíveis e únicos]
### 6.4 Declaração de mudança no mundo
> **"[Nome da Marca] está a mudar [o quê] para [quem], através de [como], tornando possível [impacto maior]."**
---
## 7. Copywriting Estratégico
### 7.1 Questionamento estratégico
**Qual é o objectivo da comunicação?**
[Definir claramente o que queremos que o público faça, sinta ou pense após cada comunicação. Sem objectivo claro não há comunicação eficaz.]
**Que transformação prometemos?**
[A transformação específica que a marca entrega — não o produto, mas a mudança de estado do cliente]
### 7.2 Pain + Gain (Problema e Resultado)
> **Pain:** [O problema central na perspectiva do cliente — formulado com a dor, não com o produto]
> **Gain:** [O resultado desejado — formulado com o benefício, não com a funcionalidade]
*Revisão com questões específicas do sector:*
> **Pain refinado:** [Após aprofundar com o briefing — mais específico, com linguagem do cliente]
> **Gain refinado:** [Com métricas ou resultados concretos já entregues a outros clientes]
### 7.3 Narrativa por segmento
*Fórmula: Problema (dor do público) → Solução (serviços da empresa) → Resultado (benefícios concretos)*
**[Segmento A]:**
> **Problema:** [Dor específica e urgente deste segmento, na sua linguagem]
> **Solução:** [Como a marca resolve de forma única — mecanismo específico]
> **Resultado:** [Benefício tangível e mensurável + prova social ou garantia]
**[Segmento B]:**
> **Problema:** [...]
> **Solução:** [...]
> **Resultado:** [...]
*(Repetir para cada segmento)*
### 7.4 Mensagem central da marca
> **"[A frase que todos os colaboradores sabem de cor — resumo da proposta de valor em 10 palavras]"**
### 7.5 Headlines por segmento
| Segmento | Headline principal | Headline secundária |
|----------|------------------|-------------------|
| [Seg. A] | — | — |
| [Seg. B] | — | — |
---
## 8. Demonstração dos Serviços
### 8.1 Como demonstrar [serviço/produto principal]
**Preparação personalizada:**
[O que preparar antes da demonstração para cada segmento]
**Introdução interactiva:**
[Como começar — conectar com a dor antes de mostrar a solução]
**Demonstração ao vivo:**
[O que mostrar, em que ordem, com que foco]
**Casos de uso:**
[Exemplos reais de clientes similares — antes/depois]
**Q&A:**
[Perguntas frequentes na demonstração e respostas modelo]
**Follow-up:**
[Próximo passo após a demonstração — o que enviar, quando contactar]
---
## 9. Investimentos Prioritários
### 9.1 Prioridades imediatas (impacto/esforço)
| Prioridade | Investimento | Impacto esperado | Prazo | Custo estimado |
|-----------|-------------|-----------------|-------|---------------|
| 1 | [Ex: Website + SEO] | — | 30-60d | — |
| 2 | [Ex: Google Ads] | — | 30d | — |
| 3 | [Ex: Email marketing] | — | 60d | — |
### 9.2 Estratégia de canais
| Canal | Objectivo | Frequência | KPI | Budget mensal |
|-------|-----------|-----------|-----|--------------|
| Website | — | — | — | — |
| Google Ads | — | — | — | — |
| Meta Ads | — | — | — | — |
| LinkedIn | — | — | — | — |
| Email | — | — | — | — |
| WhatsApp | — | — | — | — |
### 9.3 Pilares de conteúdo
1. [Pilar 1 — tema + tipos de conteúdo + frequência]
2. [Pilar 2]
3. [Pilar 3]
---
## 10. Monitorização e KPIs
### 10.1 Dashboard de métricas
| Área | KPI | Baseline | Meta 3m | Meta 6m | Meta 12m |
|------|-----|---------|---------|---------|----------|
| Brand | Notoriedade espontânea | — | — | — | — |
| Tráfego | Visitas/mês | — | — | — | — |
| Leads | Leads qualificados/mês | — | — | — | — |
| Conversão | Taxa de fecho | — | — | — | — |
| Retenção | NPS | — | — | — | — |
### 10.2 Ciclo de optimização
- **Revisão mensal:** métricas de canal, ajuste de conteúdo
- **Revisão trimestral:** avaliação de ROI, ajuste de orçamento
- **Revisão anual:** actualização estratégica completa
---
## 11. Inventário de Activos de Marketing
| Activo | Localização | Estado actual | Prioridade |
|--------|------------|--------------|-----------|
| Website | [URL] | — | — |
| Blog/Artigos | — | — | — |
| Redes sociais | — | — | — |
| Base de emails | — | — | — |
| Testemunhos/Cases | — | — | — |
| Materiais impressos | — | — | — |
| Apresentações | — | — | — |
| Fotos/Vídeos profissionais | — | — | — |
---
## Notas de implementação
1. **Sessão de alinhamento:** Apresentar o documento à equipa antes de implementar
2. **Validação:** Partilhar narrativas com 2-3 clientes actuais antes de publicar
3. **Implementação faseada:** Começar pelos canais de maior impacto e menor esforço
4. **Suporte:** WhatsApp durante 1 mês para dúvidas de implementação (EST-MRK-010)
---
*Elaborado por Descomplicar® — Agência de Aceleração Digital*
*emanuel@descomplicar.pt | descomplicar.pt*
+43 -12
View File
@@ -1,6 +1,6 @@
---
name: expense
description: Gestao de despesas Desk CRM com PDF obrigatorio. Registar, categorizar e analisar despesas com verificacao de duplicados, upload SFTP e arquivo mensal automatico.
description: Gestao de despesas Desk CRM com PDF obrigatorio. Registar, categorizar e analisar despesas com verificacao de duplicados por reference_no, upload SFTP e arquivo mensal automatico.
---
# /expense - Gestao de Despesas
@@ -55,18 +55,27 @@ Para mapeamento completo de fornecedores, emails e padroes PDF para categorias:
- Bypass valido apenas para: AT, Salarios, transferencias bancarias
2. LER O PDF: Extrair dados reais do documento
- NUNCA copiar valor de um PDF para outro
- EXTRAIR reference_no (numero factura) — OBRIGATORIO para dedup
3. OBRIGATORIO: get_expense_categories(with_stats=true)
4. Identificar categoria correcta na lista
5. VERIFICAR DUPLICADOS:
5. VERIFICAR DUPLICADOS (3 camadas — OBRIGATORIO):
Camada 0 — Referencia de factura (PRIMARIA):
- get_expenses(search: "<reference_no>")
- Se alguma despesa tem reference_no IGUAL → DUPLICADO → PARAR
Camada 1 — Fornecedor + Valor + Data:
- get_expenses(search: "<fornecedor>")
- Mesmo fornecedor + valor + data = duplicado
- Mesmo numero factura = duplicado
- Mesmo fornecedor + valor (±0.05) + data (±3 dias) = duplicado
Camada 2 — Expense name:
- get_expenses(search: "<fornecedor> - <reference_no>")
- Se match exacto → duplicado
Se QUALQUER camada detecta duplicado → NAO criar, informar utilizador
6. Recolher dados:
- category_id, amount, currency (EUR=3, USD=2), date (YYYY-MM-DD)
- reference_no (numero factura — OBRIGATORIO)
- note (incluir numero factura), send_invoice_to_customer = 0
- Opcionais: client_id, project_id, billable, tax
7. CONFIRMAR com utilizador (mostrar resumo)
8. create_expense
8. create_expense (INCLUIR reference_no no payload)
9. UPLOAD PDF ao Desk via SFTP:
a. mkdir -p no servidor: /home/ealmeida/desk.descomplicar.pt/uploads/expenses/<id>
b. mcp__ssh-unified__sftp_upload(server:"desk", local_path, remote_path)
@@ -104,7 +113,7 @@ Para mapeamento completo de fornecedores, emails e padroes PDF para categorias:
Para protocolo completo de processamento de tickets de contabilidade: ver `references/ticket-processing.md`
**Resumo:** Obter ticket -> verificar anexos -> verificar duplicados -> extrair dados -> confirmar -> criar despesa -> upload PDF -> arquivo mensal.
**Resumo:** Obter ticket -> verificar anexos -> verificar duplicados (3 camadas) -> extrair dados -> confirmar -> criar despesa -> upload PDF -> arquivo mensal.
---
@@ -136,15 +145,16 @@ Para protocolo completo de processamento de tickets de contabilidade: ver `refer
**Despesas:**
4. Criar despesa sem category_id
5. Nao validar data (formato YYYY-MM-DD)
6. Criar despesa sem verificar duplicados primeiro
6. Criar despesa sem verificar duplicados primeiro (3 camadas obrigatorias)
7. Criar despesa sem reference_no (chave primaria de dedup)
**Valores de PDFs:**
7. Assumir que ficheiros com nomes semelhantes tem o mesmo valor
8. SEMPRE ler CADA PDF individualmente para extrair o valor real
8. Assumir que ficheiros com nomes semelhantes tem o mesmo valor
9. SEMPRE ler CADA PDF individualmente para extrair o valor real
**Tickets:**
9. Processar ticket sem verificar anexos PDF
10. Assumir que ticket com recibo = despesa nao lancada
10. Processar ticket sem verificar anexos PDF
11. Assumir que ticket com recibo = despesa nao lancada
---
@@ -152,8 +162,11 @@ Para protocolo completo de processamento de tickets de contabilidade: ver `refer
- [ ] Listar categorias existentes
- [ ] Validar categoria correcta
- [ ] Extrair reference_no do PDF/factura
- [ ] Verificar duplicados (3 camadas)
- [ ] Confirmar dados com utilizador
- [ ] Usar formato data YYYY-MM-DD
- [ ] Incluir reference_no no create_expense
- [ ] Incluir nota descritiva
---
@@ -164,6 +177,24 @@ Para protocolo completo de processamento de tickets de contabilidade: ver `refer
- `references/ticket-processing.md` - Protocolo completo de processamento de tickets
- `references/changelog.md` - Historico de alteracoes
---
**Criado:** 2026-02-05 | **Actualizado:** 2026-02-12
## Self-Healing
Antes de executar, ler `~/.claude-work/healing/expense.jsonl` (se existir). Cada linha é um padrão de erro conhecido:
```json
{"date":"YYYY-MM-DD","issue":"descrição do problema","fix":"como evitar","source":"user|auto"}
```
Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivamente. Após cada erro ou correcção do utilizador nesta skill, **adicionar nova linha** ao healing log com o padrão aprendido.
---
**Criado:** 2026-02-05 | **Actualizado:** 2026-03-30 | Fix: dedup 3 camadas com reference_no (DES-137)
## Healing Log
<!-- Registo automático de erros e correcções nesta skill -->
+12
View File
@@ -253,3 +253,15 @@ Acções:
---
*Skill v1.0.0 | 2026-02-05 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+150
View File
@@ -0,0 +1,150 @@
---
name: orcamento
description: Criação de orçamentos Descomplicar baseados nos itens oficiais do Desk CRM. Versão light para heartbeats.
disable-model-invocation: true
---
# Orçamento — Referência Rápida
## Fonte de verdade: Desk CRM (`tblitems` + `tblitems_groups`)
651 itens em 14 grupos. Consultar SEMPRE o CRM para preços actualizados.
## Sintaxe
```
/orcamento [cliente] [tipo] [-MEN|-TRI]
```
| Código | Tipo | Grupo CRM |
|--------|------|-----------|
| `starter` | StarterWP | Websites |
| `corporate` | CorporateWP | Websites |
| `care` | CareWP | Websites |
| `ecom` | eCommerceWP | Websites |
| `mkt` | Marketing 360 | Marketing |
| `man` | Manutenção | Suporte |
| `deskcrm` | DeskCRM | DeskCRM |
| `chatbot` | Chatbot | Chatbots |
| `acceleratorx` | AcceleratorX | Tecnologia |
## Variantes de facturação
| Flag | Unit | Pesquisa CRM |
|------|------|-------------|
| (nenhum) | ano | Item base |
| `-MEN` | mensalidade | `WHERE description LIKE 'Mensalidade%...'` |
| `-TRI` | trimestral | `WHERE description LIKE 'Trimestral%...'` |
Preços das variantes são definidos no CRM (podem incluir markup). Nunca calcular por divisão simples.
## Protocolo
### 1. Identificar cliente
```
mcp__desk-crm-v3__search_customers query="[nome]" fields="company,vat"
```
### 2. Consultar preços
```bash
# Itens base (setup/pontuais)
mysql -u root ealmeida_desk24 -e "
SELECT description, rate, unit FROM tblitems
WHERE group_id = [GROUP_ID]
AND description LIKE '%[PACOTE]%'
AND unit NOT IN ('mensalidade','trimestral','anuidade')
ORDER BY description;"
# Itens recorrentes (com variante)
mysql -u root ealmeida_desk24 -e "
SELECT description, rate, unit FROM tblitems
WHERE group_id = [GROUP_ID]
AND description LIKE '[Mensalidade|Trimestral]%[PACOTE]%'
ORDER BY description;"
```
Ou via MCP:
```
mcp__desk-crm-v3__price_management action="get_pricing_insights" params={"group": "[GRUPO]"}
```
### 3. Criar estimate
```
mcp__desk-crm-v3__create_estimate
client_id=[id]
date=[hoje]
expiry_date=[hoje + 30 dias]
items=[{description, qty, rate, unit}]
terms="[termos]"
```
**Formato item:** `{"description": "...", "qty": 1, "rate": 700, "unit": "un"}`
**Unidades:** `un` (pontual), `mensalidade` (-MEN), `trimestral` (-TRI), `anuidade` (defeito)
### 4. Termos por variante
- **Sem flag:** "50% na adjudicação + 50% na entrega"
- **-MEN:** "Setup: 50%+50% | Recorrência: facturação mensal antecipada"
- **-TRI:** "Setup: 50%+50% | Recorrência: facturação trimestral antecipada"
## Preços de referência (consultar CRM para valores reais)
### Websites
| Produto | Setup | Anuidade |
|---------|-------|----------|
| StarterWP | 700 | 250 |
| CorporateWP | 900 | 299 |
| eCommerceWP | 1100 | 349 |
| CareWP | 1300 | 350 |
### DeskCRM
| Produto | Anuidade |
|---------|----------|
| Starter | 400 |
| Profissional | 800 |
| Avançado | 1500 |
| Enterprise | 3000 |
### AcceleratorX
| Produto | Setup |
|---------|-------|
| WP ProCMS | 650 |
| e-Commerce | 750 |
| Care | 750 |
| School Manager | 850 |
### Chatbots
| Produto | Setup |
|---------|-------|
| Básico | 350 |
| Avançado | 850 |
## Checklist
- [ ] Cliente identificado/criado no CRM
- [ ] Tipo seleccionado
- [ ] Preços consultados no CRM
- [ ] Valores calculados (subtotal + IVA 23%)
- [ ] Recorrência calculada
- [ ] Estimate criado (status: Draft)
- [ ] Resumo apresentado
## MCPs
```
mcp__desk-crm-v3__search_customers
mcp__desk-crm-v3__create_customer
mcp__desk-crm-v3__create_estimate
mcp__desk-crm-v3__price_management
```
---
**Versão**: 4.1.0-light | **Base**: 4.1.0
+12
View File
@@ -512,3 +512,15 @@ INSERT INTO tblskill_agent_metrics (
---
**Versao**: 4.1.0 | **Data**: 2026-03-12 | **Fonte de Verdade**: Desk CRM (tblitems)
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -365,3 +365,15 @@ mcp__mcp-time__current_time - Data/hora actual
---
**Versao**: 1.0.0 | **Data**: 2026-03-06 | **Template**: descomplicar-proposal-template.pptx
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+386
View File
@@ -0,0 +1,386 @@
---
name: proposta-visual
description: Criação completa de propostas comerciais visuais — página web (propostas.descomplicar.pt) + PDF exportável + PPTX editável. Recolhe dados CRM, gera JSON, renderiza condicionalmente e faz deploy.
---
# Skill /proposta-visual — Propostas Comerciais Visuais
Cria propostas comerciais profissionais com 3 outputs: página web interactiva, PDF exportável e PPTX editável.
## Triggers
- `/proposta-visual`
- "proposta visual", "proposta web", "criar proposta", "nova proposta", "proposta para [cliente]"
## Quando usar
- Criar proposta comercial completa para um cliente
- Gerar página web + PDF + PPTX de uma proposta
- Actualizar proposta existente com novos dados
## Quando NÃO usar
- Apenas orçamento sem visual (usar `/orcamento`)
- Apenas PPTX sem página web (usar `/proposal-deck`)
- Análise de lead sem proposta (usar `/lead-approach`)
---
## Projecto base
| Campo | Valor |
|-------|-------|
| **Código fonte** | `/media/ealmeida/Dados/Dev/Propostas/` |
| **Stack** | React 18 + Vite + Tailwind + @react-pdf/renderer + Recharts + Framer Motion + Lucide React |
| **Live** | `propostas.descomplicar.pt/{slug}` |
| **Deploy** | Docker Swarm EasyPanel, serviço `descomplicar_propostas`, ficheiros `/opt/propostas/` |
| **DNS** | `propostas.descomplicar.pt` → 5.9.90.70 (Cloudflare proxied) |
| **Template PPTX** | `/media/ealmeida/Dados/Hub/90-Templates/Comercial/descomplicar-proposal-template.pptx` |
---
## REGRAS CRÍTICAS (ler antes de qualquer implementação)
### 1. PT-PT obrigatório — acentos em TODO o texto
Todos os textos no JSON, componentes web e componentes PDF DEVEM ter acentos PT-PT correctos:
- ✓ migração, tradução, integração, opções, condições, execução, acção
- ✗ migracao, traducao, integracao, opcoes, condicoes, execucao, accao
**Verificar no PDF:** labels hardcoded em `PDFWorkDone.jsx` e `PDFDocument.jsx` — já corrigidos mas confirmar sempre.
### 2. JSON data-driven — renderização condicional obrigatória
O `ProposalView.jsx` e o `PDFDocument.jsx` renderizam secções **condicionalmente** com base nos dados. Se um campo é `null`, `[]` ou não existe, a secção NÃO aparece.
**Regra:** NUNCA assumir que todos os campos existem. Cada proposta pode ter um subconjunto diferente de secções.
| Campo JSON | Secção web | Secção PDF | Condição |
|-----------|-----------|-----------|----------|
| `context.brandStrategy` | BrandStrategy | PageBrandStrategy | `!= null` |
| `salesData` | SalesChart | PageSales | `.length > 0` |
| `context.diagnosis` | Context | — | `.length > 0` |
| `context.scores` | ScoreGrid | PDFScores | `.length > 0` |
| `service360` | Service360 | PageService360 | `!= null` |
| `plans` | PricingCards | PDFPricing | `.length > 0` |
| `licenses` | LicensePack | PageLicenses | `!= null` |
| `workDone` | WorkDone | PDFWorkDone | `.length > 0` |
| `roadmap` | Roadmap | PDFWorkDone | `.length > 0` |
| `conditions` | Conditions | PDFWorkDone (pág. separada) | `.length > 0` |
### 3. Título dinâmico — campo `title` no JSON
O título da proposta (Hero web + capa PDF) vem do campo `title` no JSON:
- Proposta 360°: `"title": "Descomplicar 360°"`
- Migração técnica: `"title": "Migração Bookeo"`
- Website: `"title": "Website Profissional"`
- Fallback: `"Proposta Comercial"`
**NUNCA** hardcodar "Descomplicar 360°" — usar `data.title`.
### 4. Preços flexíveis — não assumir mensalidades
Os planos suportam dois formatos de preço:
**Mensalidade (avença):**
```json
{
"monthly": 459,
"hours": 8,
"originalPrice": 540,
"discount": 15
}
```
Mostra: "459 €/mês" + "8h/mês incluídas · contrato anual"
**Preço único (investimento):**
```json
{
"price": 750,
"priceLabel": "EUR + IVA",
"priceSubtitle": "Investimento único · prazo 1-2 semanas",
"monthly": null,
"hours": null
}
```
Mostra: "750 EUR + IVA" + "Investimento único · prazo 1-2 semanas"
**Campos usados:** `plan.price ?? plan.monthly` para o valor, `plan.priceLabel ?? "€/mês"` para a unidade, `plan.priceSubtitle` para a descrição abaixo.
### 5. react-pdf — bugs conhecidos e PROIBIÇÕES
| Proibição | Porquê | Alternativa |
|-----------|--------|-------------|
| `gap` + `flexWrap` juntos | Crasha silenciosamente | `marginRight` + `marginBottom` nos items |
| `borderColor` com `rgba()` | Renderiza verde | Cor sólida (ex: `#D4A020`, `#E8E8E8`) |
| Import de componentes SVG (`<Svg>`, `<Circle>`) | Crasha web worker do PDFDownloadLink | Implementar gráficos inline com `<View>` |
| `Font.register` com fontes locais/CDN em multi-página | Falha silenciosa | Usar Helvetica/Helvetica-Bold (built-in) |
| `href` vazio no PDFDownloadLink | PDF não gerou — verificar consola | Cache do browser — Ctrl+Shift+R |
### 6. Página 360° (service360) — contextualizar
A secção service360 no PDF usa o label "O QUE PROPOMOS" (genérico) e o título "As nossas soluções para o seu negócio". Os dados vêm do JSON `service360.areas[]`.
Para propostas que NÃO são 360°, adaptar os `areas` ao contexto:
- Migração técnica: features da migração
- Website: áreas do serviço web
- SEO: pilares do trabalho SEO
Se `service360` for `null`, a secção não aparece.
### 7. Condições comerciais — página separada no PDF
As condições estão numa página PDF separada (não na mesma que o roadmap) para evitar corte entre páginas. O componente `PDFWorkDone` retorna um Fragment com 2 Pages.
---
## Protocolo
### Sintaxe
```
/proposta-visual [cliente] [tipo-serviço]
```
### Fase 1: Análise do contexto
**ANTES de criar o JSON, responder a estas perguntas:**
1. **Que tipo de proposta é?** (360°, website, migração técnica, SEO, eCommerce, outro)
2. **O preço é mensal ou único?** → define `monthly` vs `price`/`priceLabel`/`priceSubtitle`
3. **Que secções se aplicam?** → define que campos preencher no JSON
4. **Há dados quantitativos?** (vendas, scores SEO, KPIs) → define `salesData`, `context.scores`
5. **Há trabalho já realizado?** → define `workDone`
6. **Quantas opções de preço?** → define `plans[]`
**Mapa de secções por tipo de proposta:**
| Secção | 360° | Website | Migração | SEO | eCommerce |
|--------|:----:|:-------:|:--------:|:---:|:---------:|
| `title` | Descomplicar 360° | Website Profissional | [contexto] | Optimização SEO | Loja Online |
| `brandStrategy` | ✓ | Opcional | — | — | Opcional |
| `salesData` | Se existir | — | — | — | Se existir |
| `scores` | ✓ (audit) | Opcional | — | ✓ (audit) | Opcional |
| `service360` | ✓ | ✓ | ✓ | ✓ | ✓ |
| `plans` | ✓ (3 opções) | ✓ | ✓ | ✓ | ✓ |
| `licenses` | Se aplicável | — | — | — | Se aplicável |
| `workDone` | Se existir | Se existir | ✓ | Se existir | Se existir |
| `roadmap` | ✓ | ✓ | ✓ | ✓ | ✓ |
| `conditions` | ✓ | ✓ | ✓ | ✓ | ✓ |
### Fase 2: Recolha de dados do CRM
```
mcp__desk-crm-v3__search_customers query="[nome]"
mcp__desk-crm-v3__get_customer customer_id=[id]
mcp__desk-crm-v3__get_estimates client_id=[id]
```
### Fase 3: Criar ficheiro JSON
**Localização:** `src/data/[slug].json`
**Gerar slug:** iniciais do cliente + tipo + hash curto. Ex: `ccv-bookeo-a3f7c1d2`
**Schema mínimo obrigatório:**
```json
{
"title": "Título da Proposta",
"client": {
"name": "Nome Legal Lda.",
"brand": "Nome Comercial",
"website": "exemplo.pt",
"contact": "Nome Contacto",
"email": "email@exemplo.pt",
"phone": "+351 900 000 000"
},
"company": {
"name": "Descomplicar, Lda.",
"brand": "Descomplicar",
"nif": "514 785 691",
"email": "info@descomplicar.pt",
"phone": "911 510 005",
"website": "descomplicar.pt"
},
"date": "2026-03-23",
"validDays": 30,
"context": {
"description": "Descrição da situação...",
"diagnosis": [],
"scores": [],
"brandStrategy": null
},
"service360": null,
"plans": [],
"licenses": null,
"workDone": [],
"roadmap": [],
"conditions": [],
"salesData": [],
"salesProjection": []
}
```
**Campos opcionais para planos com preço único:**
```json
{
"price": 750,
"priceLabel": "EUR + IVA",
"priceSubtitle": "Investimento único · prazo 1-2 semanas",
"monthly": null,
"hours": null
}
```
**Checklist PT-PT antes de guardar o JSON:**
- [ ] Todos os textos têm acentos correctos (ã, ç, ã, é, ê, í, ó, õ, ú)
- [ ] Zero brasileirismos
- [ ] Caractere → (seta) em vez de -> nos textos visíveis
- [ ] Monetário: "EUR" ou "€" (não "R$" nem "$")
### Fase 4: Registar no App.jsx
```jsx
import novaData from "./data/[slug].json"
const proposals = {
// existentes...
"[novo-slug]": novaData,
}
```
### Fase 5: Verificar antes do build
**Checklist pré-build:**
- [ ] JSON válido (sem trailing commas, sem campos undefined)
- [ ] Campos null/[] para secções que não se aplicam (NÃO omitir)
- [ ] `title` definido (não depender do fallback)
- [ ] `plans[].price` OU `plans[].monthly` definido (não ambos null)
- [ ] `plans[].priceLabel` definido se preço único
- [ ] Slug registado em App.jsx
- [ ] Nenhum `flexWrap` + `gap` nos componentes PDF
- [ ] Nenhum `borderColor` com `rgba()` nos componentes PDF
### Fase 6: Build e deploy
```bash
cd /media/ealmeida/Dados/Dev/Propostas
npm run build
# Limpar dist
cd dist
rm -rf assets/template-media assets/template-referencia.pptx assets/slide-referencia.svg
cd assets/brochura && ls *.{jpg,png} 2>/dev/null | grep -v image8.jpg | xargs rm -f 2>/dev/null
# Empacotar
cd /media/ealmeida/Dados/Dev/Propostas/dist
tar czf /tmp/propostas-dist.tar.gz .
# Upload + deploy
mcp__ssh-unified__sftp_upload server=easy localPath=/tmp/propostas-dist.tar.gz remotePath=/tmp/propostas-dist.tar.gz overwrite=true
mcp__ssh-unified__ssh_execute server=easy command="cd /opt/propostas && rm -rf assets/* index.html; tar xzf /tmp/propostas-dist.tar.gz && docker service update --force descomplicar_propostas && rm -f /tmp/propostas-dist.tar.gz"
# Verificar
curl -sI https://propostas.descomplicar.pt/[slug] | head -3
# Deve retornar HTTP/2 200
# Limpar
rm -f /tmp/propostas-dist.tar.gz
```
### Fase 7: Testar PDF
**OBRIGATÓRIO antes de entregar:**
1. Abrir `https://propostas.descomplicar.pt/[slug]` com Ctrl+Shift+R
2. Clicar "Exportar PDF"
3. Verificar que `href` do link não está vazio (PDF gerou)
4. Abrir PDF e verificar:
- [ ] Título correcto (não "Descomplicar 360°" hardcoded)
- [ ] Preços correctos (não "€/mês" se é preço único)
- [ ] Sem borders verdes (rgba renderiza verde no react-pdf)
- [ ] Sem secções que não se aplicam (360°, vendas, licenças, scores)
- [ ] Acentos PT-PT em todo o texto
- [ ] Condições comerciais numa página inteira (sem corte)
- [ ] Todas as 3 opções de preço com layout uniforme
**Se o PDF não gera (href vazio):**
1. Verificar consola do browser (F12)
2. Causa mais provável: import de componente SVG dos infographics
3. Verificar que PDFDocument não importa de `./infographics/`
4. Verificar que não há `gap` + `flexWrap` no PDF
5. Ctrl+Shift+R e tentar novamente (cache)
### Fase 8: Entrega e registo
1. Guardar em `Hub/03-Propostas/[Cliente]/`
2. Registar estimate no CRM (se não existe)
3. Comunicar URL ao utilizador
4. Comentar tarefa CRM
---
## Design system ACIDA 2.0
| Token | Valor |
|-------|-------|
| Dourado | #C88900 |
| Dourado claro | #EED59F |
| Dourado border PDF | #D4A020 (usar em vez de rgba no PDF) |
| Dark | #262626 |
| Background | #F8F8F8 |
| Fonte web | Inter (Google Fonts) |
| Fonte PDF | Helvetica / Helvetica-Bold |
| Logo escuro | `/assets/logo-descomplicar.png` |
| Logo claro | `/assets/logo-descomplicar-white.png` |
---
## Propostas existentes
| Slug | Cliente | Tipo | Data |
|------|---------|------|------|
| `ljm-360-61a8aecc` | A Loja da Maria | 360° (mensal) | 2026-03-20 |
| `ccv-bookeo-a3f7c1d2` | Carvoeiro Caves | Migração técnica (único) | 2026-03-23 |
---
## Skills relacionadas
- `/proposal-deck` — PPTX standalone (16 layouts, XML editing)
- `/orcamento` — Estimate no CRM (sem visual)
- `/lead-approach` — Estratégia de abordagem de lead
- `/crm` — Operações CRM genéricas
---
## Changelog
### v2.0.0 (2026-03-23)
- Regras críticas documentadas (7 regras)
- Renderização condicional obrigatória (ProposalView + PDFDocument)
- Título dinâmico via campo `title` no JSON
- Preços flexíveis (mensal vs único) com `price`/`priceLabel`/`priceSubtitle`
- Bugs react-pdf documentados com proibições explícitas
- Mapa de secções por tipo de proposta
- Checklist pré-build e teste PDF obrigatório
- Condições comerciais em página PDF separada
### v1.0.0 (2026-03-23)
- Versão inicial
---
**Versão:** 2.0.0 | **Data:** 2026-03-23
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -169,3 +169,15 @@ Subject contem:
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -284,3 +284,15 @@ No checkup diário, mostrar tickets:
---
*Skill v1.0.0 | 2026-02-05 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -316,3 +316,15 @@ Hashtags/links: #2b6cb0
**Versao**: 1.0.0 | **Data**: 2026-03-10 | **Autor**: Descomplicar®
*Paletas detalhadas por contexto: `references/color-palettes.md`*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+104
View File
@@ -0,0 +1,104 @@
---
name: cinematic-site
category: design-media
description: "Constroi websites cinematograficos a partir de um site existente. Pipeline 4 passos: brand analysis, scene generation, build HTML/CSS, preview. Usar quando 'cinematic', 'website premium', 'site cinematografico', 'redesign site', 'nanobanana'."
version: "1.0.0"
created: 2026-04-07
tools: [Bash, Read, Write, mcp__claude-in-chrome__read_page, mcp__claude-in-chrome__tabs_create_mcp, mcp__chrome-devtools__take_screenshot]
---
# Skill: /cinematic-site
Constroi websites cinematograficos responsivos a partir de um site existente. Inspirado no Nanobanana 2 (#366 Jay E / RoboNuggets).
---
## Pipeline de 4 passos
### Passo 1 — Brand Analysis
Receber URL do site existente do utilizador.
1. Abrir URL via `mcp__claude-in-chrome__tabs_create_mcp` + `mcp__claude-in-chrome__read_page`
2. Extrair:
- Paleta de cores (hex codes das cores dominantes)
- Logo (URL ou descricao)
- Fontes usadas (font-family do CSS)
- Tom de voz (formal, casual, tecnico)
- Tipo de negocio e sector
- Conteudo principal (hero text, servicos, about)
3. Guardar analise em `/tmp/cinematic-site/brand-analysis.json`:
```json
{
"url": "https://...",
"business": "restaurante italiano",
"colors": {"primary": "#2C3E50", "secondary": "#E74C3C", "accent": "#F39C12"},
"fonts": {"heading": "Playfair Display", "body": "Inter"},
"tone": "acolhedor e premium",
"logo_description": "...",
"hero_text": "...",
"sections": ["sobre", "menu", "reservas", "contacto"]
}
```
### Passo 2 — Scene Generation
Com base na analise, definir o design cinematografico:
1. **Hero section:** escolher tipo de animacao:
- Parallax com imagem de fundo
- Scroll-reveal progressivo
- Video background concept (descricao, nao video real)
- Cursor-follow effect
2. **3-5 seccoes adicionais** com animacoes scroll-based:
- Referenciar `Hub/04-Stack/02.03-IA/biblioteca-animacoes-scroll.md` para patterns disponiveis
3. **Responsive breakpoints:** mobile-first, 3 breakpoints (mobile, tablet, desktop)
4. Guardar plano em `/tmp/cinematic-site/scene-plan.md`
### Passo 3 — Build
Gerar ficheiros HTML/CSS/JS:
1. Criar `/tmp/cinematic-site/output/`:
- `index.html` — single-page com todas as seccoes
- `styles.css` — Tailwind ou CSS puro
- `animations.js` — scroll observers + animacoes
2. Regras de qualidade:
- Referenciar `design.json` Descomplicar para standards
- Mobile-first
- Core Web Vitals: LCP <2.5s, CLS <0.1
- Sem dependencias externas pesadas (max framer-motion ou CSS puro)
- Acessibilidade basica (alt text, contraste, focus states)
3. Incluir comentarios no HTML com seccoes claras
### Passo 4 — Preview
1. Abrir `index.html` no browser local: `xdg-open /tmp/cinematic-site/output/index.html`
2. Tirar screenshot via `mcp__chrome-devtools__take_screenshot`
3. Mostrar comparacao ao utilizador:
- Site original (URL)
- Novo site (screenshot)
4. Pedir aprovacao antes de qualquer proximo passo
5. Se aprovado, sugerir opcoes:
- Copiar para pasta de projecto
- Ajustar cores/seccoes
- Exportar para Vercel/Netlify (manual)
---
## Regras
- **Nunca deploy automatico** — apenas preview local
- **Nunca inventar conteudo** — usar texto real do site original
- **Sempre referenciar design.json** para standards visuais
- **Output em /tmp/cinematic-site/** — nunca em pastas de projecto sem aprovacao
- **README.md incluido** com instrucoes de deploy manual
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
+66
View File
@@ -0,0 +1,66 @@
---
name: design-b2b
description: >
Design system para serviços B2B — agências, consultoria, SaaS, PMEs portuguesas.
Propostas visuais, landing pages, apresentações e materiais para decisores PT.
Usar quando: proposta comercial, landing page serviço B2B, apresentação cliente,
one-pager, ou qualquer material visual para audiência empresarial portuguesa.
---
# /design-b2b — Design System Serviços B2B
## Paleta
```css
--primary: #1e3a5f; /* Azul institucional — confiança, autoridade */
--accent: #f97316; /* Laranja acção — CTAs, destaques */
--neutral: #f8fafc; /* Fundo profissional */
--text: #1e293b; /* Texto principal */
--muted: #64748b; /* Texto secundário, legendas */
--border: #e2e8f0; /* Divisores subtis */
```
## Estrutura proposta comercial
### One-pager (1 A4 ou landing page equivalente)
1. **Header:** Logo cliente + logo Descomplicar + título proposta
2. **Problema:** 2-3 bullets do problema actual do cliente
3. **Solução:** O que entregamos (concreto, não vago)
4. **Resultados:** Métricas esperadas (%, EUR, tempo)
5. **Investimento:** Preço claro, sem asteriscos escondidos
6. **Próximo passo:** CTA único — "Agendar Reunião" ou "Aceitar Proposta"
### Landing page serviço B2B
1. Headline: benefício principal (não feature)
2. Sub-headline: para quem é + resultado esperado
3. Prova social: 3 logos de clientes ou 1 case study
4. Serviços: 3-5 cards com ícone + nome + 1 linha
5. Processo: 3-4 passos (simples e claro)
6. CTA: formulário simples (nome, email, empresa, mensagem)
## Tom e linguagem B2B PT
- **Usar:** "optimizar", "aumentar eficiência", "reduzir custos"
- **Evitar:** "disruptivo", "revolucionário", "próximo nível"
- **Tratamento:** "Você" (neutro) ou "A sua empresa" — nunca "tu" em contexto formal
- **Números:** sempre com fonte (ex: "30% redução de custos — caso Empresa X")
## Anti-slop checklist B2B
- [ ] Zero jargão sem explicação
- [ ] Preços ou "Solicitar orçamento" — nunca ambiguidade
- [ ] Casos reais, não hipotéticos
- [ ] Mobile: decisores usam telemóvel para primeiro contacto
- [ ] Social proof: logo real, não ilustração
## Referências visuais
Ver `~/.claude/design/referencias-visuais/servicos-b2b/`
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
@@ -0,0 +1,64 @@
---
name: design-ecommerce
description: >
Design system para e-commerce — lojas WooCommerce, páginas produto, checkout PT.
Optimização conversão, layouts loja, UX checkout e elementos de confiança.
Usar quando: criar ou optimizar loja WooCommerce, página produto, carrinho,
checkout, ou qualquer elemento visual de e-commerce para mercado português.
---
# /design-ecommerce — Design System E-commerce
## Paleta base (adaptar à marca do cliente)
```css
--cta: #dc2626; /* Vermelho urgência — "Comprar Agora" */
--trust: #16a34a; /* Verde confiança — "Pagamento Seguro" */
--price: #1e3a5f; /* Azul preço destacado */
--sale: #f59e0b; /* Âmbar promoção */
--neutral: #ffffff;
--text: #111827;
```
## Elementos conversão obrigatórios
### Página produto
1. Imagens: mínimo 4 ângulos, zoom, vídeo se possível
2. Preço: destacado, desconto visível, preço original riscado
3. Stock: urgência ("Últimas 3 unidades")
4. CTA: "Adicionar ao Carrinho" (vermelho, proeminente)
5. Confiança: selos Visa/MB/MBWay + devolução 30 dias
6. Avaliações: estrelas + número (social proof)
7. "Também pode gostar" + "Compraram juntos"
### Checkout PT
- Referência Multibanco visível
- MB Way como opção principal
- Campo NIF opcional (B2B)
- Morada: formato PT (Rua, nº, andar, código postal, localidade)
### Elementos de confiança PT
- Selos: MBWay, Visa, Mastercard, PayPal
- "Envio para Portugal Continental em 24-48h"
- "Devolução gratuita em 30 dias"
- "Suporte em português"
## Anti-slop checklist e-commerce
- [ ] Preços em EUR (não USD)
- [ ] CTAs em PT-PT: "Comprar" não "Buy", "Carrinho" não "Cart"
- [ ] Mobile: checkout testado em 375px (maioria compra no telemóvel)
- [ ] Tempo de carregamento: imagens optimizadas <100KB
- [ ] Trust badges visíveis acima do fold
## Referências visuais
Ver `~/.claude/design/referencias-visuais/ecommerce/`
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
+62
View File
@@ -0,0 +1,62 @@
---
name: design-saude
description: >
Design system para sector saúde — clínicas, KiviCare, consultórios médicos.
Paleta, tipografia, CTAs e layouts optimizados para contexto clínico PT.
Usar quando: criar landing page de clínica, página de serviços médicos,
agendamento online, ou qualquer material visual para clientes saúde.
---
# /design-saude — Design System Saúde
## Paleta
```css
--primary: #0ea5e9; /* Azul confiança médica */
--secondary: #10b981; /* Verde saúde/cura */
--neutral: #f8fafc; /* Fundo limpo e asséptico */
--text: #1e293b; /* Texto principal */
--accent: #f59e0b; /* CTA urgência (marcar consulta) */
--danger: #ef4444; /* Alertas, urgências */
```
## Tipografia
- **Títulos:** Inter SemiBold — transmite profissionalismo sem frieza
- **Corpo:** Inter Regular 16px, line-height 1.7 — legibilidade para público 40+
- **Evitar:** fontes decorativas, cursivas, serifas antiquadas
## Layouts obrigatórios
### Landing page clínica
1. Hero: foto médico real + headline "Cuidamos de si" + CTA "Marcar Consulta"
2. Serviços: cards com ícone + nome + preço (se disponível)
3. Equipa: fotos reais + credenciais
4. Depoimentos: com nome e tratamento (anonimizado se necessário)
5. Localização + horários + contacto
6. CTA final: WhatsApp ou formulário
### CTAs saúde
- Principal: "Marcar Consulta" (verde, proeminente)
- Secundário: "Saber Mais" ou "Ver Serviços"
- Urgência: "Consulta Hoje" (âmbar)
## Anti-slop checklist saúde
- [ ] Fotos de pessoas reais (não stock de médicos brancos genéricos)
- [ ] RGPD: sem dados de pacientes visíveis em mockups
- [ ] Cores acessíveis: contraste WCAG AA mínimo
- [ ] Mobile: formulário agendamento testado em 375px
- [ ] PT-PT: "consulta" não "appointment", "médico" não "doctor"
## Referências visuais
Ver `~/.claude/design/referencias-visuais/saude/`
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
+60
View File
@@ -0,0 +1,60 @@
---
name: design-solar
description: >
Design system para sector solar/fotovoltaico — SolarFV, instaladores, B2B energia.
Paleta, calculadoras, propostas visuais e layouts para sector energias renováveis PT.
Usar quando: landing page solar, proposta instalação FV, calculadora poupança,
ou material visual para clientes energia solar.
---
# /design-solar — Design System Solar/FV
## Paleta
```css
--primary: #f59e0b; /* Amarelo solar — energia, optimismo */
--secondary: #1e3a5f; /* Azul escuro — confiança, profissionalismo B2B */
--green: #16a34a; /* Verde sustentabilidade */
--neutral: #f9fafb; /* Fundo limpo */
--text: #111827; /* Texto principal */
```
## Elementos distintivos sector solar
### Calculadora de poupança (elemento central)
- Input: consumo mensal kWh + factura actual
- Output: poupança anual estimada + payback em anos
- Visual: comparação antes/depois com gráfico simples
### Proposta instalação
1. Sumário executivo (1 página): consumo actual → produção estimada → ROI
2. Especificações técnicas: painéis, inversor, capacidade
3. Financiamento: opções (compra, leasing, PPA)
4. Garantias e certificações
5. CTA: "Solicitar Visita Técnica"
## Tipografia
- **Títulos:** Poppins Bold — moderno, energético
- **Dados/métricas:** Inter Mono — leiturabilidade para números
- **Corpo:** Inter Regular
## Anti-slop checklist solar
- [ ] Números reais de produção (não inventar kWh)
- [ ] Certificações visíveis (DGEG, SCE)
- [ ] Mobile: calculadora funcional em 375px
- [ ] B2B: tom técnico e sóbrio (não "salve o planeta")
- [ ] PT: "fotovoltaico" não "fotovoltaica" (painel fotovoltaico)
## Referências visuais
Ver `~/.claude/design/referencias-visuais/solar/`
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
+12
View File
@@ -154,3 +154,15 @@ fidelidade, concisao visual, legibilidade, profissionalismo, brand compliance.
---
**Versao**: 2.0.0 | **Data**: 2026-02-12 | **Autor**: Descomplicar
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -0,0 +1,168 @@
---
name: penpot-pipeline
description: >
Pipeline Penpot→código: extrai designs do Penpot via MCP, converte para HTML/CSS/React.
Usar quando: converter mockup Penpot para código, gerar componente a partir de design,
exportar assets Penpot, sincronizar design system com código.
---
# /penpot-pipeline — Pipeline Design→Código
Workflow formalizado para converter designs Penpot em código funcional.
O MCP Penpot já existe (`mcp__penpot__*`) — esta skill formaliza o workflow.
---
## Workflow Completo
### Passo 1 — Encontrar o Design
```javascript
// Listar projectos Penpot
mcp__penpot__list_projects({})
// Listar ficheiros no projecto
mcp__penpot__get_project_files({ project_id: "<ID>" })
// Buscar componente específico
mcp__penpot__search_object({
file_id: "<FILE_ID>",
query: "<nome do componente>"
})
```
### Passo 2 — Analisar Estrutura
```javascript
// Schema disponível (ler uma vez por sessão)
mcp__penpot__penpot_tree_schema({})
// Árvore do componente com screenshot
mcp__penpot__get_object_tree({
file_id: "<FILE_ID>",
object_id: "<OBJECT_ID>",
depth: 3
})
// Screenshot visual de alta resolução
mcp__penpot__get_rendered_component({
file_id: "<FILE_ID>",
object_id: "<OBJECT_ID>"
})
```
### Passo 3 — Gerar Código
Com base na árvore + screenshot, gerar código na stack alvo:
#### HTML + CSS (vanilla)
```
- Usar variáveis CSS para cores/fonts do design system
- Mobile-first (375px → 768px → 1200px)
- Nomes de classes: BEM (block__element--modifier)
- Acessibilidade: aria-labels, roles semânticos
```
#### React + TailwindCSS
```
- Componente funcional com TypeScript
- Props tipadas
- Variantes via className condicional
- Shadcn/ui para primitivos (Button, Card, Input)
- Tailwind classes da paleta Descomplicar ou do cliente
```
#### Next.js (Server Component por defeito)
```
- Server Component se sem interactividade
- Client Component ('use client') apenas para eventos
- Image: next/image com alt e sizes
- Link: next/link
```
### Passo 4 — Exportar Assets
```javascript
// Exportar imagem/icon do design
mcp__penpot__export_object({
file_id: "<FILE_ID>",
object_id: "<OBJECT_ID>",
format: "svg" // svg | png | pdf
})
```
### Passo 5 — Auditoria 10/10
Antes de entregar código (Regra #49):
- [ ] Segurança: sem XSS, sem dados expostos
- [ ] Performance: imagens optimizadas, lazy loading
- [ ] Acessibilidade: contraste, labels, keyboard nav
- [ ] Mobile: testado em 375px
- [ ] PT-PT: texto em português europeu
---
## Design System Descomplicar → Código
```css
/* design.json → variáveis CSS */
--color-primary: #1e3a5f;
--color-accent: #f97316;
--color-neutral: #f8fafc;
--color-text: #1e293b;
--color-muted: #64748b;
--font-heading: 'Inter', sans-serif;
--font-body: 'Inter', sans-serif;
```
```tsx
// Tailwind config (tailwind.config.ts)
colors: {
primary: '#1e3a5f',
accent: '#f97316',
neutral: '#f8fafc',
}
```
---
## Casos de Uso
### Landing page de serviço
```
1. mcp__penpot__search_object — encontrar frames "Hero", "Features", "CTA"
2. get_object_tree para cada frame
3. get_rendered_component para referência visual
4. Gerar HTML/CSS seguindo /design-b2b ou /design-saude
5. Integrar em WP (Elementor) ou Next.js
```
### Componente React isolado
```
1. search_object — encontrar componente
2. get_object_tree com depth=5 (para componentes complexos)
3. Gerar TSX com props
4. Exportar assets SVG
5. Publicar em /components da biblioteca
```
---
## Anti-Patterns
- **Nunca** gerar código sem ver o screenshot (get_rendered_component)
- **Nunca** assumir cores sem verificar design.json ou paleta do cliente
- **Nunca** entregar sem testar mobile (375px)
- **Nunca** hardcodar texto — usar variáveis/props
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
---
*Skill /penpot-pipeline v1.0 | 06-04-2026 | Eixo 5.5 — Pipeline Penpot→Código*
+124
View File
@@ -0,0 +1,124 @@
---
name: benchmark
description: >
Mede Core Web Vitals e performance antes/depois de alterações. Detecta regressões.
Usar antes e depois de qualquer alteração a WP, WooCommerce, Next.js ou infra.
Baseado no gstack /benchmark. Eixo 2B.
---
# /benchmark — Performance Antes/Depois
Medir o impacto real de alterações. Nunca fazer deploy sem benchmark.
---
## Quando Usar
- Antes de qualquer optimização de performance
- Antes de deploy de plugins/temas WordPress
- Antes de alterações ao servidor ou cache
- Antes de implementar nova feature em produção
- Como baseline mensal de cada site
---
## Métricas Alvo (Core Web Vitals 2024)
| Métrica | Bom | Precisa Melhorar | Mau |
|---------|-----|-----------------|-----|
| LCP (Largest Contentful Paint) | ≤2.5s | 2.5-4.0s | >4.0s |
| FID / INP (Interaction to Next Paint) | ≤200ms | 200-500ms | >500ms |
| CLS (Cumulative Layout Shift) | ≤0.1 | 0.1-0.25 | >0.25 |
| TTFB (Time to First Byte) | ≤800ms | 800-1800ms | >1800ms |
| FCP (First Contentful Paint) | ≤1.8s | 1.8-3.0s | >3.0s |
---
## Protocolo
### Passo 1 — Baseline (ANTES)
```bash
# Via MCP Lighthouse (se disponível)
mcp__lighthouse__get_core_web_vitals({ url: "<URL>" })
mcp__lighthouse__run_audit({ url: "<URL>", categories: ["performance"] })
# Ou via Lighthouse CLI no servidor
ssh server "lighthouse <URL> --output=json --output-path=/tmp/before.json --chrome-flags='--headless'"
# Ou via PageSpeed Insights API
curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=<URL>&strategy=mobile" | jq '.lighthouseResult.categories.performance.score'
```
**Guardar baseline:**
```bash
BEFORE_LCP=<valor>
BEFORE_CLS=<valor>
BEFORE_FCP=<valor>
BEFORE_SCORE=<valor>
```
### Passo 2 — Executar Alteração
Fazer a alteração (deploy, optimização, plugin, etc.)
### Passo 3 — Depois
```bash
# Repetir as mesmas medições
mcp__lighthouse__get_core_web_vitals({ url: "<URL>" })
AFTER_LCP=<valor>
AFTER_CLS=<valor>
AFTER_FCP=<valor>
AFTER_SCORE=<valor>
```
### Passo 4 — Comparação
```markdown
## Benchmark — [Site] — [Data]
| Métrica | Antes | Depois | Delta | Estado |
|---------|-------|--------|-------|--------|
| LCP | Xs | Ys | ±Zs | ✅/⚠️/❌ |
| CLS | X | Y | ±Z | ✅/⚠️/❌ |
| FCP | Xs | Ys | ±Zs | ✅/⚠️/❌ |
| Score | X% | Y% | ±Z% | ✅/⚠️/❌ |
**Veredicto:** MELHOROU / NEUTRO / REGREDIU
**Acção:** Manter deploy / Reverter / Investigar
```
---
## Regras de Decisão
```
SE qualquer métrica piorou >10% → REVERTER imediatamente
SE Score global piorou >5 pontos → investigar antes de continuar
SE CLS aumentou >0.05 → bloquear — UX crítica
SE LCP piorou >500ms em mobile → reverter
```
---
## Sites Descomplicar a Monitorizar
| Site | URL | Frequência |
|------|-----|-----------|
| Descomplicar main | descomplicar.pt | Mensal |
| Clip | clip.descomplicar.pt | Após cada deploy |
| Outros clientes | variável | Após alterações WP |
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
---
*Skill /benchmark v1.0 | 06-04-2026 | Eixo 2B — gstack pattern*
+155
View File
@@ -0,0 +1,155 @@
---
name: canary
description: >
Monitorização pós-deploy — detecta regressões em produção. Verifica que o deploy
não quebrou nada crítico nos 15min seguintes. Baseado no gstack /canary. Eixo 2B.
Usar após qualquer deploy em produção.
---
# /canary — Monitorização Pós-Deploy
Os primeiros 15 minutos após um deploy são os mais críticos. Esta skill verifica que tudo está OK.
---
## Quando Usar (SEMPRE após deploy produção)
- Após deploy de código em produção
- Após actualização de WordPress (core, plugins, temas)
- Após alterações de servidor (PHP, Nginx, MySQL)
- Após mudanças de DNS ou SSL
- Após activação de nova funcionalidade
---
## Protocolo (15 minutos)
### Minuto 0-2 — Status Checks
```bash
# 1. Site responde?
curl -s -o /dev/null -w "%{http_code}" <URL>/
# Esperado: 200
# 2. Admin WP responde?
curl -s -o /dev/null -w "%{http_code}" <URL>/wp-admin/
# Esperado: 200 ou 302
# 3. SSL válido?
curl -vI <URL> 2>&1 | grep "SSL certificate verify"
# Esperado: SSL certificate verify ok
# 4. Tempo de resposta aceitável?
curl -s -o /dev/null -w "%{time_total}\n" <URL>/
# Esperado: < 3.0 segundos
```
### Minuto 2-5 — Funcionalidades Críticas
**Para WordPress:**
```bash
# Página principal carrega sem erros
curl -s <URL>/ | grep -c "wp-content"
# Esperado: > 0
# Sem erro crítico PHP
curl -s <URL>/ | grep -i "fatal error\|parse error\|warning"
# Esperado: sem output
# WP-CLI status
wp --path=/var/www/html core verify-checksums 2>&1 | tail -1
# Esperado: "WordPress installation verifies against checksums."
```
**Para aplicações:**
```bash
# Health endpoint
curl -s <URL>/api/health | jq '.status'
# Esperado: "ok"
# Database conecta?
curl -s <URL>/api/health | jq '.database'
# Esperado: "connected"
```
### Minuto 5-10 — Métricas de Performance
```javascript
// Via Lighthouse MCP
mcp__lighthouse__get_performance_score({ url: "<URL>" })
// Esperado: >= baseline (ver /benchmark)
mcp__lighthouse__get_core_web_vitals({ url: "<URL>" })
// Comparar com baseline guardado
```
### Minuto 10-15 — Logs e Erros
```bash
# Erros PHP nas últimas 15 min
ssh server "tail -100 /var/log/php/error.log | grep '$(date -d '15 minutes ago' +%H:%M)'"
# Erros Nginx/Apache
ssh server "tail -50 /var/log/nginx/error.log"
# WooCommerce (se aplicável)
wp --path=/var/www/html wc log list 2>&1 | head -20
```
---
## Output — Relatório Canary
```markdown
## Canary Check — [Site] — [Data] [Hora]
**Deploy:** [O que foi alterado]
| Check | Estado | Detalhe |
|-------|--------|---------|
| HTTP 200 | ✅/❌ | |
| SSL | ✅/❌ | |
| Tempo resposta | ✅/❌ | Xs |
| Sem erros PHP | ✅/❌ | |
| Performance score | ✅/❌ | X% (base: Y%) |
| Logs limpos | ✅/❌ | |
**Resultado:** ✅ DEPLOY ESTÁVEL | ⚠️ INVESTIGAR | ❌ REVERTER
```
---
## Critérios de Reversão Imediata
```
❌ HTTP response != 200 → REVERTER
❌ SSL falha → REVERTER
❌ "Fatal error" em qualquer página → REVERTER
❌ Tempo resposta > 10s → INVESTIGAR
❌ Performance score caiu >15 pontos → INVESTIGAR
❌ Logs com erros críticos → INVESTIGAR
```
---
## Escalada Automática
Se algum check falha:
```
1. NOTIFICAR: criar issue no Desk CRM com urgência P1
2. REVERTER: se erro crítico, reverter imediatamente
3. DOCUMENTAR: o que falhou e quando
4. ANALISAR: root cause antes de re-deploy
```
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
---
*Skill /canary v1.0 | 06-04-2026 | Eixo 2B — gstack pattern*
+12
View File
@@ -301,3 +301,15 @@ Activar Chrome por defeito **aumenta consumo de context window** porque as ferra
1. Desactivar default: `/chrome` -> desactivar
2. Usar `claude --chrome` apenas quando necessario
3. Preferir WebFetch para leituras simples de paginas publicas
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -241,3 +241,15 @@ Output: [resultado esperado]
Input: [caso complexo]
Output: [resultado detalhado]
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -461,3 +461,15 @@ git commit
**Skill v1.1** | 12-03-2026 | Descomplicar® | Renomeado de /security-check para /dep-audit
**Security First** - Zero vulnerabilities ou documentadas
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+267
View File
@@ -0,0 +1,267 @@
---
name: diagrama
category: dev-tools
description: "Gera diagramas de arquitectura, fluxo, ER e sequência em três formatos: draw.io (.drawio), Excalidraw e Mermaid. Usar quando 'diagrama', 'arquitectura', 'draw.io', 'fluxo', 'ER', 'sequência', 'infra', 'componentes'."
version: "1.0.0"
created: 2026-04-04
tools: [mcp__claude_ai_Excalidraw__export_to_excalidraw, mcp__mcp-mermaid__generate, Write, Bash]
---
# Skill: /diagrama
Gera diagramas técnicos em três formatos consoante o caso de uso. Suporta arquitectura de sistemas, fluxogramas, diagramas ER, sequência, infra-estrutura e redes.
---
## Quando usar cada formato
| Formato | Quando usar | Output |
|---------|------------|--------|
| **draw.io** | Diagramas formais para documentação, propostas, clientes | `.drawio` (editável) |
| **Excalidraw** | Esboços rápidos, brainstorming visual, estilo whiteboard | `.excalidraw` / MCP |
| **Mermaid** | Diagramas como código, versionáveis em Git, embeds Markdown | `.svg` / `.png` |
---
## Processo de execução
### 1. Identificar pedido
Quando o utilizador pede um diagrama, detectar:
- **Tipo:** arquitectura | fluxo | ER | sequência | rede | organograma | classe
- **Formato pretendido:** draw.io (default para doc. formal) | excalidraw | mermaid
- **Contexto:** sistemas envolvidos, entidades, actores
Se não especificado, perguntar apenas: "draw.io (formal) ou Excalidraw (esboço)?"
### 2. Gerar conteúdo
---
## Geração draw.io (.drawio)
O formato draw.io é mxGraph XML. Gerar o XML e guardar como `.drawio`.
### Estrutura base
```xml
<mxfile host="Claude Code" modified="YYYY-MM-DDTHH:MM:SS" agent="Claude" version="21.0">
<diagram name="Diagrama" id="diagram-1">
<mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- elementos aqui -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
```
### Templates de elementos mxGraph
**Rectângulo (componente/serviço):**
```xml
<mxCell id="2" value="Nome" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="160" y="160" width="120" height="60" as="geometry"/>
</mxCell>
```
**Seta/ligação:**
```xml
<mxCell id="10" edge="1" source="2" target="3" parent="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
```
**Cilindro (base de dados):**
```xml
<mxCell id="5" value="PostgreSQL" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="320" y="160" width="80" height="80" as="geometry"/>
</mxCell>
```
**Cloud (serviço externo):**
```xml
<mxCell id="6" value="Cloudflare" style="shape=mxgraph.cisco.sites.generic_building;sketch=0;html=1;pointerEvents=1;dashed=0;fillColor=#036897;strokeColor=#ffffff;strokeWidth=2;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;" vertex="1" parent="1">
<mxGeometry x="480" y="160" width="60" height="60" as="geometry"/>
</mxCell>
```
**Actor (pessoa/utilizador):**
```xml
<mxCell id="7" value="Utilizador" style="shape=mxgraph.flowchart.start_2;fillColor=#00BEF2;strokeColor=#006EAF;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1">
<mxGeometry x="40" y="170" width="60" height="40" as="geometry"/>
</mxCell>
```
**Swimlane (grupo/camada):**
```xml
<mxCell id="8" value="Camada Frontend" style="swimlane;startSize=20;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="0" y="0" width="400" height="200" as="geometry"/>
</mxCell>
```
### Paleta de cores Descomplicar
| Componente | fillColor | strokeColor |
|-----------|-----------|-------------|
| Serviço/App | `#dae8fc` | `#6c8ebf` |
| Base de dados | `#f8cecc` | `#b85450` |
| Fila/Queue | `#d5e8d4` | `#82b366` |
| Externo/Cloud | `#fff2cc` | `#d6b656` |
| Infra/Servidor | `#e1d5e7` | `#9673a6` |
| Claude/IA | `#f0f4ff` | `#4a6cf7` |
### Guardar ficheiro
Guardar em `/media/ealmeida/Dados/Hub/tmp/diagramas/` com nome descritivo:
```
YYYY-MM-DD-nome-diagrama.drawio
```
Abrir com:
```bash
drawio "/media/ealmeida/Dados/Hub/tmp/diagramas/NOME.drawio" &
```
(ou abrir manualmente com draw.io desktop / draw.io no browser)
---
## Geração Excalidraw
Usar o MCP `mcp__claude_ai_Excalidraw__export_to_excalidraw` para diagramas no estilo whiteboard.
### Fluxo
1. Chamar `mcp__claude_ai_Excalidraw__create_view` para iniciar sessão
2. Chamar `mcp__claude_ai_Excalidraw__export_to_excalidraw` com o conteúdo estruturado
3. Informar o utilizador do link/path gerado
### Casos de uso preferidos
- Brainstorming e exploração rápida
- Diagramas de fluxo com estilo manual
- Esboços para reuniões
- Arquitecturas de alto nível para comunicação interna
---
## Geração Mermaid
Usar o MCP `mcp__mcp-mermaid__generate` para diagramas como código.
### Tipos suportados
**Fluxograma:**
```
flowchart TD
A[Início] --> B{Condição}
B -->|Sim| C[Acção]
B -->|Não| D[Fim]
```
**Sequência:**
```
sequenceDiagram
participant U as Utilizador
participant A as Claude Code
participant N as n8n
U->>A: Pedido
A->>N: Trigger workflow
N-->>A: Resultado
A-->>U: Resposta
```
**ER:**
```
erDiagram
CLIENTE ||--o{ PROJECTO : tem
PROJECTO ||--o{ TAREFA : contém
TAREFA {
int id
string nome
string estado
}
```
**Arquitectura de componentes (C4):**
```
C4Context
title Stack Descomplicar
Person(eal, "Emanuel", "Utilizador principal")
System(cc, "Claude Code", "Interface interactiva")
System(clip, "Paperclip", "Agentes autónomos")
System(n8n, "n8n", "Automação determinística")
Rel(eal, cc, "usa directamente")
Rel(cc, clip, "delega tarefas complexas")
Rel(cc, n8n, "activa workflows")
```
### Guardar output
Guardar o código Mermaid em `/media/ealmeida/Dados/Hub/tmp/diagramas/NOME.mmd` e renderizar para SVG/PNG via MCP.
---
## Templates prontos por contexto
### Arquitectura StackDescomplicar
Gerar diagrama com as três camadas do stack:
- **Camada 1:** Claude Code (trabalho interactivo)
- **Camada 2:** n8n (automação determinística)
- **Camada 3:** Paperclip (raciocínio autónomo)
### Proposta comercial
Diagrama da solução para o cliente com:
- Infra-estrutura actual (antes)
- Solução proposta (depois)
- Componentes e integrações
### Pipeline de dados
Diagrama de fluxo com:
- Fonte → Processamento → Destino
- Triggers, transformações, outputs
### Diagrama ER Desk CRM
Entidades principais: Lead → Customer → Estimate → Invoice → Payment
---
## Boas práticas
- **Máx. 10-15 elementos** por diagrama (mais → dividir em sub-diagramas)
- **Labels curtos:** 2-4 palavras por elemento
- **Setas com label** quando o fluxo não é óbvio
- **Cor consistente** por tipo de componente (seguir paleta Descomplicar)
- **Nome descritivo** no ficheiro (não "diagrama1.drawio")
- **Guardar em Hub/tmp/diagramas/** para fácil acesso
---
## Instalar draw.io MCP (opcional, para funcionalidades avançadas)
O vídeo #210 do Stack_Pesquisa_Videos.md demonstra um MCP draw.io com geração automática a partir de análise de código. Para instalar:
```bash
# Verificar se há MCP draw.io disponível no gateway
# Ver: Hub/04-Stack/claude-code-context-hygiene.md → secção MCPs
```
Alternativa: usar draw.io via browser em https://app.diagrams.net (gratuito, sem instalação) e importar o `.drawio` gerado.
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+159
View File
@@ -0,0 +1,159 @@
---
name: docx
description: "Criação, edição e análise de documentos Word (.docx). Versão light para heartbeats."
---
# DOCX — Referência Rápida
## Referência rápida
| Tarefa | Abordagem |
|--------|-----------|
| Ler conteúdo | `pandoc` ou descompactar XML |
| Criar novo | `docx-js` (npm install -g docx) |
| Editar existente | Descompactar → editar XML → recompactar |
| Converter .doc | `python scripts/office/soffice.py --headless --convert-to docx doc.doc` |
## Criar novos documentos (docx-js)
### Setup básico
```javascript
const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,
Header, Footer, AlignmentType, PageOrientation, LevelFormat, HeadingLevel,
BorderStyle, WidthType, ShadingType, PageNumber, PageBreak } = require('docx');
const doc = new Document({ sections: [{ children: [/* conteúdo */] }] });
Packer.toBuffer(doc).then(buffer => fs.writeFileSync("doc.docx", buffer));
```
### Tamanho de página (A4)
```javascript
sections: [{
properties: {
page: {
size: { width: 11906, height: 16838 }, // A4 em DXA
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 }
}
},
children: [/* conteúdo */]
}]
```
Largura de conteúdo A4 com margens 1": `11906 - 2880 = 9026 DXA`
**Paisagem:** Passar dimensões retrato + `orientation: PageOrientation.LANDSCAPE` (docx-js troca internamente).
### Listas
```javascript
numbering: { config: [
{ reference: "bullets", levels: [{ level: 0, format: LevelFormat.BULLET, text: "\u2022",
alignment: AlignmentType.LEFT, style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] }
] }
// Usar: new Paragraph({ numbering: { reference: "bullets", level: 0 }, children: [...] })
```
### Tabelas
```javascript
// Largura tabela = soma columnWidths. Usar SEMPRE WidthType.DXA (nunca PERCENTAGE).
new Table({
width: { size: 9026, type: WidthType.DXA },
columnWidths: [4513, 4513],
rows: [new TableRow({ children: [
new TableCell({
borders: { top: b, bottom: b, left: b, right: b },
width: { size: 4513, type: WidthType.DXA },
shading: { fill: "D5E8F0", type: ShadingType.CLEAR }, // CLEAR, nunca SOLID
margins: { top: 80, bottom: 80, left: 120, right: 120 },
children: [new Paragraph({ children: [new TextRun("Célula")] })]
})
] })]
})
```
### Imagens
```javascript
new ImageRun({
type: "png", // Obrigatório
data: fs.readFileSync("image.png"),
transformation: { width: 200, height: 150 },
altText: { title: "T", description: "D", name: "N" } // Três obrigatórios
})
```
### Cabeçalhos/rodapés
```javascript
headers: { default: new Header({ children: [new Paragraph({ children: [new TextRun("Cabeçalho")] })] }) },
footers: { default: new Footer({ children: [new Paragraph({
children: [new TextRun("Página "), new TextRun({ children: [PageNumber.CURRENT] })]
})] }) }
```
### Regras críticas docx-js
- Nunca usar `\n` — usar Paragraphs separados
- Nunca usar bullets unicode — usar `LevelFormat.BULLET`
- PageBreak dentro de Paragraph: `new Paragraph({ children: [new PageBreak()] })`
- ImageRun requer `type`
- Tabelas: `columnWidths` E `width` na célula, ambos devem corresponder
- Usar `ShadingType.CLEAR`, nunca SOLID
- TOC requer `HeadingLevel` apenas, sem estilos custom
- Override estilos: IDs exactos "Heading1", "Heading2" + `outlineLevel`
## Editar documentos existentes
### Passo 1: Descompactar
```bash
python scripts/office/unpack.py document.docx unpacked/
```
### Passo 2: Editar XML
Editar ficheiros em `unpacked/word/`. Usar ferramenta Edit directamente (não scripts Python).
**Tracked changes:**
```xml
<!-- Inserção -->
<w:ins w:id="1" w:author="Claude" w:date="2025-01-01T00:00:00Z">
<w:r><w:t>texto inserido</w:t></w:r>
</w:ins>
<!-- Eliminação -->
<w:del w:id="2" w:author="Claude" w:date="2025-01-01T00:00:00Z">
<w:r><w:delText>texto eliminado</w:delText></w:r>
</w:del>
```
**Comentários:**
```bash
python scripts/comment.py unpacked/ 0 "Texto do comentário"
python scripts/comment.py unpacked/ 1 "Resposta" --parent 0
```
**Smart quotes:** `&#x2018;` `&#x2019;` `&#x201C;` `&#x201D;`
### Passo 3: Recompactar
```bash
python scripts/office/pack.py unpacked/ output.docx --original document.docx
```
Validação: `python scripts/office/validate.py doc.docx`
## Convenções Descomplicar
- Data: DD-MM-YYYY
- Monetário: 1.234,56 EUR
- Fonte: Arial 12pt
- Página: A4 (11906 x 16838 DXA)
- Autor tracked changes: "Claude"
- Idioma: PT-PT
---
**Versão**: 1.0.0-light | **Base**: 1.0.0
+12
View File
@@ -510,3 +510,15 @@ Apos executar `comment.py` (ver Passo 2), adicionar marcadores ao document.xml.
---
**Versao**: 1.0.0 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -218,3 +218,15 @@ CMD ["npm", "start"]
---
*Versão 1.0.0 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+160
View File
@@ -0,0 +1,160 @@
---
name: pdf
description: Processamento de ficheiros PDF — leitura, extracção, merge, split, OCR, formulários. Versão light para heartbeats.
---
# PDF — Referência Rápida
## Bibliotecas Python
### pypdf — operações básicas
```python
from pypdf import PdfReader, PdfWriter
# Ler e extrair texto
reader = PdfReader("documento.pdf")
for page in reader.pages:
text = page.extract_text()
# Merge
writer = PdfWriter()
for pdf in ["doc1.pdf", "doc2.pdf"]:
for page in PdfReader(pdf).pages:
writer.add_page(page)
with open("merged.pdf", "wb") as f:
writer.write(f)
# Split (uma página por ficheiro)
for i, page in enumerate(reader.pages):
w = PdfWriter()
w.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as f:
w.write(f)
# Rotate
page = reader.pages[0]
page.rotate(90)
# Password
writer.encrypt("userpass", "ownerpass")
```
### pdfplumber — tabelas e texto com layout
```python
import pdfplumber
with pdfplumber.open("doc.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
tables = page.extract_tables()
```
### reportlab — criação de PDFs
```python
from reportlab.platypus import SimpleDocTemplate, Paragraph, Table, TableStyle, PageBreak
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
doc = SimpleDocTemplate("report.pdf")
styles = getSampleStyleSheet()
elements = [Paragraph("Título", styles['Title'])]
doc.build(elements)
```
**Subscripts/superscripts:** Nunca usar caracteres Unicode. Usar tags XML: `<sub>2</sub>`, `<super>2</super>`.
## CLI
```bash
# Extrair texto (poppler-utils)
pdftotext input.pdf output.txt
pdftotext -layout input.pdf output.txt
# Merge/split (qpdf)
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
# Encriptar
qpdf --encrypt user_pass owner_pass 256 -- input.pdf encrypted.pdf
# Reparar
qpdf --check input.pdf
# Extrair imagens
pdfimages -j input.pdf output_prefix
# Render para PNG
pdftoppm -png -r 300 document.pdf output_prefix
```
## OCR (PDFs digitalizados)
```python
import pytesseract
from pdf2image import convert_from_path
images = convert_from_path('scanned.pdf')
text = ""
for image in images:
text += pytesseract.image_to_string(image)
```
## Formulários
### Verificar campos preenchíveis
```bash
python scripts/check_fillable_fields.py <file.pdf>
```
### Campos preenchíveis (nativos)
1. `python scripts/extract_form_field_info.py <input.pdf> <field_info.json>`
2. `python scripts/convert_pdf_to_images.py <file.pdf> <output_dir>`
3. Criar `field_values.json` com `field_id`, `page`, `value`
4. `python scripts/fill_fillable_fields.py <input.pdf> <field_values.json> <output.pdf>`
### Campos não preenchíveis (anotações)
1. `python scripts/extract_form_structure.py <input.pdf> form_structure.json`
2. **Abordagem A (estrutura):** Analisar JSON, criar `fields.json` com `pdf_width`/`pdf_height` e bounding boxes
3. **Abordagem B (visual):** Converter para imagens, identificar campos, refinar com crop
4. `python scripts/check_bounding_boxes.py fields.json`
5. `python scripts/fill_pdf_form_with_annotations.py <input.pdf> fields.json <output.pdf>`
6. `python scripts/create_validation_image.py <page> <fields.json> <input_img> <output_img>`
## Referência rápida
| Tarefa | Ferramenta | Comando |
|--------|-----------|---------|
| Merge | pypdf/qpdf | `writer.add_page()` / `qpdf --pages` |
| Split | pypdf/qpdf | Uma página por ficheiro |
| Texto | pdfplumber | `page.extract_text()` |
| Tabelas | pdfplumber | `page.extract_tables()` |
| Criar | reportlab | Canvas ou Platypus |
| OCR | pytesseract | Converter para imagem primeiro |
| Formulários | pypdf/scripts | Ver secção acima |
## Caminhos Descomplicar
| Local | Caminho |
|-------|---------|
| Documentos empresa | `/media/ealmeida/Dados/GDrive/Cloud/Descomplicar/` |
| Propostas | `/media/ealmeida/Dados/Hub/03-Propostas/` |
| Arquivo clientes | `/media/ealmeida/Dados/GDrive/Arquivo_de_Clientes/` |
| Knowledge Base | `/media/ealmeida/Dados/Hub/06-Operacoes/Knowledge-Base/PDFs/` |
| Temporários | `~/.claude-work/` (limpar ao concluir) |
## Workflow
1. Localizar PDF (filesystem ou Google Drive)
2. Descarregar para `~/.claude-work/` se necessário
3. Processar
4. Guardar no destino final
5. Limpar temporários
---
**Versão**: 1.0.0-light | **Base**: 1.0.0
+12
View File
@@ -794,3 +794,15 @@ def extract_text_with_ocr(pdf_path):
---
**Versao**: 1.0.0 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -392,3 +392,15 @@ mcp__dify-kb__dify_kb_retrieve_segments({
---
**Versão**: 1.0.0 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -130,3 +130,15 @@ Tabela com: ID, Nome, Segmento, Volume Anual (EUR), Projectos Activos, Última I
---
**Versão**: 1.0.0 | **Autor**: Descomplicar® | **Plugin**: dev-tools
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -189,3 +189,15 @@ hooks/
- `references/composition-patterns.md` - Compound components, providers, dependency injection (Vercel Engineering)
- `references/custom-hooks.md` - useDebounce, useLocalStorage, useFetch com codigo completo
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -186,3 +186,15 @@ description: >
Ver `references/anthropic-patterns.md` para exemplos detalhados de progressive disclosure.
Ver `references/descomplicar-standards.md` para exemplos de skills Descomplicar bem estruturadas.
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -144,3 +144,15 @@ No servidor dev, Playwright ja esta disponivel em `/root/Dev`.
---
**Versao**: 1.0.0 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -372,3 +372,15 @@ O ficheiro de referencia de precos esta em:
---
**Versao**: 1.0.0 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+154
View File
@@ -0,0 +1,154 @@
---
name: youtube-extract
category: dev-tools
description: "Extrai transcrições e metadados de vídeos, playlists e canais YouTube para o ficheiro de pesquisa Stack_Pesquisa_Videos.md. Usar quando 'youtube', 'vídeo', 'playlist', 'canal', 'transcrição', 'extrair vídeo', 'pesquisa vídeos'."
version: "1.0.0"
created: 2026-04-04
tools: [Bash]
---
# Skill: /youtube-extract
Extrai transcrições e metadados de vídeos, playlists e canais YouTube usando o script `youtube-pesquisa-videos.py`. Adiciona automaticamente ao ficheiro de pesquisa do StackDescomplicar.
---
## Ficheiros relevantes
| Ficheiro | Caminho |
|----------|---------|
| **Script** | `/media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py` |
| **Destino padrão** | `/media/ealmeida/Dados/Hub/04-Stack/Stack_Pesquisa_Videos.md` |
---
## Processo de execução
### 1. Identificar o pedido
Detectar na mensagem do utilizador:
- **URLs** — vídeos individuais, playlists (`?list=`), canais (`@canal`, `/c/`, `/channel/`)
- **Limite** — "primeiros 10", "máx 5", etc. → usar `--max N`
- **Destino** — ficheiro alternativo? → usar `--output caminho`
- **Modo** — adicionar ao ficheiro (`--append`) vs mostrar no terminal (sem flag)
### 2. Construir o comando
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
URL1 URL2 ... \
[--max N] \
[--append] \
[--output /caminho/alternativo.md] \
[--file lista.txt]
```
### 3. Exemplos por tipo de URL
**Vídeo individual:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtu.be/dQw4w9WgXcQ" --append
```
**Playlist completa:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtube.com/playlist?list=PLxxx" --append
```
**Playlist com limite:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtube.com/playlist?list=PLxxx" --max 10 --append
```
**Canal completo (máx. 20):**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtube.com/@NomeCanal" --max 20 --append
```
**Mix de URLs:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtu.be/ID1" \
"https://youtube.com/playlist?list=PLxxx" \
--max 5 --append
```
**Ficheiro de lista:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
--file /caminho/lista.txt --append
```
**Pré-visualizar sem gravar:**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtu.be/ID1"
```
---
## Comportamento padrão
| Situação | Acção |
|----------|-------|
| URL única de vídeo | Extrair e perguntar se adiciona ao ficheiro |
| Múltiplos vídeos | Extrair todos e adicionar com `--append` |
| Playlist/canal sem limite | Alertar o utilizador — perguntar limite antes de executar |
| Ficheiro de destino não especificado | Usar `Stack_Pesquisa_Videos.md` |
> **Aviso obrigatório para playlists/canais sem `--max`:** Informar o utilizador do número de vídeos antes de processar — canais podem ter centenas.
---
## Após a extracção
1. Informar quantos vídeos foram adicionados e os números `#N` atribuídos
2. Sugerir ao utilizador que complete os campos `*(a completar)*` no ficheiro
3. Se houver erros (transcrição indisponível), mencionar quais os vídeos afectados
4. Opcional: abrir o ficheiro no editor — `xdg-open "Stack_Pesquisa_Videos.md"`
---
## Pré-requisitos
- `yt-dlp` instalado: `pip install yt-dlp` ou `brew install yt-dlp`
- Python 3.8+
- Acesso à internet
Verificar disponibilidade:
```bash
yt-dlp --version && python3 --version
```
---
## Casos especiais
**ID curto do YouTube (11 chars):**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py dQw4w9WgXcQ --append
```
**Destino alternativo (outro projecto):**
```bash
python3 /media/ealmeida/Dados/Dev/ClaudeDev/youtube-pesquisa-videos.py \
"https://youtu.be/ID1" \
--output "/media/ealmeida/Dados/Hub/05-Projectos/MeuProjecto/videos.md" \
--append
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "gestao",
"description": "Project management, time tracking, daily checkups, worklogs, reflections, knowledge management, archiving and compliance auditing. Backed by NotebookLM notebooks.",
"version": "1.3.0",
"version": "1.4.0",
"author": {
"name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt"
+30
View File
@@ -0,0 +1,30 @@
# Changelog — Plugin gestao
Todas as alterações relevantes a este plugin. Segue [Semantic Versioning](https://semver.org/).
---
## [1.4.0] — 2026-04-07
### Adicionado
- **Nova skill `/clip-instructions`** — gerir AGENTS.md de agentes Paperclip por nome: ver, editar, criar, rever histórico de versões e rollback via API config revisions
### Corrigido
- **`/clip-health`** — check 1 reescrito: `systemctl` substituído por `ps aux` (Paperclip não usa systemd); check 6 reescrito: `npx paperclipai doctor` substituído por `curl http://localhost:3100/health`; adicionado check de memória partilhada POSIX (`/dev/shm/PostgreSQL.*`) — causa raiz do bug pós-reboot; score actualizado 21→22; 2 entradas no Healing Log
- **`/clip-agent`** — curl de atribuição de skills corrigido: adicionado `-H "Authorization: Bearer $PAPERCLIP_API_KEY"` (sem header dava 401); documentadas notas sobre agentes analyst (`process` adapter, `claude-sonnet-4-6`, heartbeat desactivado); checklist "Criar agente novo" actualizada com `instructionsBundleMode: "external"`, `instructionsRootPath`, `instructionsEntryFile`; 3 entradas no Healing Log
- **`/clip-issue`** — `author_user_id` corrigido: `'board'``'v1N5OccPn9DGq6iog7qW9nEvnXYFT3iO'` (ID real de Emanuel); adicionado modo checkout/release com endpoints API e fallback SQL; entrada no Healing Log
- **`/clip-skill`** — modelo mental corrigido: "ephemeral/symlinks" → "injecção de contexto em runtime a cada heartbeat"; adicionado `-H "Authorization: Bearer $PAPERCLIP_API_KEY"` aos dois curls de API (`/skills/import` e `/skills/sync`); nota sobre adapter `process` para agentes analyst; entrada no Healing Log
### Notas técnicas
- Todas as correcções baseadas em aprendizagens dos vídeos Paperclip (sessão 07-04-2026)
- Chave de autenticação Paperclip: `Authorization: Bearer $PAPERCLIP_API_KEY` obrigatória em todos os endpoints da API local
- Agentes criados via SQL directamente (fora do fluxo OpenClaw) **não** recebem `company_memberships` automaticamente — inserção manual obrigatória
---
## [1.3.0] — anterior
- Versão base (sem changelog registado)
+1 -1
View File
@@ -4,7 +4,7 @@ description: Auto-reflexão e melhoria contínua do sistema. Analisa sessões, i
padrões, sugere optimizações. Auto-trigger >20 tool calls.
role: Auto-reflexão e melhoria contínua do sistema
domain: Dev
model: sonnet
model: haiku
tools: Read, Write, Edit, Glob, ToolSearch
# Dependencies
+12
View File
@@ -132,3 +132,15 @@ exit $EXIT_CODE
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -221,3 +221,15 @@ Output: [resultado esperado]
Input: [caso complexo]
Output: [resultado detalhado]
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -175,3 +175,15 @@ mcp__google_workspace__create_event({
- **Workflows detalhados:** `references/workflows-detalhados.md`
- **MCP tools e constantes:** `references/mcp-tools-referencia.md`
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12 -1
View File
@@ -1,7 +1,6 @@
---
name: cleanup-downloads
description: Limpeza e triagem da pasta Transferências (Downloads). Verifica cada ficheiro individualmente, apaga descartáveis, classifica o restante por categoria. Usar quando "transferências", "downloads", "limpar downloads", "cleanup", "limpeza pasta".
disable-model-invocation: true
---
# Cleanup Downloads
@@ -105,3 +104,15 @@ Após mover documentos financeiros (regra 3), lançar despesas via `/expense`:
## Integração /today
Incluir contagem de ficheiros na pasta quando >10 ficheiros.
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+1 -1
View File
@@ -168,7 +168,7 @@ echo "Tunnel: $TUNNEL_PORT | Servidor: $ACTUAL_PORT"
### Check 11: Agentes sem permissoes bash
Invocar tool MCP: `mcp__paperclip__diag_agents_missing_permissions`
Invocar tool MCP: `mcp__paperclip__diag_agents_without_skip_permissions`
- 0 = OK
- 1+ = CRITICO (agentes vao ficar bloqueados ao executar bash — corrigir com `/clip-agent`)
+12
View File
@@ -122,3 +122,15 @@ Gerar alertas se:
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+137
View File
@@ -0,0 +1,137 @@
---
name: deep-research
description: >
Pesquisa profunda em 3 layers: Hub Obsidian (Layer 1) + NotebookLM análise (Layer 2) +
Web/LightRAG externo (Layer 3). Para questões complexas que requerem síntese de múltiplas fontes.
Upgrade do /research com NotebookLM integrado e RAG trinity completo.
Usar quando: análise competitiva profunda, pesquisa mercado, due diligence, relatório estratégico.
---
# /deep-research — Pesquisa Profunda com RAG Trinity
Pesquisa em 3 camadas com síntese final. Mais profundo que `/research`, mais estruturado que `/hub-search`.
---
## Quando Usar
| Situação | Skill Correcta |
|---------|----------------|
| "Onde está X no Hub?" | `/hub-search` |
| "Analisa este documento" | `/research` |
| "Pesquisa profunda + síntese de múltiplas fontes" | `/deep-research` ← este |
| "Análise competitiva completa" | `/deep-research` + `/research competitive` |
---
## Protocolo (3 Layers)
### Layer 1 — Hub Obsidian (conhecimento interno)
```bash
# 1a. Busca full-text no Hub
obsidian search query="<TERMO>" format=json limit=10
# 1b. Se Obsidian não responde (offline), fallback via Grep
grep -r "<TERMO>" /media/ealmeida/Dados/Hub/ --include="*.md" -l | head -20
# 1c. Verificar LightRAG para contexto interno
mcp__lightrag__lightrag_query({
query: "<TERMO>",
mode: "hybrid"
})
```
**Critério de suficiência Layer 1:** Encontrou 3+ documentos relevantes com contexto concreto.
- SE suficiente para questão simples → responder + registar fonte
- SE questão requer análise profunda → continuar para Layer 2
### Layer 2 — NotebookLM (análise profunda)
Seleccionar notebook relevante com base no domínio:
| Domínio | Notebook ID |
|---------|-------------|
| Estratégia e Empreendedorismo | 79d43410-0e29-4be1-881d-84db6bdc239a |
| Stack Tecnológico | [consultar mcp__notebooklm__ lista] |
| Marketing e Vendas | [consultar mcp__notebooklm__ lista] |
```javascript
// Consultar notebook relevante
mcp__notebooklm__notebook_query({
notebook_id: "<ID>",
query: "<QUESTÃO ESPECÍFICA — mais precisa que a geral>"
})
```
**Critério de suficiência Layer 2:** NotebookLM retornou análise com citações específicas.
- SE suficiente → sintetizar com Layer 1 + responder
- SE requer dados externos → continuar para Layer 3
### Layer 3 — Web + LightRAG (conhecimento externo)
```javascript
// 3a. LightRAG para KB externa (PDFs, transcripts)
mcp__lightrag__lightrag_query({
query: "<QUESTÃO>",
mode: "global" // para análise de padrões amplos
})
// 3b. Web search para dados actuais
mcp__web-search__search({
query: "<QUESTÃO> site:scholar.google.com OR filetype:pdf",
num_results: 10
})
```
---
## Síntese Final
Após recolher de 2+ layers, sintetizar:
```markdown
## Síntese — [Tópico]
**Fontes consultadas:** Layer 1 (Hub), Layer 2 (NotebookLM [Notebook X]), Layer 3 (Web/LightRAG)
### O que sabemos (interno)
[Resumo Layer 1 — conhecimento já documentado]
### Análise profunda
[Resumo Layer 2 — análise NotebookLM com citações]
### Contexto externo
[Resumo Layer 3 — se consultado]
### Síntese e Recomendação
[Cruzamento das layers — resposta directa à questão]
### Próximos Passos
- [ ] Acção 1 derivada da pesquisa
- [ ] Acção 2
```
---
## Self-Improving Loop
Após cada execução, registar preferências para melhorar futuras pesquisas:
```bash
# Guardar aprendizagem em Hub
echo "$(date '+%Y-%m-%d') — deep-research — [TÓPICO] — [O QUE FUNCIONOU/NÃO FUNCIONOU]" \
>> /media/ealmeida/Dados/Hub/00-Inbox/research-preferences.md
```
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
---
*Skill /deep-research v1.0 | 06-04-2026 | Eixo 7B — RAG Trinity + NotebookLM integrado*
+12
View File
@@ -339,3 +339,15 @@ Output: [resultado esperado]
Input: [caso complexo]
Output: [resultado detalhado]
```
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -440,3 +440,15 @@ Após concluir o documento:
---
**Versão**: 1.0.0 | **Data**: 2026-03-06 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+138
View File
@@ -0,0 +1,138 @@
---
name: hub-search
description: >
Pesquisa no vault Hub Obsidian com relevance scoring e backlinks.
Layer 1 da arquitectura RAG trinity (CLI → NotebookLM → LightRAG).
Usar quando: (1) pesquisar conteúdo no Hub por termo ou conceito,
(2) encontrar notas relacionadas via backlinks, (3) localizar PROCs/QR/docs
antes de executar tarefas, (4) verificar se existe documentação antes de criar.
---
# /hub-search — Pesquisa no Hub (Layer 1 RAG)
Pesquisa rápida no vault Hub via Obsidian CLI. Requer Obsidian aberto.
Fallback automático para Grep se Obsidian não estiver a correr.
---
## Uso
```
/hub-search "termo"
/hub-search "LightRAG configuração" --backlinks
/hub-search "PROC-MCP" --files
```
---
## Workflow
### Passo 1 — Tentar via Obsidian CLI
```bash
# Pesquisa básica
obsidian search query="TERMO" format=json
# Com backlinks (recomendado para conceitos)
obsidian search query="TERMO" format=json
obsidian backlinks file="NOTA"
# Limitar resultados
obsidian search query="TERMO" limit=10 format=json
```
**Indicador de sucesso:** saída JSON com `results` array.
**Indicador de falha:** mensagem `unable to find Obsidian` → ir para fallback.
### Passo 2 — Fallback: Grep no Hub
Se CLI falhar (Obsidian fechado):
```
Grep "TERMO" /media/ealmeida/Dados/Hub/ --type md
```
Adicionar contexto ao utilizador: "Obsidian não está a correr — usando busca directa nos ficheiros."
### Passo 3 — Apresentar resultados
**Formato de output:**
```markdown
## Resultados: "[termo]"
**Fonte:** Obsidian CLI v1.12.7 | **Backlinks:** Sim/Não
### Encontrado em N notas
| Nota | Path | Relevância |
|------|------|-----------|
| [título] | `path/relativo.md` | Alta/Média/Baixa |
### Notas com backlinks para este termo
- `nota-a.md` → referencia `nota-b.md`
### Relacionados sugeridos
- [links relevantes encontrados nos resultados]
```
---
## Regras
1. **Sempre tentar CLI primeiro** — é mais preciso (scoring semântico)
2. **--include-backlinks por defeito** quando o termo é um conceito (não um comando)
3. **Fallback silencioso** — não perguntar, só mencionar que usou Grep
4. **Max 10 resultados** — se mais, mostrar top 10 por relevância
5. **Paths relativos** na apresentação (ex: `04-Stack/02.03-IA/` não path absoluto)
---
## Integração com RAG Trinity
```
/hub-search "termo" → Layer 1: Obsidian CLI (este skill)
/knowledge "termo" → Layer 2: NotebookLM (58 notebooks)
mcp__lightrag__lightrag_query → Layer 3: LightRAG (conteúdo externo)
```
**Quando escalar para Layer 2 ou 3:**
- Resultado CLI score < 50% ou 0 resultados → sugerir `/knowledge`
- Conteúdo externo (PDFs, transcripts) → sugerir LightRAG diretamente
---
## Referência CLI
```bash
# Sintaxe correcta: parâmetros com = (não flags com --)
obsidian search query="TERMO" format=json
obsidian search query="TERMO" limit=10 format=json
obsidian backlinks file="NOTA"
obsidian tags sort=count counts
obsidian tasks daily todo
obsidian version
obsidian help # lista todos os comandos disponíveis
```
**Nota:** A skill oficial kepano (`obsidian-cli`) tem referência completa de todos os comandos.
**Requer:** Obsidian aberto + CLI activado em Settings → General → Advanced
**Wrapper:** `~/.local/bin/obsidian` (define XDG_RUNTIME_DIR Flatpak)
**Docs:** `04-Stack/02.03-IA/Obsidian-CLI.md`
---
*Skill v1.0.0 | 06-04-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -234,3 +234,15 @@ Quando invocado directamente (sem /today):
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -391,3 +391,15 @@ Checklist automática:
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -288,3 +288,15 @@ if (resultado.score < 50 || !resultado.encontrado) {
- `references/routing-guide.md` - Mapeamento detalhado com codigo de routing
- Inventario completo: `~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md`
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -150,3 +150,15 @@ Ou abrir a app e usar File > Open para navegar ate ao ficheiro.
- **Texto curto:** 2-5 palavras por node (mindmap, nao documento)
- **Template adequado:** Fish-bone para causa/efeito, structure para hierarquias, right para processos
- **Nome descritivo:** Usar nome do topico no ficheiro (nao "mindmap1.km")
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -392,3 +392,15 @@ Auth guardada em: `~/.notebooklm-mcp-cli/profiles/<name>/auth.json`
---
**Versão**: 1.0.0 | **Data**: 24-02-2026 | **Autor**: Descomplicar®
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+116
View File
@@ -0,0 +1,116 @@
---
name: office-hours
description: >
Persona YC que reframe problemas antes de escrever código. Desafia pressupostos,
faz as perguntas difíceis que um investidor faria. Usar ANTES de qualquer implementação
significativa. Baseado no gstack /office-hours. Eixo 2B.
---
# /office-hours — Consulta YC antes de Codar
Persona: sócio de uma YC top-tier que passou 20 anos a ver startups falharem por resolver o problema errado.
Objetivo: garantir que o que vais construir é o que deve ser construído.
---
## Quando Usar (OBRIGATÓRIO)
- Antes de implementar uma feature nova
- Antes de refactoring significativo
- Quando a solução parece óbvia demais
- Quando o problema está mal definido
- Quando o utilizador pediu X mas pode precisar de Y
**Anti-pattern:** Saltar para o código sem office-hours = construir a coisa certa de forma errada, ou a coisa errada certo.
---
## Protocolo
### Passo 1 — Escutar sem julgar
"O que estás a tentar resolver? Conta-me como se eu não soubesse nada do teu negócio."
Deixar o utilizador descrever o problema completamente. Não interromper. Tomar notas mentais dos seguintes sinais:
- Soluções disfarçadas de problemas ("preciso de um botão que...")
- Pressupostos não verificados ("os utilizadores querem...")
- Scope excessivo ("e depois também...")
- Urgência artificial ("precisa de estar pronto até...")
### Passo 2 — As 5 Perguntas
```
1. "Por que é que este problema existe agora? O que mudou?"
→ Detecta se é problema real ou hipotético
2. "Quem perde o emprego se este problema não for resolvido?"
→ Identifica o owner real e urgência verdadeira
3. "O que acontece se não fizermos nada?"
→ Valida se é crítico ou nice-to-have
4. "Já tentaste resolver isto de forma mais simples? O que aconteceu?"
→ Evita over-engineering, descobre tentativas anteriores
5. "Se tivesses de demonstrar que isto funciona em 24h, o que farias?"
→ Força a pensar em MVP mínimo viável
```
### Passo 3 — Reframe (se necessário)
SE o problema apresentado é uma solução disfarçada:
```
"Percebo que queres [solução X]. Mas o problema que describes é [problema Y].
Podemos resolver [Y] de forma mais simples: [alternativa Z].
Queres explorar Z antes de construir X?"
```
### Passo 4 — Aprovação ou Alternativa
```
APROVADO se:
- Problema claramente definido
- Solução proposta é a mais simples
- ROI claro (tempo poupado, receita gerada, risco eliminado)
- Utilizador entende o trade-off
ALTERNATIVA se:
- Há solução mais simples não considerada
- O problema não está suficientemente validado
- Scope excessivo para o valor gerado
```
### Passo 5 — Output
```markdown
## Office Hours — [Data]
**Problema original:** [o que o utilizador apresentou]
**Problema real:** [reframe se necessário]
**Decisão:** AVANÇAR | REFRAMED | ADIAR
**Justificação:** [1-2 frases]
**Próximo passo:** [acção concreta]
```
---
## Exemplos de Reframe
| Pedido original | Reframe YC |
|----------------|-----------|
| "Preciso de um dashboard de métricas" | "O que decides diferente com o dashboard? Se nada, não precisas dele." |
| "Quero migrar para microserviços" | "Qual é o problema do monolito actual? Quantos utilizadores tens?" |
| "Refactoring completo do código" | "O que não consegues fazer agora por causa do código? Isso é o problema." |
| "Automatizar este processo" | "Quanto tempo demora? Quantas vezes por semana? Vale a automação?" |
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
---
*Skill /office-hours v1.0 | 06-04-2026 | Eixo 2B — gstack pattern*
+111
View File
@@ -0,0 +1,111 @@
---
name: onboarding
category: gestao
description: "Checklist e automacao de onboarding de novo colaborador. Criacao de contas, documentacao, equipamento. Usar quando 'onboarding', 'novo colaborador', 'contratar', 'integrar pessoa', 'RH novo'."
version: "1.0.0"
created: 2026-04-07
tools: [mcp__desk-crm-v3__create_task, mcp__desk-crm-v3__add_task_checklist_item, mcp__google-workspace__gmail_send_email]
---
# Skill: /onboarding
Checklist e automacao de onboarding de novo colaborador. Baseado em PROC-Onboarding.md (RH-001).
---
## Referencia
Procedimento completo em: `Hub/06-Operacoes/Procedimentos/D4-RH/PROC-Onboarding.md`
Esta skill executa os passos — o PROC define as regras.
---
## Processo
### 1. Recolher dados do novo colaborador
Perguntar ao utilizador:
- **Nome completo**
- **Email pessoal**
- **Funcao/cargo**
- **Data de inicio**
- **Tipo:** colaborador / freelancer / estagiario
- **Departamento:** D1-D7
### 2. Criar tarefa no Desk CRM
```
mcp__desk-crm-v3__create_task({
name: "Onboarding — [Nome]",
project_id: 65,
startdate: [data inicio],
duedate: [data inicio + 5 dias uteis],
priority: 2,
description: "Onboarding de [Nome] como [Funcao] no departamento [Dept]"
})
```
### 3. Adicionar checklist de onboarding
Items obrigatorios (adicionar via `add_task_checklist_item`):
**Contas e acessos:**
- [ ] Email @descomplicar.pt criado
- [ ] Conta Desk CRM criada (staff)
- [ ] Acesso Gitea (se tecnico)
- [ ] Acesso Google Workspace
- [ ] Password manager configurado
**Documentacao:**
- [ ] Contrato assinado
- [ ] NIF e dados fiscais recolhidos
- [ ] Ficha de colaborador preenchida
- [ ] RGPD — consentimento assinado
**Equipamento:**
- [ ] PC/portatil atribuido
- [ ] Acessos VPN/SSH (se aplicavel)
- [ ] Ferramentas de trabalho instaladas
**Integracao:**
- [ ] Reuniao de boas-vindas agendada
- [ ] Apresentacao a equipa
- [ ] Acesso a documentacao interna (Hub)
- [ ] Mentor atribuido (primeiras 2 semanas)
### 4. Enviar email de boas-vindas (opcional)
Se o utilizador aprovar, enviar email via Google Workspace:
```
Assunto: Bem-vindo(a) a Descomplicar — [Nome]
Corpo: Template de boas-vindas com:
- Data de inicio
- Links uteis (Desk, email, Git)
- Contacto do mentor
- Primeiros passos
```
### 5. Resumo
Apresentar ao utilizador:
- Tarefa Desk criada (ID + link)
- Checklist com N items
- Proximos passos manuais (contrato, equipamento)
---
## Regras
- **Nunca criar contas automaticamente** — apenas checklist para lembrar
- **Contrato e dados fiscais sao responsabilidade do Emanuel** — skill so lembra
- **Email de boas-vindas requer aprovacao** antes de enviar
- **Tipo freelancer** tem checklist reduzida (sem equipamento, sem VPN)
---
## Healing Log
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
+12
View File
@@ -364,3 +364,15 @@ Checklist automática:
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -183,3 +183,15 @@ Gera revisao mensal completa e publica como comentario na tarefa Desk do cliente
---
*Skill v1.0.0 | 2026-03-10 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -214,3 +214,15 @@ Relatórios podem ser guardados em:
---
*Skill v1.0.0 | 2026-02-05 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+153
View File
@@ -0,0 +1,153 @@
---
name: research-pipeline
description: >
Pipeline de pesquisa RAG trinity: Layer 1 (Obsidian CLI Hub), Layer 2 (NotebookLM),
Layer 3 (LightRAG externo). Orquestra as 3 camadas em sequência para pesquisas
profundas. Usar quando /hub-search ou /knowledge isolados não são suficientes,
quando o tema cruza conteúdo interno+externo, ou para research antes de executar
tarefas complexas (Eixo 7B, Stack Q2 2026).
---
# /research-pipeline — Pipeline Trinity de Pesquisa
Orquestra as 3 camadas RAG em sequência para obter contexto completo antes de executar tarefas.
```
Layer 1: Obsidian CLI → conteúdo Hub (notas, PROCs, docs internas)
Layer 2: NotebookLM → análise profunda (58 notebooks temáticos)
Layer 3: LightRAG → conteúdo externo (1612 docs, PDFs, transcripts)
```
---
## Uso
```
/research-pipeline "tema ou pergunta"
/research-pipeline "LightRAG configuração" --layers 1,2
/research-pipeline "PROC-MCP" --quick (só Layer 1)
/research-pipeline "n8n webhook setup" --deep (todas as layers)
```
---
## Workflow
### Passo 1 — Layer 1: Hub via Obsidian CLI
```bash
obsidian search "TERMO" --include-backlinks --format json
```
**Se CLI offline:** fallback para Grep no Hub.
Registar: `L1_results`, `L1_score` (0-100, baseado em nº resultados).
### Passo 2 — Avaliar se Layer 2 é necessária
```
SE L1_score >= 80 E query é operacional (PROC, QR, path):
→ PARAR — resultado suficiente, retornar L1
SE L1_score < 80 OU query é conceptual/analítica:
→ Avançar para Layer 2
```
### Passo 3 — Layer 2: NotebookLM (análise profunda)
Usar routing da skill `/knowledge` para seleccionar notebooks relevantes.
```javascript
// Max 2 notebooks para performance
mcp__notebooklm__notebook_query({ notebook_id, query })
```
Registar: `L2_results`, `L2_confidence`.
### Passo 4 — Avaliar se Layer 3 é necessária
```
SE query menciona PDFs, vídeos, transcripts, conteúdo externo:
→ Avançar para Layer 3
SE L2_confidence >= 70:
→ PARAR — retornar L1+L2 combinados
```
### Passo 5 — Layer 3: LightRAG (conteúdo externo)
```javascript
mcp__lightrag__lightrag_query({
query: "TERMO",
mode: "hybrid" // combina vector + graph
})
```
### Passo 6 — Síntese e output
```markdown
## Research: "[termo]"
### Hub (Layer 1) — [N notas encontradas]
[Resultados mais relevantes com paths]
### NotebookLM (Layer 2) — [notebook usado]
[Insights e contexto analítico]
### Externo (Layer 3) — [N docs]
[Conteúdo complementar de fontes externas]
### Síntese
[Resposta integrada das 3 camadas]
### Qualidade
- L1: [N resultados]
- L2: [confidence%] via [notebook]
- L3: [N docs]
- Tempo: ~[X]s
```
---
## Modos rápidos
| Flag | Layers activas | Uso |
|------|---------------|-----|
| `--quick` | L1 apenas | PROCs, paths, comandos |
| (default) | L1 + L2 | Maioria das queries |
| `--deep` | L1 + L2 + L3 | Investigação completa |
---
## Integração com outras skills
```
Antes de /wp-dev → /research-pipeline --quick "PROC-WordPress"
Antes de /cwp-* → /research-pipeline --quick "PROC-CWP"
Antes de design → /research-pipeline "design guidelines descomplicar"
Para /deep-research → /research-pipeline --deep (base de contexto)
```
---
## Regras
1. **Layer 1 sempre primeiro** — mais rápido e frequentemente suficiente
2. **Max 2 notebooks NotebookLM** por query (performance)
3. **L3 só para conteúdo externo** — não duplicar com L1
4. **Timeout L3:** 30s — se exceder, retornar L1+L2
5. **Citar fonte** de cada resultado no output
---
*Skill v1.0.0 | 06-04-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+131
View File
@@ -0,0 +1,131 @@
---
name: review-corrections
description: >
Analisa correcções feitas pelo utilizador nas últimas sessões e gera sugestões
de regras para CLAUDE.md. Lê ~/.claude-work/corrections.jsonl, agrupa por padrão,
e propõe melhorias concretas. Usar semanalmente (via /schedule) ou quando há >5
correcções acumuladas. Faz parte do loop de auto-melhoria (Eixo 3, Stack Q2 2026).
---
# /review-corrections — Análise de Correcções e Auto-melhoria
Analisa padrões de correcção do utilizador para melhorar o CLAUDE.md autonomamente.
---
## Workflow
### Passo 1 — Ler ficheiro de correcções
```bash
cat ~/.claude-work/corrections.jsonl
```
Cada linha é um JSON:
```json
{"ts":"2026-04-06T14:30:00","type":"correction","prompt":"não assim, usa grep","session":"abc","cwd":"/Hub/"}
```
### Passo 2 — Agrupar por padrão
Categorias de correcção:
| Padrão | Keywords | Acção sugerida |
|--------|---------|----------------|
| **Ferramenta errada** | "usa grep", "não uses bash", "usa read" | Regra de preferência de ferramenta |
| **Língua/formato** | "em português", "sem emojis", "com acentos" | Regra de output |
| **Abordagem** | "não assim", "de outra forma", "mais simples" | Regra de heurística |
| **Scope** | "não faças isso", "não toques em", "só X" | Regra de limites |
| **Verificação** | "verifica primeiro", "não inventar", "confirma" | Regra anti-alucinação |
### Passo 3 — Gerar sugestões de regras
Para cada padrão com ≥2 ocorrências, propor regra no formato:
```markdown
**Regra candidata:**
> [Padrão detectado N vezes] → Sugestão: "Nunca [X], sempre [Y]"
**Evidência:**
- "prompt1" (data)
- "prompt2" (data)
**Proposta CLAUDE.md:**
| NN | [Texto da regra concisa] |
```
### Passo 4 — Apresentar ao utilizador
```markdown
## Revisão de Correcções — [data]
**Total analisado:** N correcções em M sessões
**Padrões encontrados:** P
### Regras candidatas (aprovação necessária)
[lista de propostas]
### Limpar ficheiro?
[ ] Sim — arquivar em ~/.claude-work/corrections-archive-YYYY-MM.jsonl
[ ] Não — manter para próxima revisão
```
### Passo 5 — Aplicar regras aprovadas
Se o utilizador aprovar uma regra:
1. Abrir `~/.claude/CLAUDE.md`
2. Adicionar na tabela de REGRAS CORE com número sequencial
3. Confirmar: "Regra #NN adicionada."
Se o utilizador recusar:
- Arquivar correcção com tag `rejected`
- Não propor de novo
---
## Quando usar
- **Semanal** (via `/schedule` às segundas-feiras com `/today`)
- **Manual** quando corrections.jsonl tem >5 entradas
- **Após incidente** (mesmo erro 2+ vezes consecutivos)
---
## Integração auto-trigger
O hook `capture-corrections.sh` regista automaticamente em `~/.claude-work/corrections.jsonl`.
Esta skill consome esse ficheiro e fecha o loop de auto-melhoria.
**Loop completo:**
```
Correcção utilizador
→ capture-corrections.sh (regista)
→ /review-corrections (analisa)
→ CLAUDE.md (actualiza)
→ Comportamento melhora
```
---
## Anti-patterns
- Nunca aplicar regras sem aprovação explícita do utilizador
- Nunca propor regras com <2 ocorrências (pode ser caso isolado)
- Nunca eliminar regras existentes — apenas adicionar ou reformular
---
*Skill v1.0.0 | 06-04-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -338,3 +338,15 @@ mcp__desk-crm-v3__create_task ou update_task:
---
*Skill v1.0.0 | 2026-03-10 | Plugin gestao | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+124
View File
@@ -0,0 +1,124 @@
---
name: task-state
description: Gestão de estado persistente de tarefas entre sessões. Cria, actualiza e lê .task-state.md para tarefas complexas. Usar quando tarefa tem >2 sessões, múltiplos ficheiros, ou risco de perder contexto por compaction.
context: fork
---
# /task-state — Gestão de Estado de Tarefa
Persiste decisões, ficheiros e checkpoints entre sessões. Sobrevive a context compaction.
---
## Quando usar
**Usar quando:**
- Tarefa com >1 sessão de trabalho
- Múltiplos ficheiros a modificar (>3)
- Risco de context compaction apagar contexto crítico
- Tarefas que requerem aprovação por checkpoint
**Não usar quando:**
- Tarefas de <30 minutos
- Edições simples de 1-2 ficheiros
- Respostas a perguntas
---
## Comandos
### /task-state init
Cria `.task-state.md` no directório actual baseado no template.
```bash
# Verificar se já existe
[ -f ".task-state.md" ] && echo "AVISO: já existe — usar /task-state update" && exit 1
# Copiar template
cp ~/.claude-work/task-state-template.md .task-state.md
echo "Criado: .task-state.md"
```
Após criar, preencher os campos de Identificação manualmente.
### /task-state read
Lê e apresenta o estado actual — útil ao retomar uma tarefa interrompida:
```bash
cat .task-state.md
```
Ao retomar: ler "Próximo passo imediato" e "Bloqueantes actuais" primeiro.
### /task-state checkpoint N
Marca checkpoint N como concluído:
```bash
# Exemplo: marcar checkpoint 2 como feito
sed -i "s/- \[ \] Sub-issue 2:/- [x] Sub-issue 2:/" .task-state.md
```
### /task-state update
Actualizar campos específicos ao longo do trabalho:
- Adicionar ficheiros modificados à lista
- Registar decisões tomadas
- Actualizar "Próximo passo imediato"
- Adicionar bloqueantes encontrados
---
## Padrão Vertical Plans
Diferença para planos monolíticos:
| Monolítico | Vertical Plans |
|------------|----------------|
| Lê o plano completo | Divide em sub-issues com checkpoint |
| Implementa tudo | Implementa 1 sub-issue |
| Verifica no final | Testa + valida antes de avançar |
| Falha tarde | Falha cedo e barato |
**Regra:** Nunca avançar para sub-issue N+1 sem N estar testado e marcado.
---
## Integração com writing-plans
1. `/writing-plans` → cria plano com sub-issues e critérios de sucesso
2. `/task-state init <nome>` → cria ficheiro de estado
3. A cada sub-issue: implementar → testar → `/task-state checkpoint N` → commit
4. Se sessão interromper: ler `.task-state.md` → continuar no "Próximo passo imediato"
---
## Template
O template está em `~/.claude-work/task-state-template.md`.
Actualizar o template para reflectir necessidades do projecto actual.
---
## Contexto crítico — o que documentar
Documentar TUDO que está só na cabeça do Emanuel e que o agente precisa:
- "Este servidor é produção — não tocar sem aprovação"
- "O cliente X é sensível a preços — nunca mencionar concorrentes"
- "A BD usa UTF-8 mas tem registos ISO-8859 antigos — cuidado com migrações"
**Fonte:** Regra #361 — agente apagou BD de produção porque "é live" estava só na cabeça do humano.
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -108,3 +108,15 @@ Apos listar tarefas, sugerir ate 6 accoes concretas:
---
*Skill v1.0.0 | 04-03-2026 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+12
View File
@@ -250,3 +250,15 @@ const ALERT_HOURS = 4; // Alertar após 4h
---
*Skill v2.0.0 | 2026-02-05 | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+18
View File
@@ -233,6 +233,24 @@ Filename: `DD-MM-YYYY-checkup.md` (Regra #45: formato DD-MM-YYYY)
Repo agentes: `git.descomplicar.pt/ealmeida/claude_automations_dev`
---
## Self-Healing
Antes de executar, ler `~/.claude-work/healing/today.jsonl` (se existir). Cada linha é um padrão de erro conhecido:
```json
{"date":"YYYY-MM-DD","issue":"descrição do problema","fix":"como evitar","source":"user|auto"}
```
Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivamente. Após cada erro ou correcção do utilizador nesta skill, **adicionar nova linha** ao healing log com o padrão aprendido.
---
*Skill v10.0.0 | 05-03-2026 | Descomplicar®*
## Healing Log
<!-- Registo automático de erros e correcções nesta skill -->
+12
View File
@@ -363,3 +363,15 @@ Ver secção "Referências e Documentação" em:
---
*Skill v1.0.0 | 2026-02-13 | Plugin gestao | Descomplicar®*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
+26
View File
@@ -327,6 +327,32 @@ Perguntas ao analisar sessão:
- Auto-trigger ao parar timer
- Formato HTML alinhado com Regra #27
---
## Self-Healing
Antes de executar, ler `~/.claude-work/healing/worklog.jsonl` (se existir). Cada linha é um padrão de erro conhecido:
```json
{"date":"YYYY-MM-DD","issue":"descrição do problema","fix":"como evitar","source":"user|auto"}
```
Se encontrares um padrão relevante ao contexto actual, aplica o fix preventivamente. Após cada erro ou correcção do utilizador nesta skill, **adicionar nova linha** ao healing log com o padrão aprendido.
---
*Skill v4.2.0 | 2026-03-12 | Descomplicar(R)*
---
## Healing Log
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
```
*Adicionar nova linha após cada erro corrigido.*
@@ -23,6 +23,8 @@ skills:
- easypanel-deploy
- easypanel-troubleshoot
- easypanel-rollback
- easypanel-monitor
- easypanel-cicd
- easypanel-api
desk_task: 1502
desk_project: 65

Some files were not shown because too many files have changed in this diff Show More