Development

Vitals

macOS system performance diagnostics — see how the machine is running and what's slowing it down: CPU/GPU/memory/energy hogs, thermal throttling, memory and swap pressure, disk usage, Spotlight indexing, launchd/startup load, via a deterministic read-only CLI with known-process interpretation (kernel_task, WindowServer, mds_stores)

03
Workflows
01
Tool
01
Reference
24
Triggers

Key Points

Not for network/wifi diagnostics, website or deployed-app health monitoring, or security scanning

Inside the Skill

The thinking, frameworks, and architecture that distinguish this skill from a generic version of the same task.

Quick Reference

bun ~/.claude/skills/Vitals/Tools/Vitals.ts check # fast snapshot (<1s)
bun ~/.claude/skills/Vitals/Tools/Vitals.ts hogs # live per-process CPU/energy (~3s)
bun ~/.claude/skills/Vitals/Tools/Vitals.ts full # everything (~4s)
# also: gpu · memory · disk · thermal · startup · --json · --top N

The tool is read-only by contract: it never kills, renices, unloads, or writes system state. Remediation is recommended to the operator, never executed by the skill.

Examples

Example 1: Something feels slow

User: "My Mac is dragging, what's going on?"
→ FindCulprit: run hogs + check + gpu
→ Cross-reference Interpretation.md (is the hog a known background process?)
→ Report: named culprit with two evidence classes, recommended action for approval

Example 2: Routine check

User: "How's my system doing?"
→ HealthCheck: run check
→ One-screen verdict: 🟢/🟡/🔴 per subsystem, abnormalities flagged against thresholds

Example 3: Fans blasting

User: "Why are my fans so loud?"
→ FindCulprit: thermal + hogs + gpu
→ If kernel_task is the top consumer: that IS the cooling response — report the thermal cause, not the process

Gotchas

  • top's first sample is garbage — CPU% is cumulative since boot. The tool always runs -l 2 and parses the SECOND sample; never "optimize" this away.
  • ps -m does not reliably sort by memory on modern macOS (observed mis-ordering by GB-scale RSS). The tool sorts in code; keep it that way.
  • kernel_task high CPU is the thermal system working, not a runaway process — it pins cores to force cooling. Never recommend killing it.
  • macOS "used" memory is not a problem signal. Free RAM is deliberately spent on cache; kern.memorystatus_vm_pressure_level (1 normal / 2 warning / 4 critical) and live swapouts are the real signals.
  • powermetrics requires sudo and runs forever without -n. It's the only accurate source of per-process energy and GPU power — keep it as the optional consent-gated leg in DeepDiagnosis.
  • top -l truncates command names (~16 chars) regardless of COLUMNS in logging mode. Use the PID to identify the full process (ps -p <pid> -o comm=).
  • GPU via ioreg -c IOAccelerator works without sudo on Apple Silicon (Device Utilization % in PerformanceStatistics) but is not guaranteed on every GPU — the tool degrades to an explicit unavailable-message, never a silent blank.
  • pmset -g therm may not report CPU_Speed_Limit on desktops — the tool treats a missing key as not-throttled rather than erroring.

Workflows & Routing · 3

Each workflow is one job the skill runs. The trigger phrases route your request to the right one — this is the skill's routing table.

  1. 01
    HealthCheck Workflows/HealthCheck.md

    hows my system, check my mac, system health

  2. 02
    FindCulprit Workflows/FindCulprit.md

    mac is slow, whats eating CPU/GPU/memory, fans loud

  3. 03
    DeepDiagnosis Workflows/DeepDiagnosis.md

    full diagnosis, deep check, chronic/recurring slowness

Tools · 1

Deterministic executables the workflows call — the code that does the real work, not prompt scaffolding.

  • Vitals.ts

How to Invoke

Say any of these to your DA and LifeOS activates the Vitals skill automatically:

  • "mac slow"
  • "system slow"
  • "what's slowing down my mac"
  • "computer is slow"
  • "what's eating CPU"
  • "CPU usage"
  • "GPU usage"
  • "what's using the GPU"
  • "memory pressure"
  • "RAM usage"
  • "swap"
  • "runaway process"
  • "fans loud"
  • "mac running hot"

Or invoke explicitly:

Skill("Vitals")

References · 1

Auxiliary files the skill loads at runtime — frameworks, guides, configs.

  • Interpretation

Want LifeOS to do this for you?

Install LifeOS on your machine — your DA gets the Vitals skill plus 55 others, all hooked into one Life OS.