<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uphiago on Dotmind it</title><link>/pt/authors/uphiago/</link><description>Dotmind it (Uphiago)</description><generator>Hugo -- gohugo.io</generator><language>pt</language><managingEditor>alwaysdotmind@gmail.com
(Dotmind it. Building where things usually break)</managingEditor><lastBuildDate>Thu, 02 Apr 2026 00:00:00 -0300</lastBuildDate><atom:link href="/pt/authors/uphiago/index.xml" rel="self" type="application/rss+xml"/><item><title>Stack de Skills, MCP e Contexto de Projeto</title><link>/pt/posts/2026/ai/agentic-engineering-guide/</link><pubDate>Thu, 02 Apr 2026 00:00:00 -0300</pubDate><author>alwaysdotmind@gmail.com (Dotmind it. Building where things usually break)</author><guid>/pt/posts/2026/ai/agentic-engineering-guide/</guid><description>&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota do Autor:&lt;/strong&gt; Este guia consolida as melhores práticas de engenharia de prompt e arquitetura de sistemas autônomos. Ele foi desenhado para desenvolvedores que desejam transitar de simples &amp;ldquo;prompts&amp;rdquo; para sistemas agênticos robustos e confiáveis.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="0-setup-rápido-tldr" &gt;
&lt;div&gt;
&lt;a href="#0-setup-r%c3%a1pido-tldr"&gt;
#
&lt;/a&gt;
0. Setup Rápido (TL;DR)
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Quer começar agora? Veja como configurar o suporte a Skills em ambientes agênticos comuns.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;Plataforma&lt;/th&gt;
&lt;th style="text-align: left"&gt;Como Configurar&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Codex&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Mantenha as skills em &lt;code&gt;skills/&lt;/code&gt; no workspace e as regras do projeto em &lt;code&gt;AGENTS.md&lt;/code&gt;. O agente usa esses artefatos como fonte primária de contexto operacional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;Claude&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;Crie a pasta &lt;code&gt;.claude/skills/&lt;/code&gt; na raiz do projeto (ou &lt;code&gt;~/.claude/skills/&lt;/code&gt; para uso pessoal). O Claude Code descobre as skills automaticamente ao iniciar: nenhuma configuração adicional é necessária.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;OpenCode&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: left"&gt;As skills são carregadas automaticamente se estiverem na raiz do projeto em &lt;code&gt;.opencode/skills&lt;/code&gt; ou &lt;code&gt;skills/&lt;/code&gt;. Certifique-se de que o plugin de Agente está ativo.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Para gerenciar skills em múltiplos agentes a partir de uma fonte única, &lt;a href="https://skills.sh" target="_blank" rel="noopener noreferrer"&gt;skills.sh&lt;/a&gt;
(Vercel Labs) instala em uma pasta central e propaga via symlinks: &lt;code&gt;npx skills add &amp;lt;repo&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Interoperabilidade:&lt;/strong&gt; O padrão Agent Skills é adotado por mais de 30 ferramentas: Claude Code, Codex, Cursor, VS Code, Gemini CLI, GitHub Copilot, Roo Code, OpenCode e outros. &lt;strong&gt;Uma única Skill funciona em qualquer runtime compatível.&lt;/strong&gt; Não crie versões por ferramenta; o sistema de arquivos é a fonte da verdade universal. Veja a lista completa em &lt;a href="https://agentskills.io" target="_blank" rel="noopener noreferrer"&gt;agentskills.io&lt;/a&gt;
.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-a-nova-fronteira-engenharia-agêntica" &gt;
&lt;div&gt;
&lt;a href="#1-a-nova-fronteira-engenharia-ag%c3%aantica"&gt;
#
&lt;/a&gt;
1. A Nova Fronteira: Engenharia Agêntica
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;A era de utilizar LLMs apenas como chatbots consultivos acabou. Estamos vivendo a transição para &lt;strong&gt;Agentes Autônomos&lt;/strong&gt;, sistemas capazes de orquestrar planejamento, execução de ferramentas e verificação de resultados. No entanto, a eficácia de um agente é diretamente proporcional à qualidade das ferramentas (Skills) fornecidas a ele.&lt;/p&gt;
&lt;p&gt;Diferente de um prompt isolado, uma &lt;strong&gt;Skill&lt;/strong&gt; é uma unidade funcional modular, reutilizável e determinística que expande as capacidades nativas do modelo.&lt;/p&gt;
&lt;h3 id="o-padrão-de-arquitetura-de-skills" &gt;
&lt;div&gt;
&lt;a href="#o-padr%c3%a3o-de-arquitetura-de-skills"&gt;
##
&lt;/a&gt;
O Padrão de Arquitetura de Skills
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Para garantir interoperabilidade entre as dezenas de plataformas que suportam o padrão Agent Skills, adotamos uma arquitetura baseada em &lt;strong&gt;Isolamento de Contexto&lt;/strong&gt; e &lt;strong&gt;Execução Segura&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Isso resolve o problema da &amp;ldquo;Alucinação Funcional&amp;rdquo;: pesquisas sobre modelos aumentados com ferramentas (incluindo Toolformer, Meta AI 2023, e o trabalho publicado pela Anthropic sobre construção de agentes eficazes) mostram que modelos ancorados em ferramentas bem definidas cometem significativamente menos erros lógicos.&lt;/p&gt;
&lt;h3 id="o-stack-agêntico" &gt;
&lt;div&gt;
&lt;a href="#o-stack-ag%c3%aantico"&gt;
##
&lt;/a&gt;
O &amp;ldquo;Stack&amp;rdquo; Agêntico
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Para criar agentes realmente eficazes que entendam o contexto da sua organização, utilizamos três padrões complementares alinhados ao ecossistema da &lt;strong&gt;Agentic AI Foundation&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MCP (Model Context Protocol):&lt;/strong&gt; A camada de &lt;strong&gt;Acesso a Dados&lt;/strong&gt;. Responde &amp;ldquo;Quais ferramentas e dados posso acessar?&amp;rdquo; (ex: conectar ao Postgres ou Jira).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent Skills:&lt;/strong&gt; A camada de &lt;strong&gt;Know-How&lt;/strong&gt;. Responde &amp;ldquo;Como devo realizar esta tarefa?&amp;rdquo; (ex: metodologia de Code Review da empresa).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AGENTS.md / CLAUDE.md:&lt;/strong&gt; A camada de &lt;strong&gt;Contexto do Projeto&lt;/strong&gt;. Responde &amp;ldquo;Quais são as regras deste projeto específico?&amp;rdquo; (ex: usar React com Tailwind). No Claude Code, esse arquivo é o &lt;code&gt;CLAUDE.md&lt;/code&gt;; no Codex e OpenCode, &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A diferença competitiva entre abordagens de IA coding raramente está no modelo. Está no harness de execução: o loop do agente, o modelo de permissões, o sistema de ferramentas e a memória em camadas. Melhorar orquestração e governança consistentemente supera a troca de modelos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-arquitetura-técnica-de-uma-skill" &gt;
&lt;div&gt;
&lt;a href="#2-arquitetura-t%c3%a9cnica-de-uma-skill"&gt;
#
&lt;/a&gt;
2. Arquitetura Técnica de uma Skill
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Para construir uma skill robusta, abandonamos estruturas orgânicas em favor de uma organização estrita. Não é apenas sobre pastas, é sobre &lt;strong&gt;Progressive Disclosure&lt;/strong&gt; (Divulgação Progressiva).&lt;/p&gt;
&lt;h3 id="o-padrão-progressive-disclosure" &gt;
&lt;div&gt;
&lt;a href="#o-padr%c3%a3o-progressive-disclosure"&gt;
##
&lt;/a&gt;
O Padrão &amp;ldquo;Progressive Disclosure&amp;rdquo;
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Se carregássemos todo o conhecimento de uma vez, estouraríamos o contexto do modelo. Por isso, a arquitetura opera em 3 fases distintas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fase 1 (Discovery):&lt;/strong&gt; O agente escaneia apenas os metadados (YAML). Custo: ~100 tokens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fase 2 (Activation):&lt;/strong&gt; Ao escolher uma skill, o agente lê o &lt;code&gt;SKILL.md&lt;/code&gt; completo. Custo: ~2k-5k tokens.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fase 3 (Execution):&lt;/strong&gt; Scripts e referências pesadas são acessados apenas sob demanda. Custo: Zero até ser usado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esse padrão está alinhado com as recomendações oficiais da Anthropic para gerenciamento de contexto e construção de agentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Docs - Long context prompting tips:&lt;/strong&gt; &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/long-context-tips" target="_blank" rel="noopener noreferrer"&gt;platform.claude.com/docs/en/build-with-claude/prompt-engineering/long-context-tips&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Anthropic Engineering - Building effective agents:&lt;/strong&gt; &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" target="_blank" rel="noopener noreferrer"&gt;anthropic.com/engineering/building-effective-agents&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evidência acadêmica sobre contexto (&amp;ldquo;Lost in the Middle&amp;rdquo;):&lt;/strong&gt; &lt;a href="https://arxiv.org/abs/2307.03172" target="_blank" rel="noopener noreferrer"&gt;arxiv.org/abs/2307.03172&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Preencher a janela além do necessário degrada a qualidade da recuperação, não só a eficiência. &lt;em&gt;&amp;ldquo;Lost in the Middle&amp;rdquo;&lt;/em&gt; demonstra que modelos têm pior desempenho com conteúdo posicionado no meio de contextos longos: a curva de performance é em U, com os piores resultados no centro. Priorize contexto curto, relevante e verificável em vez de volume; evite carregar conteúdo que o agente não precisa para a tarefa atual.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2026/agentic-engineering-progressive-disclosure.png" alt="Diagrama do padrão Progressive Disclosure"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="estrutura-de-diretórios-da-skill" &gt;
&lt;div&gt;
&lt;a href="#estrutura-de-diret%c3%b3rios-da-skill"&gt;
##
&lt;/a&gt;
Estrutura de Diretórios da Skill
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Uma skill deve implementar os seguintes componentes. O diretório base varia por plataforma: &lt;code&gt;.claude/skills/&amp;lt;nome&amp;gt;/&lt;/code&gt; no Claude Code, &lt;code&gt;skills/&amp;lt;nome&amp;gt;/&lt;/code&gt; no Codex, &lt;code&gt;.opencode/skills/&amp;lt;nome&amp;gt;/&lt;/code&gt; no OpenCode.&lt;/p&gt;
&lt;h3 id="a-o-manifesto-de-comportamento-skillmd" &gt;
&lt;div&gt;
&lt;a href="#a-o-manifesto-de-comportamento-skillmd"&gt;
##
&lt;/a&gt;
A. O Manifesto de Comportamento (&lt;code&gt;SKILL.md&lt;/code&gt;)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Este arquivo atua como a &lt;strong&gt;Interface de Controle&lt;/strong&gt; ou &lt;em&gt;System Prompt&lt;/em&gt; dedicado.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Função:&lt;/strong&gt; Definir gatilhos de ativação e regras de negócio.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tech Spec:&lt;/strong&gt; Deve conter metadados em YAML (frontmatter) e instruções em Markdown conciso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convenção de Nomes:&lt;/strong&gt; Use verbos no gerúndio para facilitar a descoberta semântica pelo agente (ex: &lt;code&gt;processing-pdfs&lt;/code&gt;, &lt;code&gt;managing-databases&lt;/code&gt;, &lt;code&gt;reviewing-code&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Design Pattern: Graus de Liberdade (Degrees of Freedom)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Baixa Liberdade:&lt;/strong&gt; Para tarefas críticas (migrações, infra), use scripts rígidos. Não deixe a IA &amp;ldquo;pensar&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alta Liberdade:&lt;/strong&gt; Para tarefas criativas (code review, docs), dê diretrizes e exemplos, mas permita adaptação.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h3 id="frontmatter-e-execução-avançada" &gt;
&lt;div&gt;
&lt;a href="#frontmatter-e-execu%c3%a7%c3%a3o-avan%c3%a7ada"&gt;
##
&lt;/a&gt;
Frontmatter e Execução Avançada
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Além de &lt;code&gt;name&lt;/code&gt; e &lt;code&gt;description&lt;/code&gt;, estes campos deixam a skill mais previsível e poderosa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;allowed-tools&lt;/code&gt;&lt;/strong&gt;: define ferramentas permitidas durante a skill.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;disable-model-invocation&lt;/code&gt;&lt;/strong&gt;: se &lt;code&gt;true&lt;/code&gt;, a skill só roda por invocação manual.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;user-invocable&lt;/code&gt;&lt;/strong&gt;: controla se a skill aparece no menu de comandos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;argument-hint&lt;/code&gt;&lt;/strong&gt;: documenta o formato esperado de argumentos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context: fork&lt;/code&gt; + &lt;code&gt;agent&lt;/code&gt;&lt;/strong&gt;: roda em subagente isolado para tarefas longas ou especializadas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;model&lt;/code&gt;&lt;/strong&gt;: define o modelo usado quando a skill está ativa (ex: &lt;code&gt;claude-opus-4-6&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nota: &lt;code&gt;allowed-tools&lt;/code&gt; faz parte do padrão aberto Agent Skills. Todos os outros campos acima são extensões específicas do Claude Code e podem não estar disponíveis em outros runtimes.&lt;/p&gt;
&lt;p&gt;O conteúdo do &lt;code&gt;SKILL.md&lt;/code&gt; também suporta substituições dinâmicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$ARGUMENTS&lt;/code&gt;&lt;/strong&gt;: substituído por tudo que é passado ao invocar a skill. Ex: &lt;code&gt;/fix-issue 123&lt;/code&gt; → &lt;code&gt;$ARGUMENTS&lt;/code&gt; vira &lt;code&gt;123&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;$ARGUMENTS[N]&lt;/code&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;code&gt;$N&lt;/code&gt;&lt;/strong&gt;: acessa argumentos por posição. Ex: &lt;code&gt;/migrate SearchBar React Vue&lt;/code&gt; com &lt;code&gt;$0&lt;/code&gt;, &lt;code&gt;$1&lt;/code&gt;, &lt;code&gt;$2&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Exemplo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ef9f76"&gt;---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;name&lt;/span&gt;: review-pr
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;description&lt;/span&gt;: Revisa PR com checklist de segurança, testes e legibilidade.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;argument-hint&lt;/span&gt;: [pr-number]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;allowed-tools&lt;/span&gt;: Read, Grep, Bash(gh pr view *), Bash(gh pr diff *)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ef9f76"&gt;---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="b-a-camada-de-execução-scripts" &gt;
&lt;div&gt;
&lt;a href="#b-a-camada-de-execu%c3%a7%c3%a3o-scripts"&gt;
##
&lt;/a&gt;
B. A Camada de Execução (&lt;code&gt;scripts/&lt;/code&gt;)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Onde o determinismo acontece. Não peça para a IA &amp;ldquo;imaginar&amp;rdquo; como executar uma migração de banco de dados.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Função:&lt;/strong&gt; Scripts em Python, Bash ou Node.js que realizam a tarefa pesada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Segurança:&lt;/strong&gt; Permite auditoria de código e execução em sandbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progressive Disclosure (Nível 3):&lt;/strong&gt; Estes arquivos NUNCA são lidos pelo LLM, apenas executados. Isso garante zero consumo de tokens para a lógica pesada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="c-a-base-de-conhecimento-references" &gt;
&lt;div&gt;
&lt;a href="#c-a-base-de-conhecimento-references"&gt;
##
&lt;/a&gt;
C. A Base de Conhecimento (&lt;code&gt;references/&lt;/code&gt;)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Documentação estática e exemplos (One-shot learning).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Função:&lt;/strong&gt; Fornecer contexto &lt;em&gt;Just-in-Time&lt;/em&gt;. O agente só carrega esses arquivos se a tarefa exigir, economizando tokens.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2026/agentic-engineering-directory-structure.png" alt="Estrutura de diretórios de uma skill"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-implementação-e-uso-por-ambiente" &gt;
&lt;div&gt;
&lt;a href="#3-implementa%c3%a7%c3%a3o-e-uso-por-ambiente"&gt;
#
&lt;/a&gt;
3. Implementação e Uso por Ambiente
&lt;/div&gt;
&lt;/h2&gt;
&lt;h3 id="fundamentos-compartilhados-entre-runtimes" &gt;
&lt;div&gt;
&lt;a href="#fundamentos-compartilhados-entre-runtimes"&gt;
##
&lt;/a&gt;
Fundamentos Compartilhados entre Runtimes
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Independente da ferramenta, todos os runtimes compatíveis com Agent Skills seguem os mesmos pilares: &lt;strong&gt;MCP + Skills + Loop Research → Plan → Execute → Verify&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pesquisa (Research):&lt;/strong&gt; O agente mapeia o estado atual: lê arquivos de contexto, regras do projeto e código relevante antes de tocar em qualquer coisa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Planejamento (Plan):&lt;/strong&gt; O agente quebra o trabalho em passos pequenos e verificáveis, definindo critérios de aceite antes de implementar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execução (Execute):&lt;/strong&gt; O agente usa ferramentas e scripts (&lt;code&gt;scripts/&lt;/code&gt;) para aplicar mudanças de forma determinística.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verificação (Verify):&lt;/strong&gt; O agente valida o resultado com testes, checks e critérios de qualidade antes de encerrar a tarefa.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;O que muda entre as ferramentas é principalmente a &lt;strong&gt;experiência de configuração/orquestração&lt;/strong&gt; (onde declarar agentes, memória e integrações), e não os princípios operacionais.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP em todos:&lt;/strong&gt; MCP é um padrão aberto e pode ser usado em todos os ambientes para conectar dados e ferramentas externas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex (exemplo prático):&lt;/strong&gt; uso de &lt;code&gt;skills/&lt;/code&gt; + &lt;code&gt;AGENTS.md&lt;/code&gt; como contrato local do projeto e execução de ferramentas no workspace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code (exemplo prático):&lt;/strong&gt; Sub-agents definidos em &lt;code&gt;.claude/agents/&lt;/code&gt; (arquivos &lt;code&gt;.md&lt;/code&gt; com frontmatter YAML) e contexto persistente em &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenCode (exemplo prático):&lt;/strong&gt; Skills em &lt;code&gt;skills/&lt;/code&gt;, execução por scripts e validação contínua no loop autônomo.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Segurança Crítica:&lt;/strong&gt; Configure skills destrutivas (ex: &lt;code&gt;git push&lt;/code&gt;, deleção de arquivos) para exigir aprovação humana explícita (&lt;em&gt;Human-in-the-loop&lt;/em&gt;), independentemente da autonomia do agente.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="4-estudo-de-caso-criando-a-skill-git-safe" &gt;
&lt;div&gt;
&lt;a href="#4-estudo-de-caso-criando-a-skill-git-safe"&gt;
#
&lt;/a&gt;
4. Estudo de Caso: Criando a Skill &lt;code&gt;git-safe&lt;/code&gt;
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Vamos construir uma skill real para garantir operações Git seguras.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estrutura de Diretórios:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.claude/skills/git-safe/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── pre_push_check.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Codex / OpenCode
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;skills/git-safe/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── pre_push_check.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Conteúdo do &lt;code&gt;SKILL.md&lt;/code&gt; (Manifesto):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name: git-safe
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;description: Utilitário para operações seguras de versionamento.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;allowed-tools: Bash(git *)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ef9f76;font-weight:bold"&gt;# Diretrizes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;1.&lt;/span&gt; GATILHO: Quando o usuário solicitar sync/push.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;2.&lt;/span&gt; AÇÃO: Execute &lt;span style="color:#a6d189"&gt;`scripts/pre_push_check.sh`&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;3.&lt;/span&gt; REGRA: Se o script falhar, aborte a operação e reporte o erro.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;4.&lt;/span&gt; SEGURANÇA: Sempre solicite confirmação humana antes de qualquer push.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Conteúdo do &lt;code&gt;pre_push_check.sh&lt;/code&gt; (Execução):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#737994;font-style:italic"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#737994;font-style:italic"&gt;# Bloqueia push direto na main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f2d5cf"&gt;CURRENT_BRANCH&lt;/span&gt;&lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;git branch --show-current&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;if&lt;/span&gt; &lt;span style="color:#99d1db;font-weight:bold"&gt;[&lt;/span&gt; &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$CURRENT_BRANCH&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#a6d189"&gt;&amp;#34;main&amp;#34;&lt;/span&gt; &lt;span style="color:#99d1db;font-weight:bold"&gt;]&lt;/span&gt;; &lt;span style="color:#ca9ee6"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#99d1db"&gt;echo&lt;/span&gt; &lt;span style="color:#a6d189"&gt;&amp;#34;ERRO: Push direto na main bloqueado por política de segurança.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#99d1db"&gt;exit&lt;/span&gt; &lt;span style="color:#ef9f76"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="5-padrões-avançados-de-arquitetura" &gt;
&lt;div&gt;
&lt;a href="#5-padr%c3%b5es-avan%c3%a7ados-de-arquitetura"&gt;
#
&lt;/a&gt;
5. Padrões Avançados de Arquitetura
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Para levar seus agentes ao próximo nível, você pode implementar padrões de design avançados que imitam fluxos de trabalho humanos complexos.&lt;/p&gt;
&lt;h3 id="a-o-padrão-evaluator-optimizer" &gt;
&lt;div&gt;
&lt;a href="#a-o-padr%c3%a3o-evaluator-optimizer"&gt;
##
&lt;/a&gt;
A. O Padrão &amp;ldquo;Evaluator-Optimizer&amp;rdquo;
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Em vez de confiar na primeira resposta da IA, este padrão cria um loop de feedback interno.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Conceito:&lt;/strong&gt; Um agente &amp;ldquo;Gerador&amp;rdquo; produz uma solução, e um agente &amp;ldquo;Crítico&amp;rdquo; avalia. Se a avaliação for negativa, o Gerador refaz o trabalho com base no feedback.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicação Prática (Code Review):&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Agente 1 (Dev):&lt;/strong&gt; Gera o código da skill.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agente 2 (Sr. Engineer):&lt;/strong&gt; Analisa o código procurando vulnerabilidades. Se encontrar, devolve para o Agente 1.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resultado:&lt;/strong&gt; Apenas código &amp;ldquo;aprovado&amp;rdquo; chega ao usuário.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="b-loop-de-qualidade-validate-fix-repeat" &gt;
&lt;div&gt;
&lt;a href="#b-loop-de-qualidade-validate-fix-repeat"&gt;
##
&lt;/a&gt;
B. Loop de Qualidade (Validate-Fix-Repeat)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Nunca confie na primeira saída. O segredo da qualidade é o loop de feedback &lt;strong&gt;imediato&lt;/strong&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ação:&lt;/strong&gt; O agente executa uma tarefa (ex: gera um JSON).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validação:&lt;/strong&gt; Um script roda imediatamente para verificar a integridade (ex: &lt;code&gt;validate_json.py&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decisão:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Se &lt;strong&gt;Falha&lt;/strong&gt;: O agente lê o erro, corrige e tenta de novo.&lt;/li&gt;
&lt;li&gt;Se &lt;strong&gt;Sucesso&lt;/strong&gt;: Só então o resultado é apresentado ao usuário.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Isso previne o efeito cascata de erros e garante saídas robustas.&lt;/p&gt;
&lt;h3 id="c-orquestração-orchestrator-workers" &gt;
&lt;div&gt;
&lt;a href="#c-orquestra%c3%a7%c3%a3o-orchestrator-workers"&gt;
##
&lt;/a&gt;
C. Orquestração (Orchestrator-Workers)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Para tarefas massivas, um único agente se perde. A solução é delegar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;O Orquestrador:&lt;/strong&gt; Não põe a mão na massa. Ele analisa o pedido (&amp;ldquo;Construa um app completo&amp;rdquo;), quebra em sub-tarefas (&amp;ldquo;Criar DB&amp;rdquo;, &amp;ldquo;Criar Frontend&amp;rdquo;) e delega para sub-agents especializados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Os Operários (Workers):&lt;/strong&gt; Sub-agents que só enxergam suas próprias ferramentas. O &lt;em&gt;Worker-SQL&lt;/em&gt; não tem acesso a ferramentas de CSS, e vice-versa. Isso aumenta drasticamente a segurança e a precisão.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="d-injeção-de-contexto-dinâmico" &gt;
&lt;div&gt;
&lt;a href="#d-inje%c3%a7%c3%a3o-de-contexto-din%c3%a2mico"&gt;
##
&lt;/a&gt;
D. Injeção de Contexto Dinâmico
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;A sintaxe &lt;code&gt;!`comando`&lt;/code&gt; executa um comando shell &lt;em&gt;antes&lt;/em&gt; de o modelo receber o prompt: o output substitui o placeholder no conteúdo da skill. O modelo nunca vê o comando, só o resultado já processado.&lt;/p&gt;
&lt;p&gt;Útil para injetar dados ao vivo sem depender de memória ou contexto anterior:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ef9f76"&gt;---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;name&lt;/span&gt;: pr-summary
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;description&lt;/span&gt;: Resume as mudanças de um pull request
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;context&lt;/span&gt;: fork
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;agent&lt;/span&gt;: Explore
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;allowed-tools&lt;/span&gt;: Bash(gh *)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ef9f76"&gt;---&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#737994;font-style:italic"&gt;## Contexto do PR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#ca9ee6"&gt;Diff&lt;/span&gt;: !`gh pr diff`
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#ca9ee6"&gt;Comentários&lt;/span&gt;: !`gh pr view --comments`
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#ca9ee6"&gt;Arquivos alterados&lt;/span&gt;: !`gh pr diff --name-only`
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#737994;font-style:italic"&gt;## Tarefa&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Resuma as mudanças deste pull request com foco em impacto e riscos.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="e-testes-automatizados-llm-as-a-judge" &gt;
&lt;div&gt;
&lt;a href="#e-testes-automatizados-llm-as-a-judge"&gt;
##
&lt;/a&gt;
E. Testes Automatizados (LLM-as-a-Judge)
&lt;/div&gt;
&lt;/h3&gt;
&lt;p&gt;Como saber se seu agente está performando bem? Use outra IA para testar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frameworks:&lt;/strong&gt; Ferramentas como &lt;em&gt;DeepEval&lt;/em&gt; ou scripts customizados permitem criar &amp;ldquo;Unit Tests&amp;rdquo; para prompts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exemplo de Teste de Skill:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#737994;font-style:italic"&gt;# test_agent.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;def&lt;/span&gt; &lt;span style="color:#8caaee"&gt;test_git_safe_block&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response &lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt; agent&lt;span style="color:#99d1db;font-weight:bold"&gt;.&lt;/span&gt;run(&lt;span style="color:#a6d189"&gt;&amp;#34;Faça um push na main&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ca9ee6"&gt;assert&lt;/span&gt; &lt;span style="color:#a6d189"&gt;&amp;#34;bloqueado&amp;#34;&lt;/span&gt; &lt;span style="color:#99d1db;font-weight:bold"&gt;in&lt;/span&gt; response&lt;span style="color:#99d1db;font-weight:bold"&gt;.&lt;/span&gt;output
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ca9ee6"&gt;assert&lt;/span&gt; agent&lt;span style="color:#99d1db;font-weight:bold"&gt;.&lt;/span&gt;tools_called &lt;span style="color:#99d1db;font-weight:bold"&gt;==&lt;/span&gt; [&lt;span style="color:#a6d189"&gt;&amp;#34;pre_push_check.sh&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="6-referência-rápida" &gt;
&lt;div&gt;
&lt;a href="#6-refer%c3%aancia-r%c3%a1pida"&gt;
#
&lt;/a&gt;
6. Referência Rápida
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Esta seção é um checklist prático para começar a produzir com agentes, skills e MCP no dia a dia.&lt;/p&gt;
&lt;h3 id="1-onde-as-skills-devem-ficar" &gt;
&lt;div&gt;
&lt;a href="#1-onde-as-skills-devem-ficar"&gt;
##
&lt;/a&gt;
1. Onde as Skills Devem Ficar
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Projeto (Claude Code):&lt;/strong&gt; &lt;code&gt;.claude/skills/&amp;lt;nome&amp;gt;/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Projeto (Codex / OpenCode):&lt;/strong&gt; &lt;code&gt;skills/&amp;lt;nome&amp;gt;/SKILL.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pessoal (Claude Code):&lt;/strong&gt; &lt;code&gt;~/.claude/skills/&amp;lt;nome&amp;gt;/SKILL.md&lt;/code&gt; (disponível em todos os projetos)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Todos os agentes de uma vez:&lt;/strong&gt; use &lt;a href="https://skills.sh" target="_blank" rel="noopener noreferrer"&gt;skills.sh&lt;/a&gt;
: instala em uma pasta, cria symlinks para Claude Code, Cursor, Codex e mais de 40 outros automaticamente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regra prática:&lt;/strong&gt; se afeta código/regras do repositório, mantenha no próprio repositório.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Boas práticas para &lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;AGENTS.md&lt;/code&gt;:&lt;/strong&gt; mantenha curto (200 linhas é uma heurística amplamente usada pela comunidade, não um limite oficial); inclua comandos de build, teste e lint; registre decisões arquiteturais e convenções do projeto; liste gotchas técnicos (ex: strict mode, regras de import); evite teoria; o que o linter já impõe não precisa viver aqui.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; &lt;code&gt;.claude/commands/&lt;/code&gt; ainda funciona como alternativa mais simples: um único arquivo &lt;code&gt;.md&lt;/code&gt; sem estrutura de pasta. Skills são recomendadas pois suportam arquivos de suporte, scripts e controle de invocação.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2-como-o-agente-descobre-skills" &gt;
&lt;div&gt;
&lt;a href="#2-como-o-agente-descobre-skills"&gt;
##
&lt;/a&gt;
2. Como o Agente Descobre Skills
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;O agente lê primeiro metadados (&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Depois carrega o &lt;code&gt;SKILL.md&lt;/code&gt; da skill relevante.&lt;/li&gt;
&lt;li&gt;Scripts e referências só entram quando necessário (progressive disclosure).&lt;/li&gt;
&lt;li&gt;Descrição boa = ativação boa. Descrição vaga = skill pouco acionada.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-estrutura-recomendada-de-skill" &gt;
&lt;div&gt;
&lt;a href="#3-estrutura-recomendada-de-skill"&gt;
##
&lt;/a&gt;
3. Estrutura Recomendada de Skill
&lt;/div&gt;
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Claude Code
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.claude/skills/nome-da-skill/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── references/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── guia.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── run.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# Codex / OpenCode
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;skills/nome-da-skill/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;├── references/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;│ └── guia.md
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;└── scripts/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── run.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt;: objetivo, gatilho, fluxo e critérios de sucesso.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;references/&lt;/code&gt;: detalhes longos, exemplos, padrões.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/&lt;/code&gt;: execução determinística para tarefas críticas/repetitivas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-skill-boa-vs-skill-fraca" &gt;
&lt;div&gt;
&lt;a href="#4-skill-boa-vs-skill-fraca"&gt;
##
&lt;/a&gt;
4. Skill Boa vs Skill Fraca
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Boa:&lt;/strong&gt; escopo claro, entradas explícitas, saída esperada definida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fraca:&lt;/strong&gt; &amp;ldquo;faz tudo&amp;rdquo;, sem critério de validação, sem exemplos.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-segurança-técnica-no-uso-diário" &gt;
&lt;div&gt;
&lt;a href="#5-seguran%c3%a7a-t%c3%a9cnica-no-uso-di%c3%a1rio"&gt;
##
&lt;/a&gt;
5. Segurança Técnica no Uso Diário
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Nunca coloque segredo em &lt;code&gt;SKILL.md&lt;/code&gt;, &lt;code&gt;references/&lt;/code&gt; ou &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Sempre prefira script para ações sensíveis/repetitivas em vez de geração livre.&lt;/li&gt;
&lt;li&gt;Para ações destrutivas, exigir confirmação humana explícita.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="6-fluxo-de-trabalho-recomendado" &gt;
&lt;div&gt;
&lt;a href="#6-fluxo-de-trabalho-recomendado"&gt;
##
&lt;/a&gt;
6. Fluxo de Trabalho Recomendado
&lt;/div&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Defina a tarefa.&lt;/li&gt;
&lt;li&gt;Veja se já existe skill no repositório.&lt;/li&gt;
&lt;li&gt;Se não existir, crie uma skill mínima.&lt;/li&gt;
&lt;li&gt;Rode no loop &lt;code&gt;Plan → Execute → Verify&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Se funcionou, evolua com exemplos e script.&lt;/li&gt;
&lt;li&gt;Se repetiu 3 vezes, virou candidata oficial do time.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="7-erros-comuns-no-início" &gt;
&lt;div&gt;
&lt;a href="#7-erros-comuns-no-in%c3%adcio"&gt;
##
&lt;/a&gt;
7. Erros Comuns no Início
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Escrever &lt;code&gt;SKILL.md&lt;/code&gt; longo sem separar em &lt;code&gt;references/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Não declarar formato de argumentos.&lt;/li&gt;
&lt;li&gt;Não validar saída (teste/check/lint).&lt;/li&gt;
&lt;li&gt;Misturar regra do projeto dentro de prompt temporário em vez de &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="7-recursos-e-referências" &gt;
&lt;div&gt;
&lt;a href="#7-recursos-e-refer%c3%aancias"&gt;
#
&lt;/a&gt;
7. Recursos e Referências
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Para aprofundar seu conhecimento em arquitetura de agentes e melhores práticas, consulte os seguintes materiais de referência da indústria:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentação &amp;amp; Padrões:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Agent Skills (especificação aberta):&lt;/strong&gt; &lt;a href="https://agentskills.io" target="_blank" rel="noopener noreferrer"&gt;agentskills.io&lt;/a&gt;
: O padrão aberto de skills adotado por Claude Code, Codex, Cursor, VS Code, Gemini CLI, GitHub Copilot e outros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;skills.sh CLI (Vercel Labs):&lt;/strong&gt; &lt;a href="https://github.com/vercel-labs/skills" target="_blank" rel="noopener noreferrer"&gt;github.com/vercel-labs/skills&lt;/a&gt;
: instale e gerencie skills em mais de 40 agentes via symlinks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model Context Protocol (MCP):&lt;/strong&gt; &lt;a href="https://modelcontextprotocol.io/docs/getting-started/intro" target="_blank" rel="noopener noreferrer"&gt;modelcontextprotocol.io/docs/getting-started/intro&lt;/a&gt;
: O padrão aberto para conectar assistentes de IA a sistemas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Prompt Engineering (System prompts):&lt;/strong&gt; &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/give-claude-a-role-system-prompts" target="_blank" rel="noopener noreferrer"&gt;platform.claude.com/docs/en/build-with-claude/prompt-engineering/give-claude-a-role-system-prompts&lt;/a&gt;
: Guia oficial de papéis e instruções de sistema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Prompt Engineering (Long context):&lt;/strong&gt; &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/long-context-tips" target="_blank" rel="noopener noreferrer"&gt;platform.claude.com/docs/en/build-with-claude/prompt-engineering/long-context-tips&lt;/a&gt;
: Boas práticas para prompts longos e contexto extenso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Artigos Recomendados:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&amp;ldquo;Building Effective Agents&amp;rdquo;&lt;/em&gt; (Anthropic Engineering): &lt;a href="https://www.anthropic.com/engineering/building-effective-agents" target="_blank" rel="noopener noreferrer"&gt;anthropic.com/engineering/building-effective-agents&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;ldquo;ReAct: Synergizing Reasoning and Acting in Language Models&amp;rdquo;&lt;/em&gt;: &lt;a href="https://arxiv.org/abs/2210.03629" target="_blank" rel="noopener noreferrer"&gt;arxiv.org/abs/2210.03629&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;ldquo;Toolformer: Language Models Can Teach Themselves to Use Tools&amp;rdquo;&lt;/em&gt;: &lt;a href="https://arxiv.org/abs/2302.04761" target="_blank" rel="noopener noreferrer"&gt;arxiv.org/abs/2302.04761&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;ldquo;Lost in the Middle: How Language Models Use Long Contexts&amp;rdquo;&lt;/em&gt;: &lt;a href="https://arxiv.org/abs/2307.03172" target="_blank" rel="noopener noreferrer"&gt;arxiv.org/abs/2307.03172&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Repositórios de Exemplo:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;awesome-mcp-servers&lt;/code&gt;: &lt;a href="https://github.com/punkpeye/awesome-mcp-servers" target="_blank" rel="noopener noreferrer"&gt;github.com/punkpeye/awesome-mcp-servers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Exemplos de &amp;ldquo;Agentic Workflows&amp;rdquo;: &lt;a href="https://github.com/langchain-ai/langchain" target="_blank" rel="noopener noreferrer"&gt;LangChain&lt;/a&gt;
e &lt;a href="https://github.com/microsoft/autogen" target="_blank" rel="noopener noreferrer"&gt;AutoGen&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="conclusão" &gt;
&lt;div&gt;
&lt;a href="#conclus%c3%a3o"&gt;
#
&lt;/a&gt;
Conclusão
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Skills + MCP + contexto de projeto formam um padrão operacional moderno para times de engenharia. Comece pequeno, padronize cedo e evolua com consistência.&lt;/p&gt;</description></item><item><title>DE, WM, X11 e Wayland</title><link>/pt/posts/2025/linux/distros/graphics-components/</link><pubDate>Thu, 01 May 2025 00:27:00 -0300</pubDate><author>alwaysdotmind@gmail.com (Dotmind it. Building where things usually break)</author><guid>/pt/posts/2025/linux/distros/graphics-components/</guid><description>&lt;h2 id="componentes-que-formam-a-interface-gráfica-do-linux" &gt;
&lt;div&gt;
&lt;a href="#componentes-que-formam-a-interface-gr%c3%a1fica-do-linux"&gt;
#
&lt;/a&gt;
Componentes que formam a interface gráfica do Linux
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Antes de falarmos de drivers, vale entender como funcionam os principais componentes da interface gráfica no Linux.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; No Linux, o DE fornece a interface visual, o WM organiza as janelas, e X11 ou Wayland define como os aplicativos se comunicam com a GPU e o servidor gráfico.&lt;/p&gt;
&lt;h2 id="ambiente-de-área-de-trabalho-de" &gt;
&lt;div&gt;
&lt;a href="#ambiente-de-%c3%a1rea-de-trabalho-de"&gt;
#
&lt;/a&gt;
Ambiente de Área de Trabalho (DE)
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;O &lt;strong&gt;Desktop Environment&lt;/strong&gt; reúne tudo aquilo que você &amp;ldquo;vê e toca&amp;rdquo; diariamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;barra de tarefas e bandeja do sistema&lt;/li&gt;
&lt;li&gt;menus, notificações e janelas (estilo, animações, botões)&lt;/li&gt;
&lt;li&gt;gerenciador de arquivos, painéis, widgets&lt;/li&gt;
&lt;li&gt;temas, ícones e fontes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ex.:&lt;/strong&gt; GNOME, KDE Plasma (sou fã), Cinnamon, Budgie&amp;hellip;&lt;/p&gt;
&lt;p&gt;Cada um equilibra desempenho, visual e recursos de forma diferente.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="gerenciador-de-janelas-wm" &gt;
&lt;div&gt;
&lt;a href="#gerenciador-de-janelas-wm"&gt;
#
&lt;/a&gt;
Gerenciador de Janelas (WM)
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;O &lt;strong&gt;Window Manager&lt;/strong&gt; decide onde e como cada janela aparece na sua tela:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;posicionamento (flutuante, mosaico, monocle)&lt;/li&gt;
&lt;li&gt;atalhos de teclado para mover/redimensionar&lt;/li&gt;
&lt;li&gt;bordas, sombras e pilha de janelas&lt;/li&gt;
&lt;li&gt;regras de foco e workspaces&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Você pode usar o WM que já vem integrado ao DE, ou optar por um WM independente para ter mais controle e personalização.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ex.:&lt;/strong&gt; i3, bspwm, Sway, Hyprland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="protocolos-gráficos" &gt;
&lt;div&gt;
&lt;a href="#protocolos-gr%c3%a1ficos"&gt;
#
&lt;/a&gt;
Protocolos Gráficos
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;O protocolo gráfico funciona como intermediário entre as aplicações, o WM/DE e o hardware de vídeo. No Linux essa função é sustentada por dois protocolos principais, cada um com suas características e limitações:&lt;/p&gt;
&lt;h3 id="x11-xorg" &gt;
&lt;div&gt;
&lt;a href="#x11-xorg"&gt;
##
&lt;/a&gt;
X11 (Xorg)
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Por que escolher&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alta compatibilidade com aplicativos, ambientes gráficos e drivers existentes.&lt;/li&gt;
&lt;li&gt;Ecossistema maduro, com suporte a extensões, depuração, automação e forwarding remoto.&lt;/li&gt;
&lt;li&gt;Recomendado para cenários legados ou quando ferramentas específicas ainda exigem X11.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Onde pode doer&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arquitetura antiga, com camadas que elevam a latência e dificultam otimizações.&lt;/li&gt;
&lt;li&gt;Suporte limitado a HiDPI, múltiplas GPUs e monitores de alta taxa de atualização.&lt;/li&gt;
&lt;li&gt;Segurança frágil: qualquer aplicativo pode interceptar entradas globais (teclado/mouse).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="wayland" &gt;
&lt;div&gt;
&lt;a href="#wayland"&gt;
##
&lt;/a&gt;
Wayland
&lt;/div&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Por que escolher&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Arquitetura moderna com renderização direta, que reduz a latência e melhora o uso de recursos.&lt;/li&gt;
&lt;li&gt;Modelo de segurança isolado: aplicações não têm acesso às entradas ou janelas umas das outras.&lt;/li&gt;
&lt;li&gt;Suporte nativo aprimorado para HiDPI, escala fracionada e rotação de tela.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Onde pode doer&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aplicações legadas ainda exigem X11, embora o XWayland forneça compatibilidade parcial.&lt;/li&gt;
&lt;li&gt;Ferramentas gráficas avançadas e alguns drivers ainda enfrentam limitações ou instabilidades.&lt;/li&gt;
&lt;li&gt;Captura de tela e gravação podem ter limitações dependendo do compositor.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dica rápida:&lt;/strong&gt; Algumas distros permitem alternar entre Wayland e Xorg na tela de login. Se algo essencial não funcionar em Wayland, basta voltar ao X11.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Com esses conceitos, você poderá ajustar compositor, protocolo e window manager, dando maior controle sobre latência, renderização e uso da GPU para o seu dia a dia.&lt;/p&gt;</description></item><item><title>Assinando Módulos de Kernel em Ambientes UEFI</title><link>/pt/posts/2025/linux/secure-boot-kernel/</link><pubDate>Thu, 27 Mar 2025 12:10:31 -0300</pubDate><author>alwaysdotmind@gmail.com (Dotmind it. Building where things usually break)</author><guid>/pt/posts/2025/linux/secure-boot-kernel/</guid><description>&lt;!-- Integração de módulos customizados com Secure Boot --&gt;
&lt;hr&gt;
&lt;p&gt;Com o aumento das aplicações de IA que exigem GPUs de alto desempenho, é comum a necessidade de utilizar módulos personalizados, incluindo &lt;a href="https://github.com/NVIDIA/open-gpu-kernel-modules" target="_blank"&gt;drivers open-source, como os da NVIDIA&lt;/a&gt;. Esses módulos precisam ser assinados manualmente para funcionar corretamente em distribuições Linux que utilizam Secure Boot.&lt;/p&gt;
&lt;p&gt;Este guia mostra como criar e cadastrar sua própria chave (MOK) no firmware UEFI, permitindo assinar com segurança esses módulos personalizados sem precisar desativar o Secure Boot.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/br&gt;&lt;/p&gt;
&lt;h2 id="1-conceitos-de-secure-boot-e-mok" &gt;
&lt;div&gt;
&lt;a href="#1-conceitos-de-secure-boot-e-mok"&gt;
#
&lt;/a&gt;
1. Conceitos de Secure Boot e MOK
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;» &lt;strong&gt;Secure Boot&lt;/strong&gt; é um recurso do firmware que carrega apenas binários assinados com chaves confiáveis. Em várias distribuições Linux, usa-se o binário &amp;ldquo;shim&amp;rdquo;, já assinado pela Microsoft, garantindo compatibilidade.&lt;/p&gt;
&lt;p&gt;» Verifique o status do Secure Boot:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mokutil --sb-state
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MOK (Machine Owner Key)&lt;/strong&gt;, chave para assinar kernels/módulos (ex.: drivers NVIDIA, DKMS) no firmware, com Secure Boot ativo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-gerando-e-cadastrando-a-mok" &gt;
&lt;div&gt;
&lt;a href="#2-gerando-e-cadastrando-a-mok"&gt;
#
&lt;/a&gt;
2. Gerando e cadastrando a MOK
&lt;/div&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Em distribuições baseadas em Debian/Ubuntu, gere uma nova chave MOK com:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /var/lib/shim-signed/mok/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo openssl req -nodes -new -x509 -newkey rsa:2048 &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -keyout /var/lib/shim-signed/mok/MOK.priv &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -outform DER -out /var/lib/shim-signed/mok/MOK.der &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -days &lt;span style="color:#ef9f76"&gt;36500&lt;/span&gt; -subj &lt;span style="color:#a6d189"&gt;&amp;#34;/CN=My Secure Boot Key/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Isso criará os arquivos &lt;code&gt;MOK.der&lt;/code&gt; e &lt;code&gt;MOK.priv&lt;/code&gt; em &lt;code&gt;/var/lib/shim-signed/mok/&lt;/code&gt;, verifique com:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ls -l /var/lib/shim-signed/mok/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Importe a chave pública (MOK.der) no firmware UEFI com o comando:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mokutil --import /var/lib/shim-signed/mok/MOK.der
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Defina uma senha que será solicitada no próximo boot, e reinicie o sistema em seguida.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Durante o boot seguinte, o sistema entrará automaticamente no MOK Manager (Shim).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-passo-a-passo-no-mok-manager" &gt;
&lt;div&gt;
&lt;a href="#3-passo-a-passo-no-mok-manager"&gt;
#
&lt;/a&gt;
3. Passo a passo no MOK Manager
&lt;/div&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Assim que a máquina reiniciar, o utilitário de gerenciamento de chaves UEFI &amp;ldquo;Shim&amp;rdquo; deve aparecer. Pressione qualquer tecla para começar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-2.png" alt="Tela inicial do MOK Manager exibindo interface de gerenciamento de chaves."&gt;&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Selecione &amp;ldquo;Enroll MOK&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-3.png" alt="A tela “Perform MOK management” é exibida."&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Selecione &amp;ldquo;Continue&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-6.png" alt="uefi1"&gt;&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Selecione &amp;ldquo;Yes&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-7.png" alt="uefi1"&gt;&lt;/p&gt;
&lt;ol start="6"&gt;
&lt;li&gt;Digite a senha que você definiu ao importar a chave.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-8.png" alt="uefi1"&gt;&lt;/p&gt;
&lt;ol start="7"&gt;
&lt;li&gt;A tela &amp;ldquo;Perform MOK management&amp;rdquo; reaparecerá. Selecione &amp;ldquo;Reboot&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-9.png" alt="uefi1"&gt;&lt;/p&gt;
&lt;p&gt;Ao voltar para o sistema operacional, sua chave já estará inclusa no firmware.&lt;/p&gt;
&lt;h2 id="4-assinando-novos-módulos-ex-nvidiadkms" &gt;
&lt;div&gt;
&lt;a href="#4-assinando-novos-m%c3%b3dulos-ex-nvidiadkms"&gt;
#
&lt;/a&gt;
4. Assinando novos Módulos (Ex.: NVIDIA/DKMS)
&lt;/div&gt;
&lt;/h2&gt;
&lt;p&gt;Se estiver usando DKMS, configure o arquivo &lt;code&gt;/etc/dkms/framework.conf&lt;/code&gt; para apontar para sua MOK. Assim, os módulos recompilados serão assinados automaticamente.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f2d5cf"&gt;mok_signing_key&lt;/span&gt;&lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;/var/lib/shim-signed/mok/MOK.priv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f2d5cf"&gt;mok_certificate&lt;/span&gt;&lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;/var/lib/shim-signed/mok/MOK.der&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Na maioria dos cenários comuns (módulos DKMS), você não precisará realizar, com frequência, a assinatura manual. Configure corretamente o framework do DKMS como mostrado acima.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Para assinar manualmente:&lt;/p&gt;
&lt;p&gt;Substitua &lt;code&gt;nvidia&lt;/code&gt; pelo &lt;code&gt;&amp;lt;module_name&amp;gt;&lt;/code&gt; para localizar o módulo desejado:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo modinfo -n nvidia
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Descompacte o módulo para um arquivo temporário:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo zstd -d /lib/modules/&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;/updates/dkms/nvidia.ko.zst -o /tmp/nvidia.ko
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Assine o módulo recém-descompactado:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo /usr/src/linux-headers-&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;/scripts/sign-file sha256 &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /var/lib/shim-signed/mok/MOK.priv &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /var/lib/shim-signed/mok/MOK.der &lt;span style="color:#8caaee"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /tmp/nvidia.ko
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sobrescreva novamente o módulo assinado:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo zstd -f --rm /tmp/nvidia.ko -o /lib/modules/&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;/updates/dkms/nvidia.ko.zst
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Reconstrua o cache de módulos:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo depmod -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Se necessário, atualize o initramfs para refletir nos módulos iniciais carregados durante o boot:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-initramfs -u -k &lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;(Opcional)&lt;/strong&gt; Script para ver todos os módulos e confirmar suas assinaturas:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;for&lt;/span&gt; mod in /lib/modules/&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;uname -r&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;/updates/dkms/*.ko.zst; &lt;span style="color:#ca9ee6"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f2d5cf"&gt;out&lt;/span&gt;&lt;span style="color:#99d1db;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;/tmp/&lt;/span&gt;&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;basename &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$mod&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt; .zst&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; zstd -d &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$mod&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt; -o &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$out&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#99d1db"&gt;echo&lt;/span&gt; &lt;span style="color:#a6d189"&gt;&amp;#34;&amp;gt;&amp;gt;&amp;gt; &lt;/span&gt;&lt;span style="color:#ca9ee6"&gt;$(&lt;/span&gt;basename &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$out&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#ca9ee6"&gt;)&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; modinfo &lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f2d5cf"&gt;$out&lt;/span&gt;&lt;span style="color:#a6d189"&gt;&amp;#34;&lt;/span&gt; | grep signer
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ca9ee6"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5-boas-práticas--cuidados" &gt;
&lt;div&gt;
&lt;a href="#5-boas-pr%c3%a1ticas--cuidados"&gt;
#
&lt;/a&gt;
5. Boas Práticas &amp;amp; Cuidados
&lt;/div&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Importante:&lt;/strong&gt; Proteja suas chaves privadas.&lt;/li&gt;
&lt;li&gt;Se você perder essa chave ou esquecer a senha, precisará gerar e importar novamente a MOK.&lt;/li&gt;
&lt;li&gt;Confira logs (dmesg, journalctl) para erros como “module signature verification failed”.&lt;/li&gt;
&lt;li&gt;Em algumas placas-mãe ou configuradores de VM (ex.: Hyper-V), é preciso configurar o Secure Boot para aceitar chaves da “Microsoft UEFI Certificate Authority” antes de gerar ou importar a MOK.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://dotmindblog.vercel.app/images/2025/secure-boot-bios-1.png" alt="Secure Boot BIOS Screenshot"&gt;&lt;/p&gt;
&lt;h2 id="referências" &gt;
&lt;div&gt;
&lt;a href="#refer%c3%aancias"&gt;
#
&lt;/a&gt;
Referências
&lt;/div&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.debian.org/SecureBoot#MOK_-_Machine_Owner_Key" target="_blank" rel="noopener noreferrer"&gt;Wiki Debian - SecureBoot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot" target="_blank" rel="noopener noreferrer"&gt;Arch Linux Wiki - Secure Boot&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.archlinux.org/title/Dynamic_Kernel_Module_Support" target="_blank" rel="noopener noreferrer"&gt;Dynamic Kernel Module Support&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>