Thanks for all your suggestions.
Here is what I use right now in my ready.php
$wire->addHookAfter('AdminTheme::getExtraMarkup', function (HookEvent $event) {
$parts = $event->return;
$parts['head'] .= '<link rel="stylesheet" href="' . $this->config->urls->templates . 'admin/admin.css">';
$parts['head'] .= '<script src="' . $this->config->urls->templates . 'admin/admin.js"></script>';
$event->return = $parts;
});
I don't want to rely on another module like AoS or AdminCustomFiles, because I think adding another module just to add styles and JavaScript is overkill and bloat.
Instead I want to add the assets in my own modules, or in ready.php.
I still think that it would be good in the core, and the core could still be lean. There are already methods there to prepend or append assets, but they don't work correctly because of the init order.
Mainly the problem is that core modules should be loaded first with their assets like jQuery and CSS, etc, and then I should be able to add my assets after them to override them. I know it might be a specific case, where you want to alter default behavior and styles of the admin, but it is something I often need.
In most cases the actual behaviour
$config->styles->add($config->urls->templates . "admin/admin.css");
is just fine, if you are not trying to override some styles