History#
The problem#
The Plone community maintained many separate template repositories over the years. Each repository followed slightly different conventions, used different variable names, and required manual updates when community standards changed. New contributors faced inconsistent setups, and experienced developers spent time reconciling differences between projects. There was no single entry point that worked for all Plone project types.
Evolving into a fuller solution#
As the community consolidated templates into a single cookieplone-templates repository, Cookieplone took on more responsibilities:
A terminal user interface (TUI) for interactive prompts, replacing Cookiecutter's plain
input()calls.A richer schema format (
cookieplone.json) that supports typed fields, computed defaults, and per-field validators, while remaining backward-compatible with plaincookiecutter.json.Template discovery: a root
cookiecutter.jsonin a repository can declare multiple templates, and Cookieplone presents them as a menu.Support for any template source—local paths, git URLs, zip archives, and abbreviations such as
gh:,gl:, andbb:: not onlycookieplone-templates.
Design decisions#
Why keep Cookiecutter as a dependency? Cookiecutter's hook system, file rendering, and replay mechanism are mature and well-tested. Replacing them would duplicate significant work with little benefit for end-users. Cookieplone stays thin where Cookiecutter is strong and adds only where Cookiecutter is absent.
Why a separate templates repository?
Separating the tool (cookieplone) from the templates (cookieplone-templates) means the templates can evolve at their own pace, and third parties can provide their own template repositories without forking Cookieplone itself.
Why uvx?
uvx runs Cookieplone in an isolated environment without requiring the user to manage a virtual environment.
This lowers the barrier to entry for Plone beginners significantly.