Development Guide
-
:material-widgets:{ .lg .middle } Plugin Development
How to build, register, and test plugins for Vivified
-
:material-extension:{ .lg .middle } Plugin API
Plugin lifecycle, registration, and capabilities
-
:material-publish:{ .lg .middle } Marketplace Ready
Packaging and publishing guidelines for the Admin Console marketplace
!!! tip 'Start with canonical models' Use canonical types when designing plugin inputs/outputs to ensure compatibility with other plugins and core services.
!!! note 'Admin Console integration' Every plugin must expose administrative UI components when applicable; no CLI-only features.
!!! warning 'Security review required' Plugins that access PHI require additional security review and must declare required roles and capabilities.
Plugin anatomy
- manifest.yaml — metadata and capabilities
- server/ — plugin runtime (Python/Node)
- ui/ — optional Admin UI components
- tests/ — unit and integration tests
Manifest example (conceptual)
| Field | Purpose | Example | Required |
|---|---|---|---|
| name | Plugin name | my-plugin | yes |
| version | Semver | 1.0.0 | yes |
| capabilities | Roles and hooks | canonical-adapter | recommended |
| ui | Admin UI entry points | /admin/plugins/my-plugin | recommended |
Lifecycle
mermaid sequenceDiagram participant Admin participant Plugin participant Core Admin->>Core: register(plugin manifest) Core->>Plugin: initialize Plugin->>Core: register handlers Core->>Admin: plugin registered
Example: plugin registration via API
- Register a plugin manifest with the Admin API; plugin will be initialized and provided with secrets
Development checklist
- Implement canonical adapters if exchanging user/message data
- Provide Admin UI components for configuration
- Add unit and async tests (++pytest++ for Python)
- Submit security review for PHI access
??? note 'Testing' Use in-memory SQLite for tests and avoid network/DB calls at import time. Mark async tests with ++@pytest.mark.asyncio++.
Packaging & Marketplace
| Item | Description | Required |
|---|---|---|
| manifest.yaml | Plugin metadata | yes |
| signed package | Optional for marketplace | recommended |
| UI bundle | Admin UI assets (if present) | recommended |
!!! danger 'Unsigned plugins' Do not install unsigned plugins in production without an explicit security review.
-
Plugins must adhere to Admin Console accessibility and provide keyboard-navigable UI components. ↩