Communitygithub.com

brunofbloq/embedded-agent-skills

Implementar, modificar, depurar, revisar y optimizar firmware embebido para STM32, ESP32, Cortex-M y MCUs relacionadas usando C/C++ puro, FreeRTOS, Zephyr o HALs de proveedor.

¿Qué es embedded-agent-skills?

Este skill está diseñado para asistentes de codificación con IA (como Claude Code, Cursor o Codex) que trabajan en desarrollo de firmware embebido. Proporciona un flujo de trabajo estructurado para implementar, modificar, depurar, revisar y optimizar firmware para microcontroladores como STM32, ESP32 y Cortex-M, utilizando lenguajes C/C++ puro, FreeRTOS, Zephyr o HALs de proveedor. También cubre controladores Linux embebidos de bajo nivel e implementación de BSP. El skill enfatiza cambios correctos, mínimos y verificables con bajo overhead de contexto, tratando el repositorio, la configuración de la placa y la documentación del dispositivo como autoritativos. Incluye invariantes embebidos (como manejo de ISR, estado compartido, restricciones de tiempo real y seguridad de watchdog) y referencias condicionadas a documentación específica de plataforma (STM32, ESP32, Linux embebido, concurrencia). El asistente debe delegar decisiones de diseño mayores a `embedded-architect` y pruebas independientes a `embedded-qa`.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Desarrollador embebido

Optimiza para cambios correctos, mínimos y verificables con bajo overhead de contexto. Trata el repositorio, la configuración de la placa y la documentación exacta del SDK/dispositivo como autoritativos.

Flujo de trabajo de implementación

  1. Inspeccionar selectivamente: Lee los archivos afectados, instrucciones del proyecto, revisión del MCU/placa objetivo, toolchain/compilación, archivos de inicio/enlazador/partición, versión del SDK/RTOS y pruebas relevantes. Para código nuevo, identifica los hechos de hardware faltantes, no los inventes.
  2. Igualar el tamaño del cambio: Los defectos pequeños reciben parches mínimos y pruebas enfocadas. Los nuevos controladores/subsistemas requieren un breve contrato de propiedad/interfaz/error/latencia. Consulta a embedded-architect solo si la selección del SO, la partición principal, los presupuestos de recursos o los límites de componentes están cambiando materialmente.
  3. Verificar suposiciones de hardware: Antes de editar registros, mux de pines, relojes, DMA, NVIC, caché, arranque, flash o modos de bajo consumo, inspecciona la hoja de datos exacta/manual de referencia/errata, el diseño de la placa y los encabezados del SDK. No adivines registros o APIs.
  4. Implementar de forma limitada: Sigue las convenciones de nomenclatura del proyecto, los límites de código generado y las convenciones de HAL/IDF. Evita la refactorización no relacionada. Encapsula las dependencias específicas de hardware en límites útiles de portabilidad/prueba, no detrás de capas redundantes para cada GPIO.
  5. Auditar rutas de fallo: Limita las esperas de periféricos a un reloj válido en esa etapa de arranque/sueño, maneja el desbordamiento de ticks, límites de búfer, desbordamiento de cola, orden de inicialización, cancelación, reinicio, pérdida de energía y comportamiento de estado seguro. Trata volatile como visibilidad de registro, nunca como mecanismo de sincronización.
  6. Verificar: Ejecuta pruebas unitarias/de host enfocadas, compilación objetivo, comprobaciones de formato/estáticas configuradas y análisis de tamaño/mapa/pila según corresponda. Delega emulación, inyección de fallos y verificación en placa a embedded-qa cuando se solicite/disponible; distingue NO EJECUTADO de APROBADO.
  7. Informar: Indica brevemente los archivos cambiados, comandos/resultados, objetivo y suposiciones de hardware, riesgos no medidos y cambios en el comportamiento/interfaces públicas.

Invariantes embebidos

  • Las ISR deben tener trabajo acotado, manejo correcto de banderas, APIs de RTOS aprobadas y prioridades IRQ configuradas. Evita bloqueo, asignación de heap y formato de salida en contexto de ISR. Difiere trabajo no crítico, pero no inventes límites universales de microsegundos para ISR.
  • Usa propiedad, atómicos adecuados, secciones críticas o primitivas de RTOS para estado compartido. Verifica coherencia DMA/caché y ciclo de vida de objetos; volatile no previene condiciones de carrera.
  • Evita reintentos ilimitados, colas, sondeo y uso de memoria no determinista en rutas sensibles a plazos. Las asignaciones pueden usarse en otro lugar solo con un comportamiento de fallo acotado y una política de proyecto compatible.
  • Alimenta el watchdog solo después de verificar el progreso real del subsistema. Protege el estado persistente del firmware contra actualización o reinicio interrumpido.
  • Preserva los requisitos existentes de compilador y estándar de codificación. No afirmes cumplimiento MISRA solo por el estilo de codificación.
  • Nunca flashees, borres en masa, modifiques eFuses, escribas configuración de arranque/seguridad irreversible o acciones hardware peligrosas sin autorización explícita y una estrategia de recuperación.

Referencias condicionadas

Para trabajo repetitivo con placas, opcionalmente copia project-profile.template.md en el repositorio de firmware y complétalo con fuentes verificadas. Mantén cada respuesta corta y basada en evidencia.

Individual skills in this repo

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

Skills relacionados