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…
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
$ npx -y skills add kanopi/cms-cultivator --skill drupal-cleanup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/drupal-cleanupContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
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…