mirror of
https://github.com/rmdes/indiekit-plugin-registry.git
synced 2026-07-10 22:51:07 +00:00
No description
- JavaScript 100%
| .github/workflows | ||
| scripts | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| package-lock.json | ||
| package.json | ||
| plugin-registry.yaml | ||
| README.md | ||
indiekit-plugin-registry
Central catalog of Indiekit plugins as a git submodule in indiekit-cloudron.
Status
Currently consumed by: indiekit-cloudron only (as a git submodule, read by scripts/compose-site.mjs).
Planned for: indiekit-deploy integration (not yet implemented).
Files
plugin-registry.yaml— the catalog itselfscripts/validate.mjs— schema validation (run by CI, Ajv withregistry-schema.json)
Schema
Four tiers, each with these fields per entry:
| Field | Type | Purpose |
|---|---|---|
key |
string | Identifier used in sites/*/config/plugins.yaml (kebab-case) |
package |
string | npm package name (@scope/name) |
version |
string | semver range — omitted when overridden: true |
overridden |
boolean | true if indiekit-cloudron/package.json overrides field swaps this for an @rmdes/* fork |
library |
boolean | true for helper libraries (imported by plugins, not loaded as plugins; install only) |
default_enabled |
boolean | Whether this plugin is enabled by default when a site doesn't explicitly list it |
Tiers:
core— always installed and loaded; cannot be disabled per-sitepost_types— content type plugins; per-site can enable/disablesyndicators— cross-posting targets; per-site can enable/disableendpoints— feature endpoints; per-site can enable/disable
Consumption Flow
indiekit-cloudron/Makefileprovidesregistry-updateandregistry-statustargetsmake registry-updatepulls latest from submodule's origin/mainscripts/compose-site.mjsmergesplugin-registry.yamlwithsites/<site>/config/plugins.yamlcoreplugins are implicit (always included)- Per-site
plugins.yamlcan enable/disable optional tiers - Result:
.compiled/indiekit.config.jswith merged plugin list
- Cloudron's
Dockerfileinstalls allpackagenames from all tiers
Overridden Plugins
Entries with overridden: true have NO version: field here. Their versions live in indiekit-cloudron/package.json's overrides section:
{
"overrides": {
"@indiekit/endpoint-auth": "npm:@rmdes/indiekit-endpoint-auth@^1.0.0-beta.30",
"@indiekit/endpoint-share": "npm:@rmdes/indiekit-endpoint-share@^1.0.3"
}
}
When npm resolves the upstream package name, it installs the fork under the same name. The default plugin loader calls import("@indiekit/endpoint-share") and gets the fork's code transparently.
Rule: Do NOT bump version for overridden: true entries here; instead, update the override in indiekit-cloudron/package.json.
How to Bump a Plugin Version
Non-overridden plugins
- Edit
plugin-registry.yaml, update theversion:field for the plugin - Run
node scripts/validate.mjsto verify - Commit and push to origin/main
- In
indiekit-cloudron, update the submodule pointer:make registry-update git add plugin-registry git commit -m "chore: bump plugin-registry to <newcommit>"
Overridden plugins
- Do NOT edit
plugin-registry.yaml— the entry stays atoverridden: truewith no version - Update the override in
indiekit-cloudron/package.json:{ "overrides": { "@indiekit/endpoint-auth": "npm:@rmdes/indiekit-endpoint-auth@^1.0.0-beta.31" } } - Commit in
indiekit-cloudron, then build and deploy as normal
How to Add a New Plugin
- Add a new entry to the appropriate tier in
plugin-registry.yaml - Set
default_enabled: falseunless it's truly universal - If the plugin is a helper library (imported by other plugins, not a plugin itself), set
library: true - Run
node scripts/validate.mjsto verify schema compliance - Commit, push to origin/main
- In
indiekit-cloudron, update submodule:make registry-update && git add plugin-registry