Drupal is a registered trademark of Dries Buytaert
cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)!

drupal_devkit

No security coverage
View on drupal.org

What is Drupal DevKit?

Marketplace of marketplaces for Drupal AI coding. Cross-harness installer, skill registry, and developer toolkit.

drupal-devkit lets you subscribe to multiple AI skill sources (marketplaces), enable/disable individual plugins per harness, and install everything with one command. It ships with 36 bundled Drupal-core skills and can pull content from external marketplaces like ai_best_practices and drupal-canvas-plugin.

Everything is driven by one Python CLI: drupal-devkit.

This is not a traditional Drupal module. It is a marketplace registry and cross-harness installer for AI coding skills and agents. All skills follow the agentskills.io open specification. External marketplaces declare their content via drupal-marketplace.json.

Install

Option 1: Universal one-liner (stable release)

curl -sSL https://drupal-devkit.org/install.sh | bash

Installs the latest tagged release. Detects your environment and installed harnesses, installs uv if missing, installs the drupal-devkit Python package, and registers default marketplace sources. Afterwards, run the interactive installer to pick harnesses and plugins:

drupal-devkit install

To track main instead (bleeding edge, breaking changes possible), fetch the script directly from drupalcode.org:

curl -sSL https://git.drupalcode.org/project/drupal_devkit/-/raw/main/install.sh | bash

Or pin to a specific version regardless of URL:

curl -sSL https://drupal-devkit.org/install.sh | DRUPAL_DEVKIT_REF=2.1.0 bash

Option 2: DDEV add-on

ddev add-on get AJV009/ddev-drupal-devkit

Installs drupal-devkit on the host, optionally bootstraps Claude Code inside the DDEV web container, and registers ddev ai, ddev ai-devkit, and ddev claude commands.

Option 3: Manual install

uv tool install drupal-devkit --from "git+https://git.drupalcode.org/project/drupal_devkit.git"
drupal-devkit install

Interactive Installer

Running drupal-devkit install starts the interactive installer with a harness selector and plugin selector (yay/pacman style):

Detected harnesses:
  1) * claude-code (claude)
  2)   codex (codex)
  3)   copilot-cli (copilot)
  4)   cursor (agent)
  5)   gemini (gemini)
  6)   hermes (hermes)
  7)   kiro (kiro-cli)
  8)   opencode (opencode)

Install to (e.g. 1,2,3 or 'all') [1]:

Available plugins:
  1) * drupal-devkit/drupal-core (36 skills, 1 agent)
  2) * ai_best_practices/ai_best_practices (2 skills, 4 agents)
  3) * drupal-canvas-plugin/drupal-canvas (7 skills)

Install plugins (e.g. 1,2,3 or 'all') [all]:

Select harnesses and plugins by number (comma-separated) or type all. Claude Code is pre-selected as default.

Non-interactive flags

  • --harness claude-code,gemini,kiro: install to specific harnesses (comma-separated)
  • --preset drupal-quickstart: install a predefined plugin bundle
  • --yes: skip all prompts, default to Claude Code
  • --global: install to global harness directories instead of project directory

Supported Harnesses (8 Tier 1)

All 8 harnesses have dedicated emitters, install targets, and context file generation:

  • Claude Code (claude): .claude/plugins/, AGENTS.md
  • GitHub Copilot CLI (copilot): .github/copilot/plugins/, AGENTS.md
  • OpenAI Codex (codex): .agents/plugins/, AGENTS.md
  • Cursor (agent): .cursor/plugins/, .cursor/rules/drupal-devkit.mdc
  • Gemini CLI (gemini): .gemini/extensions/, GEMINI.md
  • Kiro (kiro-cli): .kiro/plugins/ + .kiro/skills/ (native auto-discovery), AGENTS.md
  • OpenCode (opencode): .opencode/plugins/ + .opencode/skills/ (native auto-discovery), AGENTS.md
  • Hermes (hermes): .hermes/plugins/ + .hermes/skills/drupal/ (category-organized), AGENTS.md

Kiro, OpenCode, and Hermes also get skills copied into their native skill directories for automatic discovery without configuration. Claude-only syntax is stripped from all non-Claude builds.

The Marketplace Architecture

drupal-devkit acts as a registry for independent marketplace sources: git repos that contain AI skills, agents, and configuration. Users subscribe to marketplaces, enable specific plugins, and the content is generated per-harness at install time.

  • Subscribe: drupal-devkit marketplace add URL
  • Browse: drupal-devkit plugin list
  • Enable: drupal-devkit plugin enable MARKETPLACE/PLUGIN
  • One-command: drupal-devkit install --preset drupal-quickstart

Each marketplace is pinned to a specific git commit for reproducible installs. AGENTS.md context files are auto-composed across all enabled plugins.

Available Marketplaces

Default sources (registered on install)

  • drupal-devkit: 36 skills covering Drupal 11+ coding standards, entity API, #[Hook] attribute hooks, service DI, caching, testing, security, Views, JSON:API, SDC, Twig, accessibility, Drush, DDEV
  • ai_best_practices: canonical Drupal AI guidance from webchick + maintainers (testing, documentation)
  • drupal-canvas-plugin: 25 skills + 33 agents for Canvas Code Component development and Drupal-to-Canvas migration (8-phase workflow, 3 plugins)

Community and custom

  • drupal-workflow by George Kastanis: session insights, workflow automation
  • Your own marketplace: any git repo with a skills/ directory or a drupal-marketplace.json manifest

