You scaffold a new addon by running php artisan module:make YourAddonName (PascalCase) from the Mumara Campaigns root. This generates a complete skeleton under Addons/YourAddonName/ — manifest, service providers, controller, routes, views, migrations, hooks file, Settings/ metadata, and a public/ directory for static assets. You can pass several names to create multiple addons at once.
After generating, you configure three files: module.json (the manifest — name must match the directory, plus alias, load priority, service providers, autoloaded files, and addon dependencies), Settings/config.php (metadata shown in the addon manager: display name, vendor, version, route prefix, and license_type of native, marketplace, remote, or free), and composer.json (PSR-4 autoloading under the Addons\YourAddonName\ namespace; dependencies are merged into the root app via wikimedia/composer-merge-plugin, so run composer update after adding packages). The main service provider's boot() registers hooks, translations, config, views, and migrations. You then add routes in Routes/web.php, a controller extending the core Controller, Blade views referenced as youraddonname::index, and sidebar navigation via menu.json.
To install, go to Setup > Addons as admin and click Install — the system runs migrations, publishes config, creates the public/Addons/YourAddonName/ symlink, and enables the addon. Afterwards run php artisan cache:clear, visit your route, and check the browser console for asset 404s.