feat: #3588999 Add drupal-ckeditor5-plugins skill
Summary
Adds the drupal-ckeditor5-plugins skill: CKEditor 5 plugin customization in Drupal — version alignment, the two installation/bundling methods, and the official CKEditor contrib modules.
Skill (skills/drupal-ckeditor5-plugins/, progressive disclosure per the drupal-gitlab pattern):
SKILL.md— required Step 0 version check (web/core/core.libraries.yml→ bundled CKEditor version), routing table, cross-cutting gotchas (check-first before custom code — even when custom code is explicitly requested; DLL vs new-builds exclusivity; plugin key-chain alignment;ckeditor5/src/*imports).references/version-matrix.md— Drupal core↔️ bundled CKEditor↔️ pinned docs URL↔️ module line. Verified againstcore/core.libraries.ymlper branch (10.5/11.2 → 45.2.2, 10.6/11.3 → 47.6.3); CKEditor publishes versioned docs per minor (47.6.3→/47.6.0/; exact-patch URLs 404), with re-derivation commands so the table self-heals.references/custom-plugins-dll.md— the six-file webpack DLL pattern for Drupal 10.3–11, ported from the tested example in https://github.com/ondrejch/drupalcon-chicago-26-ckeditor-ai-playground, plus troubleshooting.references/drupal-12-outlook.md— Drupal 12 / CKEditor 5 v48+ / UMD builds and the modules' 2.x line, flagged beta (2.0.0-beta expected ~2026-10-08).references/plugin-pack-premium-features.md— both modules with the check-first ladder: core → Plugin Pack → Premium Features → module issue queues for feature requests → only then custom code.references/agent-docs.md— CKEditor's agent-friendly docs (.mdURLs andAccept: text/markdownare latest-only; versioned docs are HTML-only — caught by expert correction, logged incorrections/drupal-ckeditor5-plugins.jsonl).
Evals (evals/drupal-ckeditor5-plugins/): 21 static checks + 6 behavioral A/B cases.
Verification
python3 evals/run-evals.py --static --skill drupal-ckeditor5-plugins→ 21/21.vendor/bin/agent-skills-validator skills→ all skills valid.python3 evals/compare.py --skill drupal-ckeditor5-plugins --no-baseline --runs 3(sonnet, isolated fresh-tempdir cwd per invocation):
Case no skill with skill Delta
-------- -------------- -------------- ----------
B01 0/3 (0%) 3/3 (100%) +100% webpack DLL config
B02 3/3 (100%) 3/3 (100%) = docs version pinning
B03 1/3 (33%) 3/3 (100%) +67% Drupal 12 / 2.x line
B04 2/3 (67%) 3/3 (100%) +33% agent-friendly docs
B05 1/3 (33%) 3/3 (100%) +67% PHP plugin class (php -l)
B06 0/3 (0%) 0/3 (0%) = check-first (see note)
-------- -------------- -------------- ----------
TOTAL 39% 83% +44%
Avg time 144.2s 111.2s (skill arm also cheaper: $0.163 vs $0.182/question)B06 note (honest caveat): in the 3-run grid, B06 ("editors want an emoji button — write me a custom plugin module") failed in both arms, mostly by hitting the harness's 300s timeout: with --permission-mode auto the CLI scaffolds a whole module instead of answering. The one substantive with-skill answer built a correct DLL module but never mentioned the Plugin Pack — a real wording weakness. Commit 055205fe strengthens the check-first gotcha ("even when explicitly asked for custom code, open by naming the existing plugin"); two post-fix spot-checks of B06 with the updated skill pass in 63s/37s, leading with the Plugin Pack recommendation. Full 3-run grid not re-run for cost; reviewers can reproduce with the command above.
Closes #3588999 (closed)
AI-Generated: Yes (Used Claude Code to research sources, author the skill and evals, and drive the contribution workflow; version data verified against live core branches and ckeditor.com.)