Skills for authoring themes and blocks

There’ll still be documentation that covers the full Blocks API, including implementation in core and plugins. For theming with Blocks, the SKILL.md should already touch on all relevant aspects. It’s compact and very readable.

The example theme includes both initializer files and blocks. The initializer files declare the layout per BlockOutlet: discourse-theme-skills/javascripts/discourse/api-initializers at main · discourse/discourse-theme-skills · GitHub.

To me that’s the biggest change when working with themes: We don’t inject custom components directly into the app, as with PluginOutlets. We rather have a few dedicated layout frames now. All blocks that should render in that frame are registered in the same initializer file, even they show under different conditions.

It helps us keep a clean interface between customizations and the core app layouts.