"Operate Porcupine from C and embedded/MCU targets: native linking,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill c-and-embedded --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of C And Embedded?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-c-and-embedded)More formats (shields.io, HTML) on the badges page.
---
name: c-and-embedded
description: "Operate Porcupine from C and embedded/MCU targets: native linking,
frame processing, C demos, and static asset embedding."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# c-and-embedded
Use this sub-skill when a task involves Porcupine's C headers, native library loading/linking, file or microphone demo recipes in C, hardware-device enumeration, or MCU/STM32 embedding.
Do not use this sub-skill for:
- Python or CLI package usage; route to `../python-and-cli/SKILL.md`.
- Node.js/server-side JavaScript; route to `../nodejs-server/SKILL.md`.
- Browser, React, mobile, Java, .NET, Flutter, or React Native SDKs; route to the matching sibling sub-skill.
- Custom wake-word training, language/model inventory, and cross-platform `.ppn`/`.pv` selection; route to `../custom-keywords-and-assets/SKILL.md`.
## Operating map
1. For exact C and MCU signatures, lifecycle, device strings, status handling, and asset path conventions, use [`references/c-api-reference.md`](references/c-api-reference.md).
2. For build-command shapes, direct-link vs dynamic-load choices, file/microphone frame loops, C demo adaptation, STM32 concepts, and C-array conversion, use [`references/c-and-mcu-workflows.md`](references/c-and-mcu-workflows.md).
3. For linker failures, header/library mismatch, AccessKey, invalid device strings, sample-rate/frame-length, endian/int16, MCU memory/toolchain, and invalid C symbols, use [`references/troubleshooting.md`](references/troubleshooting.md).
4. To convert a `.ppn`, `.pv`, or other binary asset into a validated C array header, use [`scripts/porcupine_binary_to_c_array.py`](scripts/porcupine_binary_to_c_array.py).
## Quick checklist
- Select the platform library, common/language model `.pv`, and platform-matched keyword `.ppn` before initialization.
- Keep `access_key` secret; Porcupine initialization requires a valid Picovoice AccessKey.
- Query `pv_sample_rate()` and `pv_porcupine_frame_length()` from the same library that will process audio.
- Feed `pv_porcupine_process()` exactly one mono `int16_t` frame per call, with sample rate equal to `pv_sample_rate()`.
- Delete the engine with `pv_porcupine_delete()` on every success path and after recoverable failures that created an object.
- Treat C demos/tests as optional native candidates: they need a compiler, platform library, and AccessKey; microphone runs also need audio hardware.
- Treat MCU/STM32 board runs as skipped unless the exact board, STM32 toolchain, middleware, and AccessKey are available.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!