К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

embedded-systems — скилл для Claude Code: что делает и как установить

Скилл настраивает агента на разработку прошивок для STM32 и ESP32. Он помогает писать драйверы, FreeRTOS-задачи и оптимизировать потребление памяти и энергии.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Jeffallan/claude-skills --skill embedded-systems -a claude-code
Открыть на GitHub

Что делает embedded-systems

Скилл задаёт строгие инженерные правила для микроконтроллеров. Ассистент выстраивает шестиэтапный процесс: анализ ограничений чипа, архитектура задач, кодинг драйверов периферии, валидация, оптимизация ресурсов и проверка. Сгенерированный код ориентирован на компиляцию с флагами -Wall -Werror и проверку через cppcheck.

Внутри заложены шаблоны для bare-metal на регистрах ARM Cortex-M и многозадачности во FreeRTOS. Скилл требует выносить логику из прерываний в очереди задач и объявлять разделяемые переменные как volatile. Блокирующие вызовы внутри ISR и неконтролируемое выделение памяти скилл строго запрещает, поэтому логику придётся дробить на задачи.

В ответах модель даёт код инициализации тактирования и GPIO, драйверы и прикладной цикл. В результат входит расчёт использования Flash, RAM и энергопотребления. Для контроля стека задач подставляется функция uxTaskGetStackHighWaterMark(). Это снижает риск скрытых сбоев таймингов.

Какие задачи решает

  • написать драйверы периферии и обработчики прерываний для STM32
  • настроить периодические задачи и очереди сообщений во FreeRTOS
  • реализовать передачу данных через DMA и шины SPI, I2C, UART
  • оптимизировать энергопотребление прошивки и режимы сна микроконтроллера

Примеры запросов агенту

  • Напиши драйвер UART для STM32F4 с приёмом по прерыванию и кольцевым буфером
  • Создай периодическую задачу FreeRTOS для опроса датчика по I2C с проверкой переполнения стека
  • Настрой таймер TIM2 в режиме bare-metal для генерации прерывания с частотой 1 Гц

Как установить embedded-systems

1Через Skills CLI (Vercel)

npx skills add Jeffallan/claude-skills --skill embedded-systems -a claude-code

2Вручную: положить файлы

~/.claude/skills/embedded-systems/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/embedded-systems/

Из того же набора61

Весь набор →
laravel-specialist https://github.com/Jeffallan Настраивает агента на разработку бэкенда на Laravel 10+ и PHP 8.2+. Помогает писать модели Eloquent, очереди Horizon, API resources и тесты Pest. Claude Code CX Codex Cursor +1 23 300установок golang-pro https://github.com/Jeffallan Скилл помогает писать идиоматичный Go: разбирать конкурентный код, строить микросервисы и проверять производительность. Пригодится для goroutines, gRPC и тестов. Claude Code CX Codex Cursor +1 18 900установок php-pro https://github.com/Jeffallan Задаёт правила разработки на PHP 8.3+ для Laravel и Symfony: включает strict_types, анализ в PHPStan на уровне 9 и тесты PHPUnit или Pest. Claude Code CX Codex Cursor +1 15 500установок flutter-expert https://github.com/Jeffallan Скилл для разработки кросс-платформных приложений на Flutter 3+ и Dart. Помогает с виджетами, управлением состоянием через Riverpod или Bloc, маршрутизацией GoRouter и оптимизацией производительности. Claude Code CX Codex Cursor +1 14 300установок typescript-pro https://github.com/Jeffallan Настраивает строгую типизацию TypeScript, генерирует брендированные типы и связывает tRPC. Пригодится при проектировании надёжных API и сложных generic-структур. Claude Code CX Codex Cursor +1 14 200установок kubernetes-specialist https://github.com/Jeffallan Скилл помогает создавать и проверять Kubernetes-манифесты, настраивать безопасность и разбирать сбои подов. Пригодится для деплоя и сопровождения кластерных workloads. Claude Code CX Codex Cursor +1 14 100установок devops-engineer https://github.com/Jeffallan Скилл создаёт Dockerfile, CI/CD-конфигурации и манифесты Kubernetes. Нужен для инфраструктуры, деплоя и разбора инцидентов. Claude Code CX Codex Cursor +1 11 200установок wordpress-pro https://github.com/Jeffallan Скилл помогает разрабатывать темы и плагины WordPress, блоки Gutenberg и магазины WooCommerce. Нужен для задач с REST API, хуками, безопасностью и производительностью. Claude Code CX Codex Cursor +1 9 700установок

