C64 Meatloaf Debug
idolpx/meatloaf
Debug Commodore 64 BASIC programs, cc65-compiled C PRGs, and Meatloaf ESP32 firmware in tandem, using the Ultimate 64's REST API and Meatloaf's UART serial debug output.
Best practices for embedded C/C++ development on STM32 microcontrollers using the HAL, covering peripherals, DMA, interrupts, memory constraints, and hardware-focused testing.
$ npx skills add Mindrally/skills --skill embedded-stm32 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Mindrally/skills embedded-stm32 --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/embedded-stm32 .claude/skills/embedded-stm32 && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .claude/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Mindrally/skills/tree/main/embedded-stm32Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Mindrally/skills --skill embedded-stm32 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Mindrally/skills embedded-stm32 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/embedded-stm32 .agents/skills/embedded-stm32 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .agents/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mindrally/skills --skill embedded-stm32 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Mindrally/skills embedded-stm32 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/embedded-stm32 .cursor/skills/embedded-stm32 && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .cursor/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Mindrally/skills.git --path embedded-stm32--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Mindrally/skills --skill embedded-stm32 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Mindrally/skills embedded-stm32 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/embedded-stm32 .gemini/skills/embedded-stm32 && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .gemini/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Mindrally/skills embedded-stm32Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Mindrally/skills --skill embedded-stm32 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/embedded-stm32 .github/skills/embedded-stm32 && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .github/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mindrally/skills --skill embedded-stm32 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Mindrally/skills embedded-stm32 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/embedded-stm32 .opencode/skills/embedded-stm32 && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "embedded-stm32" agent skill from https://github.com/Mindrally/skills/tree/main/embedded-stm32 into .opencode/skills/embedded-stm32/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "embedded-stm32", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
embedded-stm32Best practices for embedded C/C++ development on STM32 microcontrollers using the HAL, covering peripherals, DMA, interrupts, memory constraints, and hardware-focused testing.
Embedded Stm32 is an agent skill from Mindrally/skills. Best practices for embedded C/C++ development on STM32 microcontrollers using the HAL, covering peripherals, DMA, interrupts, memory constraints, and hardware-focused testing. Use when writing STM32 HAL code, configuring peripherals generated by STM32CubeMX, working with interrupts or DMA, debugging with SWD/JTAG, managing memory-constrained firmware, or writing hardware-in-the-loop or host-build tests for embedded C.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Embedded systems and Debugging. It works with C++. The repository describes itself as: 255+ Claude Code skills converted from Cursor rules. Expert coding guidelines for every major framework and language. The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9718410. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are c).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Embedded Stm32 loads about 2.3k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 976 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Mindrally/skills at commit 9718410, republished under its Apache-2.0 licence (© Mindrally). 976 words, ~2,296 tokens.
.claude/skills/embedded-stm32/SKILL.md (or your agent's skills folder).This skill covers firmware development for STM32 microcontrollers using the STM32 HAL, including project structure, peripheral and interrupt handling, memory and timing constraints, and testing strategies for hardware-focused code.
.ioc file; generate the HAL initialization code.USER CODE BEGIN/END blocks; put application logic in separate files.HAL_*_Init() calls in main()/MX_*_Init() and avoid ad hoc reconfiguration elsewhere in the code.HAL_*_Callback functions, EXTI/DMA/timer IRQ handlers) short; set flags or push to a queue and defer real work to the main loop or an RTOS task.Core/Src/main.c, Drivers/) from hand-written application code so regenerating with CubeMX doesn't clobber custom logic — only edit inside /* USER CODE BEGIN */ ... /* USER CODE END */ markers in generated files.motor_driver.h with motor_set_speed()) so application logic can be unit-tested on a host build without real peripherals.SYSCLK, HCLK, PCLK1/PCLK2 and their max rates), pin mappings, peripheral ownership, and interrupt priority assignments in a single reference (README or header comments) — this is the first thing a debugging session needs.HAL_*_Init()/HAL_*_MspInit() calls or ad hoc register writes across multiple files.HAL_OK, HAL_ERROR, HAL_BUSY, HAL_TIMEOUT) and handle timeout/error cases explicitly — a silently ignored HAL_TIMEOUT from HAL_UART_Transmit is a classic source of "it works on my desk" bugs.HAL_UART_Transmit, HAL_I2C_Master_Receive without _IT/_DMA suffix) out of time-critical paths like control loops or ISRs.volatile only for memory shared with an ISR or memory-mapped hardware registers; volatile is not a substitute for a proper memory barrier or critical section when data is shared between contexts./* USER CODE BEGIN Includes */
#include "main.h"
#include <string.h>
#define RX_BUF_SIZE 128
static uint8_t rx_buf[RX_BUF_SIZE];
static volatile uint8_t rx_ready = 0;
static volatile uint16_t rx_len = 0;
extern UART_HandleTypeDef huart2;
extern DMA_HandleTypeDef hdma_usart2_rx;
/* USER CODE END Includes */
/* USER CODE BEGIN 2 */
void app_uart_start_receive(void)
{
/* Enable idle-line interrupt so a packet of unknown length completes
* the transfer without waiting for the buffer to fill. */
__HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
if (HAL_UART_Receive_DMA(&huart2, rx_buf, RX_BUF_SIZE) != HAL_OK) {
Error_Handler();
}
}
/* USER CODE END 2 */
/* USER CODE BEGIN 4 */
void USART2_IRQHandler(void)
{
if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE)) {
__HAL_UART_CLEAR_IDLEFLAG(&huart2);
HAL_UART_DMAStop(&huart2);
rx_len = RX_BUF_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart2_rx);
rx_ready = 1; /* Deferred: main loop processes the packet. */
/* Re-arm for the next packet. */
HAL_UART_Receive_DMA(&huart2, rx_buf, RX_BUF_SIZE);
return;
}
HAL_UART_IRQHandler(&huart2);
}
/* USER CODE END 4 */
/* Main loop excerpt: heavy work deferred out of the ISR. */
void app_main_loop(void)
{
if (rx_ready) {
rx_ready = 0;
uint16_t len = rx_len;
/* Copy out or parse rx_buf[0..len) here. Do NOT touch rx_buf
* again until this point, since DMA may already be refilling it. */
(void)len;
}
}__disable_irq()/__enable_irq(), or taskENTER_CRITICAL() under an RTOS), atomics, or lock-free queues — never assume a multi-byte read/write is atomic.malloc/new) inside interrupt handlers; allocation is neither deterministic nor guaranteed reentrant-safe.NVIC_SetPriority) — a mis-prioritized interrupt can starve time-critical peripherals or violate FreeRTOS's configMAX_SYSCALL_INTERRUPT_PRIORITY constraint.uxTaskGetStackHighWaterMark() under FreeRTOS) — stack overflow on embedded targets typically corrupts silently.const so the linker places them in flash instead of consuming scarce RAM.uint8_t, int32_t, uint32_t) for anything hardware-facing (register values, protocol fields, buffer sizes) instead of int/long, whose width isn't guaranteed.assert() or a custom configASSERT-style macro) for impossible hardware states in debug builds, compiled out in release builds if code size is tight.HardFault_Handler, etc.) useful: capture the reset reason (RCC->CSR), relevant fault status registers (SCB->CFSR, SCB->HFSR), and firmware build version/hash so a field crash is diagnosable after the fact.USER CODE blocks, so the next regeneration silently deletes the changes.© Mindrally, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in embedded-stm32 of Mindrally/skills.
Open the folder on GitHubat commit 9718410
Embedded Stm32 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Embedded Stm32 this skillMindrally/skills | 268 | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| C64 Meatloaf Debugidolpx/meatloaf | 128 | — | ~12k | Automated safety check: Pass | GPL-3.0 | |
| ARM and AArch64 Assemblymohitmishra786/low-level-dev-skills | 253 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Esp32 Firmware Engineeralxv2016/folloup-sticky | 116 | 1 repos | ~3.8k | Automated safety check: Pass | GPL-3.0 | |
| ExecuTorch Binary Size Reductionpytorch/executorch | 5.1k | — | ~793 | Automated safety check: Pass | Custom licence | |
| Extempore JIT Debugging Guidedigego/extempore | 1.5k | — | ~4.4k | Automated safety check: Pass | None |
idolpx/meatloaf
Debug Commodore 64 BASIC programs, cc65-compiled C PRGs, and Meatloaf ESP32 firmware in tandem, using the Ultimate 64's REST API and Meatloaf's UART serial debug output.
mohitmishra786/low-level-dev-skills
Guides reading and writing AArch64 and ARM Thumb assembly: compiler output, inline asm, registers, the AAPCS calling convention and NEON or SVE basics.
alxv2016/folloup-sticky
ESP32 firmware engineering for ESP-IDF projects. An agent skill from alxv2016/folloup-sticky.
pytorch/executorch
Measures and shrinks the ExecuTorch runtime binary by building a size test, analyzing it with bloaty and landing each reduction as its own pull request.
digego/extempore
Debugging guide for Extempore covering its three layers, compilation paths, startup sequence and the batch, eval and interactive modes used to isolate JIT problems.
The-OpenROAD-Project/OpenROAD
Fixes an OpenROAD bug from a GitHub issue or error code: finds the root cause, implements the fix, adds a regression test and prepares a signed-off commit.
Mindrally/skills
Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib, seaborn, and Jupyter notebooks.
Mindrally/skills
Best practices for AutoML and hyperparameter search with Optuna, Ray Tune, and PyCaret, covering search-space design, validation splits, and leakage prevention.
Mindrally/skills
Best practices for writing Blender Python add-ons using the bpy API, covering operators, panels, properties, registration, and API-safe scripting.
Mindrally/skills
Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices.
Mindrally/skills
Clean, maintainable, human-readable code principles combined with anti-over-engineering discipline: naming, single responsibility, DRY, and scoping changes to exactly what was requested.
Mindrally/skills
Comprehensive design system guidelines for building consistent, accessible, and scalable component libraries.
Works with
Categories
Best practices for embedded C/C++ development on STM32 microcontrollers using the HAL, covering peripherals, DMA, interrupts, memory constraints, and hardware-focused testing. Embedded Stm32 is an agent skill from Mindrally/skills. Best practices for embedded C/C++ development on STM32 microcontrollers using the HAL, covering peripherals, DMA, interrupts, memory constraints, and hardware-focused testing.
Embedded Stm32 fits situations like: writing STM32 HAL code; configuring peripherals generated by STM32CubeMX; working with interrupts; debugging with SWD/JTAG.
Run `npx skills add Mindrally/skills --skill embedded-stm32 -a claude-code`. Or copy the skill folder (embedded-stm32 in Mindrally/skills) into .claude/skills/embedded-stm32 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Mindrally/skills --skill embedded-stm32 -a codex`. Or copy the skill folder (embedded-stm32 in Mindrally/skills) into .agents/skills/embedded-stm32 in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mindrally/skills --skill embedded-stm32 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/embedded-stm32, .gemini/skills/embedded-stm32, .github/skills/embedded-stm32 and .opencode/skills/embedded-stm32 in your project.
SKILL.md names no scripts, command-line tools or credentials: Embedded Stm32 is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Embedded Stm32 is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Embedded Stm32: C64 Meatloaf Debug (idolpx/meatloaf, 128 stars), ARM and AArch64 Assembly (mohitmishra786/low-level-dev-skills, 253 stars), Esp32 Firmware Engineer (alxv2016/folloup-sticky, 116 stars) and ExecuTorch Binary Size Reduction (pytorch/executorch, 5.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Mindrally (a GitHub organization) maintains it in Mindrally/skills, which has 268 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on September 3, 2026.
Source: Mindrally/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.