#bakefile
An OOP task runner. Write tasks once, reuse everywhere. Like a Makefile, but reusable and in Python.
It began life as a Python config framework, grew into the argument that developer workflows need an abstraction, and now holds its own against Make, Just, Task, and mise. In practice it comes down to four patterns that scale and the supporting cast behind them. Versioning comes from #zerv.
The second bakefile in practice post: the helpers behind the patterns. Setup, secrets, publish, environments, config, the CLI, shipped once as library code.

Composition over configuration, Template Method, a uniform interface, workflows as libraries: four patterns from every repo I run bakefile in. Part one.

An audit of how five task runners share workflows between repos: Make include, Just import, Task includes, mise extends, Invoke collections. Where each breaks.

Every repo re-copies the same lint, test, and deploy recipes. Workflows need what code already has: inheritance, mixins, and versioned distribution.
