The following plugin types can be distinguished:
Visual/non-visual (marked with the isVisual flag in the config.json):
Visual plugins ("isVisual": true) open a window or a panel for some action, like Highlight code, Photo editor, OCR.
Non-visual plugins ("isVisual": false) provide a button (or buttons) to apply some transformations or manipulations to the document, like Speech, Hello world.
An input helper ("events": ["onInputHelperClear", "onInputHelperInput"]) plugin is a combo of both visual and non-visual plugins, like Autocomplete. It has its own window that appears and disappears when you type text. Its location is tied to the cursor.
System/non-system (marked with the isSystem flag in the config.json):
Non-system plugins (not marked in the config.json) start upon clicking the corresponding button, like Clippy, Thesaurus, Translator.
System plugins ("isSystem": true) plugins work in the background as long as the editors are launched, like Settings, Search and replace on start. You don’t need to start them.
Editor enhancement/UI enhancement/third-party service plugins:
Editor enhancement plugins extend the editor functionality and enhance the existing user experience, like Search and replace, Add comment in cell, Move cursor.
UI enhancement plugins add custom components and controls to the UI, like Trackchanges, Trackchanges off.
Third-party service plugins connect third-party services to the editors, like Typograf, Zotero, Telegram.
OLE object (marked as "initDataType": "ole" flag in the config.json):
In addition to simple document manipulation or editing, the plugin can embed an OLE object which allows a third-party developer to access the document format, i.e. save information from external resources to the resulting file.
For example, the YouTube plugin embeds YouTube videos into your document and the Chess plugin embeds a chess board.