browser-validator
Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built in the browser", "check it in…
Full drupal.org contribution workflow — create an issue and set up a merge request together. Invoke when user wants to contribute to a Drupal module, says \"contribute to drupal.org\", \"create a drupal.org issue and MR\", or uses /drupal-contribute. Requires user interaction at
$ npx -y skills add kanopi/cms-cultivator --skill drupal-contribute --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/drupal-contributeContext preview
The summary Claude sees to decide when to auto-load this skill.
Full drupal.org contribution workflow — create an issue and set up a merge request together. Invoke when user wants to contribute to a Drupal module, says \"contribute to drupal.org\", \"create a drupal.org issue and MR\", or uses /drupal-contribute. Requires user interaction at
name: drupal-contribute description: "Full drupal.org contribution workflow — create an issue and set up a merge request together. Invoke when user wants to contribute to a Drupal module, says \"contribute to drupal.org\", \"create a drupal.org issue and MR\", or uses /drupal-contribute. Requires user interaction at two manual steps (CAPTCHA-protected issue creation and issue fork creation). Has side effects: clones repos to ~/.cache/drupal-contrib/ and creates drupal.org issues." disable-model-invocation: true
Full drupal.org contribution workflow — create an issue and set up a merge request in one workflow.
**This skill has external side effects:**
**Two manual interaction points are required** (CAPTCHA protection prevents automation): 1. You paste and submit the issue on drupal.org 2. You click "Create issue fork" on the issue page
**If issue already exists**: `/drupal-contribute paragraphs 3456789` (skips to MR setup)
When Task() is unavailable:
1. **Gather issue details** — Ask user for: issue type, title, description, Drupal/module version, priority 2. **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 tests3. **Display for manual submission** — Show complete formatted content for copy/paste 4. **Provide issue URL** — `https://www.drupal.org/node/add/project-issue/{project}` 5. **⛔ STOP: User pastes content and submits issue, then replies with issue number** 6. **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}7. **⛔ STOP: User creates issue fork, replies "done"** 8. **Provide push command**:
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 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.")1. Agent generates issue content and opens browser 2. **You paste and submit** — reply with issue number 3. Agent opens issue page for fork creation 4. **You click "Create issue fork"** — reply "done" 5. Agent sets up branch and remote 6. Make your code changes in `~/.cache/drupal-contrib/{project}/` 7. Commit and push (git outputs MR URL automatically) 8. Open MR URL in browser to complete creation
Use `/drupal-contribute {project} {issue_number}` to skip issue creation.
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.
Repo: kanopi/cms-cultivator
Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built in the browser", "check it in…
Run the right linting, formatting, and static-analysis commands after changing code, and check it against PHPCS, ESLint, WordPress Coding Standards, or Drupal…
Automatically generate conventional commit messages when user has staged changes and mentions committing. Analyzes git diff and status to create properly…
Generate and maintain patches for Composer-installed packages (Drupal contrib modules, WordPress packages, PHP libraries) using cweagans/composer-patches.…
Automatically analyze test coverage when user asks which code is tested, mentions coverage gaps, or shows code asking about testing. Identifies untested code…
Deterministic cleanup of DDEV and Docker disk usage on OrbStack, Docker Desktop, or any Docker provider. Safely reclaims space by removing orphaned Docker…