Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add JakubMikolajek/codex-skills-collection --skill stm32-halgit clone --depth 1 https://github.com/JakubMikolajek/codex-skills-collectionWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jakubmikolajek/codex-skills-collection/stm32-hal)<a href="https://agentmods.dev/skills/jakubmikolajek/codex-skills-collection/stm32-hal"><img src="https://agentmods.dev/badge/skills/jakubmikolajek/codex-skills-collection/stm32-hal/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jakubmikolajek/codex-skills-collection/stm32-hal"><img src="https://agentmods.dev/badge/skills/jakubmikolajek/codex-skills-collection/stm32-hal.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00093 | $0.03441 |
| Opus 5.5 | $0.00037 | $0.01376 |
| Sonnet 5.5 | $0.00019 | $0.00688 |
| Haiku 4.5 | $0.00009 | $0.00344 |
Grade A, and why
stm32-hal scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 362 lines — stays where its author put it; the contents beside it link to each section on GitHub.
STM32 with HAL
STM32 is the dominant microcontroller family in commercial embedded. This skill covers HAL-based development — the recommended starting point for most projects — with notes on where LL (Low-Layer) drivers are preferable for performance.
When to Use
- Writing firmware for any STM32 microcontroller (F0/F1/F4/F7/H7/G4/L4/WB)
- Reviewing STM32 HAL driver usage for correctness
- Adding peripherals to a CubeMX-generated project
- Debugging HAL timeout, DMA transfer, or interrupt issues
When NOT to Use
- ESP32 — use
esp32-idf - RP2040 — different SDK (Pico SDK), different patterns
- AVR — different toolchain, avr-libc
Project Setup
CubeMX Workflow
CubeMX generates the peripheral initialization code. Your application code goes in the USER CODE BEGIN/END sections — this survives code re-generation.
project/
├── Core/
│ ├── Inc/
│ │ ├── main.h # CubeMX generated
│ │ └── stm32f4xx_hal_conf.h
│ └── Src/
│ ├── main.c # Add app code in USER CODE sections
│ ├── stm32f4xx_it.c # ISR handlers — add your code here
│ └── stm32f4xx_hal_msp.c
├── Drivers/
│ ├── STM32F4xx_HAL_Driver/
│ └── CMSIS/
├── Middlewares/
│ └── Third_Party/FreeRTOS/ # if RTOS enabled in CubeMX
├── CMakeLists.txt # or .ioc + CubeIDE project
└── STM32F407VGTx_FLASH.ld # linker script (CubeMX generated)
CMake with arm-none-eabi
# CMakeLists.txt for STM32F4 project
cmake_minimum_required(VERSION 3.22)
project(my_firmware C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# MCU-specific flags — adjust for your part
set(CPU_FLAGS
-mcpu=cortex-m4
-mthumb
-mfpu=fpv4-sp-d16
-mfloat-abi=hard
)
add_compile_options(
${CPU_FLAGS}
-ffunction-sections
-fdata-sections
-fno-exceptions # C++ only
-fno-rtti # C++ only
-Wall
-Wextra
-Os
)
add_link_options(
${CPU_FLAGS}
-T${CMAKE_SOURCE_DIR}/STM32F407VGTx_FLASH.ld
-Wl,--gc-sections
-Wl,--print-memory-usage
-specs=nano.specs # newlib-nano: reduced printf/malloc
-specs=nosys.specs # no system calls (bare metal)
)
# Collect sources
file(GLOB_RECURSE SOURCES
Core/Src/*.c
Drivers/STM32F4xx_HAL_Driver/Src/*.c
)
# Exclude template files
list(FILTER SOURCES EXCLUDE REGEX ".*_template\\.c")
add_executable(${PROJECT_NAME}.elf ${SOURCES} startup_stm32f407vgtx.s)
target_include_directories(${PROJECT_NAME} PRIVATE
Core/Inc
Drivers/STM32F4xx_HAL_Driver/Inc
Drivers/CMSIS/Device/ST/STM32F4xx/Include
Drivers/CMSIS/Include
)
target_compile_definitions(${PROJECT_NAME} PRIVATE
USE_HAL_DRIVER
STM32F407xx
)
# Generate .bin and .hex
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O ihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O binary $<TARGET_FILE:${PROJECT_NAME}.elf> ${PROJECT_NAME}.bin
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${PROJECT_NAME}.elf>
)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 362 lines · 93 tokens per session scan A 23c024d3d176
stm32-hal is a skill published in the GitHub repository JakubMikolajek/codex-skills-collection (6 stars, last pushed 20d ago), licensed MIT. It adds 93 tokens to every session and 3,441 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
doca-argp
Use this skill for hands-on DOCA Arg Parser CLI work on a shipped sample or new DOCA-using app — adding / removing / renaming flags; wiring docaargpinit → register params → docaargpstart → docaargpdestroy in order; picking a parameter type from the full public enum (DOCAARGPTYPESTRING, INT, BOOLEAN, DEVICE, DEVICEREP…
holoscan-module-lifecycle
Develop external Holoscan Modules with the Holoscan CLI and use them in Holoscan applications: scaffold, test, Python bindings, DEB/WHEEL packaging, and clean-consumer proof.
embedded-stm32
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…
acad-arx-wizard
Agentic ObjectARX project scaffolding for AutoCAD 2027 / Visual Studio 2026. Replaces the broken .vsz VsWizardEngine wizard with a PowerShell script that generates identical C++ project files. Works for new ARX/DBX/CRX projects and add-on class wizards (Jig, Reactors, Custom Object, MFC, .NET Wrapper, COM Wrapper…
cortex-m-patterns
Cortex-M code patterns for SysTick, NVIC priority grouping, FPU enable, MPU regions, AAPCS inline assembly, DWT cycle counting, vector table relocation, and WFI sleep entry. Use when writing core-level Cortex-M code or checking it against a known-good pattern.
bare-metal-patterns
Register-level C patterns for Cortex-M without a HAL: bit manipulation macros, GPIO and polled UART setup, SysTick timebase, interrupt-driven UART ring buffer, linker sections and map files, and weak default ISR handlers. Use when writing or reviewing HAL-free drivers and startup code.