You can reuse and distribute your customizations and features as extensions – packages that can be installed with Composer.
Tip: If you're building customizations specific to your community, then you probably don't need to make an extension. Instead, you can put your customizations in your application-level service providers (app/Providers).
Scaffold out a new Waterhole extension by running the following command:
php artisan waterhole:make:extension acme/example
Your extension will be created inside the extensions directory. It will have a composer.json file and a service provider. Waterhole will automatically configure a Composer path repository for your new extension, and install it as a dependency.
Your extension's composer.json is pretty standard – it contains a PSR-4 autoloading rule, and tells Laravel about your service provider. But it also contains some Waterhole-specific metadata in the extra section which you'll want to fill out: