From cms-cultivator
Creates and lists merge requests for Drupal.org projects via git.drupalcode.org. Automates cloning, branching, and pushing for issue-based MRs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cms-cultivator:drupal-mrThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create and manage merge requests for drupal.org projects via git.drupalcode.org.
Create and manage merge requests for drupal.org projects via git.drupalcode.org.
This skill has external side effects:
~/.cache/drupal-contrib/{project}/One manual interaction required — Issue fork creation must be done via the drupal.org web UI (CAPTCHA-protected).
/drupal-mr {project} {issue_number} — Create MR/drupal-mr list [{project}] — List MRsSSH key added to git.drupalcode.org:
~/.ssh/id_ed25519.pub)ssh -T [email protected]HTTPS fallback (if SSH port 22 is blocked):
read_repository, write_repositoryWhen Task() is unavailable:
ssh -T [email protected]git clone [email protected]:project/{project}.git ~/.cache/drupal-contrib/{project}
cd ~/.cache/drupal-contrib/{project}
https://www.drupal.org/project/{project}/issues/{issue_number}git remote add {project}-{issue_number} [email protected]:issue/{project}-{issue_number}.git
git fetch {project}-{issue_number}
git checkout -b {issue_number}-{description-slug}
git add .
git commit -m "Issue #{issue_number}: {description}"
git push {project}-{issue_number} {branch_name}
# Git outputs MR creation URL — open in browser to complete
When running in Claude Code with Task() and git/ssh available:
Task(cms-cultivator:drupalorg-mr-specialist:drupalorg-mr-specialist,
prompt="Execute the drupal-mr command with arguments: {arguments}. Check prerequisites (SSH key), clone project to ~/.cache/drupal-contrib/ if needed, guide user through manual issue fork creation, set up branch, push changes, and provide MR creation URL. Return MR URL and next steps.")
The agent handles git operations automatically, pausing for the one required manual step (issue fork creation).
{issue_number}-{description-slug}
Examples:
3456789-fix-validation-error
3456789-add-ckeditor5-support
All drupal.org projects clone to ~/.cache/drupal-contrib/:
~/.cache/drupal-contrib/
├── paragraphs/
├── webform/
└── easy_lqp/
This location persists across sessions and avoids conflicts with your main projects.
cd ~/.cache/drupal-contrib/{project}
git fetch --all
git checkout {branch_name}
# Make changes
git add . && git commit -m "Issue #{issue}: additional fixes"
git push {project}-{issue_number} {branch_name}
# MR updates automatically
**Merge Request Ready**
**Project**: paragraphs
**Issue**: #3456789
**Branch**: 3456789-fix-validation-error
**Local repo**: ~/.cache/drupal-contrib/paragraphs/
**Next Steps**:
1. Complete MR creation via the URL in git push output
2. Update drupal.org issue status to "Needs review"
3. Respond to review feedback
npx claudepluginhub kanopi/claude-toolbox --plugin cms-cultivatorGuides users through drupal.org contribution workflows: git clone, branch naming, issue fork setup, commit messages, and merge request creation.
Manages GitLab merge requests via glab: create from commits, list/view/checkout, merge with auto-handling, block MRs, handle reviews/discussions/stacks.
Automates GitCode open-source repo merge workflow: commit → push → issue → PR → pipeline → review → /lgtm & /approve → merge.