browser-validator
Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built…
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
Claude Code
$ npx -y skills add kanopi/cms-cultivator --skill drupal-mr --agent claude-code
Codex
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a codex -y
Cursor
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a cursor -y
Gemini CLI
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a gemini-cli -y
GitHub Copilot
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a github-copilot -y
OpenCode
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a opencode -y
Windsurf
$ npx skills add kanopi/cms-cultivator --skill drupal-mr -a windsurf -y
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
Create and manage merge requests for drupal.org projects via git.drupalcode.org.
**This skill has external side effects:**
**One manual interaction required** — Issue fork creation must be done via the drupal.org web UI (CAPTCHA-protected).
**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):
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 completeWhen 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-supportAll 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
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.
Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built…
Run the right linting, formatting, and static-analysis commands after changing code, and check it against PHPCS, ESLint,…
Automatically generate conventional commit messages when user has staged changes and mentions committing. Analyzes git diff and…
Generate and maintain patches for Composer-installed packages (Drupal contrib modules, WordPress packages, PHP libraries) using…
Automatically analyze test coverage when user asks which code is tested, mentions coverage gaps, or shows code asking about…
Deterministic cleanup of DDEV and Docker disk usage on OrbStack, Docker Desktop, or any Docker provider. Safely reclaims space by…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.