The curated catalogue of phpVMS Laravel-module addons. Authors submit a minimal YAML referencing their GitHub repository; CI validates the YAML against a JSON schema and inspects the repo's latest release.
This repo runs on GitHub Actions only — no application servers, no external infrastructure. A single Bun script performs every check.
packages/{publisher}.yml— one file per publisher; contains a requiredmetablock and anaddonslistschema/— the JSON schema + the closedcategoryenumscripts/validate.ts— the validator (plus small helpers inscripts/lib/).github/workflows/— CI definitions
On every PR touching packages/**, scripts/validate.ts validates each
changed package YAML:
- Structural — path shape (
packages/{publisher}.yml), JSON schema, duplicate addon names rejected - JSON schema —
schema/package.schema.json+ thecategoryenum - Source release — repo is public and has a release with a zip asset
- Zip inspection —
module.jsonat the root, no forbidden paths,registry_idmatches the full{publisher}/{addon-name}identity - Migration lint — static allow-list checks on
Database/Migrations/
revoked/archived entries skip checks 3–5. The job exits non-zero on
any failure (a plain pass/fail check, no PR comment).
bun install
bun scripts/validate.ts packages/acme.yml # validate one file
bun scripts/validate.ts # validate every package
bun test # unit tests
bun run typecheck # tsc --noEmitGITHUB_TOKEN is optional locally; set it to raise GitHub API rate
limits when validating many packages.
See docs/plugin-authors.md for how to submit an addon (covers both
registry submission and migration rules).