Contributor Training: Creating and Maintaining DDEV Add-ons
Stas Zhuk and I covered the full add-on lifecycle in this Contributor Training session: bootstrapping from the ddev-addon-template, writing Bats tests, testing locally and against branches or open PRs, and publishing to the registry. The session also covers use cases beyond service providers — custom commands, DDEV hooks, and distributing team workflows across projects.
The slides are available online (source).
What Are DDEV Add-ons?
Most people first encounter add-ons as service providers — Redis, Elasticsearch, Solr, Mailpit — but Bill Seremetis (bserem) put it well in his DrupalDevDays Athens 2026 talk: “an add-on is a set of files: hooks + commands + scripts + config — it’s a distribution mechanism.” His agency uses a single custom add-on across 100+ Drupal projects to encode institutional knowledge, enforce quality gates, and deliver the team’s workflows to the terminal. One update to the add-on propagates improvements to every project. That framing opens up a lot: custom commands that automate your team’s processes, DDEV hooks that fire at key checkpoints (sanitize the database on import, install Git hooks on project start), and boilerplate configs or scripts distributed automatically to wherever they’re needed.
The heart of every add-on is an install.yaml, which defines what files get placed at the project-level or globally, plus pre_install_actions and post_install_actions that can run shell or PHP scripts during install.
Getting started with a new add-on is straightforward: use the ddev-addon-template, which wires up GitHub Actions CI and a tests/test.bats Bats test suite from the start. You can test locally before publishing with ddev add-on get /path/to/your/addon, against a branch with --version branch-name, or against an open PR with --pr 54. When ready to publish to the world (if you want to), add the ddev-get topic to your GitHub repository and it will appear in addons.ddev.com within about 24 hours.
Resources
- DDEV Add-on Documentation — the official reference for creating and maintaining add-ons
- DDEV Add-on Registry — browse the full catalog of community add-ons (see also: registry introduction)
- Add-on Maintenance Guide — guidance for maintaining add-ons over time
- Anatomy of an Advanced DDEV Add-on — a deep dive into a complex add-on with a custom container
Contributions Welcome!
Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at DDEV Website For Contributors.
Follow the DDEV Newsletter for information about upcoming user and contributor training sessions.