Manages tasks using Beads (bd), a git-backed task tracker running in a dedicated DDEV container. Use for creating, updating, closing, and querying tasks throughout development sessions. A wrapper at /usr/local/bin/bd delegates commands to the Beads container transparently. Examples: - user: "create a task for this…
Standalone code quality analysis that produces a prioritized findings report: BLOCKERS (the code must NOT ship until fixed) strictly separated from SUGGESTIONS (improvements for quality, maintainability, scalability, Drupal community practices). Analysis only — it never fixes code. Designed to run manually, as an…
Generates concise commit messages by analyzing git diff and status. Saves the message to a text file in the project root for the user to review and commit manually. Uses Conventional Commits format with type(scope) prefix, ALWAYS in English (Drupal community standard), with a drupal.org variant (issue ID + By: lines)…
Manages Drupal configuration: export, import, configsplit setup, schema validation, and environment-specific overrides via settings.php. Use when dealing with config sync, configsplit, settings.php overrides, or config schema creation. Examples: - user: "set up config split for dev/stage/prod" -> configure configsplit…
Drupal-specific accessibility guidance (WCAG 2.2 AA): Form API auto-generated ARIA, #states vs #access semantics, core hiding utilities (visually-hidden, hidden), Drupal.announce() and tabbingManager instead of hand-rolled ARIA/live regions/focus traps, and the tools-first detection order. Generic web-accessibility…
Installs and configures the Drupal Audit module (drupal/audit) and its submodules. Provides site health scores, module inventory, and code quality analysis via drush commands. Use when the Audit module is not yet installed, or when setting up a new project. Recommended: enable auditall for production submodules, plus…
Generates Behat tests for Drupal 10/11 using the Drupal Extension for Behat. Use this skill when the project already has Behat configured (look for behat.yml), when acceptance tests written in natural language (Gherkin) are needed, E2E flows, or when the client needs to read and validate test scenarios. Trigger…
Reference patterns and templates for common Drupal 10/11 development tasks: forms, block plugins, routing, controllers, hooks, caching, Batch API, Queue API, and AJAX forms. Use when implementing these patterns in custom modules. For module scaffolding (info.yml, services.yml), use module-scaffold. Examples: - user…
Generates Functional tests for Drupal 10/11 using BrowserTestBase. Use this skill when you need to verify rendered forms, form submission via UI, permissions and access via HTTP, HTML output of pages, admin forms, node creation/editing via the interface, redirects, or anything requiring a full HTTP response but NOT…
Generates FunctionalJavascript tests for Drupal 10/11 using WebDriverTestBase. Use this skill when the code under test depends on JavaScript: AJAX forms, entity reference autocompletes, modals, drag-and-drop, visibility toggles, CKEditor, complex #states. These are the slowest PHPUnit tests in Drupal, use them only…
Generates Kernel tests for Drupal 10/11 using KernelTestBase. Use this skill when the code interacts with container services, entities, database, configuration, plugins, hooks, migrations, event subscribers, or any Drupal API that does not require rendering HTML in a browser. This is the most used and recommended test…
Makes and keeps a contrib module compatible with Drupal 10, 11 and 12 at once, and triages automated compatibility issues (Project Update Bot / Upgrade Status). The right answer is often "do NOT apply the bot's patch yet" — this skill encodes which findings to accept and which to reject. Examples: - user: "make this…
Prepares a custom module's repository for contribution to drupal.org: GitLab CI, test-suite registration, repository hygiene, and the hand-off documents future maintainers (human or AI) need. Use before publishing or contributing a module to the community. Examples: - user: "prepare this module for drupal.org" -> CI +…
Generates E2E test files with Playwright for Drupal 10/11. Creates persistent TypeScript test files in the repository for visual regression, cross-browser, accessibility, and E2E flows. This skill writes test code, it does not execute it. Trigger: "playwright test", "visual regression", "screenshot test"…
Audits a contrib module against the drupal.org security review checklist before applying for security advisory coverage (the "vetted" role project application). Finds and fixes the code patterns human reviewers reject. Use before opting a module into security coverage or requesting drupal.org security review.…
Audits and refactors an EXISTING Drupal test suite: removes zero-value tests, unifies duplicated scaffolding, converts fragile DB-simulation unit tests to kernel tests, and closes the dependency-injection coverage gap with kernel smoke tests. Complements the drupal-testing family (which writes NEW tests). Use to…
Orchestrator for Drupal testing. Analyzes code, determines the correct test type, and delegates to the appropriate specialized skill. Covers the full test lifecycle: Unit, Kernel, Functional, FunctionalJavascript, Behat and Playwright. Use when writing tests, improving coverage, running test suites, or when the user…
Generates PHPUnit unit tests for Drupal 10/11 custom modules following community best practices. Covers services, plugins, forms, controllers, and event subscribers with proper mocking patterns. Uses PHPDoc annotations (not PHP 8 attributes) for Drupal 10+11 compatibility. Examples: - user: "write unit tests for my…
Executes Drupal Drush commands for cache clearing, database updates, module management, cron, watchdog logs, and site maintenance. Use when user needs any Drush operation. Use proactively after code changes to clear caches or run database updates. Examples: - user: "clear cache" -> run drush cr via ssh web - user…
Scaffolds a new Drupal 10/11 custom module with proper PSR-4 structure, services.yml, routing.yml, info.yml, permissions.yml, and config schema. Use when creating a new custom module or when user says "create module", "new module", "scaffold module". Examples: - user: "Create a module called eventmanager" -> scaffold…