Compare commits

...
59 Commits
Author SHA1 Message Date
Claude Code bce12944ae mcp-dev v3.0.1: esclarecer pacote v2 ≠ API v2 e politica de migracao/terceiros 2026-08-26 19:55:44 +01:00
Claude Code 99c1f8c8d3 docs(easypanel): healing log INC-032 — restart storm por stall de compactacao de memoria, nao bug de app
- easypanel-monitor: entrada healing log com deteccao (containerd shim disconnected + journalctl -k rcu/soft lockup) e fix (sysctl compaction_proactiveness/swappiness + cgroup limits)
- easypanel-troubleshoot: novo padrao 'Crash Loop multi-servico' distinto do crash loop single-app; corrigida referencia obsoleta a ssh-unified (permanentemente proibido) para ssh/bash nativo; healing log entry
2026-08-22 12:28:41 +01:00
ealmeida e3a2c6fd9c docs: validação fase F de skills e MCPs 2026-08-19 09:18:57 +01:00
ealmeida 18e48db490 feat(infraestrutura): mcp-dev v3.0 — SDK TypeScript v2 e transporte HTTP obrigatórios
Regra de Ouro adicionada ao topo da skill: SDK v2 (@modelcontextprotocol/server),
API de alto nível McpServer+registerTool (API de baixo nível Server+setRequestHandler
proibida), transporte HTTP obrigatório (stdio só como excepção documentada), e
proibição explícita de interpolação de dados em comandos shell/SSH.

Motivado por revisão de segurança ao mcp-kivicare (19-08-2026): 8 bugs reais
corrigidos em produção, incluindo injecção de comandos shell crítica e hooks
nativos disparados com o tipo errado. Regras adicionadas para nunca mais acontecer
em silêncio.

- SKILL.md: nova secção Regra de Ouro, API/annotations/capabilities actualizadas
  para v2, transportes HTTP obrigatório, changelog v3.0.0, healing log com os
  3 bugs mais graves do incidente.
- references/templates.md: reescrito para createMcpHandler + createMcpExpressApp
  (HTTP) e serveStdio (excepção), package.json com pacotes v2.
- references/best-practices.md: capabilities/annotations/error handling
  actualizados para API v2, checklist de segurança com regra anti-injecção de
  comandos shell, tabela de transportes com HTTP obrigatório.
- references/evaluation-guide.md: script de evaluations reescrito para
  Client+StreamableHTTPClientTransport in-process (sem porta/socket).
- infraestrutura: 1.2.2 -> 1.3.0
2026-08-19 09:16:31 +01:00
ealmeida 4e33c1d697 feat(wordpress): v2.0.0 adiciona skills mcp-loco-translate, mcp-ifthenpay, mcp-google-site-kit, mcp-complianz, mcp-tablepress 2026-08-19 08:30:10 +01:00
Emanuel Almeida 7035eae927 feat(wordpress): skill mcp-pro-elements — MCP dedicado ao PRO Elements (fork GPL Elementor Pro) via WP-CLI/SSH 2026-08-19 07:59:57 +01:00
ealmeida 9df437a48e feat(wordpress): skill mcp-ai-engine — MCP dedicado ao AI Engine (Meow Apps) via WP-CLI/SSH 2026-08-19 07:36:27 +01:00
McpComplianz Agent bacf65df33 skill: adicionar mcp-complianz (MCP dedicado Complianz GDPR/CMP) 2026-08-19 07:35:53 +01:00
ealmeida 0d818d9f72 skill: adicionar mcp-tablepress (MCP dedicado TablePress) 2026-08-19 07:08:22 +01:00
Descomplicar Agent 36a0721349 feat(wordpress): nova skill mcp-skyboot-icons — MCP Skyboot Custom Icons for Elementor
- Estado do plugin, catalogo dos 15 icon packs, listar icones de um
  pack activo, activar/desactivar pack.
- Plugin so encontrado activo em descomplicar.pt (producao); os
  outros 7 sites do bundle confirmados sem ele.
- MCP maioritariamente so-leitura: unica escrita real e o toggle
  on/off por pack (skb_cife_manage_icon), testada em ciclo idempotente
  contra producao.
2026-08-19 07:06:30 +01:00
ealmeida 174f2f9357 feat(skills): adicionar mcp-updraftplus (backup UpdraftPlus, quase so-leitura, alto risco) 2026-08-19 06:43:13 +01:00
Emanuel Almeida 87e4290283 docs: skill mcp-happyfiles — MCP HappyFiles Pro (pastas media library)
Documenta a taxonomia happyfiles_category (hierárquica, attachments), o
gotcha include_children=true por omissão no WP_Query (corrigido no MCP),
query_var=false na taxonomia (wp post list --happyfiles_category não
funciona), e confirma no código-fonte que apagar pasta nunca apaga
ficheiros. 9 tools, verificação ponta-a-ponta contra descomplicar.pt
(produção) e starter.descomplicar.pt documentada.
2026-08-19 06:33:26 +01:00
ealmeida 06e6509fc6 feat(wordpress): novo MCP mcp-kivicare - gestao clinica KiviCare
24 tools tipadas cobrindo o ecossistema clinico KiviCare (Free e Pro)
em WordPress via WP-CLI/SSH (familyclinic.pt): clinicas, medicos, sessoes
e horarios semanais, pacientes (perfil 360 e historico medico),
consultas (listar, detalhe, agendar, mudar estado com disparo de hooks
nativos kc_appointment_status_update, reagendar), encontros clinicos,
prescricoes e facturacao/contas.

Arquitectura de dupla ponte: bridge SQL directo com JSON_OBJECT/JSON_ARRAYAGG
e paginacao por subquery para leituras instantaneas em milissegundos;
bridge PHP seguro com wp eval-file para criacao de pacientes, agendamentos
e mudancas de estado que exigem integridade e disparo de hooks.
2026-08-19 06:31:01 +01:00
ealmeida 9741b4761d feat(wordpress): nova skill mcp-full-cliente
Documenta as 9 tools do MCP dedicado multi-site (mcp-full-cliente, porta 3204) para gestão
do broker de licenças WordPress premium (full-customer, api.full.services) — estado de ligação,
plugins geridos, catálogo, extracto de licenças da conta e reactivação controlada.
2026-08-19 06:30:09 +01:00
ealmeida e127e85ef8 feat(mcp-gtranslate): adiciona skill do MCP dedicado ao GTranslate
- 9 tools: idiomas activos/ordem, estilo/posicao do widget, idioma de
  origem, estado da licenca Pro/Enterprise (read-only)
- Documenta formato de armazenamento (array PHP nativo, --format=json
  correcto) e o gotcha de escrita idempotente do wp option patch update
- Confirmado ao vivo: so descomplicar.pt tem o plugin instalado
2026-08-19 06:29:47 +01:00
Descomplicar Agent a9ad8c5171 feat(skills): mcp-insert-headers-footers — MCP dedicado ao Insert Headers and Footers (WPCode Lite), gotcha de slashing wp_unslash/wp_slash, aviso de risco explícito 2026-08-19 06:29:12 +01:00
Emanuel Almeida fad4c1f33b docs: skill mcp-click-to-chat — MCP Click to Chat for WhatsApp (número, mensagem, toggle, posição/estilo) 2026-08-19 06:28:02 +01:00
ealmeida 82c800bfe0 feat(wordpress): novas skills seriously-simple-podcasting + mcp-seriously-simple-podcasting
Documenta as 14 tools do MCP dedicado (mcp-seriously-simple-podcasting, porta 3203) para
episódios/shows/definições de show em emanuelalmeida.pt, complementado pela skill de
conhecimento seriously-simple-podcasting (achado central: REST nativo do plugin é
escrita-capaz para episódios mas read-only para definições de show).
2026-08-19 06:14:32 +01:00
Emanuel Almeida b2b5070cee docs: skill mcp-bit-integrations — MCP dedicado Bit Integrations/Bit Integrations Pro (BitApps)
Único documento de referência para o schema btcbi_* (sem skill de conhecimento separada):
flows, logs de execução, connections, mapeamento completo de flow_details por app
(PerfexCRM/Desk, Google Contacts), mascaramento recursivo de credenciais, verificação
ponta-a-ponta contra produção (10 flows/75 logs) e staging.
2026-08-19 06:08:40 +01:00
ealmeida addd556a07 docs: skill mcp-fluentform — MCP FluentForms (formulários, submissions, contagens, settings)
Documenta o MCP dedicado mcp-fluentform (descomplicar.pt + starter.descomplicar.pt):
9 tools sobre a camada de serviço oficial do plugin (FormService/
SubmissionService/GlobalSettingsService), mapeamento de tabelas custom
fluentform_*, gotchas confirmados ao vivo (serialização de datas Carbon-like,
race condition em escritas paralelas dependentes) e evidência de verificação
ponta-a-ponta contra produção/staging.
2026-08-19 06:08:01 +01:00
ealmeida e709130a1f docs(skills): adiciona mcp-wpforms — MCP dedicado ao WPForms + Form Abandonment
Documenta o novo MCP standalone /media/ealmeida/Dados/Dev/mcp-wpforms/ (12 tools,
descomplicar.pt + emanuelalmeida.pt): formularios, entries (listar/ler/contar/
marcar lida/estrela/spam), entries abandonadas com contexto capturado, settings
gerais e estado Akismet. Sem skill de conhecimento wpforms separada — esta skill
inclui o mapeamento completo de tabelas/options (unica documentacao).
2026-08-19 06:06:58 +01:00
Emanuel Almeida 1fc8756767 docs: skill mcp-fluent-smtp — MCP FluentSMTP multi-site (descomplicar.pt, starter, emanuelalmeida.pt)
Estado geral, connections com segredos sempre mascarados, logs de email com
filtros/paginacao, detalhe de log, estatisticas de envio, reenvio controlado
(confirm:true). Documenta tambem o mapeamento de dados do plugin (unica
fonte, nao existe skill de conhecimento separada) e a decisao deliberada de
nao expor escrita de configuracao de connections.
2026-08-19 06:05:47 +01:00
ealmeida 93c68f7e58 feat(wordpress): novo MCP mcp-rank-math - escrita/gestao Rank Math SEO
27 tools via WP-CLI/SSH (bridge SQL para tabelas planas + wp eval-file
para dados serializados/side-effects): meta de post/taxonomia, schema
markup, redirects (via RankMath\Redirections\DB), modulos, sitemap,
404 monitor, analytics GSC, IndexNow, validacao SEO ao vivo por HTTP.

