Agent skill

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.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/kernel-services

SKILL.md

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)

c
// 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_DEFINE names 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.

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results