From drupal-workflow
Loads Drupal conventions for translations (t(), PO files, Twig), CSS (BEM, libraries.yml, attach_library), and error handling (exceptions). Use for theming, i18n, or exceptions in Drupal 10+.
npx claudepluginhub gkastanis/drupal-workflow --plugin drupal-workflowThis skill uses the workspace's default tool permissions.
Load these conventions only when relevant to the current task.
Enforces Drupal 10/11 coding standards using PHPCS, PHPStan, naming conventions, validation commands, PHPDoc rules, and anti-pattern fixes. Use for code reviews, static analysis, and pre-commit checks.
Navigates to online dev guides for Drupal APIs, theming, Next.js, design systems, Tailwind tokens, CSS, and practices like SOLID/DRY/TDD/security. Fetches/matches raw Markdown proactively before design or coding.
Validates Drupal PHP, CSS, and JS against coding standards, SOLID/DRY principles, security practices before commits. Enforces Gate 1 quality gates using checklists and git diff.
Share bugs, ideas, or general feedback.
Load these conventions only when relevant to the current task.
t() or TranslatableMarkup./translations/*.po files with msgctxt.|t filter for strings, {% trans %} blocks for placeholders.msgctxt "my_module" / msgid "English" / msgstr "Translated"..parent .child), not parent containers.block__element--modifier strictly for custom classes.{{ attach_library('my_theme/component') }} for all assets.*.libraries.yml entry.NULL/FALSE returns.\Exception — catch the narrowest exception you can handle.// Good: specific exception, early return.
if (!$entity) {
throw new EntityNotFoundException("Entity $id not found.");
}
// Bad: silently swallowing errors.
try {
$result = $service->process();
} catch (\Exception $e) {
// Never do this.
}