>every one of those steps is something that is at least semi unique to the CI execution environment.
Apart from triggers and environment set up none of those things have to be unique.
I often push complex CI logic in YAML into code where it is more easily debugged and I dont have to scratch my head to figure out how to use conditionals. Sending slack messages should always be in code IMHO.
I think the method you describe is still absolutely how it should be, but this types of interactions are why there’s gravity in the other direction.