Workbenches

A workbench is a self-contained Drupal workspace — its own install.sh, entry-point script, .claude/ directory, and data dirs. Unlike plugins (which inject skills into your current project), a workbench clones a whole project into a path you pick and runs its own setup.

First-party workbenches:

  • drupal-contrib-workbench: hands-free Drupal.org contribution workflow (fetch → classify → fix → review → push gate) with 9 subagents, beads cross-issue memory, and mechanical enforcement hooks.
  • canvas-storybook-ai: AI-powered Drupal Canvas component workspace. Interactive installer routes between local Node.js and DDEV modes, sets up Drupal OAuth, and launches Claude Code inside the project.

Install and manage:

drupal-devkit workbench list
drupal-devkit workbench info drupal-contrib-workbench
drupal-devkit workbench install drupal-contrib-workbench --path ~/work/contrib

Uninstalling removes the state entry only — the directory is left in place so your local data (DRUPAL_ISSUES/, .beads/, in-progress fixes) is never destroyed by devkit.

One-shot install from any git URL or local path:

drupal-devkit workbench install --from https://example.com/my-workbench.git --path ~/work/x
drupal-devkit workbench install --from /path/to/local/workbench --path ~/work/x

Future workbenches (frontend, backend, QA, module experimentation, test harnesses, etc.) follow the same pattern. See the Workbench Type specification for the manifest schema and install flow.

CLI Reference

Install and Uninstall

  • install [--preset NAME] [--harness H1,H2] [--yes] [--global]: interactive or preset-based install
  • uninstall [--global] [--yes]: remove devkit files from project or global dirs

Marketplace Commands

  • marketplace add URL [--ref BRANCH] [--name NAME]: register a marketplace source
  • marketplace list: show registered marketplaces with pinned commits
  • marketplace refresh [NAME]: fetch latest from remote
  • marketplace remove NAME: unregister a marketplace

Plugin Commands

  • plugin list [--marketplace NAME] [--installed]: list available or enabled plugins
  • plugin search KEYWORD: find plugins by name or description
  • plugin info MARKETPLACE/PLUGIN: show details (skills, agents, hooks, mcp)
  • plugin enable MARKETPLACE/PLUGIN [--target HARNESS]: install a plugin
  • plugin disable MARKETPLACE/PLUGIN: remove an installed plugin

Workbench Commands

  • workbench list: list registered workbenches (auto-tags the current one if you're inside one)
  • workbench info NAME: show manifest details (entry point, prerequisites, skill policy)
  • workbench install NAME [--path PATH] [--ref REF] [--plugin P1,P2] [--harness H1,H2] [--skip-install-script] [--yes]: clone + run setup
  • workbench install --from URL_OR_PATH [--name NAME] [--path PATH]: one-shot registration + install from a git URL or local path
  • workbench uninstall NAME [--path PATH]: remove from state (files untouched)

Other Commands

  • doctor: show harnesses, marketplaces, enabled plugins, sync status
  • build [--plugin NAME] [--harness NAME]: regenerate per-harness build outputs
  • eval SKILL [--layer all|l1|l2|l3] [--trials N]: 3-tier eval harness
  • bump major|minor|patch: lockstep version bump
  • version: show version info

Shipped Presets

  • drupal-quickstart: drupal-core + ai_best_practices skills
  • canvas-dev: full Canvas + migration toolkit from drupal-canvas-plugin

drupal-marketplace.json

Sources can ship a drupal-marketplace.json manifest at the repo root to define plugin groupings, custom paths, and metadata. Without a manifest (Level 0), all skills are grouped into one plugin named after the source directory.

Conformance levels:

  • L0 (Heuristic): no manifest needed, auto-discovery from skills/
  • L1 (Manifest): drupal-marketplace.json with plugin grouping
  • L2 (Full metadata): license, maintainer, descriptions
  • L3 (Shared eval): eval coverage specifications

See the Source Specification for full details.

Eval Harness

3-layer eval runner: Gemma 3 4B (local via Ollama), Claude Haiku 4.5, Claude Opus 4.6. Deterministic grader with must_contain_any, must_not_contain, syntax_check (via php -l), and check_markdown_structure. Each marketplace source owns its own eval cases.

Relationship to ai_best_practices

drupal-devkit is the cross-harness delivery layer for the Drupal AI ecosystem. ai_best_practices is the canonical skill source maintained by webchick + community. They're complementary: ai_best_practices owns skill content and evaluation; devkit owns installation, cross-harness generation, and marketplace registry. Both are consumable as marketplace sources.

Creating Your Own Marketplace

Any git repo with skills can be a drupal-devkit marketplace source. At minimum, add skills/your-skill-name/SKILL.md files and users can subscribe immediately (Level 0 heuristic detection). For richer metadata, add a drupal-marketplace.json manifest at the repo root. See the Source Specification.

Contributing

Contributions are welcome through this project's issue queue and merge requests. Whether it's improving existing skills, adding new ones, creating your own marketplace source, or porting skills upstream to ai_best_practices.

See the Contributing Guide for details.

License

GPL-2.0-or-later: compatible with Drupal's project licensing.

Activity

Total releases
4
First release
Apr 2026
Latest release
3 weeks ago
Release cadence
7 days
Stability
75% stable

Release Timeline

Releases

Version Type Release date
3.x-dev Dev May 12, 2026
2.2.1 Stable May 5, 2026
2.2.0 Stable Apr 22, 2026
2.1.0 Stable Apr 21, 2026