The baseDocumentation Index
Fetch the complete documentation index at: https://docs.edgeimpulse.com/llms.txt
Use this file to discover all available pages before exploring further.
edge-impulse skill covers the Studio and Ingestion APIs: uploading data, triggering training, exporting deployments. It does not know anything about your target hardware, project structure, or how to wire the exported library into your application, unless you give it the context in a separate prompt. A companion skill helps fill that gap.
Why a companion skill
When you askExport a C++ library from my Edge Impulse project, the agent downloads the archive. When you then ask it to write the code that calls run_classifier() on your STM32 using FreeRTOS, it can draw on general knowledge of the Edge Impulse SDK β but it has to make assumptions about your build system, directory layout, sensor drivers, and memory constraints, and those assumptions may not match your project.
A companion skill gives the agent a persistent reference for the things it canβt infer: where you extracted the library, how your CMakeLists is structured, which sensor driver youβre using, any board-specific constraints or instructions, etc. You invoke it alongside or after the base skill, and the two together cover the full workflow from Studio to running inference on your specific target.
SKILL.md), but a companion skill is just an Agent Skill β plain markdown with name and description frontmatter that any compatible agent can load. The file content is the same regardless of agent; only the install path differs. See Create an Edge Impulse skill for the install paths for Claude Code, OpenAI Codex, GitHub Copilot, and Antigravity (previously Gemini CLI).Add a companion skill for your target
Create a second skill file describing your target platform, or even custom deployment blocks, and how to integrate the Edge Impulse library into it:Example: Custom Deployment Blocks
For example, for Claude Code create~/.claude/skills/ei-custom-deployment-blocks/SKILL.md:
Example: Arduino
For example, for Claude Code create~/.claude/skills/ei-arduino/SKILL.md:
Export my Edge Impulse project as an Arduino library to ./build, then write a sketch for the Arduino Nano 33 BLE Sense that reads the IMU and runs inference, printing the top label to Serial
Example: Arduino UNO Q with App Lab
The Arduino UNO Q runs Edge Impulse models as.eim files through Arduino App Lab. Unlike the classic Arduino or Linux C++ workflows, you donβt write inference code directly β you configure an app.yaml that assembles pre-built bricks (modular components) and points each one at your model file. A companion skill gives the agent the brick names, model variable names, and app.yaml structure so it can write correct configuration files without guessing.
For example, for Claude Code create ~/.claude/skills/ei-app-lab/SKILL.md:
Export the deployment for Arduino UNO Q (GPU) from my Edge Impulse project and save the .eim file to ./build then write an app.yaml for Arduino App Lab object detection using the model at ./build
Example: Linux C++
The Linux SDK runs on ARM64 and x86-64 Linux boards β Raspberry Pi, NVIDIA Jetson, and similar SBCs. This skill covers the C++ library path. For the Python runner see the Python Linux SDK. For example, for Claude Code create~/.claude/skills/ei-linux/SKILL.md:
Generate a companion skill with an AI agent
You donβt have to write companion skill files by hand. Ask your AI agent to create one based on your target hardware β it has general knowledge of SDK patterns, build systems, and integration details for many common platforms, though coverage varies.Create one of the examples from this page
Create the file ~/.claude/skills/ei-linux/SKILL.md with the ei-linux companion skill exactly as described at https://docs.edgeimpulse.com/tutorials/topics/ai-agents/create-a-companion-skill
Create the file ~/.claude/skills/ei-app-lab/SKILL.md with the ei-app-lab companion skill for the Arduino UNO Q with App Lab, as described at https://docs.edgeimpulse.com/tutorials/topics/ai-agents/create-a-companion-skill
Generate a skill for your specific hardware
Describe your target and let Claude write a custom skill tailored to it:Create a Claude Code skill file at ~/.claude/skills/ei-stm32/SKILL.md that helps write Edge Impulse inference code for the STM32H7 using STM32CubeIDE and FreeRTOS. The sensor is an IIS2DH accelerometer on SPI. Include the correct include paths for the Edge Impulse C++ library, the ISR-safe buffer pattern for collecting samples, and the FreeRTOS task structure for running inference.
Create a Claude Code skill file at ~/.claude/skills/ei-rpi-python/SKILL.md for running Edge Impulse .eim models on a Raspberry Pi 5 using the Python SDK. Include how to install the SDK, the inference loop pattern using AudioImpulseRunner or ImpulseRunner, and how to read from a USB microphone with PyAudio.
Create a Claude Code skill file at ~/.claude/skills/ei-zephyr/SKILL.md for integrating an Edge Impulse Zephyr module into a nRF5340 project using the nRF Connect SDK. Cover the CMakeLists additions, Kconfig options, and the sample main.c inference loop pattern.
Add project context with CLAUDE.md
For a project you return to repeatedly, put aCLAUDE.md in your repository root. Claude Code loads it automatically with every session β no skill invocation needed.
A good CLAUDE.md for an Edge Impulse project includes instructions like:
Retrain and re-export the C++ library for my Edge Impulse project and the agent will know where to put the output, without needing to re-prompt the project structure.
Extend the skill for a specific project
If you work on one project exclusively, edit the skill file itself to add project-specific context at the bottom. Anything you repeat across sessions β board type, sensor wiring, label names, file paths β belongs in the skill. For example, append to~/.claude/skills/edge-impulse/SKILL.md for a gesture classifier running on the Arduino Nano 33 BLE Sense:
/edge-impulse or use an Edge Impulse specific prompt, without you having to repeat the information every time.
What to include in a companion skill
| What to document | Why it helps |
|---|---|
| Board or SoC name and architecture | Correct compiler flags, memory model |
| Sensor type and wiring | Correct driver library and data format |
| Buffer sizing strategy | Avoids hardcoded numbers that break when the model changes |
| Build system and directory layout | The agent can build and run without asking |
| Label names and their meaning | Better variable names and output formatting |
| Any existing integration code | The agent extends rather than rewrites |
| Constraints (RAM, flash, RTOS) | The agent avoids patterns that wonβt fit |
Next steps
- Browse the prompt library for ready-to-use prompts covering data management, training, evaluation, deployment, and application code
- Browse deployment targets for the full list of supported export formats
- See the Linux SDK and Python SDK for running
.eimmodels on Linux boards - Browse the hardware directory for setup guides for supported boards
- See EON Tuner if the model is too large for your target after export