browser-validator
Automatically validate implementations in real browsers after code is written or when user says "test this", "test what you built…
List and clean up cloned drupal.org repositories in the local cache (~/.cache/drupal-contrib/). Invoke when user asks to list, remove, or clean up cloned Drupal contrib repos, says \"cleanup drupal repos\", \"remove cloned drupal projects\", or uses /drupal-cleanup. Has side
Claude Code
$ npx -y skills add kanopi/cms-cultivator --skill drupal-cleanup --agent claude-code
Codex
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a codex -y
Cursor
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a cursor -y
Gemini CLI
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a gemini-cli -y
GitHub Copilot
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a github-copilot -y
OpenCode
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a opencode -y
Windsurf
$ npx skills add kanopi/cms-cultivator --skill drupal-cleanup -a windsurf -y
name: drupal-cleanup description: "List and clean up cloned drupal.org repositories in the local cache (~/.cache/drupal-contrib/). Invoke when user asks to list, remove, or clean up cloned Drupal contrib repos, says \"cleanup drupal repos\", \"remove cloned drupal projects\", or uses /drupal-cleanup. Has side effects: permanently deletes repository clones. Requires user confirmation before deletion." disable-model-invocation: true
List and clean up cloned drupal.org repositories in `~/.cache/drupal-contrib/`.
**Removing a repository permanently deletes the local clone** including:
**The skill checks for uncommitted changes and unpushed branches before deletion and requires explicit user confirmation.** Once deleted, the repository must be re-cloned.
When Bash tools are unavailable:
**For listing**: 1. Ask user to run: `ls -la ~/.cache/drupal-contrib/` and share output 2. Provide analysis and recommendations based on shared output 3. Guide cleanup decisions
**For removal (requires Bash in Tier 2)**:
When running in Claude Code with Bash available:
**Listing repos**:
# Check if cache directory exists ls -la ~/.cache/drupal-contrib/ 2>/dev/null || echo "No repos cloned yet" # Get size and details of each project for dir in ~/.cache/drupal-contrib/*/; do project=$(basename "$dir") size=$(du -sh "$dir" 2>/dev/null | cut -f1) branches=$(cd "$dir" && git branch | wc -l) status=$(cd "$dir" && git status --short | wc -l) echo "$project | $size | $branches branches | $status modified files" done
**Removing specific project**: 1. Check for uncommitted changes: `cd ~/.cache/drupal-contrib/{project} && git status --short` 2. Check for unpushed branches: `git log --branches --not --remotes --oneline | wc -l` 3. **Present findings to user** 4. **⛔ STOP: Warn about irreversible deletion and require confirmation**:
⚠️ This will permanently delete ~/.cache/drupal-contrib/{project}/
Status: {uncommitted changes / unpushed commits if any}
Reply "yes" to proceed, "no" to cancel.5. **After "yes" confirmation only**: `rm -rf ~/.cache/drupal-contrib/{project}/`
**Removing all repos**: 1. Show summary: all projects, total size, any with uncommitted work 2. **⛔ STOP: Require explicit confirmation**:
⚠️ This will permanently delete ALL repos in ~/.cache/drupal-contrib/:
{list of projects with their sizes}
Total: {X} MB across {N} projects
{Warning if any have uncommitted changes}
Reply "yes, delete all" to proceed, or "no" to cancel.3. **After "yes, delete all" confirmation only**: `rm -rf ~/.cache/drupal-contrib/`
**Cloned Drupal.org Repositories** Location: ~/.cache/drupal-contrib/ | Project | Size | Branches | Modified | Status | |---------|------|----------|----------|--------| | paragraphs | 45 MB | 3 | 2 days ago | Clean | | webform | 120 MB | 1 | 1 week ago | Clean | | easy_lqp | 12 MB | 2 | Today | ⚠️ Modified | **Total**: 177 MB across 3 projects **To remove a repo**: Use the drupal-cleanup skill with the project name **To remove all**: Use the drupal-cleanup skill with --all flag
Before any deletion, this skill checks: 1. **Uncommitted changes** — Modified files not yet staged 2. **Unstaged files** — New files not tracked by git 3. **Unpushed branches** — Local commits not pushed to issue fork
If any are found, the user is warned before proceeding.
Consider cleaning up when:
**Before cleanup, ensure**:
# Via drupal-mr skill (re-clones automatically):
# "Create MR for {project} issue {number}"
# Or manually:
git clone git@git.drupal.org:project/{project}.git ~/.cache/drupal-contrib/{project}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.