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 against core/core.libraries.yml per 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 (.md URLs and Accept: text/markdown are latest-only; versioned docs are HTML-only — caught by expert correction, logged in corrections/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.)

Edited by Ondřej Chrastina

Merge request reports

Loading
Loading