Bundled-plugin examples
Use bundled plugins as working examples of the public SDK. Their feature code lives under plugins; core provides reusable services.
| Example | What to study | Source |
|---|---|---|
| Example Plugin | Panel, settings, storage, named hook and cleanup | example |
| Self Embeds | Declarative composer, validation, cancellation, current-channel sending | self-embeds |
| Outlines | Styling, inspection, keyboard toggles, overlays | outlines |
| NekoSkins | Image ownership, selectors, setting changes, default restoration | neko-skins |
| Virus Check | File context, disclosure, cancellation, safe URL encoding, browser authorization | virus-check |
Start from the standalone template
Section titled “Start from the standalone template”The standalone starter demonstrates both native dialogs and custom sandbox UI. Copy it outside the checkout to verify that your plugin does not depend on private workspace modules.
Read each plugin’s manifest alongside its code. Capability requirements are part of the example, not optional setup.
Adapt deliberately
Section titled “Adapt deliberately”Use your own stable plugin ID, request only the permissions you need, and write tests for your own feature. A sample selector or URL is not a guarantee that it matches your target.
Follow packaging to distribute only the manifest and executable. Users do not need your tests, dependencies, or source tree to import the plugin.
