# OverUB Plugin Guide ## Structure A plugin is a Python package placed in `plugins/external/` with an `__init__.py` file. ## Minimal Plugin ```python from core.plugin import Plugin class HelloPlugin(Plugin): name = "hello" version = "1.0.0" author = "you" description = "Simple hello plugin" async def on_load(self): self.log.info("Hello plugin loaded") ``` ## Configuration Schema ```python class MyPlugin(Plugin): name = "my_plugin" config_schema = { "enabled": bool, "settings": dict, } ``` ## Secrets ```python value = self.get_secret("api_key") ``` ## Sandbox Use `self.context.sandbox` for safe file operations when possible. ## Loading Enable plugins in `config/config.yml` and place the plugin package in `plugins/external`. ## Testing Use `core/testing.py` as a base for plugin test scaffolding. ## CLI - `python -m __main__ create-plugin ` - `python -m __main__ validate-plugin ` - `python -m __main__ build-plugin ` - `python -m __main__ docs-plugin ` - `python -m __main__ test-plugin `