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.
From cms-cultivatornpx claudepluginhub kanopi/claude-toolbox --plugin cms-cultivatorThis skill uses the workspace's default tool permissions.
Quick assistance with drupal.org contribution workflows, git commands, and merge request creation.
Activate this skill when the user:
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
# 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
{issue_number}-{description-slug}
Examples:
3456789-fix-validation-error
3456789-add-ckeditor5-support
3456789-update-documentation
Rules:
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
Issue #{issue_number}: {description}
Example:
Issue #3456789: Fix validation error in configuration form
# Push branch to issue fork
git push {project}-{issue_number} {branch_name}
# Example
git push paragraphs-3456789 3456789-fix-validation-error
# 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}
Issue forks must be created via the drupal.org web UI. This cannot be automated due to CAPTCHA protection.
https://www.drupal.org/project/{project}/issues/{issue_number}Note: This step cannot be done via command line or API.
git remote add {project}-{issue_number} git@git.drupal.org:issue/{project}-{issue_number}.git
git fetch {project}-{issue_number}
# 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}
# Make your code changes
# ...
# Stage and commit
git add .
git commit -m "Issue #{issue_number}: {description}"
git push {project}-{issue_number} {branch_name}
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
ls -la ~/.ssh/id_*.pub
ssh-keygen -t ed25519 -C "your-email@example.com"
cat ~/.ssh/id_ed25519.pubssh -T git@git.drupal.org
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"
Verify SSH key is added to git.drupalcode.org:
Verify issue fork exists:
Verify remote is correct:
git remote -v
# Should show: {project}-{issue} git@git.drupal.org:issue/{project}-{issue}.git
You must create the issue fork via drupal.org web UI first:
# If local branch exists
git checkout {existing_branch}
# If remote branch exists
git fetch {project}-{issue_number}
git checkout -b {branch} --track {project}-{issue_number}/{branch}
# Make additional changes
git add .
git commit -m "Issue #{issue_number}: Additional fixes"
# Push updates (existing MR updates automatically)
git push {project}-{issue_number} {branch_name}
Example 1: Quick Workflow Question
User: "How do I create a merge request for drupal.org?"
Skill response:
1. Clone the project
2. Create issue fork on drupal.org (click button in web UI - required manual step)
3. Add remote: `git remote add {project}-{issue} git@git.drupal.org:issue/{project}-{issue}.git`
4. Fetch: `git fetch {project}-{issue}`
5. Create branch: `git checkout -b {issue_number}-{description}`
6. Commit with: `Issue #{issue_number}: description`
7. Push: `git push {project}-{issue} {branch}`
8. Open MR creation URL from git output in browser
Example 2: Branch Naming Help
User: "What should I name my branch for issue 3456789?"
Skill response:
Use: `3456789-{brief-description}`
Examples:
- `3456789-fix-validation`
- `3456789-update-docs`
- `3456789-add-feature`
Create it with:
```bash
git checkout -b 3456789-your-description
**Example 3: Remote Setup Help**
User: "I created the issue fork, now what?"
Skill response: Add the issue fork as a remote:
git remote add {project}-{issue_number} git@git.drupal.org:issue/{project}-{issue_number}.git
git fetch {project}-{issue_number}
Replace {project} with your project name and {issue_number} with your issue number.
Then push your branch:
git push {project}-{issue_number} {your-branch-name}
## Resources
- [Drupal.org GitLab Guide](https://www.drupal.org/docs/develop/git/using-gitlab-to-contribute-to-drupal)
- [Creating Issue Forks](https://www.drupal.org/docs/develop/git/using-gitlab-to-contribute-to-drupal/creating-issue-forks)
- [git.drupalcode.org](https://git.drupalcode.org)
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.