moodle-ai-skill-navigator

Moodle Marketplace release guide

This repository is a monorepo. Moodle Marketplace must receive the local plugin only, not the whole repository and not the optional block.

Plugin submitted to Marketplace

Installable ZIP

Do not upload GitHub’s repository ZIP.

Use the artifact generated by the Build Moodle packages GitHub Actions workflow. The artifact contains separate local-plugin and block-plugin ZIPs. Select the component you are submitting. Each ZIP has exactly this root structure:

aiskillnavigator/
  version.php
  settings.php
  lib.php
  classes/
  db/
  lang/
  pages/
  ...

Run python3 tools/build_packages.py to build and verify the same archives locally. Both archives use aiskillnavigator/ as their root; install the local plugin under local/ and the block under blocks/.

Plugin-only source branch

The Publish Marketplace source branch workflow mirrors plugins/aiskillnavigator into the marketplace-dist branch whenever the plugin changes on main.

That branch has version.php, classes/, db/, lang/, and the rest of the local plugin at repository-root level. This keeps the main monorepo intact while providing a clean plugin-only source view for release/review purposes.

Automated prechecks

The Moodle Marketplace CI workflow stages only local_aiskillnavigator and runs Moodle Plugin CI against Moodle 4.4 / PHP 8.1 / PostgreSQL and Moodle 4.5 / PHP 8.3 / PostgreSQL and MySQL, including:

The existing project CI remains in place for the repository’s custom regression tests.

Security and privacy release rules

Submission checklist

Before uploading a release:

  1. Review and merge the intended release changes into main.
  2. Confirm the normal project CI and Moodle Marketplace CI are green.
  3. Download the ZIP artifact from Build Moodle packages.
  4. Install that ZIP on a clean supported Moodle site with developer debugging enabled.
  5. Verify installation, upgrade, uninstall/privacy behaviour, student tools, teacher tools, prototype mode, and at least one configured external provider.
  6. Upload that generated ZIP to Moodle Marketplace.

The optional block_aiskillnavigator is a separate Moodle component and must never be bundled inside the local_aiskillnavigator Marketplace ZIP.