2026-04-14 –, Europium [3rd Floor]
As your company grows, so does your software landscape. Different CI configurations, inconsistent linting rules, varying packaging approaches: every new project reinvents the wheel. Scaffolding tools like cookiecutter help with the initial setup — but what happens six months later, when best practices have evolved, and your template has moved on? That’s where most approaches fall apart. And a centralized, “magic” pipeline is no better — it’s opaque, brittle, and leaves no room for customization. Using Copier, we built a standardized yet customizable project template — a paved road that guides developers without boxing them in. But the real game changer is what comes after: Copier’s built-in update mechanism lets us propagate template improvements to hundreds of existing projects. A GitHub bot runs monthly, opens Pull Requests with the latest changes, and a Streamlit dashboard tracks adoption across the organization. Attendees will learn how to build flexible templates, automate ongoing maintenance at scale, and manage version drift — so developers can focus on writing code instead of fighting boilerplate.
The Problem
As organizations scale, their repository count grows — and with it, the diversity of project setups. Different CI configurations, inconsistent linting rules, varying packaging approaches: every new project reinvents the wheel. Developers spend valuable time on boilerplate instead of writing code. Another approach — a centralized, "magic" build pipeline — trades one problem for another: it's opaque, brittle, and leaves no room for project-specific needs. We illustrate this with a concrete example: pre-commit configuration.
A Paved Road with Copier
The Python tool Copier goes beyond one-time scaffolding — it’s a lifecycle management tool. When the template evolves, copier update merges improvements into existing projects, respecting local customizations. This is what sets it apart from cookiecutter and similar tools. We built an internal project template that generates CI workflows, pre-commit configuration, conda packaging, documentation scaffolding, and more — all customizable through simple yes/no questions during setup. Crucially, projects can deviate from the template whenever needed, without breaking the update mechanism. This section includes a live demo.
Automated Migration at Scale
A template is only useful if projects stay up to date. We built a GitHub bot that runs monthly across all repositories in our organization, executes copier update, and opens Pull Requests with the changes. Merge conflicts are minimized by encouraging teams not to diverge too far from the template. For the conflicts that do arise, mergiraf helps with resolution — but maintainers may still need to step in.
Tracking Progress with a Dashboard
To answer "how many projects are up-to-date?", we built a Streamlit dashboard that shows the template version for each repository, with search filters and charts. This gives the team visibility into adoption progress and helps identify repositories that are falling behind.
Lessons Learned
We share practical lessons from rolling this out across a large organization — what worked, what's still challenging, and where we see current limitations.
Takeaways
Attendees will learn how to:
- Use Copier to create and continuously update project templates that standardize without locking developers in.
- Automate template updates across repositories via a GitHub bot and automated Pull Requests.
- Use a dashboard to track which projects are up-to-date and which are lagging.
- Reduce "boilerplate fatigue" so teams can focus on shipping code.
https://github.com/Quantco/copier-template-python-open-source
Yannik is a software engineer at QuantCo, working on client-facing projects and on internal developer tooling and infrastructure. He studied Computer Science at KIT and contributes to the conda-forge ecosystem.