# Phase 4 Context — OpenClaw Embutido > Generated in --auto mode on 2026-03-26. All decisions auto-selected with recommended defaults. ## Phase Goal Skills emergentes criadas automaticamente a partir de padrões detectados em `skill_executions`. ## Prior Context Applied - **Stack de IA:** Ollama local via LiteLLM — usar `llama3.1:8b` para geração de drafts (leve, rápido) - **Backend-first:** API definida antes do frontend - **Auditoria imutável:** todas as execuções registradas com SHA-256 - **Schema já existe:** `detected_patterns` e `skill_suggestions` em `shared/schema.ts` — usar sem alterar --- ## Decisions ### 1. O que constitui um "padrão"? **[auto] Mesma skill executada ≥3 vezes em 30 dias com confiança ≥80%** - Fonte de dados: tabela `skill_executions` - Agrupamento: `skillId + userId` (por usuário, não global) - Confiança calculada como: `(frequency / max_frequency_in_window) * 100` - Janela: `lastSeenAt - firstSeenAt ≤ 30 dias` - Thresholds alinhados com o roadmap: min 3 ocorrências, 30 dias, 80% confiança ### 2. Trigger do PatternDetector **[auto] Cron job a cada hora (setInterval no servidor Node.js)** - Sem dependência de infraestrutura externa (sem Redis, sem Bull) - Ao iniciar, PatternDetector registra no startup do servidor - Execuções recentes analisadas em lote; padrões gravados em `detected_patterns` - Se padrão já existe (mesmo skillId + userId): atualiza frequency + lastSeenAt ### 3. Geração do body da skill emergente **[auto] AI via llama3.1:8b (LiteLLM) gera o body do DRAFT** - Ao atingir threshold: PatternDetector cria entrada em `skill_suggestions` (status: `pending`) - Skill DRAFT gerada automaticamente em `arcadia_skills` (status: `draft`, source: `openclaw`) - Body gerado via prompt para llama3.1:8b descrevendo o padrão detectado - DRAFT aguarda aprovação — não é executável até ser `published` ### 4. Widget de notificação **[auto] Badge no header global + painel slide-in** - Badge no ícone de notificações existente no header (sem criar novo componente de header) - Ao clicar: slide-in panel lateral mostrando lista de sugestões pendentes - Cada sugestão mostra: nome sugerido, padrão detectado, frequência, confiança, body preview - Ações inline: "Aceitar" → promove para skill publicada | "Rejeitar" → status `rejected` ### 5. Aprovação — onde? **[auto] Tab "Sugestões" em `/skills` (página existente) — Dev Center completo na Phase 6** - Sem criar nova rota — adicionar tab na página `/skills` já existente - Tab lista `skill_suggestions` com status `pending` - Fluxo: aceitar → cria skill publicada a partir do DRAFT | rejeitar → arquiva sugestão - Dev Center completo (Phase 6) herdará esse fluxo --- ## Reusable Assets Identified - `shared/schema.ts` — `detectedPatterns`, `skillSuggestions` já definidos (Phase 1) - `server/skills/engine.ts` — SkillEngine para criar DRAFT skills programaticamente - `server/skills/routes.ts` — rota `/api/skills` existente, adicionar sub-rotas de sugestões - `server/skills/versioning.ts` — SHA-256 audit logging (reusar padrão) - `client/src/pages/BiWorkspace.tsx` — referência de como adicionar tabs a uma página existente - `docker/litellm-config.yaml` — llama3.1:8b já configurado como Tier 2 --- ## Scope Boundary **Incluído nesta fase:** - PatternDetector backend (cron + análise de skill_executions) - Geração de DRAFT via AI - Widget de notificação + slide-in - Tab "Sugestões" em /skills com aprovação/rejeição **Fora de escopo (phases futuras):** - Dev Center completo (Phase 6) - Detecção de padrões em outras fontes além de skill_executions - Pattern sharing entre tenants --- ## Plan Breakdown Suggested - **04-01:** PatternDetector service (backend) — cron, análise, gravação em detected_patterns + skill_suggestions + DRAFT creation via AI - **04-02:** API routes + frontend widget (badge + slide-in) + tab "Sugestões" em /skills