Kernel services
Skill beriberikix/zephyr-agent-skills/skills/kernel-services
Advanced Zephyr RTOS kernel services. Covers inter-thread communication using Zbus (pub/sub), behavioral management with the State Machine Framework (SMF), background processing via work queues, and persistent configuration with the Settings subsystem. Trigger when building modular application architectures, complex state-driven logic, or requiring persistent data storage.From its SKILL.md
npx -y skills add beriberikix/zephyr-agent-skills --skill kernel-servicesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.4 KB, 702 tokens by cl100k_base, as published. Nobody here has run it
Zephyr Kernel Services
Move beyond basic threading and logging to build modular, event-driven, and robust Zephyr applications.
Core Workflows
1. Event-Driven Communication (Zbus)
Decouple your modules using a lightweight publish-and-subscribe bus.
- Reference: zbus.md
- Key Tools:
ZBUS_CHAN_DEFINE,ZBUS_SUBSCRIBER_DEFINE,zbus_chan_pub.
2. Behavioral Logic (SMF)
Manage complex system states and transitions using the State Machine Framework.
- Reference: smf.md
- Key Tools:
smf_set_state,SMF_CREATE_STATE, Hierarchical states.
3. Background Processing (Work Queues)
Defer long-running or non-critical tasks to prevent blocking interrupts or high-priority threads.
- Reference: settings_workqueue.md
- Key Tools:
k_work_submit,k_work_delayable, Custom work queues.
4. Persistence (Settings)
Save and restore configuration data and state across reboots.
- Reference: settings_workqueue.md
- Key Tools:
settings_load,settings_save_one, NVS backends.
Quick Start (Zbus)
// Define a channel for sensor data
ZBUS_CHAN_DEFINE(sensor_data_chan, struct sensor_msg, NULL, NULL, ZBUS_OBSERVERS_EMPTY, ZBUS_CHAN_DEFAULTS);
// Publish from a thread
zbus_chan_pub(&sensor_data_chan, &msg, K_NO_WAIT);
Professional Patterns (Asset Tracker Style)
- Modularity: Use Zbus as the backbone for inter-module communication.
- Predictability: Use SMF to define clear lifecycle states for each module (e.g., Uninitialized -> Ready -> Active -> Error).
- Responsiveness: Use custom work queues for sensor data ingestion to keep the main thread responsive for cloud communication.
- Sensor Integration: For sensor data ingestion patterns, see the hardware-io skill.
Automation Tools
- zbus_channel_lint.py: Detect duplicate
ZBUS_CHAN_DEFINEnames across source files.
Examples & Templates
- smf_state_table_template.c: Starter SMF state table and lifecycle wiring.
Validation Checklist
- Zbus publishers and subscribers exchange messages without deadlock or missed updates.
- SMF transitions follow expected state graph under normal and error conditions.
- Deferred work executes on intended queue context with bounded execution time.
- Settings values persist across reboot and reload successfully at startup.
Resources
- References:
zbus.md: Publish/Subscribe patterns and subscriber types.smf.md: Finite and Hierarchical state machine implementation.settings_workqueue.md: Background work and persistent storage.
- Scripts:
zbus_channel_lint.py: Zbus channel name collision checker.
- Assets:
smf_state_table_template.c: State-machine template.
What ships with it: 6 files
10.9 KB alongside SKILL.md, 1 of them executable
assets/
references/
- settings_workqueue.md2.0 KB
- smf.md2.2 KB
- zbus.md2.6 KB
scripts/
- zbus_channel_lint.pyruns2.1 KB
- skill-meta.yaml522 B