# Performance Check

> This skill should be used when the user asks to "check performance", "mac is slow", "why is my mac slow", "cpu usage", "memory pressure", or "what's slowing me down". Reports load average, memory pressure, swap, top processes, thermal state, and battery health, then writes a JSON result to ~/.mac-guardian/data/.

- Skill: `dennisonbertram/performance-check` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dennisonbertram/performance-check`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dennisonbertram/performance-check/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dennisonbertram (https://skillmd.com/u/dennisonbertram)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dennisonbertram/performance-check

---


# performance-check

Captures a point-in-time performance snapshot on macOS.

## When to invoke

Trigger on phrases like: "check performance", "mac is slow", "why is my mac slow", "cpu usage", "memory pressure", "what's slowing me down".

## What to check

**1. Load averages** — `sysctl -n vm.loadavg` or `uptime`. Compare 1-minute load to `sysctl -n hw.ncpu`.
- load / ncpu < 0.7: `ok`
- 0.7–1.0: `info`
- 1.0–2.0: `warn`
- >2.0: `critical`

**2. Memory pressure** — `vm_stat` (pages free / active / inactive / speculative / wired). Compute pressure ratio: `(free + inactive) / total`.
- >20% free+inactive: `ok`
- 10–20%: `info`
- 5–10%: `warn`
- <5%: `critical`

Also parse `memory_pressure` output when available (`memory_pressure 2>/dev/null | tail -5`).

**3. Swap usage** — `sysctl vm.swapusage`. Parse "used = X.XXM".
- used = 0: `ok`
- used < 512 MB: `info`
- 512 MB – 2 GB: `warn`
- > 2 GB: `critical`

**4. Top 10 CPU consumers** — `top -l 1 -n 10 -o cpu -stats pid,command,cpu,mem`. Record rows.

**5. Top 10 memory consumers** — `top -l 1 -n 10 -o mem -stats pid,command,cpu,mem`. Record rows.

**6. Thermal state** — `pmset -g therm 2>/dev/null`. Non-zero `CPU_Speed_Limit` = `warn` with the value.

**7. Battery status (laptops only)** — `pmset -g batt`. Parse percentage, `AC Power`/`Battery Power`, charging state. Low percentage on battery with no charger: `info`.

**8. Battery health (laptops only)** — `ioreg -rc AppleSmartBattery 2>/dev/null`. Extract `CycleCount`, `MaxCapacity`, `DesignCapacity`, `AppleRawMaxCapacity`. Compute `MaxCapacity/DesignCapacity × 100`:
- ≥ 85%: `ok`
- 75–85%: `info`
- 60–75%: `warn`
- < 60%: `critical`
Skip gracefully on desktops.

**9. Power summary** — `system_profiler SPPowerDataType 2>/dev/null | head -60` in raw.

**10. Uptime** — `uptime`. Uptime > 14 days: `info` "Consider rebooting; uptime N days."

## Output contract

Standard envelope. Write to `~/.mac-guardian/data/performance-check-<ISOdate>.json`.

Summary example: "Load 1.32 / 10, 18% memory free, swap 0.0 MB, battery health 92%."

## Handoff

- On direct invocation: `bash ${CLAUDE_PLUGIN_ROOT}/scripts/render-single.sh performance-check`.
- When invoked by `daily-health-report`, return JSON path only.

## Safety

- Read-only. Do not kill processes. Do not change pmset settings.
- No `sudo`.

