Agent Skills: Mac Health Check

Quick Mac system health check with battery, RAM, CPU status and actionable recommendations. Use when user mentions "mac health", "mac status", "mac performance", "battery check", "ram usage", "what's eating memory", "should I kill any process", or "mac running slow".

UncategorizedID: dparedesi/agent-global-skills/mac-health

Install this agent skill to your local

pnpm dlx add-skill https://github.com/dparedesi/agent-global-skills/tree/HEAD/mac-health

Skill Files

Browse the full folder contents for mac-health.

Download Skill

Loading file tree…

mac-health/SKILL.md

Skill Metadata

Name
mac-health
Description
Quick Mac system health check with battery, RAM, CPU status and actionable recommendations. Use when user mentions "mac health", "mac status", "mac performance", "battery check", "ram usage", "what's eating memory", "should I kill any process", or "mac running slow".

Mac Health Check

Why? Quickly diagnose if your Mac is struggling and get actionable fixes without digging through Activity Monitor.

Quick Start

"check my mac health" β†’ battery, RAM, CPU summary + recommendations

Workflow

Step 1: Gather System Metrics

Run these commands in parallel:

# Battery status
pmset -g batt

# RAM overview (total + usage)
system_profiler SPHardwareDataType | grep "Memory"
vm_stat

# Top processes by memory (top 5)
ps aux -m | head -6

# Top processes by CPU (top 5)  
ps aux -r | head -6

# Network speed (built-in macOS tool)
networkQuality

[!NOTE] Validation checkpoint: Verify all commands succeeded before proceeding. If pmset returns nothing, you're on a desktop Mac β€” skip battery. If vm_stat fails, fall back to top -l 1 for memory info.

Step 2: Format Concise Output

Present as a brief summary, NOT tables. Example format:

πŸ”‹ Battery: 73% (discharging, ~20h remaining)
πŸ’Ύ RAM: 17.1GB / 24GB used (71%)
⚑ CPU: Light load
🌐 Network: ⬇️ 262 Mbps ⬆️ 26 Mbps (36ms latency)

Top memory: Amp (478MB), Passwords (320MB), Spotlight (310MB)
Top CPU: WindowServer (3.2%), Amp (2.1%), Finder (0.8%)

Step 3: Analyze & Recommend

[!TIP] Keep output concise β€” users want a quick health check, not a system report.

Apply these thresholds and provide recommendations:

Battery:

  • < 20%: "⚠️ Consider plugging in soon"
  • < 10%: "πŸ”΄ Critical β€” plug in now"

RAM:

  • > 85% used: "⚠️ Memory pressure high"
  • > 95% used: "πŸ”΄ System may slow down β€” consider closing apps"
  • Any single process > 2GB: Flag it for potential action

CPU:

  • Any process > 80% sustained: "⚠️ [Process] using significant CPU"
  • Any process > 150%: "πŸ”΄ [Process] may be stuck β€” consider force-quitting"

Network:

  • Download < 10 Mbps: "⚠️ Slow download speed"
  • Upload < 5 Mbps: "⚠️ Slow upload speed"
  • Latency > 100ms: "⚠️ High latency β€” may affect video calls"

Common recommendations: | Condition | Recommendation | |-----------|----------------| | mds_stores high CPU/RAM | "Spotlight indexing β€” will settle down" | | kernel_task high CPU | "Thermal throttling β€” check ventilation" | | WindowServer high | "GPU load from UI β€” normal if using many windows" | | Inactive app using >1GB | "Consider quitting [app] to free memory" |

Step 4: Offer Actions

[!CAUTION] Only offer to kill a process if it's clearly stuck (>150% CPU) or the user explicitly asks.

If issues found, offer:

  • "Want me to kill [process]?" (if clearly stuck)
  • "Should I check what's causing [issue]?"

If healthy:

  • End with "βœ… System looks healthy β€” no action needed"

Examples

Example 1: Healthy System

πŸ”‹ Battery: 73% (discharging, ~20h remaining)
πŸ’Ύ RAM: 17.1GB / 24GB (71%) β€” healthy
⚑ CPU: Light load (< 10% average)
🌐 Network: ⬇️ 262 Mbps ⬆️ 26 Mbps (36ms latency)

