A collection of finished Amplenote Plugins plus the build tooling used to bundle them.
Each plugin is written as modular ESM (split across lib/), then compiled by a custom esbuild configuration into a single "Raw Object Literal" wrapped in an IIFE - the format Amplenote requires ((() => { return { ... } })()).
This is the production repository. Plugins are maintained as public repositories and linked here as submodules (anp-*).
- Modular Development: Split plugin code into multiple files (
lib/,helpers/) and bundle them automatically. - Amplenote Bundler: Custom
esbuildconfiguration that outputs "Raw Object Literals" wrapped in an IIFE, required by Amplenote ((() => { return { ... } })()), ensuring scope isolation and compatibility. Output is readable (not minified or obfuscated). - Per-Plugin Isolation: Each plugin is a self-contained directory with its own
lib/,build/, andTests/, preventing a change in one plugin from breaking another.
- Clone this repo (use
--recurse-submodulesto pull plugin submodules). - Run
npm installto set up dependencies. - (Optional) Configure the default plugin ID in
esbuild.js, or pass it via CLI.
- Each plugin folder follows the
anp-[ID]-[name]pattern (e.g.,anp-01-timestamp). - The plugin source uses
import/exportand standard ESM, split acrosslib/. - Use the bundler to compile (the argument is the plugin ID, or
libfor the template):Defaults tonpm run build -- 01 # or: node esbuild.js 0101if no argument is provided.
The bundler produces a clean, readable, single-file object expression in [plugin]/build/[name].compiled.js that you can copy-paste directly into your Amplenote Plugin Note.
lib/plugin.js is a minimal starter plugin (with noteOption/insertText/replaceText stubs). Build it with npm run build -- lib to use it as a starting point for a new plugin.
- esbuild (custom Amplenote object-literal wrapper)
- Day.js (date/time formatting, used by
anp-01-timestamp) - Jest (testing)
- ESLint & Prettier (linting & formatting)
GPL v3 - See LICENSE for details. Copyright (C) 2026 Krishna Kanth B
Plugins are maintained as independent public repositories and linked here as submodules:
| Submodule | Repository |
|---|---|
anp-01-timestamp |
https://github.com/krishnakanthb13/anp-01-timestamp |
anp-02-metadata |
https://github.com/krishnakanthb13/anp-02-metadata |
anp-09-graph-utility |
https://github.com/krishnakanthb13/anp-09-graph-utility |
anp-15-kanban |
https://github.com/krishnakanthb13/anp-15-kanban |
anp-19-dice |
https://github.com/krishnakanthb13/anp-19-dice |
anp-21-dice-lite |
https://github.com/krishnakanthb13/anp-21-dice-lite |
anp-22-habit-streak |
https://github.com/krishnakanthb13/anp-22-habit-streak |
anp-23-grammar-reviewer |
https://github.com/krishnakanthb13/anp-23-grammar-reviewer |
anp-24-image-compressor |
https://github.com/krishnakanthb13/anp-24-image-compressor |
anp-25-zotero |
https://github.com/krishnakanthb13/anp-25-zotero |
anp-26-hemmingway |
https://github.com/krishnakanthb13/anp-26-hemmingway |
To pull the latest changes for all submodules at once:
git submodule update --remote --merge- anp-26-hemmingway added on 21-09-2026
- anp-25-zotero added on 01-09-2026
- anp-24-image-compressor added on 01-09-2026
- anp-23-grammar-reviewer added on 20-08-2026
- anp-22-habit-streak added on 19-08-2026
- anp-15-kanban added on 17-08-2026
- anp-09-graph-utility added on 17-08-2026
- anp-02-metadata added on 22-07-2026
- anp-21-dice-lite added on 11-07-2026
- anp-19-dice added on 04-07-2026
- anp-01-timestamp added on 04-07-2026