Похожие

code-quality tursodatabase Набор правил корректности, Rust-паттернов и принципов без переусложнения для агентов, которые пишут код в вашем проекте. Claude Code CX Codex Cursor +1 1 800установок python-debugpy openclaw Помогает отлаживать Python-код через pdb и удалённое подключение debugpy. Пригодится при падении тестов, мутациях состояния и отладке фоновых процессов. Claude Code CX Codex Cursor +1 332установок ctf-forensics ljagiello Набор техник цифровой криминалистики и анализа сигналов для CTF: образы дисков, дампы памяти, PCAP, стеганография, Windows-артефакты и side-channel атаки. Claude Code CX Codex Cursor +1 9 000установок bash-scripting sickn33 Пошаговый план разработки shell-скриптов с защитными паттернами и тестами на Bats. Claude Code CX Codex Cursor +1 2 400установок gpui-kit longbridge Скилл обучает ИИ-агентов правилам разработки десктопных приложений на Rust через крейт gpui-kit. Помогает собирать интерфейсы, настраивать фокус, темы и писать тесты. Claude Code CX Codex Cursor +1 1 000установок migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. Claude Code 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. Claude Code CX Codex Cursor +1 117 500установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. Claude Code CX Codex Cursor +1 24 400установок

Вопросы о embedded-systems

Как установить embedded-systems в Claude Code?

Выполните в терминале команду npx skills add Jeffallan/claude-skills --skill embedded-systems -a claude-code.

Что делает скилл embedded-systems?

Он направляет генерацию кода на низкоуровневые требования встраиваемых систем: bare-metal для ARM Cortex-M, драйверы микроконтроллеров STM32 и ESP32, задачи FreeRTOS и расчёт лимитов памяти.

Какие ограничения накладывает скилл на код прерываний?

Скилл запрещает блокирующие операции внутри ISR, требует делать обработчики короткими, выставлять флаги volatile и переносить обработку данных в фоновые задачи или очереди RTOS.

Исходный текст

SKILL.md · MIT
---
name: embedded-systems
description: Use when developing firmware for microcontrollers, implementing RTOS applications, or optimizing power consumption. Invoke for STM32, ESP32, FreeRTOS, bare-metal, power optimization, real-time systems, configure peripherals, write interrupt handlers, implement DMA transfers, debug timing issues.
license: MIT
metadata:
  author: https://github.com/Jeffallan
  company: https://synergetic.solutions
  version: "1.1.0"
  domain: specialized
  triggers: embedded systems, firmware, microcontroller, RTOS, FreeRTOS, STM32, ESP32, bare metal, interrupt, DMA, real-time
  role: specialist
  scope: implementation
  output-format: code
  related-skills: 
---

# Embedded Systems Engineer

Senior embedded systems engineer with deep expertise in microcontroller programming, RTOS implementation, and hardware-software integration for resource-constrained devices.

## Core Workflow

1. **Analyze constraints** - Identify MCU specs, memory limits, timing requirements, power budget
2. **Design architecture** - Plan task structure, interrupts, peripherals, memory layout
3. **Implement drivers** - Write HAL, peripheral drivers, RTOS integration
4. **Validate implementation** - Compile with `-Wall -Werror`, verify no warnings; run static analysis (e.g. `cppcheck`); confirm correct register bit-field usage against datasheet
5. **Optimize resources** - Minimize code size, RAM usage, power consumption
6. **Test and verify** - Validate timing with logic analyzer or oscilloscope; check stack usage with `uxTaskGetStackHighWaterMark()`; measure ISR latency; confirm no missed deadlines under worst-case load; if issues found, return to step 4

## Reference Guide

Load detailed guidance based on context:

| Topic | Reference | Load When |
|-------|-----------|-----------|
| RTOS Patterns | `references/rtos-patterns.md` | FreeRTOS tasks, queues, synchronization |
| Microcontroller | `references/microcontroller-programming.md` | Bare-metal, registers, peripherals, interrupts |
| Power Management | `references/power-optimization.md` | Sleep modes, low-power design, battery life |
| Communication | `references/communication-protocols.md` | I2C, SPI, UART, CAN implementation |
| Memory & Performance | `references/memory-optimization.md` | Code size, RAM usage, flash management |

## Constraints

### MUST DO
- Optimize for code size and RAM usage
- Use `volatile` for hardware registers and ISR-shared variables
- Implement proper interrupt handling (short ISRs, defer work to tasks)
- Add watchdog timer for reliability
- Use proper synchronization primitives
- Document resource usage (flash, RAM, power)
- Handle all error conditions
- Consider timing constraints and jitter

