docs/wiki/2.15-Develop-a-Plugin.md
How to create and test a custom plugin for Super Productivity.
Plugins extend the app with custom UI, hooks (e.g. on task complete), and API access to tasks, projects, and counters. Plugins are executable code and are not strongly sandboxed from the app. Only install or develop from sources you trust. See [[2.21-Manage-Plugins]] for the user-facing trust model.
manifest.json (id, name, version, description, manifestVersion, minSupVersion)plugin.js (runs on load; can register header buttons, shortcuts, hooks), or
index.html for an iframe-only pluginindex.html and set iFrame: true in the manifest for custom iframe UI. If all behavior lives in
index.html, plugin.js can be omitted.manifest.json at its root.Host-side plugin.js code runs in the app renderer, not in a security sandbox.
Iframe plugins use a filtered API as their intended interface, but they are
same-origin with the host and that interface is not a hard security boundary.
Desktop plugins requesting nodeExecution can run native code only after an
explicit native consent dialog; granting it gives the plugin full access
under your user account.
Read the full guide's Security Considerations before distributing a plugin.
The full plugin guide and API live in the repository:
It covers:
Example plugins in the repo: packages/plugin-dev/yesterday-tasks-plugin, procrastination-buster, api-test-plugin. For UI-heavy plugins: packages/plugin-dev/boilerplate-solid-js. TypeScript API types: packages/plugin-api/src/types.ts.