Skip to content

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

  1. Prefer official (ddev/*) over community when capabilities match.
  2. One implementation per capability (one DB UI, one search default, one Claude runtime).
  3. Reject meta-orchestrators (ddev-ai-workspace) and parallel work ledgers (local Beads).
  4. Reject experimental tags unless an explicit project exception is recorded.
  5. Bluefly custom add-ons only for product-boundary gaps the registry cannot express.
  6. Playlist Admission Rule: install only if project type ∈ supports and ∉ conflicts (see ddev-playlist-standard.md). Example: ddev/ddev-drupal-contrib conflicts with drupal-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 governance
  • ddev-claude-drupal — Drupal overlays only; extends e0ipso/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.