# Plugin Authoring Guide Slopsmith's plugin system is the primary extension point. Each plugin lives in `plugins//` with a `plugin.json` manifest and can provide any combination of frontend (HTML/JS), backend (Python routes), settings UI, diagnostics, and visualization renderers. This guide is the entry point. Each topic below has a dedicated doc — read what's relevant to what you're building. ## Quickstart ``` plugins/my_plugin/ ├── plugin.json Manifest (required) — see docs/plugin-manifest.md ├── screen.html Optional — markup mounted at #plugin-my_plugin ├── screen.js Optional — runs in global scope on page load ├── routes.py Optional — exports setup(app, context) ├── settings.html Optional — settings-panel HTML └── requirements.txt Optional — pip deps auto-installed on load ``` The minimum viable plugin is a `plugin.json` with just `id` and `name`. Everything else is opt-in. ```json { "id": "my_plugin", "name": "My Plugin", "version": "0.1.0" } ``` ## Topics | Topic | Doc | When to read | |---|---|---| | **Manifest reference** | [plugin-manifest.md](plugin-manifest.md) | Field-by-field reference for `plugin.json`. Read first. | | **Visualization contracts** | [plugin-visualization-contracts.md](plugin-visualization-contracts.md) | Building a highway renderer (setRenderer), an overlay layer, or a note-state provider. | | **Audio mixer faders** | [plugin-audio-mixer.md](plugin-audio-mixer.md) | Plugin produces audio outside the song `