You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Author and port Blesta 6.0 extensions — modules (hosting/server and registrar), plugins, and payment gateways. Use when building a new Blesta extension from scratch or converting a 5.x extension to 6.0. Covers the PHP contract/method surface, config.json/manifest schema, data access, packaging, and the Bootstrap 5 / Paradigm UI conversion. Works as portable context for any AI tool; routes to per-type reference files on demand.
Blesta 6 Extension Development
This skill helps you create new Blesta 6.0 extensions and convert existing 5.x
extensions. Blesta extensions come in three kinds:
Modules — provision and manage services on remote systems. Two flavours:
Hosting / server modules (e.g. cPanel) — extend Module, no type in config.json.
PHP ≥ 8.2. Short array syntax [], null-coalescing ??, single quotes unless interpolating.
Never touch Blesta core assets — not the compiled application*.css / app.min.js, and not the core SCSS/JS sources either. Extensions are self-contained: ship your own CSS/JS inside the extension directory and reference it directly from your views (e.g. <link>/<script src="<?php echo $this->view_dir;?>...">). Extension CSS/JS does not go through the core Gulp build. (The Gulp/SCSS pipeline only applies if you are working on Blesta core itself — which extension authors are not.)
Ship en_us only for language in core-style extensions; other locales are added by the translation pipeline. Third-party extensions may ship whatever locales they maintain.
Admin vs client UI are different frameworks in 6.0.Admin views render in Paradigm (Bootstrap 5, Bootstrap Icons, vanilla JS — no jQuery) and must work in both light and dark mode — see reference/common/conversion-ui.md. The client portal (bootstrap theme) is still Bootstrap 4 + jQuery + FontAwesome in 6.0, so client-facing views target BS4 (a BS5 client theme is planned for 6.1). Don't apply the admin conversion to client views.
Validate with the Input component and set errors rather than throwing — the host app reads ->errors() to decide whether to proceed.
Log every remote API call and mask secrets before logging. Modules and gateways use the inherited $this->log(...). Plugins have no $this->log() — use the app logger ($this->getFromContainer('logger')) for diagnostics or a plugin-owned log table/model for an audit trail.