Plugin registry for kreeader-studio: aggregates each plugin repo manifest.json into a single index.json that studio's plugin manager pulls.
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| schema | ||
| .gitignore | ||
| CLAUDE.md | ||
| index.json | ||
| README.md | ||
kreeader-plugins / registry
The plugin registry for kreeader-studio.
It aggregates every plugin repo's manifest.json into a single
index.json that studio's plugin manager pulls to
discover, install, and update plugins.
How it works
plugin repo (on release tag v*) registry (this repo)
┌───────────────────────────┐ aggregate ┌────────────────────┐ pull
│ plugin.toml (author) │ ─────────▶ │ index.json │ ─────▶ kreeader-studio
│ CI renders manifest.json │ (fetch each │ (all plugins, │ plugin manager
│ with version from the tag │ repo's │ latest versions) │
│ and commits it │ manifest) └────────────────────┘
└───────────────────────────┘
- Each plugin repo has
plugin.toml(author-maintained capabilities) and a Forgejo Action that, on a release tagv*, rendersmanifest.json(capabilities + the tag's version + artifact ref) and commits it back to that repo. That is each plugin "updating its manifest with its latest version." - This registry's
aggregateworkflow (on schedule + manual dispatch) lists thekreeader-pluginsorg, fetches every repo'smanifest.json, validates it againstschema/manifest.schema.json, and writes the combinedindex.json. - kreeader-studio fetches
index.json(one request = the whole catalog with current versions), and can fetch a plugin's fullmanifest.jsonfor detail.
index.json shape
{
"schema": "…/manifest.schema.json",
"generated": "2026-08-12T18:00:00Z",
"registry_version": 1,
"plugins": [ { /* one manifest per plugin, latest release */ } ]
}
Publishing a plugin
- Add
plugin.toml+ thepublish-manifestworkflow to the plugin repo (seekreeader-tts-attribute/kreeader-tts-sampledfor the template). - Tag a release (
vX.Y.Z). CI renders and commitsmanifest.json. - The registry picks it up on the next scheduled run, or trigger the
aggregateworkflow manually for an immediate refresh.
Auth
The aggregate workflow needs org read to enumerate repos and fetch raw
files. It uses the repo's auto FORGEJO_TOKEN where that suffices;
otherwise set a PLUGIN_REGISTRY_TOKEN secret (org read) on this repo.
Plugin repos need no cross-repo secret — they only write their own
manifest.json with the auto token.