Skip to content
Development
Skill

/drupal-mr

Create or list merge requests for drupal.org projects via git.drupalcode.org. Invoke when user wants to create a merge request for a drupal.org issue, says \"create a drupal.org MR\", \"set up a merge request for issue\", or uses /drupal-mr. Has side effects: clones repos to

From plugin
cms-cultivator
1728 skills1 agent

Claude Code

$ npx -y skills add kanopi/cms-cultivator --skill drupal-mr --agent claude-code

SKILL.md

drupal-mr.SKILL.md
name: drupal-mr
description: "Create or list merge requests for drupal.org projects via git.drupalcode.org. Invoke when user wants to create a merge request for a drupal.org issue, says \"create a drupal.org MR\", \"set up a merge request for issue\", or uses /drupal-mr. Has side effects: clones repos to ~/.cache/drupal-contrib/ and pushes to git.drupalcode.org. Requires one manual step (issue fork creation via web UI)."
disable-model-invocation: true

Drupal MR

Create and manage merge requests for drupal.org projects via git.drupalcode.org.

⚠️ Side Effect Warning

**This skill has external side effects:**

  • Clones the project repository to `~/.cache/drupal-contrib/{project}/`
  • Pushes branches to git.drupalcode.org issue forks (public)

**One manual interaction required** — Issue fork creation must be done via the drupal.org web UI (CAPTCHA-protected).

Usage

  • "Create a merge request for paragraphs issue 3456789"
  • "Set up an MR for issue #3456789 in the webform module"
  • `/drupal-mr {project} {issue_number}` — Create MR
  • `/drupal-mr list [{project}]` — List MRs

Prerequisites

**SSH key** added to git.drupalcode.org: 1. Go to: https://git.drupalcode.org/-/user_settings/ssh_keys 2. Add your public key (`~/.ssh/id_ed25519.pub`) 3. Verify: `ssh -T git@git.drupal.org`

**HTTPS fallback** (if SSH port 22 is blocked):

  • Create token at: https://git.drupalcode.org/-/user_settings/personal_access_tokens
  • Scopes needed: `read_repository`, `write_repository`

Environment Detection

Tier 1 — Portable (Claude Desktop, Codex, any environment)

When Task() is unavailable:

1. **Check SSH connectivity** — Instruct user to verify: `ssh -T git@git.drupal.org` 2. **Clone repository** — Provide command:

   git clone git@git.drupal.org:project/{project}.git ~/.cache/drupal-contrib/{project}
   cd ~/.cache/drupal-contrib/{project}

3. **Open issue page** — URL: `https://www.drupal.org/project/{project}/issues/{issue_number}` 4. **⛔ STOP: User clicks "Create issue fork" in the right sidebar, then replies "done"** 5. **Set up remote and branch**:

   git remote add {project}-{issue_number} git@git.drupal.org:issue/{project}-{issue_number}.git
   git fetch {project}-{issue_number}
   git checkout -b {issue_number}-{description-slug}

6. **Guide code changes** — User makes their changes in the cloned repo 7. **Push and create MR**:

   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

Tier 2 — Claude Code Enhanced

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).

Branch Naming Convention

{issue_number}-{description-slug}

Examples:
3456789-fix-validation-error
3456789-add-ckeditor5-support

Clone Location

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.

Resuming Work on Existing MR

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

MR Success Output

**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

Related Skills

  • **drupal-issue** — Create issue before MR
  • **drupal-contribute** — Full workflow (issue + MR)
  • **drupal-cleanup** — Manage cloned repos
  • **drupalorg-contribution-helper** — Git workflow guidance
Read more
@kanopi
Ships withcms-cultivator

Specialist agents and auto-invoked skills for Drupal/WordPress development. Works in Claude Code, Claude Desktop, and OpenAI Codex. Full documentation: What changed in 2.0? CMS Cultivator now focuses on CMS development workflows.

1728 skills1 agent
Get the whole plugin

Stars on GitHub

Momentum

stars in total
17
Star history of kanopi/cms-cultivator on GitHub, a chart by star-history.com

Other skills on cms-cultivator.

browser-validator

browser-validator

Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built…

coverage-analyzer

coverage-analyzer

Automatically analyze test coverage when user asks which code is tested, mentions coverage gaps, or shows code asking about…

ddev-docker-cleanup

ddev-docker-cleanup

Deterministic cleanup of DDEV and Docker disk usage on OrbStack, Docker Desktop, or any Docker provider. Safely reclaims space by…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc11d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about drupal-mr.

Which coding agents can use drupal-mr?
drupal-mr installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.