Skip to content
Development
Skill

/drupalorg-contribution-helper

Quick help with drupal.org contribution workflows including git commands, branch naming, issue fork setup, and merge request creation. Invoke when user asks "how do I contribute to drupal.org?", "drupal.org git workflow", "issue fork", "drupal merge request", or needs help with

From plugin
cms-cultivator
1728 skills1 agent

Claude Code

$ npx -y skills add kanopi/cms-cultivator --skill drupalorg-contribution-helper --agent claude-code

SKILL.md

drupalorg-contribution-helper.SKILL.md
name: drupalorg-contribution-helper
description: Quick help with drupal.org contribution workflows including git commands, branch naming, issue fork setup, and merge request creation. Invoke when user asks "how do I contribute to drupal.org?", "drupal.org git workflow", "issue fork", "drupal merge request", or needs help with git.drupalcode.org commands.

Drupal.org Contribution Helper

Quick assistance with drupal.org contribution workflows, git commands, and merge request creation.

When to Use This Skill

Activate this skill when the user:

  • Asks "how do I contribute to drupal.org?"
  • Mentions "issue fork" or "drupal merge request"
  • Needs help with git.drupalcode.org commands
  • Asks about drupal.org branch naming conventions
  • Wants to understand the drupal.org contribution workflow

Quick Reference

drupalorg-cli Tool (Optional)

The `drupalorg-cli` package provides helpful shortcuts for drupal.org contribution:

# Install
curl -LO https://github.com/mglaman/drupalorg-cli/releases/latest/download/drupalorg.phar
chmod +x drupalorg.phar
sudo mv drupalorg.phar /usr/local/bin/drupalorg

# Create branch for issue (inside project directory)
drupalorg issue:branch 3456789

# Apply latest patch from issue
drupalorg issue:apply 3456789

# Generate patch from local changes
drupalorg issue:patch

# List project issues
drupalorg project:issues paragraphs

# Open issue in browser
drupalorg issue:link 3456789

Git Clone Commands

# Clone any drupal.org project
git clone git@git.drupal.org:project/{project_name}.git

# Examples
git clone git@git.drupal.org:project/paragraphs.git
git clone git@git.drupal.org:project/webform.git
git clone git@git.drupal.org:project/easy_lqp.git

Branch Naming Convention

{issue_number}-{description-slug}

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

**Rules**:

  • Start with issue number
  • Use hyphens (not underscores)
  • Keep description brief but descriptive
  • Maximum 255 characters

Issue Fork Remote

Remote naming follows `{project}-{issue}` convention to allow multiple issue forks per project:

# Add issue fork remote
git remote add {project}-{issue_number} git@git.drupal.org:issue/{project}-{issue_number}.git

# Examples
git remote add paragraphs-3456789 git@git.drupal.org:issue/paragraphs-3456789.git
git remote add easy_lqp-3456790 git@git.drupal.org:issue/easy_lqp-3456790.git

# Fetch from issue fork
git fetch {project}-{issue_number}

# Verify remotes
git remote -v

Commit Message Format

Issue #{issue_number}: {description}

Example:
Issue #3456789: Fix validation error in configuration form

Push to Issue Fork

# Push branch to issue fork
git push {project}-{issue_number} {branch_name}

# Example
git push paragraphs-3456789 3456789-fix-validation-error

Complete Workflow

1. Clone Project

# Clone to isolated location (recommended)
mkdir -p ~/.cache/drupal-contrib
git clone git@git.drupal.org:project/{project}.git ~/.cache/drupal-contrib/{project}
cd ~/.cache/drupal-contrib/{project}

2. Create Issue Fork (Manual Step Required)

Issue forks must be created via the drupal.org web UI. This cannot be automated due to CAPTCHA protection.

1. Go to: `https://www.drupal.org/project/{project}/issues/{issue_number}` 2. Click **"Create issue fork"** in the right sidebar 3. Wait for confirmation message (~10 seconds)

**Note**: This step cannot be done via command line or API.

3. Add Issue Fork Remote

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

4. Create Branch

# If branch already exists on fork, checkout tracking it:
git checkout -b '{issue_number}-{description}' --track {project}-{issue_number}/'{issue_number}-{description}'

# If creating new branch:
git checkout -b {issue_number}-{description}

5. Make Changes and Commit

# Make your code changes
# ...

# Stage and commit
git add .
git commit -m "Issue #{issue_number}: {description}"

6. Push to Issue Fork

git push {project}-{issue_number} {branch_name}

7. Create Merge Request

When you push, git outputs the MR creation URL:

remote: To create a merge request for {branch}, visit:
remote:   https://git.drupalcode.org/issue/{project}-{issue}/-/merge_requests/new?...

Open that URL in your browser to complete MR creation.

**Alternative: Via Web UI** 1. Go to issue page on drupal.org 2. Click "Compare" button 3. Follow MR creation flow

SSH Key Setup

Check for Existing Key

ls -la ~/.ssh/id_*.pub

Generate Key if Needed

ssh-keygen -t ed25519 -C "your-email@example.com"

Add Key to git.drupalcode.org

1. Go to: https://git.drupalcode.org/-/user_settings/ssh_keys 2. Copy your public key: `cat ~/.ssh/id_ed25519.pub` 3. Paste and save

Test Connection

ssh -T git@git.drupal.org

HTTPS Fallback (If SSH Port Blocked)

If your network blocks SSH port 22, use HTTPS with a personal access token:

# Create token at: https://git.drupalcode.org/-/user_settings/personal_access_tokens
# Required scopes: read_repository, write_repository

# For clone:
git clone https://{username}:{token}@git.drupalcode.org/project/{project}.git

# For issue fork remote:
git remote add {project}-{issue} \
  "https://{username}:{token}@git.drupalcode.org/issue/{project}-{issue}.git"

Troubleshooting

"Permission denied" on push

1. Verify SSH key is added to git.drupalcode.org:

  • Go to: https://git.drupalcode.org/-/user_settings/ssh_keys
  • Add your public key

2. Verify issue fork exists:

  • Check drupal.org issue page for "Issue fork" section

3. Verify remote is correct:

   git remote -v
   # Should show: {project}-{issue} git@git.drupal.org:issue/{project}-{issue}.git

"Issue fork not found"

You mus

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 drupalorg-contribution-helper.

Which coding agents can use drupalorg-contribution-helper?
drupalorg-contribution-helper 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.