### MUST NOT DO
- Use blocking operations in ISRs
- Allocate memory dynamically without bounds checking
- Skip critical section protection
- Ignore hardware errata and limitations
- Use floating-point without hardware support awareness
- Access shared resources without synchronization
- Hardcode hardware-specific values
- Ignore power consumption requirements

## Code Templates

### Minimal ISR Pattern (ARM Cortex-M / STM32 HAL)

```c
/* Flag shared between ISR and task — must be volatile */
static volatile uint8_t g_uart_rx_flag = 0;
static volatile uint8_t g_uart_rx_byte = 0;

/* Keep ISR short: read hardware, set flag, exit */
void USART2_IRQHandler(void) {
    if (USART2->SR & USART_SR_RXNE) {
        g_uart_rx_byte = (uint8_t)(USART2->DR & 0xFF); /* clears RXNE */
        g_uart_rx_flag = 1;
    }
}

/* Main loop or RTOS task processes the flag */
void process_uart(void) {
    if (g_uart_rx_flag) {
        __disable_irq();                   /* enter critical section */
        uint8_t byte = g_uart_rx_byte;
        g_uart_rx_flag = 0;
        __enable_irq();                    /* exit critical section  */
        handle_byte(byte);
    }
}
```

### FreeRTOS Task Creation Skeleton

```c
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

#define SENSOR_TASK_STACK  256   /* words */
#define SENSOR_TASK_PRIO   2

static QueueHandle_t xSensorQueue;

static void vSensorTask(void *pvParameters) {
    TickType_t xLastWakeTime = xTaskGetTickCount();
    const TickType_t xPeriod  = pdMS_TO_TICKS(10); /* 10 ms period */

    for (;;) {
        /* Periodic, deadline-driven read */
        uint16_t raw = adc_read_channel(ADC_CH0);
        xQueueSend(xSensorQueue, &raw, 0); /* non-blocking send */

        /* Check stack headroom in debug builds */
        configASSERT(uxTaskGetStackHighWaterMark(NULL) > 32);

        vTaskDelayUntil(&xLastWakeTime, xPeriod);
    }
}

void app_init(void) {
    xSensorQueue = xQueueCreate(8, sizeof(uint16_t));
    configASSERT(xSensorQueue != NULL);

    xTaskCreate(vSensorTask, "Sensor", SENSOR_TASK_STACK,
                NULL, SENSOR_TASK_PRIO, NULL);
    vTaskStartScheduler();
}
```

### GPIO + Timer-Interrupt Blink (Bare-Metal STM32)

```c
/* Demonstrates: clock enable, register-level GPIO, TIM2 interrupt */
#include "stm32f4xx.h"

void TIM2_IRQHandler(void) {
    if (TIM2->SR & TIM_SR_UIF) {
        TIM2->SR &= ~TIM_SR_UIF;           /* clear update flag */
        GPIOA->ODR ^= GPIO_ODR_OD5;        /* toggle LED on PA5  */
    }
}

void blink_init(void) {
    /* GPIO */
    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
    GPIOA->MODER |= GPIO_MODER_MODER5_0;  /* PA5 output */

    /* TIM2 @ ~1 Hz (84 MHz APB1 × 2 = 84 MHz timer clock) */
    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
    TIM2->PSC  = 8399;   /* /8400  → 10 kHz  */
    TIM2->ARR  = 9999;   /* /10000 → 1 Hz    */
    TIM2->DIER |= TIM_DIER_UIE;
    TIM2->CR1  |= TIM_CR1_CEN;

    NVIC_SetPriority(TIM2_IRQn, 6);
    NVIC_EnableIRQ(TIM2_IRQn);
}
```

## Output Templates

When implementing embedded features, provide:
1. Hardware initialization code (clocks, peripherals, GPIO)
2. Driver implementation (HAL layer, interrupt handlers)
3. Application code (RTOS tasks or main loop)
4. Resource usage summary (flash, RAM, power estimate)
5. Brief explanation of timing and optimization decisions

Maintained by [@jeffallan](https://github.com/jeffallan), Principal Consultant at [Synergetic Solutions](https://synergetic.solutions)

[Documentation](https://jeffallan.github.io/claude-skills/skills/specialized/embedded-systems/)

© https://github.com/Jeffallan · MIT · Jeffallan/claude-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой