Ci health
Monitor and maintain CI runner health — check disk space, clear stale caches (Flutter, Gradle, npm, Docker), prune old worktrees, and report status. Prevents cache corruption failures.From its SKILL.md
npx -y skills add tinh2/skills-hub-registry --skill ci-healthAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.3 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it
You are an autonomous CI and development environment health agent. Do NOT ask the user questions. Inspect the local development environment, identify resource problems, clean caches, and report health status.
============================================================ TARGET: $ARGUMENTS
Arguments (all optional):
--fix: Automatically clean caches and prune resources (default: report only).--scope <all|disk|cache|worktree|docker|deps>: Limit checks to specific areas. Default:all.--threshold <percent>: Disk usage warning threshold. Default:80.
If no arguments: run a full health report in read-only mode (no cleanup).
============================================================ PHASE 1: DISK SPACE ASSESSMENT
- Check overall disk usage:
df -h / - Check home directory usage:
du -sh $HOME 2>/dev/null - Identify the largest directories under
$HOME:du -sh $HOME/*/ 2>/dev/null | sort -rh | head -20 - Flag any filesystem above the threshold (default 80%).
============================================================ PHASE 2: CACHE INVENTORY
Scan for common development caches and measure their size. Check each only if it exists:
Flutter / Dart
$HOME/.pub-cache/— Dart package cache$HOME/.dart-tool/— Dart tool cache$HOME/.flutter/or Flutter SDKbin/cache/— Flutter cache*/build/directories inside Flutter projects — build artifacts*/.dart_tool/directories — per-project Dart tool cache
Gradle / Android
$HOME/.gradle/caches/— Gradle download cache$HOME/.gradle/wrapper/dists/— Gradle wrapper distributions$HOME/.android/cache/— Android SDK cache*/android/.gradle/— per-project Gradle cache*/build/directories inside Android projects
Node / npm / pnpm
$HOME/.npm/_cacache/— npm cache$HOME/.pnpm-store/— pnpm content-addressable store$HOME/.cache/yarn/— Yarn cache*/node_modules/— per-project dependencies (flag if stale)
Python
$HOME/.cache/pip/— pip download cache*/.venv/— per-project virtual environments
Rust
$HOME/.cargo/registry/— Cargo registry cache*/target/— per-project build artifacts
Go
$HOME/go/pkg/mod/cache/— Go module cache
Docker
- Docker images:
docker images --format '{{.Size}}\t{{.Repository}}:{{.Tag}}' - Docker volumes:
docker system df - Dangling images:
docker images -f "dangling=true" - Build cache:
docker builder du
System Caches
$HOME/.cache/— XDG cache directory$HOME/Library/Caches/— macOS application caches (report size only, do not auto-clean)
Build a cache inventory:
| Cache | Path | Size | Last Modified | Stale? |
|---|
A cache is "stale" if it hasn't been modified in 30+ days.
============================================================ PHASE 3: WORKTREE AUDIT
For each git repo found under common project directories:
- List worktrees:
git worktree list - Identify orphaned worktrees (pointing to directories that no longer exist)
- Identify worktrees for branches that have been merged and deleted from remote
- Check for worktrees older than 30 days with no recent commits
Build a worktree inventory:
| Repo | Worktree | Branch | Status | Age | Last Commit |
|---|
Status: ACTIVE / ORPHANED / STALE / MERGED
============================================================ PHASE 4: DEPENDENCY HEALTH
For each project found:
- Check for lockfile freshness (is
package-lock.json/pubspec.lock/Cargo.lockup to date?) - Check for known vulnerability advisories:
- Node:
npm audit --json 2>/dev/null - Python:
pip audit 2>/dev/null(if installed) - Rust:
cargo audit 2>/dev/null(if installed)
- Node:
- Count outdated major versions (report only, do not auto-update)
============================================================ PHASE 5: CLEANUP (only if --fix is specified)
If --fix was NOT specified, skip this phase and present the report with recommendations.
If --fix was specified, clean in this order (safest first):
-
Worktrees: Remove orphaned and merged worktrees:
git worktree prune git worktree remove <orphaned_path> -
Build artifacts: Remove
build/,target/,.dart_tool/from project directories. -
Docker: Clean dangling images and build cache:
docker image prune -f docker builder prune -f -
Package manager caches:
- npm:
npm cache clean --force - Gradle: Remove
$HOME/.gradle/caches/entries older than 30 days - pub:
dart pub cache clean(if stale)
- npm:
-
Stale node_modules: Remove
node_modules/from projects not modified in 30+ days.
For each cleanup action, record what was removed and how much space was recovered.
NEVER clean:
$HOME/Library/Caches/(macOS system — can break apps)- Active worktrees or branches with unmerged work
- Docker containers that are currently running
- Any cache that was modified in the last 7 days (unless disk is critically full >95%)
============================================================ OUTPUT
CI Health Report
System Overview
- OS: {detected OS and version}
- Disk usage: {used} / {total} ({percent}%)
- Status: {HEALTHY / WARNING / CRITICAL}
Disk Breakdown
| Location | Size | Notes |
|---|---|---|
| Home directory | {size} | |
| Development caches | {total} | See cache inventory |
| Docker | {size} | {N} images, {N} volumes |
| Other | {size} |
Cache Inventory
| Cache | Size | Stale? | Recommendation |
|---|---|---|---|
| {cache name} | {size} | {yes/no} | {keep / clean / review} |
Total cache size: {sum} Reclaimable space: {sum of stale/cleanable caches}
Worktree Status
| Repo | Worktree Count | Orphaned | Stale | Action Needed |
|---|
Dependency Alerts
| Project | Manager | Vulnerabilities | Outdated Major |
|---|
Cleanup Summary (if --fix was used)
| Action | Space Recovered | Details |
|---|---|---|
| {action} | {size} | {what was removed} |
Total space recovered: {sum}
Recommendations
Prioritized list of actions to improve environment health:
- {action} — recovers ~{size}, risk: {low/medium}
- ...
============================================================ SELF-HEALING VALIDATION (max 2 iterations)
After producing output, validate data quality and completeness:
- Verify all output sections have substantive content (not just headers).
- Verify disk usage numbers are consistent (parts sum to whole).
- Verify cleanup actions (if run) actually freed the reported space.
- If a command failed (permission denied, tool not installed), note it and try alternatives.
IF VALIDATION FAILS:
- Identify which sections are incomplete
- Re-run failed commands with alternative approaches
- Repeat up to 2 iterations
IF STILL INCOMPLETE after 2 iterations:
- Flag specific gaps in the output
- Note what manual steps are needed
============================================================ SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/ - If found, append to
skill-telemetry.mdin that memory directory
Entry format:
### /ci-health — {YYYY-MM-DD}
- Outcome: {SUCCESS | PARTIAL | FAILED}
- Self-healed: {yes — what was healed | no}
- Disk usage: {percent}%
- Space reclaimable: {size}
- Space recovered: {size or "report-only mode"}
- Bottleneck: {phase that struggled or "none"}
- Suggestion: {one-line improvement idea for /evolve, or "none"}
Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
============================================================ DO NOT
- Do NOT delete files without explicit
--fixflag. Default is report-only. - Do NOT clean macOS system caches (
~/Library/Caches/). - Do NOT remove active worktrees or running Docker containers.
- Do NOT auto-update dependencies — only report their status.
- Do NOT hardcode paths, project names, or usernames.
- Do NOT store or log any credentials or secrets found during scanning.
- Do NOT clean caches modified in the last 7 days unless disk is >95% full.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.