Plugin Development Overview
Skydimo's plugin system allows you to extend the application with custom hardware drivers, lighting effects, and background services — all written in Lua 5.4.
Plugin Types
| Type | Directory Pattern | Purpose |
|---|---|---|
| Controller | controller.<id>/ | Hardware device drivers (serial, HID, mDNS) |
| Effect | effect.<id>/ | Visual lighting patterns and animations |
| Extension | extension.<id>/ | Background services, protocol bridges, custom UI |
Where Plugins Live
Plugins are stored in the plugins/ directory:
plugins/
├── controller.skydimo_serial/
│ ├── manifest.json
│ ├── main.lua
│ ├── lib/
│ └── locales/
├── effect.rainbow/
│ ├── manifest.json
│ ├── main.lua
│ └── locales/
└── extension.openrgb/
├── manifest.json
├── init.lua
├── locales/
└── page/
How It Works
- Core scans the
plugins/directory on startup - Each subfolder whose name matches
<type>.<id>/is loaded - The
manifest.jsonis parsed for metadata, permissions, and type-specific config - The Lua entry script is executed in a sandboxed environment
- Core calls plugin lifecycle hooks (
on_init,on_tick,on_shutdown, etc.)
Next Steps
- Getting Started — Create your first plugin
- Manifest Reference — Full manifest.json specification
- Controller Plugin Guide — Build hardware drivers
- Effect Plugin Guide — Create lighting effects
- Extension Plugin Guide — Build integrations and services