drupal-contribute
Installation
SKILL.md
Drupal Contribute
Full drupal.org contribution workflow — create an issue and set up a merge request in one workflow.
⚠️ Side Effect Warning
This skill has external side effects:
- Creates a new issue on drupal.org (publicly visible)
- Clones the project repository to
~/.cache/drupal-contrib/{project}/ - Pushes to an issue fork on git.drupalcode.org
Two manual interaction points are required (CAPTCHA protection prevents automation):
- You paste and submit the issue on drupal.org
- You click "Create issue fork" on the issue page
Usage
- "Contribute to the paragraphs module — create an issue and MR"
- "Start a new drupal.org contribution for the webform module"
/drupal-contribute {project} [issue-number]
If issue already exists: /drupal-contribute paragraphs 3456789 (skips to MR setup)
Prerequisites
- drupal.org account (logged in via browser)
- SSH key added to git.drupalcode.org (for MR setup)
- Or HTTPS token from git.drupalcode.org (if SSH blocked)
Environment Detection
Tier 1 — Portable (Claude Desktop, Codex, any environment)
When Task() is unavailable:
- Gather issue details — Ask user for: issue type, title, description, Drupal/module version, priority
- Generate issue content — Format using official drupal.org HTML template:
<h3 id="summary-problem-motivation">Problem/Motivation</h3> {description} <h3 id="summary-proposed-resolution">Proposed resolution</h3> {resolution} <h3 id="summary-remaining-tasks">Remaining tasks</h3> - [ ] Confirm the bug - [ ] Write fix - [ ] Add tests - Display for manual submission — Show complete formatted content for copy/paste
- Provide issue URL —
https://www.drupal.org/node/add/project-issue/{project} - ⛔ STOP: User pastes content and submits issue, then replies with issue number
- Guide MR setup — Provide git commands:
git clone git@git.drupal.org:project/{project}.git ~/.cache/drupal-contrib/{project} cd ~/.cache/drupal-contrib/{project} # User creates issue fork at: https://www.drupal.org/project/{project}/issues/{issue_number} git remote add {project}-{issue} git@git.drupal.org:issue/{project}-{issue_number}.git git fetch {project}-{issue_number} git checkout -b {issue_number}-{description-slug} - ⛔ STOP: User creates issue fork, replies "done"
- Provide push command:
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 available:
Phase 1 — Issue Creation:
Task(cms-cultivator:drupalorg-issue-specialist:drupalorg-issue-specialist,
prompt="Create a new issue for {project}. Generate issue content using drupal.org HTML templates, copy title to clipboard, open browser, guide user through submission, and return the issue number.")
Phase 2 — MR Setup (after user provides issue number):
Task(cms-cultivator:drupalorg-mr-specialist:drupalorg-mr-specialist,
prompt="Create a merge request for {project} issue #{issue_number}. Clone repo, guide user through manual fork creation, set up branch, push changes, and provide MR creation URL.")
Contribution Workflow
New Contribution (Issue + MR)
- Agent generates issue content and opens browser
- You paste and submit — reply with issue number
- Agent opens issue page for fork creation
- You click "Create issue fork" — reply "done"
- Agent sets up branch and remote
- Make your code changes in
~/.cache/drupal-contrib/{project}/ - Commit and push (git outputs MR URL automatically)
- Open MR URL in browser to complete creation
Existing Issue (MR Only)
Use /drupal-contribute {project} {issue_number} to skip issue creation.
Related Skills
- drupal-issue — Issue operations only
- drupal-mr — MR operations only
- drupal-cleanup — Manage cloned repositories
- drupalorg-issue-helper — Issue template guidance
- drupalorg-contribution-helper — Git workflow guidance