Top memory: Amp (478MB), Passwords (320MB), Spotlight (310MB)
Top CPU: WindowServer (1.0%), Amp (0.7%), Finder (0.3%)

βœ… System looks healthy β€” no action needed

Example 2: Low Battery + High RAM

πŸ”‹ Battery: 8% (discharging, ~45min remaining)
   πŸ”΄ Critical β€” plug in now!
πŸ’Ύ RAM: 22.8GB / 24GB (95%)
   πŸ”΄ Memory pressure critical β€” consider closing apps
⚑ CPU: Moderate load

Top memory: Chrome (4.2GB), Slack (1.8GB), Docker (1.5GB)
Top CPU: Chrome Helper (12%), Docker (8%), Spotlight (5%)

⚠️ Chrome using 4.2GB β€” consider closing unused tabs
⚠️ Docker using 1.5GB β€” quit if not needed

Want me to help close any of these?

Example 3: Stuck Process

πŸ”‹ Battery: 45% (charging)
πŸ’Ύ RAM: 14GB / 24GB (58%) β€” healthy
⚑ CPU: High load

Top memory: Xcode (2.1GB), Simulator (890MB), Safari (650MB)
Top CPU: node (187%), Xcode (45%), coreaudiod (12%)

πŸ”΄ node at 187% CPU β€” likely stuck or in infinite loop
   Process running for 8+ minutes at this level

Want me to kill the stuck node process (PID 12847)?

Troubleshooting

| Issue | Cause | Fix | |-------|-------|-----| | pmset returns nothing | No battery (desktop Mac) | Skip battery section | | vm_stat weird numbers | Values are in pages | Multiply by 16384 / 1048576 for MB | | Process names truncated | ps default column width | Use ps aux -m -o pid,rss,comm for full names | | RAM numbers don't add up | macOS uses compressed/cached memory | Focus on "active + wired" as true usage | | High CPU but system feels fine | Brief spikes are normal | Only flag if sustained >30 seconds |


Quality Rules

Output Validation Checklist

Before presenting results, verify:

  • [ ] All four sections present (Battery, RAM, CPU, Network)
  • [ ] Percentages calculated correctly (used/total Γ— 100)
  • [ ] Top processes listed for both memory AND CPU
  • [ ] Recommendations match thresholds (not arbitrary)
  • [ ] Emojis used consistently (πŸ”‹πŸ’Ύβš‘πŸŒ for sections, βš οΈπŸ”΄βœ… for status)

Anti-Patterns to Avoid

| Don't | Do Instead | |-------|------------| | Show raw vm_stat output | Convert pages to MB/GB | | List 10+ processes | Top 3-5 only | | Use technical jargon | Plain language ("memory pressure" not "page faults") | | Recommend killing system processes | Only suggest for user apps | | Give advice without thresholds | Always cite the threshold being exceeded |

Naming Conventions

  • Battery states: "charging", "discharging", "fully charged", "not charging"
  • RAM levels: "healthy" (<85%), "high" (85-95%), "critical" (>95%)
  • CPU levels: "light" (<30%), "moderate" (30-60%), "high" (>60%)
  • Network levels: "slow" (download <10Mbps), "moderate" (10-50Mbps), "fast" (>50Mbps)

Testing

Evaluation Scenarios

| Scenario | Input Condition | Expected Behavior | |----------|-----------------|-------------------| | Healthy system | RAM <85%, CPU <30%, Battery >20% | Shows "βœ… System looks healthy" | | Low battery | Battery <10% | Shows πŸ”΄ critical warning | | High RAM | RAM >95% | Shows πŸ”΄ + suggests closing apps | | Stuck process | Any process >150% CPU | Offers to kill with PID | | Desktop Mac | No battery (iMac, Mac Mini, Mac Pro) | Skips battery section gracefully | | Memory hog | Single process >2GB | Flags for potential action | | Slow network | Download <10 Mbps | Shows ⚠️ slow download warning | | High latency | Latency >100ms | Shows ⚠️ latency warning |

Model Coverage

  • Tested on: Sonnet, Haiku
  • Edge cases verified: Desktop Mac (no battery), fresh boot (low usage), compile job (high CPU spike)

Validation Commands

# Verify battery section works
pmset -g batt

# Verify RAM calculation
vm_stat | head -5

# Verify process listing
ps aux -m | head -3

# Verify network test works
networkQuality