DDEV Add-on Policy (Bluefly)¶
Status: REQUIRED
Authority¶
The DDEV Add-on Registry is the upstream catalog of record. Classification: references/addon-reference-catalog.md.
Classes¶
| Class | Meaning | Install default? |
|---|---|---|
| CORE | Required for core-drupal |
Yes (canonical profile) |
| RECOMMENDED | High-value; install when needed | Per site |
| OPTIONAL | Evaluated; needs written justification | Opt-in |
| SPECIALIZED | Niche CMS/runtime | Rare |
| REJECT | Conflicts or duplicates | Never (canonical) |
Selection rules¶
- Prefer official (
ddev/*) over community when capabilities match. - One implementation per capability (one DB UI, one search default, one Claude runtime).
- Reject meta-orchestrators (
ddev-ai-workspace) and parallel work ledgers (local Beads). - Reject experimental tags unless an explicit project exception is recorded.
- Bluefly custom add-ons only for product-boundary gaps the registry cannot express.
- Playlist Admission Rule: install only if project type ∈
supportsand ∉conflicts(seeddev-playlist-standard.md). Example:ddev/ddev-drupal-contribconflicts withdrupal-site.
Custom add-ons (thin adapters only)¶
Every Bluefly add-on JUSTIFICATION.md must lead with the capability card:
| Field | Question |
|---|---|
| Capability | What single capability? |
| Upstream Owner | Who owns the durable part? |
| Bluefly Extension | What thin delta? |
| Maintenance Cost | Low / Medium / High |
| Can this disappear? | Yes/No — under what condition do we delete the repo? |
Approved (KEEP_THIN; each ships bluefly.addon.yaml):
ddev-agent-blu— OpenClaw/CoPaw env,ddev blu, optional governanceddev-claude-drupal— Drupal overlays only; extendse0ipso/ddev-assistant-claude
Prohibited: Bluefly-owned Claude, Codex, Cursor, or OpenCode runtimes; Town/Beads orchestration inside DDEV; wrappers that reimplement official add-ons.
Upstream assistant add-ons own install and lifecycle. Bluefly owns configuration, conventions, and project integration.
Installation / upgrade¶
ddev add-on get <owner/repo> --version <tag>
Pin versions. Record reason in the project install manifest. Upgrade on ContextControl.ai first.