# Plugin Development Guide StellaOps services expose restart-time plug-in hooks so operators can extend functionality (connectors, analyzers, notification channels). This guide covers common patterns when implementing plug-ins against `StellaOps.Plugin`. ## 1. Concepts - **Manifest** – describes the plug-in assembly, supported capabilities, and minimum host version. - **Registration** – plug-ins export DI registration classes discovered by `StellaOps.Plugin` at host startup. - **Isolation** – plug-ins load from a dedicated directory with ordered manifests; hosts enforce allow-lists and capability checks. ## 2. Authoring Steps 1. Reference `StellaOps.Plugin` and implement `IPluginRegistration`. 2. Provide a manifest (`manifest.json`) describing assembly name, version, and capabilities. 3. Add unit tests covering registration and integration (use `StellaOps.Plugin.Tests` helpers). 4. Package plug-in binaries under `plugins//` with checksum manifest for offline kits. ## 3. Security & Determinism - Avoid global state or non-deterministic behaviour; plug-ins must be restart-safe. - Do not perform network access unless explicitly allowed by host configuration. - Use dependency injection to receive configuration and shared services. ## 4. Resources - `src/__Libraries/StellaOps.Plugin` - `docs/modules/platform/architecture-overview.md` - Host-specific docs (e.g., `docs/modules/scanner/architecture.md`, `docs/modules/notify/architecture.md`) ## 5. Testing & Deployment - Run host integration tests to ensure plug-in loads correctly. - Provide sample configuration snippets for Helm/Compose/Offline kits. - Document plug-in versioning and compatibility requirements.