| name | drupal-tooling |
| description | Drupal development tooling skill for DDEV local environments and Drush command-line operations (Drupal 8-11+). Use when working with Docker-based development environments, Drush commands, deployment workflows, or site management tasks. |
Drupal Development Tooling
Overview
Enable expert-level Drupal development tooling capabilities with comprehensive guidance for DDEV Docker-based local development environments and Drush command-line operations for Drupal 8, 9, 10, and 11+.
When to Use This Skill
Invoke this skill when working with:
- DDEV operations: Starting, managing, or configuring local development environments
- Drush commands: Site management, configuration, cache operations
- Database management: Import/export, snapshots, migrations
- Deployment workflows: Configuration sync, database updates
- Development setup: Project initialization, environment configuration
- Troubleshooting: Debugging environment or command-line issues
Core Capabilities
1. DDEV Local Development
Manage Docker-based local Drupal environments efficiently:
Project initialization:
ddev config --project-type=drupal10 --docroot=web --create-docroot
ddev start
ddev composer create drupal/recommended-project
ddev drush site:install standard --account-name=admin --account-pass=admin
Daily operations:
ddev start
ddev stop
ddev restart
ddev ssh
ddev launch
ddev logs
ddev logs -f
Database operations:
ddev import-db --src=database.sql.gz
ddev export-db --file=backup.sql.gz --gzip
ddev snapshot
ddev snapshot restore
ddev mysql
Reference documentation:
references/ddev.md - Complete DDEV reference
2. Drush Command-Line Management
Execute site management tasks efficiently:
Cache management:
ddev drush cr
ddev drush cache:clear css-js
ddev drush cache:clear render
Configuration management:
ddev drush config:export
ddev drush cex
ddev drush config:import
ddev drush cim
ddev drush config:get system.site
ddev drush cget system.site
ddev drush config:set system.site name "My Site"
ddev drush cset system.site name "My Site"
Module management:
ddev drush pm:enable mymodule -y
ddev drush en mymodule -y
ddev drush pm:uninstall mymodule -y
ddev drush pmu mymodule -y
ddev drush pm:list
ddev drush pml
ddev drush pm:download webform
Database updates:
ddev drush updatedb -y
ddev drush updb -y
User management:
ddev drush user:login
ddev drush uli
ddev drush uli admin
ddev drush user:create newuser --mail="user@example.com" --password="pass"
ddev drush user:password admin "newpassword"
Reference documentation:
references/drush.md - Complete Drush reference
3. Development Workflows
Common development and deployment workflows:
Standard deployment:
ddev drush updb -y
ddev drush cim -y
ddev drush cr
ddev drush updb -y && ddev drush cim -y && ddev drush cr
Fresh site setup:
git clone <repo> myproject
cd myproject
ddev start
ddev composer install
ddev import-db --src=database.sql.gz
ddev import-files --src=files.tar.gz
ddev drush cr
ddev launch
Theme/module development:
ddev start
ddev drush cr
ddev exec npm run watch
ddev drush watchdog:tail
4. Code Generation
Use Drush generators to scaffold code:
ddev drush generate module
ddev drush generate controller
ddev drush generate form
ddev drush generate plugin:block
ddev drush generate service
ddev drush generate theme
ddev drush generate hook
ddev drush generate --help
5. Debugging & Troubleshooting
Debug and monitor your Drupal site:
Enable Xdebug:
ddev xdebug on
ddev xdebug off
ddev xdebug status
View logs:
ddev drush watchdog:show
ddev drush watchdog:tail
ddev logs -s web
ddev logs -s db
Project information:
ddev describe
ddev drush status
ddev drush st
ddev list
Best Practices
DDEV Best Practices
- Run tools through DDEV: Always use
ddev drush, ddev composer, ddev npm
- Snapshots: Create before risky operations
- Performance: Enable Mutagen (Mac) or NFS for better file sync
- Xdebug: Only enable when debugging
- Version control: Commit
.ddev/config.yaml to share configuration
- Clean shutdown: Use
ddev stop before system shutdown
Drush Best Practices
- Aliases: Use short aliases (
cr, cex, cim, uli)
- Automation: Add
-y flag to skip confirmations
- Custom commands: Create for repetitive tasks
- Site aliases: Configure for multi-environment management
- Chaining: Use
&& for sequential operations
- Error handling: Check exit codes in scripts
Deployment Best Practices
- Order: Run updates (
updb) before config import (cim)
- Testing: Test deployment workflow in staging first
- Backups: Always backup before major changes
- Rollback plan: Have a way to revert changes
- Monitoring: Check logs after deployment
Common Operations
Initialize DDEV for Existing Project
cd existing-project
ddev config
ddev start
ddev composer install
ddev import-db --src=backup.sql.gz
ddev drush cr
Pull From Remote Environment
ddev pull @production
ddev drush sql:sync @production @self
ddev rsync @production:%files @self:%files
Update Drupal Core
ddev snapshot
ddev composer update drupal/core "drupal/core-*" --with-all-dependencies
ddev drush updb -y
ddev drush cr
Enable Development Settings
cp sites/example.settings.local.php sites/default/settings.local.php
ddev drush config:set system.performance css.preprocess 0 -y
ddev drush config:set system.performance js.preprocess 0 -y
ddev drush cr
Troubleshooting
DDEV Issues
Containers won't start:
docker ps
ddev restart
ddev poweroff
ddev start
ddev restart --clean
Port conflicts:
ddev describe
ddev restart
Permission issues:
ddev exec chmod -R 755 web/sites/default/files
ddev exec chown -R www-data:www-data web/sites/default/files
Drush Issues
Drush not found:
ddev drush status
Configuration sync failures:
ddev drush config:status
ddev drush cim -y --partial
ddev drush config:get system.site
Database update failures:
ddev drush updb -v
ddev drush updatedb:status
ddev drush watchdog:show
Performance Optimization
DDEV Performance (Mac)
Enable Mutagen:
ddev config --mutagen-enabled
ddev restart
Enable NFS:
ddev config --nfs-mount-enabled
ddev restart
Drush Performance
Disable Xdebug when not debugging:
ddev xdebug off
Use specific commands instead of aliases:
ddev drush cache:rebuild
ddev drush cr
Resources
Reference Documentation
Searching References
grep -r "ddev snapshot" references/
grep -r "config:import" references/
grep -r "deployment" references/
Common Use Cases
Local Development Setup
- Clone project:
git clone <repo>
- Configure DDEV:
ddev config
- Start:
ddev start
- Install dependencies:
ddev composer install
- Import DB:
ddev import-db --src=db.sql.gz
- Clear cache:
ddev drush cr
- Launch:
ddev launch
Deploying Configuration Changes
- Export config:
ddev drush cex -y
- Commit to git:
git add config/ && git commit
- Push:
git push
- On server:
drush cim -y && drush cr
Debugging Performance Issues
- Enable Xdebug:
ddev xdebug on
- Set breakpoints in IDE
- Trigger request:
ddev launch
- Step through code
- Disable Xdebug:
ddev xdebug off
Version Compatibility
DDEV Versions
- DDEV v1.21+ recommended
- Supports all Drupal versions (8-11+)
- Update with:
brew upgrade ddev (Mac) or platform equivalent
Drush Versions
- Drush 10+ for Drupal 8.4+
- Drush 11+ for Drupal 9.0+
- Drush 12+ for Drupal 10.0+
- Install via Composer (project-specific)
See Also