Thinking about the suggestion regarding command dependencies,
possibly we could add something similar to Makefile:
## [clean]() Cleans the generated files
```bash
rm -rf ./build
```
## [init]() Initializes the build folder
```bash
mkdir -p ./build
```
## [build](clean, init) Builds the project
This command depends on clean, and init, which are executed in that order beforehand.
gcc magic.c -o ./build/magic
me-vs-cat
Make's killer feature is running only the necessary commands to bring a target file up to date. Support for phony targets is a hack on top of that.
I like what you're exploring, but it's not "make".