mcpField
D
drupal-config

drupal-config

github.com/edutrulCloud & DevOps7350 installsUpdated 21w ago
Repository

About drupal-config

A skill for managing Drupal configuration with Drush and Config Split. It documents import/export workflows, environment-specific configuration, troubleshooting, and safe remote-import practices.

Key features

  1. 01Exports and imports active configuration
  2. 02Distinguishes complete and partial splits
  3. 03Lists Config Split commands
  4. 04Provides import troubleshooting guidance
  5. 05Shows safe remote inspection patterns

Use cases

  1. 01Previewing configuration changes before import
  2. 02Keeping environment-specific settings in splits
  3. 03Diagnosing configuration removed during export

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-config

After installing, type/drupal-configin Claude Code to confirm it loaded.

Bundled filesREADME.mdreferences/full-guide.md

Details

From the project README

Drupal Configuration Management

Safety: Avoid Accidental Remote Imports

Remote drush may default to --yes and auto-confirm cim. Always use safe patterns:

# SAFE — preview only
ssh user@remote "drush cim --no --diff"
ssh user@remote "drush config:get config.name"
ssh user@remote "drush config:status"

# DANGEROUS — may auto-import
ssh user@remote "drush cim --diff"

Import / Export

ddev drush cex               # Export active config → YAML files
ddev drush cim               # Import YAML files → active config
ddev drush cim --no --diff   # Preview only (no import)
ddev drush config:status     # Show pending changes (read-only)

Config Splits

Complete vs Partial — CRITICAL distinction
TypeBehaviorUse for
CompleteConfig exists ONLY in that environmentModules on/off (devel, stage_file_proxy)
PartialBase config everywhere, different VALUESAPI keys, SMTP, search server URLs

Complete split: config is removed from config/sync/ and lives only in config/{split}/. Partial split: config stays in config/sync/, overrides live in config/{split}/config_split.patch.*.yml.

Split Commands
ddev drush config-split:status            # List splits and active state
ddev drush csex {split-name}              # Export specific split
ddev drush csim {split-name}              # Import specific split
ddev drush config-split:activate {name}
ddev drush config-split:deactivate {name}
Updating a Split Definition

Changes must be in active config (DB), not just YAML files:

# Edit YAML, then import to activate
ddev drush config:import --partial
# OR set via PHP eval
ddev drush php:eval "\$c = \Drupal::configFactory()->getEditable('config_split.config_split.local'); \$c->set('partial_list', ['config.name']); \$c->save();"
ddev drush cex

Troubleshooting

Config deleted from config/sync/ on export

Root cause: Config is in complete_list instead of partial_list.

# Diagnose
grep -A10 "complete_list:" config/sync/config_split.config_split.local.yml
grep -A10 "partial_list:" config/sync/config_split.config_split.local.yml

Fix: move the item from complete_list to partial_list in the split YAML, then import and re-export.

Config won't import
ddev drush config:import --skip-config=system.site   # Skip specific locked config
ddev drush config:import --skip-modules=config_split  # Ignore splits
Split not activating
ddev drush config-split:status
ddev drush config-split:activate {split-name}
ddev drush cex

Intent → Command Mapping

User IntentCommand
Preview config changesdrush cim --no --diff
Import configdrush cim
Export configdrush cex

Related Commands

Read-only: config:get, config:status Export: cex / config:export Import: cim --no --diff (preview), cim (apply) Splits: config-split:status, csex, csim, config-split:activate

Deep Dive

  • full-guide.md — Extended reference on Config Split 2.0, patch files, export/import internals

Comments

Markdown supported