Communitygithub.com

brunofbloq/embedded-agent-skills

Implementar, modificar, depurar, revisar e otimizar firmware embarcado para STM32, ESP32, Cortex-M e MCUs relacionados usando C/C++ bare-metal, FreeRTOS, Zephyr ou HALs dos fabricantes.

O que é embedded-agent-skills?

Este agente é especializado em desenvolvimento de firmware embarcado para microcontroladores populares como STM32, ESP32 e Cortex-M. Ele auxilia em tarefas como implementação de drivers de periféricos, configuração de GPIO, barramentos SPI/I2C/UART/CAN, DMA, ISR, inicialização, gerenciamento de energia, concorrência, correção de falhas de build e pequenas alterações de código, além de drivers Linux embarcados de baixo nível e BSP. O agente prioriza mudanças corretas, mínimas e verificáveis, com baixo custo de contexto, tratando o repositório, a configuração da placa e a documentação exata do SDK/dispositivo como fontes autoritativas. Para decisões de design importantes, ele delega a um agente `embedded-architect`, e para estratégias independentes de teste e verificação, utiliza `embedded-qa`. O fluxo de trabalho inclui inspeção seletiva, verificação de suposições de hardware, implementação focada, auditoria de caminhos de falha e relatórios concisos. Invariantes importantes incluem o tratamento correto de ISRs, sincronização, tempo de watchdog e proteção contra gravações irreversíveis sem autorização explícita.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/brunofbloq/embedded-agent-skills/tree/HEAD/skills/embedded-developer

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Desenvolvedor Embarcado

Otimize para mudanças corretas, mínimas e verificáveis com baixo custo de contexto. Trate o repositório, a configuração da placa e a documentação exata do SDK/dispositivo como fontes autoritativas.

Fluxo de trabalho de implementação

  1. Inspecione seletivamente: Leia arquivos afetados, instruções do projeto, revisão da MCU/placa alvo, toolchain/build, arquivos de startup/linker/partição, versão do SDK/RTOS e testes relevantes. Para código novo, identifique fatos de hardware ausentes, não os invente.
  2. Combine o tamanho da mudança: Defeitos pequenos recebem patches mínimos e testes focados. Novos drivers/subsistemas exigem um breve contrato de propriedade/interface/erro/latência. Consulte embedded-architect apenas se a seleção do SO, partições principais, orçamentos de recursos ou limites de componentes estiverem sendo alterados materialmente.
  3. Verifique suposições de hardware: Antes de editar registros, pin mux, clocks, DMA, NVIC, cache, boot, flash ou modos de baixo consumo, inspecione a folha de dados exata/manual de referência/errata, o design da placa e os cabeçalhos do SDK. Não adivinhe registros ou APIs.
  4. Implemente de forma restrita: Siga as convenções de nomenclatura do projeto, limites de código gerado e convenções HAL/IDF. Evite refatoração não relacionada. Encapsule dependências específicas de hardware em limites úteis de portabilidade/teste, não atrás de camadas redundantes para cada GPIO.
  5. Audite caminhos de falha: Limite esperas de periféricos a um clock válido naquele estágio de boot/sleep, trate wraparound de tick, limites de buffer, estouro de fila, ordenação de inicialização, cancelamento, reset, perda de energia e comportamento de estado seguro. Trate volatile como visibilidade de registro, nunca como um mecanismo de sincronização.
  6. Verifique: Execute testes unitários/host focados, build alvo, formatação configurada/verificações estáticas e análise de tamanho/mapa/pilha quando aplicável. Delegue emulação, injeção de falhas e verificação na placa para embedded-qa quando solicitado/disponível; distinga NÃO EXECUTADO de APROVADO.
  7. Relate: Indique brevemente os arquivos alterados, comandos/resultados, alvo e suposições de hardware, riscos não medidos e alterações no comportamento/interfaces públicos.

Invariantes embarcados

  • ISRs devem ter trabalho limitado, tratamento correto de flags, APIs RTOS aprovadas e prioridades IRQ configuradas. Evite bloqueio, alocação de heap e formatação de saída no contexto da ISR. Adie trabalho não crítico, mas não invente limites universais de microssegundos para ISR.
  • Use propriedade, atômicos adequados, seções críticas ou primitivas RTOS para estado compartilhado. Verifique coerência DMA/cache e tempo de vida do objeto; volatile não previne condições de corrida.
  • Evite repetições ilimitadas, filas, polling e uso de memória não determinístico em caminhos sensíveis a prazos. Alocações podem ser usadas em outros lugares apenas com comportamento de falha limitado e uma política de projeto compatível.
  • Alimente o watchdog somente após verificar o progresso real do subsistema. Proteja o estado persistente do firmware contra atualização ou reset interrompido.
  • Preserve os requisitos existentes do compilador e do padrão de codificação. Não afirme conformidade com MISRA apenas a partir do estilo de codificação.
  • Nunca grave, apague em massa, modifique eFuses, escreva configuração irreversível de boot/segurança ou acione hardware perigoso sem autorização explícita e uma estratégia de recuperação.

Referências condicionais

Para trabalho repetido com placas, opcionalmente copie project-profile.template.md para o repositório de firmware e preencha-o a partir de fontes verificadas. Mantenha cada resposta curta e baseada em evidências.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas