Drupal Claude — AI Skills for Drupal 11 Development
A production-tested collection of Claude Code skills, agents, commands, and rules for Drupal 11 development. Battle-tested on a platform powering 150+ sites.
Install a skill
npx skills add https://github.com/edutrul/drupal-ai --skill SKILL_NAME
Available Skills
Local Development
| Skill |
Description |
ddev-expert |
DDEV local environment configuration and troubleshooting |
docker-local |
Docker Compose local development patterns |
Drupal Core Patterns
| Skill |
Description |
drupal-access |
Permissions, access callbacks, AccessResult, entity access |
drupal-caching |
Cache tags, contexts, max-age, bins, invalidation |
drupal-entity-api |
Loading, creating, updating, deleting entities |
drupal-events |
Symfony events, KernelEvents, services.yml tags |
drupal-hooks |
Drupal 11 OOP and procedural hooks |
drupal-menus |
links.menu.yml, links.task.yml, programmatic manipulation |
drupal-plugins |
Block, Field, Condition, Filter plugins with attributes |
drupal-render |
Render arrays, cache metadata, elements, markup safety |
drupal-routes |
routing.yml, controllers, parameters, upcasting, links |
drupal-security |
CSRF, XSS, SQL injection, route permissions, file uploads |
drupal-services |
DI for controllers, forms, plugins, services.yml |
drupal-state |
State API for runtime persistence across requests |
drupal-taxonomy |
Terms, vocabularies, hierarchy, reference fields |
Forms
| Skill |
Description |
drupal-form-ajax |
AJAX form callbacks and custom AjaxCommands |
drupal-form-alter |
hook_form_alter, OOP hooks, hiding fields, adding handlers |
drupal-form-api |
FormBase/ConfigFormBase, elements, validate/submit, DI |
drupal-form-validation |
validateForm(), inline errors, conditional validation |
Fields & Content
| Skill |
Description |
drupal-fields |
Field types, widgets, formatters, storage, multi-value access |
drupal-paragraphs |
Accessing, rendering, altering paragraph entities |
drupal-taxonomy |
Terms, vocabularies, hierarchy, reference fields |
Frontend
| Skill |
Description |
drupal-javascript |
Behaviors, libraries.yml, drupalSettings, AJAX commands |
drupal-twig |
Templates, auto-escaping, translation, SDC components |
Data & Search
| Skill |
Description |
drupal-queries |
Database abstraction layer — Select, Insert, Update, Delete |
drupal-search-api |
Index config, boost processors, field types, reindexing |
drupal-migrations |
D7-to-D11 upgrades, CSV/JSON API imports, custom plugins |
Configuration & Tooling
| Skill |
Description |
drupal-composer |
Requiring modules, updates, patches via composer-patches |
drupal-config |
Config import/export, preview, splits, environment syncing |
drupal-contrib-mgmt |
Contrib upgrade triage, patches, D11 compatibility |
drupal-debugging |
Devel, Drush watchdog, Twig debug, XDebug |
drupal-drush |
Drush commands, generators, field creation, scaffolding |
Testing
| Skill |
Description |
drupal-dtt |
DTT ExistingSite tests against a live Drupal site |
drupal-kernel |
KernelTestBase tests for services, DB, hooks, entities |
drupal-unit |
UnitTestCase for isolated PHP logic, no bootstrap |
Using with Other AI Tools
Skills are native to Claude Code, but the underlying knowledge is plain markdown — reusable anywhere.
OpenAI Codex
Codex reads skills from .codex/skills/. Symlink it to .claude/skills/ so both tools share the same installed skills automatically:
ln -s ../.claude/skills .codex/skills
Run once after cloning. Any skill added via npx skills add is immediately available to both Claude Code and Codex. See .codex/README.md for details.
Cursor
Drop skill files into .cursor/rules/ — Cursor loads them automatically as context rules.
Manual step: after installing skills via npx skills add, symlink or copy them:
mkdir -p .cursor/rules
# Symlink all installed skills as Cursor rules
ln -s ../.claude/skills/*.md .cursor/rules/
GitHub Copilot
Copilot reads .github/copilot-instructions.md as custom instructions.
Manual step: concatenate the skills you want into that file:
cat .claude/skills/drupal-hooks.md .claude/skills/drupal-services.md >> .github/copilot-instructions.md
Where skill content lives
After running npx skills add, skill files are stored in .claude/skills/. These are plain markdown — copy, symlink, or paste them into any tool's context system.
.claude/skills/
├── drupal-hooks.md
├── drupal-services.md
└── ...
Sponsors
Development time sponsored by heydru!
Credits
Inspired by and built with reference to:
License
MIT — see LICENSE
1---2name: drupal-ai3description: Drupal Claude — AI Skills for Drupal 11 Development4---5# Drupal Claude — AI Skills for Drupal 11 Development67A production-tested collection of Claude Code skills, agents, commands, and rules for Drupal 11 development. Battle-tested on a platform powering 150+ sites.89## Install a skill1011```bash12npx skills add https://github.com/edutrul/drupal-ai --skill SKILL_NAME13```1415## Available Skills1617### Local Development18| Skill | Description |19|---|---|20| `ddev-expert` | DDEV local environment configuration and troubleshooting |21| `docker-local` | Docker Compose local development patterns |2223### Drupal Core Patterns24| Skill | Description |25|---|---|26| `drupal-access` | Permissions, access callbacks, `AccessResult`, entity access |27| `drupal-caching` | Cache tags, contexts, max-age, bins, invalidation |28| `drupal-entity-api` | Loading, creating, updating, deleting entities |29| `drupal-events` | Symfony events, `KernelEvents`, services.yml tags |30| `drupal-hooks` | Drupal 11 OOP and procedural hooks |31| `drupal-menus` | `links.menu.yml`, `links.task.yml`, programmatic manipulation |32| `drupal-plugins` | Block, Field, Condition, Filter plugins with attributes |33| `drupal-render` | Render arrays, cache metadata, elements, markup safety |34| `drupal-routes` | `routing.yml`, controllers, parameters, upcasting, links |35| `drupal-security` | CSRF, XSS, SQL injection, route permissions, file uploads |36| `drupal-services` | DI for controllers, forms, plugins, `services.yml` |37| `drupal-state` | State API for runtime persistence across requests |38| `drupal-taxonomy` | Terms, vocabularies, hierarchy, reference fields |3940### Forms41| Skill | Description |42|---|---|43| `drupal-form-ajax` | AJAX form callbacks and custom `AjaxCommands` |44| `drupal-form-alter` | `hook_form_alter`, OOP hooks, hiding fields, adding handlers |45| `drupal-form-api` | `FormBase`/`ConfigFormBase`, elements, validate/submit, DI |46| `drupal-form-validation` | `validateForm()`, inline errors, conditional validation |4748### Fields & Content49| Skill | Description |50|---|---|51| `drupal-fields` | Field types, widgets, formatters, storage, multi-value access |52| `drupal-paragraphs` | Accessing, rendering, altering paragraph entities |53| `drupal-taxonomy` | Terms, vocabularies, hierarchy, reference fields |5455### Frontend56| Skill | Description |57|---|---|58| `drupal-javascript` | Behaviors, `libraries.yml`, `drupalSettings`, AJAX commands |59| `drupal-twig` | Templates, auto-escaping, translation, SDC components |6061### Data & Search62| Skill | Description |63|---|---|64| `drupal-queries` | Database abstraction layer — Select, Insert, Update, Delete |65| `drupal-search-api` | Index config, boost processors, field types, reindexing |66| `drupal-migrations` | D7-to-D11 upgrades, CSV/JSON API imports, custom plugins |6768### Configuration & Tooling69| Skill | Description |70|---|---|71| `drupal-composer` | Requiring modules, updates, patches via `composer-patches` |72| `drupal-config` | Config import/export, preview, splits, environment syncing |73| `drupal-contrib-mgmt` | Contrib upgrade triage, patches, D11 compatibility |74| `drupal-debugging` | Devel, Drush watchdog, Twig debug, XDebug |75| `drupal-drush` | Drush commands, generators, field creation, scaffolding |7677### Testing78| Skill | Description |79|---|---|80| `drupal-dtt` | DTT ExistingSite tests against a live Drupal site |81| `drupal-kernel` | `KernelTestBase` tests for services, DB, hooks, entities |82| `drupal-unit` | `UnitTestCase` for isolated PHP logic, no bootstrap |8384## Using with Other AI Tools8586Skills are native to Claude Code, but the underlying knowledge is plain markdown — reusable anywhere.8788### OpenAI Codex8990Codex reads skills from `.codex/skills/`. Symlink it to `.claude/skills/` so both tools share the same installed skills automatically:9192```bash93ln -s ../.claude/skills .codex/skills94```9596Run once after cloning. Any skill added via `npx skills add` is immediately available to both Claude Code and Codex. See [`.codex/README.md`](.codex/README.md) for details.9798### Cursor99100Drop skill files into `.cursor/rules/` — Cursor loads them automatically as context rules.101102**Manual step:** after installing skills via `npx skills add`, symlink or copy them:103104```bash105mkdir -p .cursor/rules106# Symlink all installed skills as Cursor rules107ln -s ../.claude/skills/*.md .cursor/rules/108```109110### GitHub Copilot111112Copilot reads `.github/copilot-instructions.md` as custom instructions.113114**Manual step:** concatenate the skills you want into that file:115116```bash117cat .claude/skills/drupal-hooks.md .claude/skills/drupal-services.md >> .github/copilot-instructions.md118```119120### Where skill content lives121122After running `npx skills add`, skill files are stored in `.claude/skills/`. These are plain markdown — copy, symlink, or paste them into any tool's context system.123124```125.claude/skills/126├── drupal-hooks.md127├── drupal-services.md128└── ...129```130131## Sponsors132133Development time sponsored by [heydru!](https://heydru.com)134135## Credits136137Inspired by and built with reference to:138- [drupal-at-your-fingertips](https://skills.sh/grasmash/drupal-claude-skills/drupal-at-your-fingertips) by Selwyn Polit / Greg Sherwood139- [drupal-expert](https://skills.sh/madsnorgaard/agent-resources/drupal-expert) by Mads Nørgaard140141## License142143MIT — see [LICENSE](LICENSE)