Cobre exactamente o que o MCP oficial rank-math-mcp (abilities
rank-math/* via WP Abilities API, documentado nesta sessao por outro
agente em rank-math/SKILL.md secao 17) nao cobre: esse e read-only/
analise (audit-site-seo, get-post-schema, scores, AI Visibility); este
e escrita/gestao (redirects, modulos, 404s, sitemap, options). Os dois
coexistem - rank-math/SKILL.md secao 17.4 actualizada com tabela de
quando usar qual dos tres caminhos (rank-math-mcp / mcp-rank-math /
WP-CLI).

Testado ponta-a-ponta em producao 19-08-2026: leituras com dados reais
(383 posts score bom, 21 modulos activos, 3 redirects, sitemap 9
entradas) e escritas verificadas sem mutar dados (no-op em option/meta
existentes, ciclo completo create+delete de um redirect de teste). Bug
real apanhado no smoke test: rank_math_modules tem chaves nao-
sequenciais na BD -> json_encode serializa como objecto, nao array -
normalizado em normalizeStringArray() antes de considerar pronto.
2026-08-19 05:53:53 +01:00
Claude Code ea051c273f feat(wordpress): playbooks de uso para mcp-jetengine
Adiciona references/playbooks.md (7 fluxos: ler antes de criar, modulos
opcionais, CPT+taxonomia+meta-box, CCT, glossario, query builder+listing,
levantar contexto) + indice curto em SKILL.md + keywords de trigger.

Documenta 2 gotchas confirmados contra o schema nativo (tools/list
19-08-2026, nao exercidos como writes em producao): CCT exige o modulo
'custom-content-types' activo (so 'booking-forms' estava activo);
query_type 'custom-content-type' aparece na descricao de tool-add-query
mas nao no enum real - usar 'posts' com post_type 'slug/name'.
2026-08-19 05:52:05 +01:00
ealmeida 46175594c1 feat(wordpress): nova skill fluent-crm (conhecimento profundo) + actualiza mcp-fluent-crm
fluent-crm documenta arquitectura Free/Pro, schema fc_*, FluentCrmApi(), guarda anti-escalada de status, wp-admin, Funnels/Dynamic Segments — companheira de conhecimento da mcp-fluent-crm (execução), mesmo padrão app-for-cloudflare/mcp-cloudflare-app.
2026-08-19 05:50:10 +01:00
Claude Code 47ab74ccfa feat(wordpress): nova skill mcp-jetengine - proxy MCP nativo JetEngine
Documenta o MCP jetengine (proxy stdio<->HTTPS ao MCP nativo do plugin,
Features API v3.8.0+): 11 tools, seguranca, verificacao, relacao com a
skill jetengine e com mcp-wpfc/mcp-webp-express.
2026-08-19 05:45:55 +01:00
ealmeida 572cb91b38 feat(wordpress): nova skill mcp-fluent-crm - MCP dedicado FluentCRM/FluentCRM Pro
20 tools (10 leitura + 10 escrita) para descomplicar.pt (produção, 291k contactos). Escritas via FluentCrmApi()/modelos do próprio plugin por SSH+wp eval, sem escrever ficheiros no servidor. Guardas de status explícitas (force_update/confirm) para nunca rebaixar/ressuscitar contactos sem intenção clara.
2026-08-19 05:44:16 +01:00
ealmeida c74dab4ac2 wordpress: nova skill mcp-wpmeteor (como usar o MCP wpmeteor)
- documenta as 8 tools do MCP wpmeteor: status, config, toggle de modulo,
  delay, exclusoes, telemetria detected
- wp-meteor actualizada: estado real confirmado nos 8 sites do bundle
  (so emanuelalmeida.pt tem o plugin), cross-referencia para mcp-wpmeteor
- mesma convencao de mcp-wpfc/mcp-element-pack/mcp-cloudflare-app: esta
  skill e o 'como executar', wp-meteor continua a ser o mapeamento
2026-08-19 05:35:21 +01:00
Claude Code 1ee91142d9 feat(wordpress): nova skill mcp-webp-express + doc MCP webpx na skill webp-express
Skill mcp-webp-express: MCP dedicado (webpx) para WebP Express multi-site
via WP-CLI/SSH, mesmo padrao mcp-wpfc. webp-express/SKILL.md: nova seccao
14 documentando o MCP construido e testado ao vivo em emanuelalmeida.pt.
2026-08-19 05:31:08 +01:00
ealmeida eae213c7f0 feat(wordpress): nova skill mcp-fluent-booking - MCP dedicado FluentBooking/FluentBooking Pro
Cobre: calendarios, event types, reservas (listar/detalhe/mudar
estado/reenviar confirmacao), actividade, disponibilidade, reports,
definicoes gerais, anfitrioes, estado do plugin/licenca Pro. 15
tools via REST API real com Application Password (nao SSH/SQL como
mcp-bit-social - o FluentBooking regista register_rest_route com
permission_callback por capability). Testado ponta-a-ponta em
producao 19-08-2026, incluindo escrita sem mutar dados reais (422
'No changes found' do proprio plugin). references/api-reference.md
com os endpoints/filtros/enums confirmados e references/diagnostics.md
com o playbook de uso (agenda, cancelamento, health check).
2026-08-19 05:29:42 +01:00
ealmeida b32ad83617 wordpress: nova skill mcp-wpfc (como usar o MCP wpfc)
- documenta as 18 tools do MCP wpfc (site como parametro, guarda-corpo
  Premium, allowlist fixa de 7 option keys)
- mesma convencao das skills mcp-element-pack/mcp-bit-social/mcp-cloudflare-app:
  esta skill e o 'como executar', wp-fastest-cache continua a ser o
  mapeamento completo das options
- cross-referencia wp-fastest-cache <-> mcp-wpfc nos dois sentidos
2026-08-19 05:24:09 +01:00
ealmeida c4139c84c3 wordpress/wp-fastest-cache: MCP wpfc construido e testado em producao (§16)
- estado real por site actualizado: 8 sites WP reais do bundle, nao 7
  (ccv, care, ecommerce-demo, ecommerce, e-commerce mapeados)
- pergunta em aberto sobre camada de cache em descomplicar.pt respondida:
  nenhum plugin de page-cache activo hoje, so edge Cloudflare
- achado critico documentado: options WPFC sao strings PHP planas com
  JSON dentro, nao JSON tipado do WP-CLI -- usar --format=json causa
  dupla codificacao e corrompe a option (reproduzido e corrigido)
- 18 tools testados ponta-a-ponta contra producao (descomplicar.pt, ccv)
2026-08-19 05:14:53 +01:00
ealmeida 70b2866edf feat(wordpress): nova skill mcp-bit-social - MCP dedicado BitSocial/BitSocial Pro
Cobre: contas sociais ligadas (+ activar/desactivar), schedules de
auto-post e Share Now, logs de publicacao, resumo de falhas por
plataforma, analytics, estado da licenca Pro. 12 tools, testado
ponta-a-ponta em producao 19-08-2026. references/data-model.md com o
schema completo wpah_bit_social_* e references/diagnostics.md com o
playbook de investigacao de falhas (inclui o caso real recorrente do
Pinterest sem imagem).
2026-08-19 05:11:24 +01:00
ealmeida a2205076fc feat(wordpress): skill mcp-cloudflare-app para o novo MCP da zona Cloudflare (app-for-cf)
Documenta as 14 tools do MCP dedicado descomplicar.pt (Bot Management, WAF Managed Ruleset, HSTS, CT, Leaked Credential Checks, purge cache), complementar à skill app-for-cloudflare existente. Keyword cloudflare adicionada ao manifesto.
2026-08-19 05:10:03 +01:00
ealmeida 639a5a4f6a wordpress/wp-fastest-cache: regista plano do MCP wpfc-mcp e corrige estado Premium por site
- descomplicar.pt tem wp-fastest-cache-premium 1.7.7 no disco mas INACTIVO
  (corrige a afirmacao anterior de que Premium nao estava instalado em
  nenhum site do bundle -- so era verdade para emanuelalmeida.pt)
- emanuelalmeida.pt e starter.descomplicar.pt: Free activo
- descomplicar.pt: nem Free nem Premium activos -- pergunta em aberto
  sobre o que serve cache HTML la hoje
- decisao de ambito: MCP multi-site (parametro site), activar Premium
  em descomplicar.pt (ainda por executar), catalogo de 18 tools previsto
2026-08-19 05:03:28 +01:00
ealmeida 5647b558cd wordpress/rank-math: documenta MCP oficial Rank Math (secao 17)
- rank-math-mcp via mcp-adapter-default-server, mesma infra wp mcp-adapter
  ja vendored no EMCP Tools, sem instalacao nova
- 13 abilities rank-math/* catalogadas com descricoes reais, testadas
  ao vivo em descomplicar.pt (get-seo-scores devolveu dados reais)
- tabela quando usar MCP vs WP-CLI
2026-08-19 04:55:56 +01:00
ealmeida 67f6d6e6e1 wordpress: adiciona skills element-pack-widgets e mcp-element-pack
- element-pack-widgets: catalogo verificado 168 widgets core + 95 integracao
  Element Pack Pro (BdThemes), get_name() extraido do codigo-fonte, 11
  excepcoes de nome confirmadas
- mcp-element-pack: documenta o MCP dedicado (node stdio) para licenca/
  modulos/mega-menu/white-label/custom-code do Element Pack Pro
2026-08-19 04:47:07 +01:00
Claude Code 000faca193 fix(wordpress): mcp-abilities-elementor - causa-raiz exacta da nao-exposicao MCP
Confirmado via WordPress/mcp-adapter README + wp eval ao vivo: o plugin
nao esta invisivel por falta do WP MCP Adapter instalado, mas por nunca
ter marcado nenhuma das 89 abilities com meta.public/meta.mcp.public
nem criado servidor MCP custom. get_meta() confirma ausencia da flag.
2026-08-19 04:19:45 +01:00
Claude Code 8bfdd34bb6 feat(wordpress): adiciona mcp-abilities-elementor (testado ao vivo)
Plugin Devenia instalado e testado em emanuelalmeida.pt (19-08-2026):
89 abilities elementor/* via WordPress Abilities API nativa. Confirmado
nao acessivel por MCP nesta sessao (sem servidor MCP proprio) - testado
via wp eval-file + WP_Ability::execute(). Achados reais: camada de
auditoria de design funcional (evaluate-design score 88/100 em pagina
real), delete-template funcional (preenche gap do EMCP), gate
template-first em authoring primitives, bug de poluicao de settings
em add-heading, bug de PHP warning em list-experiments, update-element
exige objecto completo (nao merge parcial como EMCP). Artefactos de
teste removidos (post 18166, template 18168).
2026-08-19 04:09:24 +01:00
Claude Code 7363300a7f feat(wordpress): adiciona elementor-v4-visual-editor (editor visual V4)
Adaptado de jainshwetank/elementor-pro-designer-skill (MIT) - painel
General/Style/Interactions, Class Manager, Variables Manager, breakpoints,
padroes de layout e troubleshooting para o editor visual Elementor Pro V4.
Complementa emcp-page-building (mesma versao Elementor, mas via MCP/API).
2026-08-19 03:50:30 +01:00
Claude Code 4a55d51329 feat(wordpress): EMCP Tools workflow skills + widget catalogs + pending wordpress skills
- emcp-page-building, emcp-content-ops, emcp-site-audit: EMCP Tools MCP
  workflows verified live (atomic/legacy interplay, apply-template overwrite
  risk, create-theme-template goes live immediately, false-positive malware
  pattern in scan-security, change ledger + rollback)
- elementor-pro-widgets: 30+5 native Elementor Pro widgets (curated catalog)
- elementskit-widgets / powerpack-widgets: 42 + 97 third-party widgets,
  widgetType extracted from plugin source (not guessed by convention)
- plugin.json bumped 1.2.0 -> 1.3.0, keywords + description updated
- commits pending wordpress skills already present as untracked files
  (emcp-tools, wordfence, wp-activity-log, seguranca-descomplicar,
  webp-express, wp-fastest-cache, wp-font-perf, wp-meteor,
  wp-activity-log, redis-object-cache, app-for-cloudflare) and pending
  edits (rank-math, wp-cli, wp-content-seo-gate)
2026-08-19 03:44:00 +01:00
AIkTop aa981e8089 feat(wordpress): nova skill full-cliente - broker de licencas WordPress premium (api.full.services)
Cobre: auditoria de ligacao/licencas por site, ligar sites a conta FULL,
reactivacao de plugins premium, e diagnostico de licencas fora da FULL
(fabricante directo, CodeCanyon). Baseada em leitura directa do codigo do
plugin full-customer v4.1.3 durante sessao real de auditoria da frota WP.
2026-08-16 15:21:49 +01:00
Claude Code 2863d0207f docs(gateway-check): regista slides-mcp (porta 3201) e bumpla infraestrutura para 1.2.2 2026-08-10 21:47:59 +01:00
Claude Code a179075704 feat(today): adicionar bloco de seguranca (P2-10, SPEC-Hardening-Seguranca.md)
Fase 2 passo 7b invoca today-security-block.py (71.Seguranca, Hub) -- le
relatorios/*.md ja gerados (sem correr scans novos), score+delta+alertas
por dominio. Secao '## Seguranca' nova no formato do dashboard. v12.0.0 -> v12.1.0.
2026-08-10 12:34:00 +01:00
Claude Code AI 88e0758d94 docs(gateway-check): regista MCPs migrados para o gateway (easypanel, infisical, paperclip)
- +paperclip (pm2, 3168), +easypanel/infisical (systemd fastmcp-proxy, 3206/3207)
- contadores corrigidos (30->33 services), proxima porta livre 3185->3208
2026-08-08 23:02:33 +01:00
ealmeida fd9b333b7b infraestrutura: bump 1.2.1 — propaga correccoes do mapa de portas do gateway
A cache do plugin e versionada por directorio (cache/.../1.2.0/), pelo que
as correccoes de ca6c56c ao gateway-check nao chegavam ao carregador sem
bump de versao.
2026-07-30 23:04:32 +01:00
ealmeida ca6c56c4d4 infraestrutura: actualiza mapa de portas do gateway e regras de operação
Corrige a próxima porta livre (a 3188 documentada estava ocupada e causou um
deploy falhado), regista o router youtube e o ssh-unified, e acrescenta três
regras: backups do nginx nunca em sites-enabled/, cruzar sempre ss -tlnH com
as portas roteadas, e contar ~40s de arranque nos MCPs Python/FastMCP.
2026-07-30 22:58:47 +01:00
ealmeida 1f19ec315c fix: bump plugin.json de marketing/gestao/project-manager/wordpress
O commit 0e2c832 bumpou só o marketplace.json agregado. A fonte de verdade
para o /plugin update é <plugin>/.claude-plugin/plugin.json, que ficou nas
versões antigas — resultado: o catálogo mostrava marketing 2.0.0 mas o
/plugin update respondia "already at the latest version (1.0.0)" e o cache
continuou a servir a superfície SEO morta.

Alinha as quatro fontes com o agregado e documenta o acoplamento no README:
os dois ficheiros têm de ser bumpados juntos, não há automação a sincronizá-los.
2026-07-30 22:58:46 +01:00
ealmeida 37af142c33 chore: ignora graphify-out/ (artefacto local do hook) 2026-07-30 22:40:06 +01:00
ealmeida 0e2c832fac marketplace: bump marketing 2.0.0, gestao 1.7.0, project-manager 1.2.0, wordpress 1.1.0 2026-07-30 22:39:49 +01:00
ealmeida d9d4bb8858 wordpress: adiciona skill wp-content-seo-gate 2026-07-30 22:39:49 +01:00
ealmeida 3ed97b472e project-manager: adiciona skills project-init e start 2026-07-30 22:39:48 +01:00
ealmeida 04f955ed0a gestao: adiciona agente hr-specialist 2026-07-30 22:39:48 +01:00
ealmeida 24ef1f6d27 gestao: remove referências à skill /research inexistente em deep-research 2026-07-30 22:39:48 +01:00
ealmeida 2d05873642 marketing: migra superfície SEO para OpenSEO (motor único)
As skills de SEO assentavam em quatro dependências, nenhuma operacional:
SEO Tools API (localhost:3000, pasta inexistente em disco), Ahrefs MCP
(nunca esteve em config), gsc e lighthouse (em disabledServers). Os seis
passos da /seo-audit e o workflow inteiro da /seo-report apontavam para
tooling morto — não eram executáveis.

- seo-audit v3.0: ordem por custo (grátis → lote pago → unitário pago),
  gate de mercado (PT = 2620/pt) e gate de maxPages
- seo-report v3.0: cobertura de crawl obrigatória no entregável
- ferramentas-api.md: inventário das 24 ferramentas OpenSEO + tabela de
  migração endpoint a endpoint
- implementacao-tecnica.md: striking distance, desperdício e filtro de
  ruído do GSC em código
- seo-specialist v3.0: primary_mcps [openseo], bloco de MCPs desligados,
  FID → INP nos Core Web Vitals

maxPages tem default 50: descomplicar.pt auditado com o default deu 25
URLs e 92 issues sem críticos; com maxPages 600 deu 1337 issues e 9
críticos. Documentado como gate — a fase Search Console dimensiona o crawl.

Limitações declaradas nas skills: get_audit_issues devolve contagens sem
URLs pela bridge MCP (structuredContent.issues não é entregue) e o whoami
não expõe saldo de créditos em self-hosted.
2026-07-30 22:39:40 +01:00
ealmeida f90ba6ec76 chore: ignora estado de runtime IJFW (.ijfw/) 2026-07-30 22:39:40 +01:00
ealmeidaandClaude Opus 4.8 04d9e50561 metodo-design-pro: enquadramento e do dono do produto, nao do agente
Licao do teste WhatSMS: o briefing enquadrou um sistema de automacao de
contacto multicanal como bot de resposta a mensagens, e o resultado foi
uma landing page de chatbot de WhatsApp.

Nova seccao 0: perguntar o posicionamento e nunca presumi-lo; "esta
robotico" pede tom e nao reescrita de posicionamento; briefing longo
escrito sozinho impede o motor de fazer as perguntas certas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-23 11:34:28 +01:00
ealmeidaandClaude Opus 4.8 0526320c2d design-media: rascunhos da migracao para Open Design
Levantamento e metodo, ainda por aprovar:

- SPEC-opendesign-migration.md: plano de migrar as skills e agents do
  plugin para o Open Design como motor unico, com design systems geridos
  la (Descomplicar e um por cliente)
- DRAFT-metodo-design-pro.md: contrato de entrada com 4 pilares, fluxo em
  4 fases, regra do hero, pipeline template-first (Envato e galerias) e
  directrizes de operacao no Open Design

Nenhum destes documentos esta validado por uso real. O primeiro teste
(WhatSMS) falhou no enquadramento — ver nota no topo do metodo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 22:18:18 +01:00
ealmeidaandClaude Opus 4.8 d852d54bf3 brand-guidelines: alinhar com o Open Design e tornar multi-marca
A skill documentava uma paleta azul/laranja (#1a365d, #dd6b20) com Open Sans
que nao corresponde nem ao design system nem ao site real. Cada ferramenta
produzia material com uma marca diferente.

Passa a espelhar o DESIGN.md do Open Design como fonte de verdade unica:
dourado #cc8d00 sobre preto e branco, Montserrat (display) e Inter (corpo),
com precedencia explicita do DESIGN.md sobre qualquer espelho.

Reformulada para servir qualquer marca (Descomplicar e clientes), com
procedimento para criar design systems de cliente a partir de material real
via brand-extract, validacao antes de tornar normativo, e um projecto por marca.

- SKILL.md v2.0.0: espelho correcto + gestao multi-marca
- descomplicar-theme.md v2.0.0: tokens YAML derivados do DESIGN.md
- color-palettes.md removido: 47 valores derivados da paleta errada
- design-systems-multimarca.md: procedimento de gestao no Open Design

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-22 20:46:03 +01:00
374 changed files with 15951 additions and 1495 deletions
+5 -5
View File
@@ -50,7 +50,7 @@
"name": "gestao", "name": "gestao",
"source": "./gestao", "source": "./gestao",
"description": "Project management, time tracking, daily checkups, worklogs, reflections, knowledge management and archiving. Backed by NotebookLM notebooks.", "description": "Project management, time tracking, daily checkups, worklogs, reflections, knowledge management and archiving. Backed by NotebookLM notebooks.",
"version": "1.6.2", "version": "1.7.0",
"author": { "author": {
"name": "Descomplicar - Crescimento Digital", "name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt" "url": "https://descomplicar.pt"
@@ -70,7 +70,7 @@
"name": "infraestrutura", "name": "infraestrutura",
"source": "./infraestrutura", "source": "./infraestrutura",
"description": "Server management, Proxmox VE/PBS/Clustering, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by NotebookLM notebooks (Proxmox 150+ sources).", "description": "Server management, Proxmox VE/PBS/Clustering, CWP administration, EasyPanel deployments, security audits, backups and MCP development. Backed by NotebookLM notebooks (Proxmox 150+ sources).",
"version": "1.2.0", "version": "1.2.2",
"author": { "author": {
"name": "Descomplicar - Crescimento Digital", "name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt" "url": "https://descomplicar.pt"
@@ -80,7 +80,7 @@
"name": "marketing", "name": "marketing",
"source": "./marketing", "source": "./marketing",
"description": "Digital marketing strategy, SEO, content marketing, social media, ads, copywriting, video and YouTube. Backed by NotebookLM notebooks.", "description": "Digital marketing strategy, SEO, content marketing, social media, ads, copywriting, video and YouTube. Backed by NotebookLM notebooks.",
"version": "1.0.0", "version": "2.0.0",
"author": { "author": {
"name": "Descomplicar - Crescimento Digital", "name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt" "url": "https://descomplicar.pt"
@@ -110,7 +110,7 @@
"name": "project-manager", "name": "project-manager",
"source": "./project-manager", "source": "./project-manager",
"description": "Spec-driven project management with flexible sprints, scope validation, and NotebookLM-powered discovery.", "description": "Spec-driven project management with flexible sprints, scope validation, and NotebookLM-powered discovery.",
"version": "1.1.0", "version": "1.2.0",
"author": { "author": {
"name": "Descomplicar - Crescimento Digital", "name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt" "url": "https://descomplicar.pt"
@@ -120,7 +120,7 @@
"name": "wordpress", "name": "wordpress",
"source": "./wordpress", "source": "./wordpress",
"description": "WordPress development, maintenance and optimization - plugins, themes, WooCommerce, Elementor, Crocoblock. Backed by NotebookLM notebooks.", "description": "WordPress development, maintenance and optimization - plugins, themes, WooCommerce, Elementor, Crocoblock. Backed by NotebookLM notebooks.",
"version": "1.0.0", "version": "1.1.0",
"author": { "author": {
"name": "Descomplicar - Crescimento Digital", "name": "Descomplicar - Crescimento Digital",
"url": "https://descomplicar.pt" "url": "https://descomplicar.pt"
+6
View File
@@ -1 +1,7 @@
design-media/skills/*/references/__pycache__/ design-media/skills/*/references/__pycache__/
# Estado de runtime IJFW (sessoes, metricas, cursores) — local, nunca versionado
.ijfw/
# Output do graphify (hook local de rebuild)
graphify-out/
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — claude-plugins
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — claude-plugins
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — claude-plugins
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+28 -1
View File
@@ -8,4 +8,31 @@ layer: wiki
--- ---
# claude-plugins # claude-plugins
Marketplace de plugins Claude Code da Descomplicar Marketplace de plugins Claude Code da Descomplicar
## Versões — bumpar sempre nos DOIS sítios
A versão de cada plugin vive em dois ficheiros e **não há automação a sincronizá-los**:
| Ficheiro | Papel | Quem o lê |
|---|---|---|
| `<plugin>/.claude-plugin/plugin.json` | **fonte de verdade** | `/plugin update` — é esta que decide se há versão nova |
| `.claude-plugin/marketplace.json` | agregado derivado | `/plugin marketplace update` — catálogo |
Bumpar só o agregado **não tem efeito nenhum**: o catálogo mostra a versão nova, o
`/plugin update` responde `already at the latest version` e o cache continua na antiga.
Aconteceu a 30-07-2026 com marketing/gestao/project-manager/wordpress.
Verificar coerência antes de commitar:
```bash
for p in */; do p=${p%/}; f="$p/.claude-plugin/plugin.json"; [ -f "$f" ] || continue
a=$(jq -r .version "$f")
b=$(jq -r ".plugins[]|select(.name==\"$p\").version" .claude-plugin/marketplace.json)
[ "$a" = "$b" ] || echo "DIVERGE $p: plugin.json=$a marketplace.json=$b"
done
```
Depois de publicar: `/plugin marketplace update descomplicar-plugins` (catálogo) **e**
`/plugin update <nome>@descomplicar-plugins` (reinstala no cache). O primeiro sozinho
não actualiza o que corre.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — claude-plugins
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+23
View File
@@ -0,0 +1,23 @@
---
type: Validation
version: 2.5
padrao-versao: 2.5
timestamp: 2026-08-19 09:16:34 UTC
mode: project
status: ❌ FAILED
---
# VALIDAÇÃO — 2026-08-19
## Resumo
| Métrica | Valor |
|---------|-------|
| Modo | project |
| Total projecto | 23 |
| Ficheiros OKF | 0 |
| Entidades OKF | 0 |
| Relacionamentos OKF | 0 |
| Erros | 23 |
| Avisos | 6 |
| Veredicto | ❌ FAILED |
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — skills
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — skills
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — skills
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# skills
Subprojecto skills do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — skills
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# skills
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — automacao
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — automacao
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — automacao
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# automacao
Subprojecto automacao do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — automacao
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — agents
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — agents
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — agents
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# agents
Subprojecto agents do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — agents
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# agents
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# automacao
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — skills
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — skills
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — skills
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# skills
Subprojecto skills do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — skills
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# skills
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — skills
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — skills
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — skills
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# skills
Subprojecto skills do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — skills
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# skills
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — crm-ops
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — crm-ops
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — crm-ops
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# crm-ops
Subprojecto crm-ops do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — crm-ops
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — agents
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — agents
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — agents
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# agents
Subprojecto agents do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — agents
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# agents
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# crm-ops
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — skills
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — skills
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — skills
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# skills
Subprojecto skills do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — skills
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# skills
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — design-media
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — design-media
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — design-media
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# design-media
Subprojecto design-media do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — design-media
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — agents
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — agents
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — agents
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# agents
Subprojecto agents do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — agents
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
+8
View File
@@ -0,0 +1,8 @@
# agents
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}
@@ -0,0 +1,109 @@
# DRAFT — Método Design Pro (camada de processo sobre Open Design)
**Estado:** Rascunho — origem: síntese Gemini de vídeos de páginas de alta qualidade (2026-07-22), adaptado ao stack Descomplicar.
**Aplica-se a:** websites/landing pages, propostas comerciais, decks PPTX, banners, vídeo — qualquer artefacto de design.
## 0. Quem define o enquadramento (lição do teste WhatSMS, 22-07-2026)
O **enquadramento — proposta de valor, posicionamento, o que se está a vender — pertence ao dono
do produto**. Nunca se deriva de análise do agente nem de diagnóstico de subagente.
No primeiro teste real deste método, o briefing enquadrou o WhatSMS como "responder a mensagens
fora de horas" e pediu mock-ups de conversa. Resultado: uma landing page de bot de WhatsApp, quando
o produto é um sistema de automação de contacto multicanal. O design estava competente; o
enquadramento destruía o posicionamento.
Regras que daí resultam:
- **Perguntar o posicionamento, não os acessórios.** Cor e tipografia têm defaults; a proposta de
valor não tem. Perguntar sobre a segunda, nunca presumi-la.
- **"Está robótico" é um pedido de tom.** Não é licença para reescrever posicionamento nem deitar
fora copy existente. Preservar por omissão; mudar só o que foi pedido.
- **Um diagnóstico que chama "AI slop" ao copy** pode estar a apontar estilo, não substância.
Nunca converter em mandato para substituir tudo.
- **Briefing longo escrito sozinho é sinal de alarme, não de rigor.** Quanto mais completo, mais
eficazmente impede o motor de fazer as perguntas certas ao dono do produto. O Open Design
pergunta — deixá-lo perguntar em vez de pré-responder tudo.
---
## 1. Contrato de Entrada (Zero Rascunhos Genéricos)
O pilar 1 (objectivo/posicionamento) **recolhe-se com o dono do produto**, nunca se deduz — ver secção 0.
Proibido gerar qualquer artefacto sem os 4 pilares explícitos ou deduzidos e confirmados:
1. **Objectivo comercial** — o que o utilizador/cliente deve sentir ou fazer no fim.
2. **Layout narrativo** — ordem exacta das secções/slides e comportamento de transição (scrollytelling em web; arco narrativo em decks/propostas).
3. **Personalidade da marca** — tom de voz, paleta intencional, espaçamento generoso (editorial feel). Fonte: design system no OD (Descomplicar ou cliente).
4. **Público-alvo** — perfil exacto que justifica a conversão.
Sem os 4 pilares → perguntar/deduzir e validar. Nunca template pré-feito como resposta.
## 2. Fluxo em 4 fases (mapeado às skills OD)
| Fase | O quê | Skills OD |
|---|---|---|
| **F1 Arquitectura** | Grelha estrutural, tipografia, hierarquia de blocos (wireframe visual) | `design-consultation`, `design-brief`, design system |
| **F2 Direcção artística** | Implementação com micro-interacções, profundidade, impacto no início. Web: Next.js/TS + Tailwind + Framer Motion | `creative-director`, `high-end-visual-design`, `frontend-design`, `gsap-*`/`emilkowalski-motion` |
| **F3 Variantes (Regra do Hero)** | Secção crítica → 3-5 abordagens estruturais distintas (split / centered minimal / inset frame) para selecção antes de avançar | runs paralelos no OD, `design-shotgun` local; **Google Stitch** (`stitch-loop`, `stitch-design-taste`) para ideação rápida de variantes UI a partir de prompt/sketch/screenshot, com export Figma |
| **F4 Auditoria adversarial** | Validação crítica antes de entrega: consistência visual, tipos TS, acessibilidade, bundle, fluidez de animação, anti-AI-slop | `design-review`, `impeccable-design-polish`, `pptx-html-fidelity-audit` (decks) |
## 3. Regra de Ouro da Modificação
- **Macro** (estrutura, layout, fluxo de páginas/secções) → resolvido e validado primeiro, ao nível global.
- **Micro** (espaçamentos, CTAs, detalhes) → só depois do macro aprovado. Nunca misturar os dois níveis na mesma iteração.
## 4. Pipeline Template-First (Envato & afins)
Um template profissional pode substituir F1+F2 — entra como ponto de partida, nunca como entrega directa.
### 4.1 Duas categorias de fonte
**A. Templates com código/ficheiros (adaptáveis):**
- Envato/ThemeForest (HTML, Next.js, Elementor kits, PPTX, vídeo) — licença cobre projectos de cliente
- UI8, Craftwork (UI kits), Relume (biblioteca Figma de secções), Framer/Webflow templates
**B. Galerias de inspiração (extracção de DNA, nunca cópia):**
- Dribbble, Pageflows, Recent.design, Landingfolio, Screensdesign
- Mobbin (fluxos de apps reais), Awwwards, Godly, Land-book, Lapa Ninja, SaaSFrame
### 4.2 Fluxo de adaptação (categoria A)
1. **Seleccionar** — escolher template alinhado com o layout narrativo do Contrato de Entrada (não o contrário).
2. **Extrair** — estrutura, grelha, tokens do template (`brand-extract`, `image-to-code`, `web-clone`, análise directa dos ficheiros).
3. **Retheme** — aplicar o design system do cliente/Descomplicar sobre a estrutura (`theme-factory`, `redesign-existing-projects`). Zero cores/fontes do template sobram.
4. **Recontentar** — copy e conteúdo reais segundo os 4 pilares; remover secções que não servem o objectivo comercial (cortar > acrescentar).
5. **F4 Auditoria** — igual ao fluxo normal; atenção extra a resíduos do template (placeholders, lorem ipsum, links demo, créditos).
### 4.3 Fluxo de referência (categoria B)
1. Capturar screenshots/URLs das referências escolhidas.
2. Extrair DNA: paleta, tipografia, grelha, ritmo de secções, padrões de interacção (`design-researcher` / visão OD).
3. DNA alimenta F1/F2 como direcção de arte — o artefacto é gerado de raiz com o nosso design system.
### 4.4 Biblioteca local de templates
- Templates descarregados (Envato) arquivados em pasta própria com metadados (fonte, licença, tags de uso) — candidata: `Hub/04-Recursos/Design/templates/` — para reutilização entre projectos.
- Cada adaptação bem-sucedida regista o par template→resultado para acelerar selecções futuras.
## 5. Directrizes operacionais do agente no Open Design
Regras de execução para qualquer agente (Claude Code, Gemini CLI) a operar como motor no OD. As que repetem as secções 1–3 não se duplicam — referem-se.
1. **Contrato de Entrada** (secção 1) — os 4 pilares antes de qualquer geração.
2. **`DESIGN.md` é o contrato da marca** — todas as decisões visuais (tipografia, paleta, espaçamento, componentes) vêm do `DESIGN.md` activo do projecto OD, nunca de adivinhação. A skill define *o quê*; o `DESIGN.md` define *como fica*. Manter o `DESIGN.md` sincronizado com o design system (Descomplicar ou cliente).
3. **Declarar a skill/formato certo** — indicar explicitamente o tipo de saída (`web-prototype`, `dashboard`, `mobile-app`, `deck`) para activar a directriz OD correcta.
4. **Macro → micro** (secção 3, Regra de Ouro).
5. **Variantes antes de fechar** (secção 2, F3) — 3 a 5 variações radicalmente diferentes da secção crítica, resto igual; escolher direcção, só depois refinar.
6. **Referências visuais concretas** — screenshots via menção `@` no chat OD ou ficheiros no projecto; nunca só descrição textual quando existe referência (liga à secção 4.3).
7. **Ecossistema no mesmo projecto OD** — landing + dashboard + app do mesmo cliente vivem no mesmo projecto, para herdar `DESIGN.md`, paleta e tipografia sem deriva (handoff contínuo).
8. **Componentes externos adaptados, não recriados** — gráficos animados, tabelas complexas: importar de bibliotecas (ex: 21st.dev, shadcn/ui) e adaptar ao design system, em vez de gerar do zero.
9. **Acesso directo via MCP** — usar `mcp__open-design__*` (get_artifact, write_file, search_files, start_run) para trabalhar sobre o código vivo do projecto; nunca depender de exports estáticos/zips. Passar `project` explícito (contexto activo expira ~5 min).
10. **Código final limpo e exportável** — HTML/CSS/JS determinístico, responsivo em iframe isolado, pronto para a equipa importar para React/Next.js/Vue sem limpeza. Nada de placeholders, estilos inline órfãos ou dependências fantasma. (Web em produção segue depois PROC-DEV-STANDARD no dev container.)
## 6. Integração futura (após aprovação do SPEC v3.0.0)
- Este método torna-se o corpo da skill `design` (router) — gate de contrato + orquestração das 4 fases.
- Para websites, avaliar skill dedicada `create-pro-website` (Next.js/TS/Tailwind/Framer Motion) que empacota o output OD no nosso stack (dev container, regra 48).
- Quality gate: nenhuma entrega sem F4 com score ≥7/10 (design-critic) e zero findings bloqueantes do design-review.
@@ -0,0 +1,71 @@
# SPEC — Migração do plugin design-media para Open Design (OD)
**Versão alvo:** design-media v3.0.0
**Data:** 2026-07-22
**Estado:** Rascunho — aguarda aprovação
**Decisor:** Emanuel
## 1. Objectivo
O Open Design (MCP `open-design`, daemon local) passa a ser o **motor único** de design do plugin design-media. Os motores actuais (design-engine Fibo/Gemini, Presenton, Stitch, Penpot, python-pptx directo, Remotion local) deixam de ser invocados directamente — tudo passa por projectos OD, skills OD e design systems OD.
## 2. Porquê
- O OD já tem nativamente o que o plugin reimplementa: `brand-guidelines`, `brandkit`, `brand-extract`, `theme-factory`, `pptx-generator`, `pptx`, `slides`, `remotion`, `ui-ux-pro-max`, `imagegen`, `venice-*`/`fal-*` (imagem/vídeo/áudio).
- 143 design systems instalados como plugins (`design-system-*`) + suporte a design systems custom por projecto (o projecto "Banners WiP Descomplicar" já usa `designSystemId: descomplicar`).
- Permite **adaptar entre modelos disponíveis no OD** e **criar design systems por cliente** — requisito directo do Emanuel.
## 3. Âmbito
### 3.1 Design systems geridos no OD (novo pilar)
- Formalizar o design system **`descomplicar`** no OD a partir dos tokens actuais (`skills/brand-guidelines/references/descomplicar-theme.md` YAML + `color-palettes.md`).
- Fluxo **novo cliente**: skill OD `brand-extract` (site do cliente) → `theme-factory`/`brand-guidelines` → design system custom no OD, nome = slug do cliente.
- Os brand packs em `Hub/04-Recursos/Design/brands/*.json` são migrados/sincronizados para design systems OD (o JSON local mantém-se como fonte exportável, mas o OD é a fonte operacional).
- Os 4 design systems sectoriais (b2b, ecommerce, saude, solar) passam a design systems OD; as skills locais `design-{b2b,ecommerce,saude,solar}` são reduzidas a referência/routing.
### 3.2 Skills adaptadas (wrappers finos sobre OD)
| Skill local | Passa a |
|---|---|
| `design` | Router: cria/reutiliza projecto OD, aplica design system, escolhe skill OD (`imagegen`, `slides`, `poster-hero`, etc.), `start_run` → `get_run` → entrega |
| `brand-guidelines` | Gestão de design systems no OD (criar/actualizar/listar Descomplicar + clientes); mantém a norma escrita (tom, ®) |
| `pptx-generator` | Wrapper das skills OD `pptx-generator`/`pptx`/`slides` com design system aplicado; python-pptx mantido só para leitura/QA de ficheiros existentes |
| `remotion-video` | Wrapper da skill OD `remotion` (+ `venice-video`/`fal-*` quando fizer sentido) |
| `clone-style` | Substituída pela skill OD `brand-extract` (wrapper) |
| `cinematic-site` | Usa skills OD de web (`web-clone`, `frontend-design`) via projecto OD |
| `ui-ux-pro-max`, `design-b2b/ecommerce/saude/solar` | Referência local mantida; apontam para design systems OD |
### 3.3 Agents actualizados
- `design-lead`, `design-prompt-architect`, `design-generator`: MCPs alvo passam a `mcp__open-design__*`; remoção de referências a Penpot/Presenton/Stitch/design-engine como motores.
- `design-critic`, `design-researcher`, `ui-designer`, `web-designer`, `video-production-specialist`: actualizar referências de ferramentas; lógica mantém-se.
### 3.4 Fora de âmbito
- Alterar o OD em si (daemon, skills OD).
- Migrar histórico de projectos antigos Presenton/Stitch.
- Desligar os MCPs antigos da máquina (fica para limpeza posterior, decisão separada).
## 4. Critérios de aceitação
1. `/design` gera um artefacto real num projecto OD com design system `descomplicar` aplicado (prova: run `succeeded` + artefacto).
2. Design system `descomplicar` existe no OD com os tokens oficiais (cores/fontes verificadas contra `descomplicar-theme.md`).
3. Fluxo de cliente demonstrado: criar design system custom para 1 cliente de teste via `brand-extract`.
4. `pptx-generator` produz um deck via OD com brand Descomplicar.
5. `remotion-video` produz/inicia um vídeo via skill OD `remotion`.
6. Zero referências activas a Penpot/Presenton/Stitch/design-engine como motores nas skills/agents adaptados.
7. CHANGELOG.md + versão 3.0.0 + commit atómico.
## 5. Riscos
- **Paridade de export**: garantir que o OD exporta PPTX/PNG/PDF nos formatos que os fluxos actuais (propostas, LinkedIn) exigem — validar cedo (crit. 4).
- **Contexto activo OD expira ~5 min**: wrappers devem passar `project` explícito, nunca depender do contexto activo.
- **Outputs grandes do MCP** (`list_plugins` ~270KB): wrappers devem usar filtros/ids directos, nunca listagens completas no contexto (regra 62).
## 6. Faseamento
- **F1** — Design system `descomplicar` no OD + skill `brand-guidelines` adaptada.
- **F2** — `design` (router) + agents lead/architect/generator.
- **F3** — `pptx-generator` + `remotion-video` + `clone-style`→`brand-extract`.
- **F4** — Sectoriais + cinematic-site + fluxo cliente de teste + QA final + CHANGELOG/commit.
+8
View File
@@ -0,0 +1,8 @@
# design-media
## Documentação
- [README](README.md)
- [AGENTS](AGENTS.md)
- [STATUS](STATUS.md)
- [MEMORY](MEMORY.md)
+1
View File
@@ -0,0 +1 @@
## 2026-06-30 init | Estrutura padrão
+17
View File
@@ -0,0 +1,17 @@
# AGENTS.md — skills
Directrizes específicas deste projecto para agentes IA.
## Referências obrigatórias
- `ECOSYSTEM.md` — Hub/06-Operacoes/Documentacao/ECOSYSTEM.md
- `PROC-DEV-STANDARD` — D7-SIS-006
- `PROC-AUDIT-STANDARD` — D7-SIS-007
## Protocolo de sessão
Início: ler MEMORY.md + STATUS.md. Fim: actualizar ambos.
## Convenções específicas
- (a definir)
+5
View File
@@ -0,0 +1,5 @@
# CHANGELOG — skills
## 0.1.0 — 2026-06-30
### Adicionado
- Estrutura padrão (PROC-DEV-STANDARD)
+4
View File
@@ -0,0 +1,4 @@
# MEMORY.md — skills
## 2026-06-30
- Estrutura padrão aplicada via propagate-structure.sh
+3
View File
@@ -0,0 +1,3 @@
# skills
Subprojecto skills do ecossistema Descomplicar.
+8
View File
@@ -0,0 +1,8 @@
# STATUS.md — skills
**Versão:** 0.1 | **Data:** 2026-06-30 | **Agente:** —
## Estado actual
- Em curso: —
- Bloqueios: —
- Próximos passos: —
+217 -241
View File
@@ -1,66 +1,113 @@
--- ---
name: brand-guidelines name: brand-guidelines
description: Guia de identidade visual Descomplicar® — cores, tipografia, logotipo, tom de comunicacao e aplicacao por contexto (slides, docs, web, emails). Usar quando "brand descomplicar", "marca descomplicar", "cores descomplicar", "identidade visual", "branding", "paleta de cores", "guia de marca", ou qualquer material que necessite conformidade visual com a marca. description: Gestão de identidade visual multi-marca (Descomplicar® e clientes) — design systems no Open Design, cores, tipografia, logótipo, tom e aplicação por contexto. O DESIGN.md de cada marca no Open Design é a fonte de verdade. Usar quando "brand", "marca", "identidade visual", "branding", "paleta de cores", "guia de marca", "design system cliente", "criar marca", ou qualquer material que necessite conformidade visual.
--- ---
# /brand-guidelines - Identidade Visual Descomplicar® # /brand-guidelines — Gestão de Identidade Visual Multi-Marca
Referencia normativa da marca Descomplicar®. Aplicar em todos os materiais de comunicacao, Esta skill serve **qualquer marca** — a Descomplicar® e cada cliente. A Descomplicar é apenas
design e desenvolvimento. a marca por omissão quando nenhuma outra é indicada.
## Fonte de verdade: o Open Design
Cada marca tem o seu design system no Open Design, um por pasta:
```
~/workspace/open-design/design-systems/<marca>/DESIGN.md
```
- `descomplicar/` — a nossa marca (espelhada em detalhe abaixo)
- `<slug-do-cliente>/` — uma pasta por cliente
O `DESIGN.md` da marca activa é **normativo**.
**Regras de precedência:**
- Em caso de divergência entre qualquer documento e o `DESIGN.md` da marca, **o `DESIGN.md` ganha sempre**.
- Nunca inventar cores, fontes ou tokens de nenhuma marca. Ler o `DESIGN.md` antes de produzir.
- Alterações à identidade fazem-se no `DESIGN.md` e só depois se propagam.
> Versões anteriores desta skill documentavam uma paleta azul/laranja (`#1a365d`, `#dd6b20`) com Open Sans
> para a Descomplicar. Estava **errada** — não corresponde ao site nem ao design system. Corrigida em 22-07-2026.
---
## Trabalhar com a marca de um cliente
**1. Verificar se já existe** — procurar a pasta do cliente em `design-systems/`. Se existir, ler o
`DESIGN.md` e usá-lo. Nunca criar um segundo design system para a mesma marca.
**2. Criar quando não existe** — extrair a identidade a partir de material real do cliente
(site, manual de marca, ficheiros fornecidos) com as skills do Open Design `brand-extract`
e `theme-factory`. O resultado é revisto com o cliente antes de se tornar normativo.
Nunca inventar a identidade de um cliente a partir do nada.
**3. Aplicar num projecto** — indicar a marca ao criar o projecto no Open Design
(`create_project` com `designSystem: "<slug>"`) para que todos os artefactos herdem
cor, tipografia e componentes sem deriva.
**4. Manter separado** — um projecto do Open Design serve uma marca só. Ecossistemas do
mesmo cliente (landing, dashboard, app) vivem no mesmo projecto para herdarem o mesmo
`DESIGN.md`; marcas diferentes nunca partilham projecto.
**Estrutura mínima de um `DESIGN.md`** (o da Descomplicar serve de modelo):
tema e atmosfera, cor, tipografia, espaçamento e grelha, layout e composição,
componentes, movimento, voz e tom, anti-padrões.
---
## Marca por omissão: Descomplicar®
O resto deste documento espelha o `DESIGN.md` da Descomplicar, para leitura rápida fora do
Open Design. Para clientes, ler sempre o `DESIGN.md` respectivo — os valores abaixo **não se
aplicam** a marcas de clientes.
--- ---
## Identidade da Marca ## Identidade da Marca
**Nome oficial:** Descomplicar® **Nome oficial:** Descomplicar®
**Slogan:** Crescimento Digital
**Website:** descomplicar.pt **Website:** descomplicar.pt
**Tom:** Profissional mas acessivel, tecnologico sem ser frio **Categoria:** agência de aceleração digital portuguesa — artigos, podcast semanal e automações de IA
**Valores:** Simplicidade, transparencia, resultados mensuraveis **Atmosfera:** editorial profissional com acentos dourados; confiança técnica sem arrogância, clareza imediata sem frieza corporativa
**Acabamento:** plano e limpo, sem gradientes decorativos — a hierarquia faz o trabalho visual
> A marca registada (®) e obrigatoria na primeira ocorrencia em qualquer documento ou comunicacao. > A marca registada (®) é obrigatória na primeira ocorrência em qualquer documento ou comunicação.
> Nas ocorrencias seguintes, pode usar-se apenas "Descomplicar". > Nas ocorrências seguintes, pode usar-se apenas "Descomplicar".
--- ---
## Paleta de Cores Principal ## Paleta de Cores
| Nome | Hex | RGB | Uso | | Token | Hex | Uso |
|------|-----|-----|-----| |-------|-----|-----|
| Azul Escuro | `#1a365d` | 26, 54, 93 | Texto principal, fundos escuros, cabecalhos | | Primary (Dourado) | `#cc8d00` | CTAs, faixas de destaque, ícones, bordas activas, badges |
| Azul Medio | `#2b6cb0` | 43, 108, 176 | Links, acentos, botoes secundarios | | Primary Light | `#f2d9a2` | Fundos secundários, hover suave, tags — **nunca para texto** |
| Laranja | `#dd6b20` | 221, 107, 32 | CTA, destaques, elementos de accao | | Surface | `#ffffff` | Fundo de página, cards, modais |
| Branco | `#ffffff` | 255, 255, 255 | Fundos claros, texto sobre escuro | | Text | `#000000` | Headlines, corpo principal, labels importantes |
| Cinza Claro | `#f7fafc` | 247, 250, 252 | Fundos secundarios, secoes alternadas | | Text Muted | `#6e6e6e` | Subtítulos, metadados, placeholders |
| Cinza Texto | `#4a5568` | 74, 85, 104 | Texto de corpo, descricoes | | Border | `#e5e5e5` | Divisórias, bordas de card, separadores |
| Surface Alt | `#f8f8f8` | Secções alternadas, blocos de código |
| Danger | `#dc2626` | Erros, alertas críticos |
| Success | `#16a34a` | Confirmações, estados de sucesso |
Paleta completa com variacoes de contexto: `references/color-palettes.md` **Regras de uso:**
- O dourado (`#cc8d00`) é o **único acento cromático** — usar com parcimónia e intenção.
--- - Nunca mais de 3 cores simultâneas no mesmo visual.
- Fundos grandes sempre em Surface (`#ffffff`) ou Surface Alt (`#f8f8f8`).
## CSS Variables (Web) - CTA principal: fundo dourado com texto preto.
- A secção de maior destaque usa fundo preto, texto branco e acento dourado.
```css ```css
:root { :root {
/* Cores principais */ --color-primary: #cc8d00;
--color-primary: #1a365d; --color-primary-light: #f2d9a2;
--color-secondary: #2b6cb0; --color-surface: #ffffff;
--color-accent: #dd6b20; --color-surface-alt: #f8f8f8;
--color-text: #000000;
/* Neutros */ --color-text-muted: #6e6e6e;
--color-white: #ffffff; --color-border: #e5e5e5;
--color-bg-light: #f7fafc; --color-danger: #dc2626;
--color-text-body: #4a5568; --color-success: #16a34a;
--color-text-heading: #1a365d;
/* Estados */
--color-primary-hover: #2a4a7f;
--color-secondary-hover: #2c5282;
--color-accent-hover: #c05621;
/* Bordas e divisores */
--color-border: #e2e8f0;
--color-border-light: #edf2f7;
} }
``` ```
@@ -68,254 +115,183 @@ Paleta completa com variacoes de contexto: `references/color-palettes.md`
## Tipografia ## Tipografia
### Hierarquia | Papel | Família | Pesos |
|-------|---------|-------|
| Display | Montserrat, Poppins, system-ui, sans-serif | 700, 800 |
| Corpo | Inter, Open Sans, system-ui, sans-serif | 400, 500, 600 |
| Mono | JetBrains Mono, IBM Plex Mono, monospace | 400 |
| Elemento | Familia | Peso | Tamanho base | ### Escala
|----------|---------|------|--------------|
| H1 / Titulo principal | Montserrat | Extra Bold (800) | 48px / 3rem |
| H2 / Titulo secao | Montserrat | Bold (700) | 36px / 2.25rem |
| H3 / Subtitulo | Montserrat | Semi Bold (600) | 24px / 1.5rem |
| H4 / Label | Montserrat | Semi Bold (600) | 18px / 1.125rem |
| Corpo / Paragrafo | Open Sans | Regular (400) | 16px / 1rem |
| Destaque / Lead | Open Sans | Semi Bold (600) | 18px / 1.125rem |
| Legenda / Caption | Open Sans | Regular (400) | 14px / 0.875rem |
| Codigo | JetBrains Mono | Regular (400) | 14px / 0.875rem |
### CSS Tipografia | Token | Tamanho | Peso | Line-height | Uso |
|-------|---------|------|-------------|-----|
| `text-5xl` | 48px | 800 | 1.1 | Hero headline |
| `text-4xl` | 36px | 700 | 1.15 | Título de página (H1) |
| `text-3xl` | 30px | 700 | 1.2 | Título de secção (H2) |
| `text-2xl` | 24px | 700 | 1.3 | Subsecção (H3) |
| `text-xl` | 20px | 600 | 1.4 | Título de card, H4 |
| `text-lg` | 18px | 500 | 1.5 | Parágrafo de entrada |
| `text-base` | 16px | 400 | 1.6 | Corpo |
| `text-sm` | 14px | 400 | 1.5 | Legendas, labels, UI |
| `text-xs` | 12px | 500 | 1.4 | Tags, badges, micro-copy |
**Regras:**
- Montserrat exclusivamente para títulos — nunca em parágrafos longos.
- Inter para tudo o que é lido em detalhe.
- `letter-spacing: 0.02em` em labels e badges em maiúsculas.
- Sem itálico decorativo — usar peso e tamanho para hierarquia.
```css ```css
:root { @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@700;800&family=Inter:wght@400;500;600&family=JetBrains+Mono&display=swap');
--font-heading: 'Montserrat', 'Arial Black', sans-serif;
--font-body: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
--font-code: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace;
--line-height-heading: 1.2;
--line-height-body: 1.6;
--letter-spacing-heading: -0.025em;
}
``` ```
### Fallbacks de Sistema ---
- **Montserrat** indisponivel: `'Arial Black', 'Impact', sans-serif` ## Espaçamento, Grelha e Raios
- **Open Sans** indisponivel: `'Helvetica Neue', Arial, sans-serif`
- **JetBrains Mono** indisponivel: `'Fira Code', 'Courier New', monospace` Escala base de 4px: `space-1` 4px, `space-2` 8px, `space-3` 12px, `space-4` 16px, `space-6` 24px, `space-8` 32px, `space-12` 48px, `space-16` 64px, `space-24` 96px.
**Grelha:** 12 colunas, gutter 24px, conteúdo centrado com max-width 1280px (960px em artigos, 760px em texto corrido com line-height 1.7).
**Breakpoints:** mobile ≤768px, tablet 769–1024px, desktop >1024px.
**Padding lateral:** 16px mobile, 32px tablet, 48px desktop.
**Raios:** `sm` 4px (inputs, badges), `md` 8px (cards, botões), `lg` 12px (modais), `full` 9999px (pills, avatares).
---
## Componentes
**Botão** — Primary: fundo `#cc8d00`, texto `#000000`, Montserrat SemiBold, raio 8px. Secondary: transparente, borda 2px dourada, texto dourado. Ghost: transparente, texto preto, sublinhado no hover. Alturas: sm 32px, md 40px, lg 48px.
**Badge** — Default: fundo `#f8f8f8`, texto `#6e6e6e`, maiúsculas, 12px, tracking alargado. Primary: fundo `#f2d9a2`, texto `#7a5500`.
**Card** — Fundo branco, borda 1px `#e5e5e5`, raio 8px, padding 24px, imagem 16:9 no topo. Sombra no hover: `0 4px 16px rgba(0,0,0,0.1)`.
**Input** — Borda 1px `#e5e5e5`, raio 8px, padding 12px 16px. Focus: borda 2px dourada, sem outline. Erro: borda 2px `#dc2626` com mensagem abaixo. Label em Inter SemiBold 14px maiúsculas.
**Navbar** — Fundo preto, logótipo à esquerda, links brancos, CTA dourado à direita, sticky com `backdrop-filter: blur(8px)`.
**Rodapé** — Fundo preto, texto branco/cinza, links com hover dourado, 3 colunas (marca, navegação, contacto) e copyright em `text-xs`.
---
## Movimento
O movimento **confirma acções, nunca decora**.
- 150ms em micro-interacções (hover, focus); 250ms em transições de estado.
- `ease-out` nas entradas, `ease-in-out` nas transições bidireccionais.
- Cards no hover: `translateY(-2px)` mais sombra, 200ms.
- Transições de página: fade simples 200ms.
- Estados de carregamento: skeleton em `#f8f8f8` com shimmer subtil.
- Sem parallax, sem animações de entrada elaboradas, sem auto-play.
--- ---
## Logótipo ## Logótipo
### Regras de Uso | Regra | Descrição |
| Regra | Descricao |
|-------|-----------| |-------|-----------|
| Espaco minimo | Margem de pelo menos 2x a altura da letra "D" em todos os lados | | Espaço mínimo | Margem de pelo menos 2x a altura da letra "D" em todos os lados |
| Tamanho minimo | 120px de largura em digital; 30mm em impressao | | Tamanho mínimo | 120px de largura em digital; 30mm em impressão |
| Fundo permitido | Branco `#ffffff`, Azul Escuro `#1a365d`, Cinza Claro `#f7fafc` | | Fundos permitidos | Branco `#ffffff`, preto `#000000`, cinza claro `#f8f8f8` |
| Fundo proibido | Qualquer fundo com baixo contraste, fotografias sem overlay | | Fundos proibidos | Baixo contraste, fotografias sem overlay |
| Distorcao | Nunca esticar, rodar ou alterar proporcoes | | Proibido | Esticar, rodar, alterar proporções, alterar cores, sobrepor texto |
| Cores proibidas | Nunca alterar as cores do logótipo original |
| Texto junto | Nunca sobrepor texto ao logótipo |
### Variantes Disponiveis **Variantes:** principal (horizontal), compacta, monocromática escura, monocromática clara, ícone isolado (favicon, avatar).
| Variante | Quando usar | **Ficheiros:** `Hub/04-Recursos/Design/brands/descomplicar/`
|----------|-------------|
| Principal (horizontal) | Uso geral, cabecalhos, documentos |
| Compacta (icone + nome vertical) | Espacos reduzidos, avatares |
| Monocromatica escura | Documentos a preto e branco, impressao simples |
| Monocromatica clara | Sobre fundos escuros, rodapes |
| Icone isolado | Favicon, app icon, redes sociais (foto de perfil) |
### Ficheiros Logótipo
```
Hub/04-Recursos/Design/brands/descomplicar/
logo-principal.svg
logo-compacto.svg
logo-mono-escuro.svg
logo-mono-claro.svg
favicon.png
favicon.svg
```
--- ---
## Aplicacao por Contexto ## Aplicação por Contexto
### Apresentacoes e Slides **Apresentações e slides** — Capa e secções de destaque com fundo preto, título Montserrat ExtraBold branco, acento dourado. Slides de conteúdo com fundo branco ou `#f8f8f8`, corpo em Inter `#000000`, destaques e números em dourado.
``` **Documentos e propostas** — Cabeçalho preto com logótipo claro; corpo branco com texto preto; títulos de secção em Montserrat; callouts com fundo `#f8f8f8` e borda esquerda dourada; rodapé `#f8f8f8` com borda superior `#e5e5e5`.
Fundo slides: #1a365d (escuro) ou #ffffff (claro)
Titulo slide: Montserrat Extra Bold, #ffffff (sobre escuro) / #1a365d (sobre claro)
Corpo texto: Open Sans Regular, #ffffff ou #4a5568
Destaques/CTA: #dd6b20
Divisores: #2b6cb0
Slide titulo (capa): fundo #1a365d, logótipo variante clara
```
Modelo: `/design presentation --brand descomplicar` **Web e landing pages** — Hero claro ou escuro conforme a variante escolhida; CTA primário dourado com texto preto; secções alternadas em `#f8f8f8`; cards brancos com borda `#e5e5e5`.
### Documentos e Propostas **Emails e newsletter** — Pré-header preto, corpo branco com texto preto, cabeçalhos Montserrat, botão CTA dourado com texto preto e raio 8px, rodapé `#f8f8f8`.
``` **Redes sociais** — Fundo preto ou branco, elemento de marca em dourado, texto sem emojis.
Cabecalho: fundo #1a365d, logótipo clara, texto branco
Corpo: fundo #ffffff, texto #4a5568
Titulos secao: Montserrat Bold, #1a365d
Destaques/callouts: fundo #f7fafc, borda esquerda #dd6b20
Links: #2b6cb0, sublinhado no hover
Rodape: fundo #f7fafc, texto #4a5568, borda topo #e2e8f0
```
### Web e Landing Pages
```
Hero section: fundo #1a365d ou gradiente #1a365d -> #2b6cb0
Botao primario (CTA): fundo #dd6b20, texto #ffffff, hover #c05621
Botao secundario: borda #2b6cb0, texto #2b6cb0, hover fundo #2b6cb0 branco
Seccao alternada: fundo #f7fafc
Cards: fundo #ffffff, sombra suave, borda-topo #2b6cb0 (destaque)
Cards destaque: borda-topo ou borda-esquerda #dd6b20
```
### Emails e Newsletter
```
Pre-header: fundo #1a365d, texto #ffffff
Corpo email: fundo #ffffff, texto #4a5568
Cabecalhos: Montserrat Bold, #1a365d
CTA button: fundo #dd6b20, texto #ffffff, border-radius 4px
Rodape email: fundo #f7fafc, texto #4a5568 (tamanho reduzido)
Links: #2b6cb0
```
### Redes Sociais
```
Fundo posts: #1a365d (principal) ou #ffffff
Texto sobre escuro: #ffffff (titulo), #f7fafc (corpo)
Texto sobre claro: #1a365d (titulo), #4a5568 (corpo)
Elemento de marca (cantos, bandas): #dd6b20 ou #2b6cb0
Hashtags/links: #2b6cb0
```
--- ---
## Tom de Comunicacao ## Tom de Comunicação
### Principios **Tom:** profissional mas acessível, directo, orientado à acção, confiante sem arrogância.
| Principio | Descricao | **Princípios de copy:**
|-----------|-----------| - PT-PT estrito — "utilizador" não "usuário", "transferir" não "baixar", "ecrã" não "tela", "equipa" não "time".
| Claro e directo | Frases curtas, vocabulario acessivel, sem jargao desnecessario | - Frases curtas, verbo no início nos CTAs: "Saber mais", "Ver guia", "Falar connosco".
| Confiante mas humilde | Mostramos resultados, nao promessas vazias | - Títulos assertivos, sem interrogações desnecessárias.
| Tecnico sem ser frio | Tecnologia ao servico das pessoas, nao o contrario | - Dados concretos: "400+ artigos", não "muitos artigos".
| Orientado a resultados | Sempre ligar accoes a beneficios mensuravelis | - Sem emojis e sem exclamações excessivas em qualquer contexto de marca.
| Em portugues correcto | PT-PT sempre, sem brasileirismos, sem calao |
### Vocabulario da Marca **Headlines** — Directas e específicas: "SEO para PMEs que funciona" em vez de "Descubra como o SEO pode transformar o seu negócio".
| Usar | Evitar | **CTAs correctos:** "Ver todos os guias", "Pedir auditoria gratuita", "Subscrever newsletter".
|------|--------| **CTAs incorrectos:** "Clique aqui!", "Saiba Mais!!!", qualquer CTA com emoji.
| crescimento digital | growth hacking |
| resultados mensuraveis | metricas (sem contexto) |
| simplicidade | user-friendly (em textos publicos) |
| parceiros / clientes | users / leads (em comunicacao externa) |
| solucoes | produtos (quando sao servicos) |
| equipa | time (brasileirismo) |
### Voz por Canal
- **Website / Propostas:** Formal-acessivel. Nos apresentamos, o cliente decide.
- **Redes Sociais:** Mais conversacional, com pergunta ou convite a interaccao.
- **Emails:** Directo e pessoal, nome do destinatario sempre que possivel.
- **Documentacao tecnica:** Preciso e estruturado, sem ambiguidade.
--- ---
## Iconografia e Imagens ## Iconografia e Imagens
### Icones **Ícones:** lineares, peso 1.5–2px, cantos ligeiramente arredondados. Lucide, Heroicons ou Phosphor. Tamanhos 16/20/24/32px. Cor herdada do contexto ou dourada.
- **Estilo:** Linear, peso medio (1.5-2px), cantos ligeiramente arredondados **Fotografia:** profissional e luminosa, pessoas reais em contexto. Overlay preto (20–40%) quando houver texto por cima. **Proibidas** stock photos genéricas — pessoas a sorrir para portáteis, apertos de mão corporativos.
- **Bibliotecas recomendadas:** Lucide Icons, Heroicons, Phosphor Icons
- **Tamanhos:** 16px, 20px, 24px, 32px (escala 4px)
- **Cor:** Herdar da cor de texto do contexto ou usar cor de acento
### Fotografia **Ilustrações e gráficos:** flat, linhas limpas, paleta restrita à marca; destaques a dourado.
- **Estilo:** Profissional, luminosa, pessoas reais em contexto de trabalho
- **Tratamento:** Sem filtros excessivos; overlay azul escuro (#1a365d, 20-40% opacidade) para texto
- **Evitar:** Stock photos genericas, imagens de baixa qualidade, estilos vintage/retro
### Ilustracoes e Graficos
- **Estilo:** Flat design com linhas limpas, paleta restrita as cores da marca
- **Graficos de dados:** Usar sempre cores da paleta principal, legenda clara
- **Infograficos:** Fundo branco ou cinza claro, acentos em laranja para destaques
---
## Espacamento e Grid
```css
:root {
/* Espacamento base: multiplos de 4px */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
--space-16: 64px;
--space-24: 96px;
/* Border radius */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 16px;
/* Sombras */
--shadow-sm: 0 1px 3px rgba(26, 54, 93, 0.1);
--shadow-md: 0 4px 12px rgba(26, 54, 93, 0.15);
--shadow-lg: 0 8px 24px rgba(26, 54, 93, 0.2);
}
```
--- ---
## Acessibilidade ## Acessibilidade
| Par de cores | Racio contraste | Nivel WCAG | | Par de cores | Rácio | Nível |
|-------------|-----------------|------------| |--------------|-------|-------|
| Branco sobre Azul Escuro | 12.6:1 | AAA | | Preto sobre branco | 21:1 | AAA |
| Branco sobre Azul Medio | 5.1:1 | AA | | Preto sobre dourado `#cc8d00` | ~7.4:1 | AAA |
| Branco sobre Laranja | 3.1:1 | AA (texto grande) | | Dourado `#cc8d00` sobre preto | ~7.4:1 | AAA |
| Cinza Texto sobre Branco | 7.0:1 | AAA | | Text Muted `#6e6e6e` sobre branco | ~5.1:1 | AA |
| Azul Escuro sobre Cinza Claro | 11.9:1 | AAA | | **Branco sobre dourado** | **~2.9:1** | **falha — proibido** |
> Texto de corpo (abaixo de 18px normal ou 14px bold) requer minimo AA (4.5:1). Texto de corpo requer no mínimo AA (4.5:1). Todos os botões precisam de estados hover, focus e disabled explícitos.
> Nunca usar Laranja como fundo de texto de corpo.
--- ---
## Checklist Conformidade de Marca ## Anti-padrões (proibido)
- [ ] Logótipo com espaco de respiro correcto - Gradientes multicolor ou agressivos em elementos de marca
- [ ] Apenas cores da paleta oficial - Mais de 3 cores simultâneas num visual
- [ ] Tipografia Montserrat (headings) e Open Sans (corpo) - Stock photos genéricas
- [ ] Tom de comunicacao adequado ao canal - Emojis em qualquer contexto de marca
- [ ] Marca registada (®) na primeira ocorrencia - Tipografia decorativa além de Montserrat e Inter
- [ ] Contraste WCAG AA minimo em texto - Sombras pesadas ou neumorfismo
- [ ] Slogan "Crescimento Digital" presente (quando relevante) - Animações que distraem (rotações, bounces, pulse contínuo)
- [ ] Sem brasileirismos no texto - Texto branco sobre dourado — contraste insuficiente
- [ ] Espacamento em multiplos de 4px - Primary Light (`#f2d9a2`) como cor de texto
- Layouts com mais de 4 colunas de conteúdo editorial
- Botões sem estados hover, focus e disabled
- Português do Brasil — sempre PT-PT com acentuação completa
--- ---
**Versao**: 1.0.0 | **Data**: 2026-03-10 | **Autor**: Descomplicar® ## Checklist de Conformidade
*Paletas detalhadas por contexto: `references/color-palettes.md`*
- [ ] `DESIGN.md` do Open Design consultado antes de produzir
- [ ] Apenas cores da paleta oficial; dourado como único acento
- [ ] Montserrat nos títulos, Inter no corpo
- [ ] Logótipo com espaço de respiro e fundo permitido
- [ ] Marca registada (®) na primeira ocorrência
- [ ] Contraste mínimo AA; nunca branco sobre dourado
- [ ] Espaçamento em múltiplos de 4px
- [ ] PT-PT sem brasileirismos e sem emojis
- [ ] Nenhum anti-padrão presente
---
**Versão**: 2.0.0 | **Data**: 22-07-2026 | **Autor**: Descomplicar®
*Fonte normativa: `~/workspace/open-design/design-systems/descomplicar/DESIGN.md`*
--- ---
@@ -324,7 +300,7 @@ Hashtags/links: #2b6cb0
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar. Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl ```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"} {"date":"2026-07-22","issue":"Skill documentava paleta azul/laranja (#1a365d, #dd6b20) e Open Sans, divergente do design system e do site real","fix":"Reescrita para espelhar o DESIGN.md do Open Design (dourado #cc8d00 sobre preto/branco, Montserrat + Inter) e declarar precedencia da fonte de verdade","source":"user"}
``` ```
*Adicionar nova linha após cada erro corrigido.* *Adicionar nova linha após cada erro corrigido.*
@@ -1,227 +0,0 @@
# Paletas de Cores Descomplicar® — Referencia Detalhada
Extensao de `brand-guidelines/SKILL.md`. Paletas completas com variacoes de contexto,
estados de interaccao e combinacoes aprovadas.
---
## Paleta Principal
| Token | Hex | RGB | HSL |
|-------|-----|-----|-----|
| `--color-primary` | `#1a365d` | 26, 54, 93 | 213°, 56%, 23% |
| `--color-secondary` | `#2b6cb0` | 43, 108, 176 | 211°, 61%, 43% |
| `--color-accent` | `#dd6b20` | 221, 107, 32 | 27°, 74%, 50% |
| `--color-white` | `#ffffff` | 255, 255, 255 | — |
| `--color-bg-light` | `#f7fafc` | 247, 250, 252 | 204°, 33%, 98% |
| `--color-text-body` | `#4a5568` | 74, 85, 104 | 220°, 17%, 35% |
---
## Escala Azul Escuro (Primary)
| Variacao | Hex | Uso |
|----------|-----|-----|
| 50 (mais claro) | `#ebf4ff` | Fundos hover muito suaves |
| 100 | `#dbeafe` | Fundos informativos |
| 200 | `#bfdbfe` | Bordas suaves |
| 300 | `#93c5fd` | Icones em fundo claro |
| 400 | `#60a5fa` | Interaccao hover em elementos claros |
| 500 | `#2b6cb0` | Azul medio (secondary) |
| 600 | `#1d4ed8` | Links hover |
| 700 | `#1e40af` | Botoes primarios hover |
| 800 | `#1e3a8a` | Variacao escura |
| **900 (base)** | `#1a365d` | **Cor primaria — uso principal** |
---
## Escala Laranja (Accent)
| Variacao | Hex | Uso |
|----------|-----|-----|
| 50 | `#fff7ed` | Fundo callout de atencao |
| 100 | `#ffedd5` | Destaque suave |
| 200 | `#fed7aa` | Borda callout |
| 300 | `#fdba74` | Icones de alerta em fundo claro |
| 400 | `#fb923c` | Hover em elementos de acento |
| **500 (base)** | `#dd6b20` | **Cor de acento — CTA principal** |
| 600 | `#c05621` | Hover botao CTA |
| 700 | `#9c4221` | Pressed state / active |
| 800 | `#7c2d12` | Texto sobre fundo laranja claro |
---
## Escala de Neutros
| Token | Hex | Uso |
|-------|-----|-----|
| Branco | `#ffffff` | Fundos principais, texto sobre escuro |
| Gray 50 | `#f7fafc` | Fundos secundarios, seccoes alternadas |
| Gray 100 | `#edf2f7` | Hover em items de lista |
| Gray 200 | `#e2e8f0` | Bordas, divisores |
| Gray 300 | `#cbd5e0` | Bordas de formularios desactivados |
| Gray 400 | `#a0aec0` | Placeholder text, icones inactivos |
| Gray 500 | `#718096` | Texto auxiliar, labels |
| **Gray 600** | `#4a5568` | **Texto de corpo principal** |
| Gray 700 | `#2d3748` | Texto secundario escuro |
| Gray 800 | `#1a202c` | Texto titulo alternativo |
| Gray 900 | `#171923` | Fundo ultra-escuro (raro) |
---
## Combinacoes de Cor Aprovadas
### Combinacoes de Alta Prioridade (CTA e Heroi)
| Fundo | Texto / Elemento | Racio | Nota |
|-------|-----------------|-------|------|
| `#1a365d` | `#ffffff` | 12.6:1 | Preferencial — hero, capa, footer |
| `#2b6cb0` | `#ffffff` | 5.1:1 | Botoes, badges, chips |
| `#dd6b20` | `#ffffff` | 3.1:1 | CTA (apenas texto grande >=18px ou bold >=14px) |
| `#ffffff` | `#1a365d` | 12.6:1 | Documentos, corpo pagina |
| `#f7fafc` | `#1a365d` | 11.9:1 | Cards, seccoes alternadas |
### Combinacoes de Texto (Corpo)
| Fundo | Texto | Racio | Nivel WCAG |
|-------|-------|-------|-----------|
| `#ffffff` | `#4a5568` | 7.0:1 | AAA |
| `#f7fafc` | `#4a5568` | 6.6:1 | AAA |
| `#ffffff` | `#2d3748` | 10.7:1 | AAA |
| `#1a365d` | `#f7fafc` | 12.0:1 | AAA |
### Combinacoes Proibidas
| Fundo | Texto | Motivo |
|-------|-------|--------|
| `#dd6b20` | `#ffffff` | Contraste insuficiente para texto pequeno (3.1:1) |
| `#2b6cb0` | `#1a365d` | Contraste insuficiente entre tons de azul (2.2:1) |
| `#4a5568` | `#2b6cb0` | Baixo contraste em textos de corpo (2.8:1) |
| Qualquer cor | `#a0aec0` | Gray 400 nunca como texto (max 2.9:1 sobre branco) |
---
## Paleta por Contexto de Produto
### Dashboard / Aplicacao Web
```
Sidebar: fundo #1a365d, icones #f7fafc (inactivo), #dd6b20 (activo)
Top bar: fundo #ffffff, borda inferior #e2e8f0
Conteudo: fundo #f7fafc
Cards: fundo #ffffff, sombra --shadow-sm
Tabelas: linhas alternas #f7fafc / #ffffff
Botao primario: #dd6b20 (fundo), #ffffff (texto)
Botao secundario: #2b6cb0 (borda e texto), transparente (fundo)
Botao ghost: #4a5568 (texto), hover #f7fafc (fundo)
Links inline: #2b6cb0, hover #1a365d
```
### Apresentacoes (Slides)
```
Slide escuro (capa, divider): fundo #1a365d
- Titulo: Montserrat 800, #ffffff
- Subtitulo: Montserrat 600, #f7fafc
- Acento barra: #dd6b20
- Logótipo: variante clara
Slide claro (conteudo): fundo #ffffff
- Titulo: Montserrat 700, #1a365d
- Corpo: Open Sans 400, #4a5568
- Highlight box: fundo #f7fafc, borda esquerda #dd6b20 4px
- Numero/stat: Montserrat 800, #dd6b20 ou #2b6cb0
Slide citacao: fundo #f7fafc
- Aspas: #dd6b20
- Texto citacao: Montserrat 600, #1a365d
- Atribuicao: Open Sans 400, #4a5568
```
### Email Marketing
```
Wrapper: fundo #f7fafc
Container: fundo #ffffff, max-width 600px
Pre-header (top bar): fundo #1a365d, altura 4px ou bloco com logótipo
Header: fundo #1a365d, logótipo clara, padding 32px
Titulo: Montserrat 700, #ffffff, 28px
Body: fundo #ffffff, padding 32px
H2: Montserrat 600, #1a365d, 22px
Paragrafo: Open Sans 400, #4a5568, 16px, line-height 1.6
Link inline: #2b6cb0
CTA block: centrado, botao #dd6b20, texto #ffffff, border-radius 4px, padding 14px 28px
Divisor: border-top 1px solid #e2e8f0
Footer: fundo #f7fafc, texto #718096, 13px, links #4a5568
```
### Social Media
```
Post Instagram (1080x1080):
Opcao A (escuro): fundo #1a365d, titulo #ffffff, acento #dd6b20
Opcao B (claro): fundo #ffffff, titulo #1a365d, detalhe #dd6b20
Borda/frame: strip #dd6b20 (8-12px) em baixo ou em cima
Logo: canto inferior direito, variante adequada ao fundo
Story Instagram (1080x1920):
Gradiente vertical: #1a365d (topo) -> #2b6cb0 (base)
Texto: #ffffff
CTA button area: #dd6b20
LinkedIn Banner (1584x396):
Fundo: #1a365d ou fotografia com overlay #1a365d 60%
Texto: #ffffff (titulo), #f7fafc (sub)
Acento: strip ou elemento #dd6b20
```
### Documentos PDF / Propostas
```
Capa: fundo #1a365d
Logo: variante clara, centrado no topo
Titulo: Montserrat 800, #ffffff, 36px
Subtitulo: Montserrat 400, #f7fafc, 18px
Data/ref: Open Sans 400, #a0aec0, 14px, em baixo
Paginas internas:
Cabecalho: altura 48px, fundo #1a365d, logótipo pequena (variante clara), numero de pagina
Titulo capitulo: Montserrat 700, #1a365d, 22px, fundo #f7fafc, padding 12px, borda esquerda #dd6b20 4px
Corpo: Open Sans 400, #4a5568, 11pt, line-height 1.6
Callout/destaque: fundo #f7fafc, borda #dd6b20, icone #dd6b20
Tabelas: header fundo #1a365d texto #ffffff; linhas alternas #f7fafc / #ffffff
Rodape: borda topo #e2e8f0, texto #718096, 9pt
```
---
## Gradientes Aprovados
| Nome | Valor CSS | Uso |
|------|-----------|-----|
| Hero primario | `linear-gradient(135deg, #1a365d 0%, #2b6cb0 100%)` | Heroi web, fundo apresentacao |
| Acento | `linear-gradient(135deg, #dd6b20 0%, #f6ad55 100%)` | Banners promocionais |
| Escuro suave | `linear-gradient(180deg, #1a365d 0%, #2d3748 100%)` | Sidebars, overlays |
| Claro | `linear-gradient(180deg, #ffffff 0%, #f7fafc 100%)` | Seccoes de transicao |
> Nunca usar gradientes em texto (excecto como elemento decorativo com contraste garantido).
> Maximo 2 gradientes por composicao visual.
---
## Cores de Estado e Feedback
| Estado | Cor | Hex | Uso |
|--------|-----|-----|-----|
| Sucesso | Verde | `#38a169` | Confirmacoes, checkmarks, alertas positivos |
| Aviso | Amarelo | `#d69e2e` | Alertas de atencao, pendentes |
| Erro | Vermelho | `#e53e3e` | Erros, validacoes negativas |
| Informacao | Azul Medio | `#2b6cb0` | Mensagens informativas, tooltips |
> Cores de estado nao fazem parte da identidade visual principal.
> Usar apenas para feedback de interface, nunca como cor de marca.
---
*Referencia de paletas v1.0.0 | 2026-03-10 | Descomplicar®*
*Fonte principal: `brand-guidelines/SKILL.md`*
@@ -1,188 +1,123 @@
--- ---
name: "Descomplicar Digital" name: "Descomplicar"
description: "Professional technology consulting theme with warm accents" description: "Tokens da marca Descomplicar® — espelho legível por máquina do DESIGN.md no Open Design"
version: "1.0.0" version: "2.0.0"
updated: "2026-03-10" updated: "2026-07-22"
source: "~/workspace/open-design/design-systems/descomplicar/DESIGN.md"
--- ---
# Tema Descomplicar Digital # Tokens — Descomplicar®
Tema oficial Descomplicar® para uso em apresentações, relatórios, designs e qualquer material de comunicação. > **Fonte de verdade:** `~/workspace/open-design/design-systems/descomplicar/DESIGN.md`
> Este ficheiro é um espelho para consumo automático (geradores, templates, scripts).
> Se divergir do `DESIGN.md`, o `DESIGN.md` ganha e este ficheiro deve ser corrigido.
>
> **Para marcas de clientes**, não usar estes valores — ler o `DESIGN.md` da marca respectiva
> em `design-systems/<slug-do-cliente>/`.
--- ## Cores
## Paleta de Cores
```yaml ```yaml
colors: colors:
primary: "#1a365d" # Azul escuro — headers, fundos principais primary: "#cc8d00" # Dourado — CTAs, destaques, ícones, bordas activas
secondary: "#2b6cb0" # Azul médio — links, sub-headers primary_light: "#f2d9a2" # Fundos secundários, hover suave, tags (nunca texto)
accent: "#dd6b20" # Laranja — CTAs, destaques, números surface: "#ffffff" # Fundo de página, cards, modais
background: "#ffffff" # Branco — fundo principal surface_alt: "#f8f8f8" # Secções alternadas, blocos de código
surface: "#f7fafc" # Cinza muito claro — secções alternadas text: "#000000" # Headlines, corpo principal
text_primary: "#2d3748" # Cinza escuro — texto corpo text_muted: "#6e6e6e" # Subtítulos, metadados, placeholders
text_secondary: "#4a5568" # Cinza médio — subtítulos, legendas border: "#e5e5e5" # Divisórias, bordas de card
border: "#e2e8f0" # Cinza claro — bordas, separadores danger: "#dc2626" # Erros, alertas críticos
success: "#38a169" # Verde — confirmações success: "#16a34a" # Confirmações
warning: "#d69e2e" # Amarelo — avisos
error: "#e53e3e" # Vermelho — erros
``` ```
### Referência Visual **Regras:** dourado é o único acento cromático; máximo 3 cores por visual; fundos grandes em
`surface` ou `surface_alt`; CTA com fundo dourado e texto preto; nunca texto branco sobre dourado.
| Token | Hex | Uso |
|-------|-----|-----|
| `primary` | `#1a365d` | Headers H1/H2, fundos de navegação, capa de apresentação |
| `secondary` | `#2b6cb0` | Links, H3/H4, badges, ícones activos |
| `accent` | `#dd6b20` | Botões CTA, números em destaque, linhas de separação principais |
| `background` | `#ffffff` | Fundo padrão de slides e páginas |
| `surface` | `#f7fafc` | Slides alternados, tabelas linha par, painéis laterais |
| `text_primary` | `#2d3748` | Corpo de texto, parágrafos, listas |
| `text_secondary` | `#4a5568` | Subtítulos, legendas, texto auxiliar |
| `border` | `#e2e8f0` | Bordas de tabela, separadores horizontais, cards |
| `success` | `#38a169` | Confirmações, métricas positivas, status "concluído" |
| `warning` | `#d69e2e` | Avisos, métricas de atenção, status "em risco" |
| `error` | `#e53e3e` | Erros, métricas negativas, status "crítico" |
---
## Tipografia ## Tipografia
```yaml ```yaml
fonts: fonts:
heading: "Montserrat" display: "Montserrat"
heading_weight: "700, 800" display_fallback: "Poppins, system-ui, sans-serif"
heading_fallback: "Arial, sans-serif" display_weights: [700, 800]
body: "Open Sans" body: "Inter"
body_weight: "400, 600" body_fallback: "Open Sans, system-ui, sans-serif"
body_fallback: "Helvetica, sans-serif" body_weights: [400, 500, 600]
code: "JetBrains Mono" mono: "JetBrains Mono"
code_fallback: "Consolas, monospace" mono_fallback: "IBM Plex Mono, monospace"
mono_weights: [400]
scale:
text_5xl: { size: 48, weight: 800, line_height: 1.1 } # Hero headline
text_4xl: { size: 36, weight: 700, line_height: 1.15 } # H1
text_3xl: { size: 30, weight: 700, line_height: 1.2 } # H2
text_2xl: { size: 24, weight: 700, line_height: 1.3 } # H3
text_xl: { size: 20, weight: 600, line_height: 1.4 } # H4, título de card
text_lg: { size: 18, weight: 500, line_height: 1.5 } # Parágrafo de entrada
text_base:{ size: 16, weight: 400, line_height: 1.6 } # Corpo
text_sm: { size: 14, weight: 400, line_height: 1.5 } # Legendas, UI
text_xs: { size: 12, weight: 500, line_height: 1.4 } # Tags, badges
``` ```
### Hierarquia Tipográfica
| Nível | Fonte | Peso | Tamanho (slides) | Tamanho (docs) |
|-------|-------|------|-----------------|----------------|
| H1 — Título principal | Montserrat | 800 | 40-48px | 32px |
| H2 — Título secção | Montserrat | 700 | 28-36px | 24px |
| H3 — Subtítulo | Montserrat | 700 | 22-26px | 20px |
| H4 — Label | Open Sans | 600 | 18-20px | 16px |
| Corpo | Open Sans | 400 | 16-18px | 14-16px |
| Caption | Open Sans | 400 | 12-14px | 12px |
| Código | JetBrains Mono | 400 | 14-16px | 13px |
### Google Fonts — Import
```css ```css
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@700;800&family=Open+Sans:wght@400;600&family=JetBrains+Mono&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@700;800&family=Inter:wght@400;500;600&family=JetBrains+Mono&display=swap');
``` ```
--- ## Espaçamento, grelha e raios
## Regras de Uso
```yaml ```yaml
usage_notes: spacing: # base 4px
- Usar laranja com moderação (apenas CTAs e destaques-chave) space_1: 4
- Azul escuro para headers e elementos de navegação space_2: 8
- Fundos alternados branco/cinza para secções longas space_3: 12
- Nunca usar mais de 3 cores numa slide space_4: 16
- Manter contraste WCAG AA em todos os textos space_6: 24
space_8: 32
space_12: 48
space_16: 64
space_24: 96
grid:
columns: 12
gutter: 24
max_width: 1280 # conteúdo geral
max_width_article: 960 # artigos
max_width_prose: 760 # texto corrido (line-height 1.7)
padding_x: { mobile: 16, tablet: 32, desktop: 48 }
breakpoints:
mobile: "<=768"
tablet: "769-1024"
desktop: ">1024"
radius:
sm: 4 # inputs, badges
md: 8 # cards, botões
lg: 12 # modais
full: 9999 # pills, avatares
``` ```
### Regras Expandidas ## Movimento
**Cores** ```yaml
- O laranja (`accent`) é reservado para no máximo 1-2 elementos por slide/página motion:
- Nunca usar `primary` e `accent` em simultâneo em texto — garante legibilidade micro: 150 # hover, focus (ms)
- Fundo `surface` em slides alternados cria ritmo visual sem poluição transition: 250 # mudanças de estado (ms)
- Combinação permitida em texto: `primary` fundo + `background` texto, ou `background` fundo + `primary` texto page_fade: 200 # transições de página (ms)
easing_in: "ease-out"
**Tipografia** easing_both: "ease-in-out"
- Nunca misturar Montserrat com outra fonte de títulos no mesmo documento card_hover: "translateY(-2px) + sombra 0 4px 16px rgba(0,0,0,0.1)"
- Open Sans é a única fonte de corpo permitida proibido: ["parallax", "auto-play", "animações de entrada elaboradas"]
- Código inline e blocos de código: sempre JetBrains Mono
- Não usar itálico em títulos — usar peso (bold) para ênfase
**Contraste WCAG AA**
- `text_primary` (#2d3748) sobre `background` (#ffffff): rácio 12.6:1 — aprovado
- `text_secondary` (#4a5568) sobre `background` (#ffffff): rácio 7.4:1 — aprovado
- `accent` (#dd6b20) sobre `background` (#ffffff): rácio 3.8:1 — aprovado para texto grande (>18px bold)
- `background` (#ffffff) sobre `primary` (#1a365d): rácio 12.6:1 — aprovado
---
## Aplicação em Slides
### Layout Tipo Capa
```
[Fundo: primary #1a365d]
[Logo Descomplicar — branco, topo esquerdo]
[H1: Montserrat 800, branco]
[H2: Montserrat 700, accent #dd6b20]
[Rodapé: Open Sans 400, text_secondary, separador border]
``` ```
### Layout Tipo Conteúdo ## Acessibilidade
```yaml
contrast:
preto_sobre_branco: 21.0 # AAA
preto_sobre_dourado: 7.4 # AAA
dourado_sobre_preto: 7.4 # AAA
muted_sobre_branco: 5.1 # AA
branco_sobre_dourado: 2.9 # FALHA — proibido
minimo_corpo: 4.5 # AA
``` ```
[Fundo: background #ffffff]
[Header barra: primary #1a365d, 8px altura]
[H2: primary #1a365d, Montserrat 700]
[Corpo: text_primary #2d3748, Open Sans 400]
[Sidebar ou destaque: surface #f7fafc]
[CTA ou número chave: accent #dd6b20, Montserrat 800]
```
### Layout Tipo Dados / Métricas
```
[Fundo alternado: surface #f7fafc]
[Número grande: accent #dd6b20, Montserrat 800, 60-80px]
[Label: text_secondary #4a5568, Open Sans 600, 14px]
[Ícone: secondary #2b6cb0]
```
---
## Aplicação em HTML (Desk CRM / Relatórios)
```css
:root {
--color-primary: #1a365d;
--color-secondary: #2b6cb0;
--color-accent: #dd6b20;
--color-background: #ffffff;
--color-surface: #f7fafc;
--color-text-primary: #2d3748;
--color-text-secondary: #4a5568;
--color-border: #e2e8f0;
--color-success: #38a169;
--color-warning: #d69e2e;
--color-error: #e53e3e;
--font-heading: 'Montserrat', Arial, sans-serif;
--font-body: 'Open Sans', Helvetica, sans-serif;
--font-code: 'JetBrains Mono', Consolas, monospace;
}
h1, h2 { font-family: var(--font-heading); font-weight: 800; color: var(--color-primary); }
h3, h4 { font-family: var(--font-heading); font-weight: 700; color: var(--color-secondary); }
p, li { font-family: var(--font-body); color: var(--color-text-primary); }
code { font-family: var(--font-code); }
.accent { color: var(--color-accent); }
.surface { background: var(--color-surface); }
```
---
## Compatibilidade com /design
Este tema é carregado automaticamente quando se usa `--brand descomplicar` no skill `/design`.
**Pack JSON:** `/media/ealmeida/Dados/Hub/04-Recursos/Design/brands/descomplicar.json`
---
*Tema v1.0.0 | 2026-03-10 | Descomplicar®*
@@ -0,0 +1,89 @@
# Gestão de Design Systems Multi-Marca no Open Design
Referência operacional para criar e manter a identidade visual de **qualquer marca** — a
Descomplicar® e cada cliente — dentro do Open Design.
> Substituiu `color-palettes.md` em 22-07-2026. Esse ficheiro continha escalas de cor derivadas
> de uma paleta incorrecta (azul/laranja) que nunca foi a identidade da Descomplicar.
> Escalas de cor não se inventam aqui — vivem no `DESIGN.md` de cada marca.
---
## Onde vivem
```
~/workspace/open-design/design-systems/
descomplicar/DESIGN.md # a nossa marca
<slug-cliente>/DESIGN.md # uma pasta por cliente
```
O Open Design traz ainda mais de 140 design systems de referência instalados como plugins
(`design-system-apple`, `design-system-swiss`, `design-system-bento`, …). Servem de **referência
e ponto de partida** — nunca se entrega material de cliente com a identidade de outra marca.
---
## Criar o design system de um cliente
**1. Verificar duplicados** — procurar a pasta do cliente em `design-systems/`. Se já existir,
usar essa. Nunca criar um segundo design system para a mesma marca.
**2. Recolher material real** — site do cliente, manual de marca, logótipos, materiais impressos.
Sem material não há extracção: a identidade de um cliente **nunca se inventa**.
**3. Extrair** — skill `brand-extract` do Open Design sobre o site ou os ficheiros fornecidos.
Devolve cor, tipografia e padrões observados.
**4. Estruturar** — skill `theme-factory` ou redacção directa do `DESIGN.md`, seguindo a mesma
estrutura do da Descomplicar:
| Secção | Conteúdo |
|--------|----------|
| 1. Tema e atmosfera | Categoria, estilo visual, postura cromática, mood, acabamento |
| 2. Cor | Tokens com hex e uso; regras de aplicação |
| 3. Tipografia | Famílias, pesos, escala com tamanho/peso/line-height |
| 4. Espaçamento e grelha | Escala base, colunas, gutter, max-width, breakpoints, raios |
| 5. Layout e composição | Hierarquia, padrões de layout frequentes |
| 6. Componentes | Botões, badges, cards, inputs, navbar, rodapé |
| 7. Movimento | Durações, easing, o que é proibido |
| 8. Voz e marca | Tom, princípios de copy, exemplos certos e errados |
| 9. Anti-padrões | Lista explícita do que nunca fazer |
**5. Validar com o cliente** antes de tornar normativo. Um `DESIGN.md` por aprovar não deve
gerar material final.
**6. Registar** — anotar a marca e a origem do material no projecto ou tarefa correspondente.
---
## Aplicar numa produção
```
create_project(name: "<projecto>", designSystem: "<slug-da-marca>")
```
- Um projecto do Open Design serve **uma marca só**.
- Ecossistemas do mesmo cliente (landing, dashboard, app, deck) ficam **no mesmo projecto**,
para herdarem o mesmo `DESIGN.md` sem deriva entre artefactos.
- Marcas diferentes nunca partilham projecto.
---
## Manter
- Alterações de identidade fazem-se **no `DESIGN.md`** e só depois se propagam para espelhos
(skill `brand-guidelines`, `descomplicar-theme.md`, materiais no Hub).
- Ao detectar divergência entre um espelho e o `DESIGN.md`, corrigir o espelho — nunca o inverso.
- Rebranding de cliente: actualizar o `DESIGN.md` e regenerar os artefactos afectados, em vez de
corrigir peça a peça.
---
## Acessibilidade — verificação obrigatória
Independentemente da marca, validar antes de entregar:
- Texto de corpo com contraste mínimo AA (4.5:1); títulos grandes 3:1.
- Nenhum par de cores da marca usado abaixo do mínimo, mesmo que o cliente o use hoje —
quando o material de origem falha contraste, sinalizar ao cliente em vez de replicar o erro.
- Estados hover, focus e disabled explícitos em todos os elementos interactivos.
+6
View File
@@ -0,0 +1,6 @@
{
"task_id": null,
"project_id": null,
"customer_id": null,
"gitea_repo": null
}

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