← back to Checkup
SKILL.md
84 lines
---
name: checkup
description: Claude Code environment-hygiene checkup for Steve's machine, adapted from Boris Cherny's /checkup. Audits and (with confirmation) cleans up the Claude setup — archives unused skills/MCPs to save context, dedups local vs checked-in CLAUDE.md, breaks up bloated CLAUDE.md/MEMORY.md, flags slow hooks, reports a Claude Code version update, recommends auto mode, and routes frequently-denied read-only commands to /fewer-permission-prompts. Also verifies the keepawake guard and launchd job health. Use when Steve says "/checkup", "checkup", "clean up my claude setup", "tune up claude code", "my context is bloated", "is my CLAUDE.md too big", "trim MEMORY.md", "which skills am I not using", "why is startup slow", or wants a maintenance pass on the Claude Code environment. READ-ONLY audit first; every change is confirmed, and settings.json changes are surfaced for Steve (never auto-applied).
---
# checkup
## Overview
`/checkup` gives Steve's Claude Code install a maintenance pass — the same idea
as Boris Cherny's built-in `/checkup` (announced 2026-07-16), tailored to Steve's
machine (280+ skills, a large global `CLAUDE.md`, oversized `MEMORY.md` indexes,
12 MCP servers, many hooks and launchd jobs). It **audits first, changes nothing
without confirmation**, and respects Steve's hard rule that `settings.json` is
classifier-blocked for Claude.
## Workflow
Run in three phases: **audit → confirm → apply**.
### 1. Audit (always first, read-only)
```bash
bash scripts/checkup-audit.sh # fast
bash scripts/checkup-audit.sh --deep # also cross-check skills against 30d of session logs (slower)
```
The script changes nothing. It reports, tagging each finding `[AUTO ...]`,
`[GATED ...]`, or a plain FINDING:
1. **Claude Code version** — installed vs latest on npm.
2. **Root/global CLAUDE.md** bloat (candidates to nest into sub-CLAUDE.md + skills).
3. **Local vs checked-in CLAUDE.md** duplicate lines (dedup).
4. **MEMORY.md** files over the ~24KB harness limit + over-long index lines.
5. **Skills** — count + least-recently-used (and `--deep` never-seen-in-logs) candidates.
6. **MCP servers** — configured servers (top-level + per-project).
7. **Hooks** — the hook commands, to eyeball for slow ones.
8. **Auto mode + permissions** — current mode + allowlist size.
9. **Steve goodies** — keepawake guard alive?, screensaver idleTime, launchd `com.steve.*` jobs with a non-zero exit.
### 2. Interpret & confirm
Read the audit against `references/actions.md`, which holds the full per-finding
playbook and — most importantly — the **AUTO vs GATED** classification. Then
present Steve ONE grouped summary:
- **AUTO (with confirm)** — reversible local edits Claude can make: dedup a local
CLAUDE.md, nest a bloated CLAUDE.md, trim a MEMORY.md index (move detail into
its topic file, never delete information), archive a specific unused skill (move
to `~/.claude/skills-archive/`, never `rm`).
- **GATED (Steve paste / sanctioned skill)** — anything touching `settings.json`
(turn off a hook, enable auto mode) → route through the **`update-config`** skill
or surface a paste; permission pre-approval → run **`/fewer-permission-prompts`**;
CC version update, MCP removal, and `sudo pmset` repairs → surface for Steve.
- **CLEAN** — what's already healthy (e.g. keepawake alive).
Ask for a single go/no-go (or a per-item pick). **Do not apply anything before Steve confirms** — this mirrors Boris's `/checkup`, which "confirms with you before making any changes."
### 3. Apply
- Apply only the AUTO items Steve approved. After each cohesive change, commit in
the affected repo (`git add -A && git commit`, author `steve@designerwallcoverings.com`).
- Hand back GATED items as ready-to-paste blocks or by invoking the sanctioned
skill. Never hand-edit `settings.json` / `settings.local.json`.
- End with a `$0 (local)` cost line — the whole checkup is free/local.
## Key rules (do not violate)
- **Audit before acting.** Never propose a fix you didn't see in a fresh audit.
- **Move, don't summarize.** Nesting a CLAUDE.md or trimming a MEMORY.md index
RELOCATES text verbatim into a linked file — it never paraphrases away a rule.
- **Archive, don't delete.** Unused skills move to `~/.claude/skills-archive/`.
- **settings.json is off-limits to Claude** — `update-config` / `/fewer-permission-prompts` / Steve-paste only.
- **Confirm every change.** No silent edits, even AUTO ones.
## Notes
- If Claude Code later ships a native `/checkup`, that built-in takes precedence
when Steve types `/checkup`; this skill remains the Steve-tailored superset
(keepawake + launchd + MEMORY.md + archive-not-delete goodies) and can be
invoked by name.
- Details, exact procedures, and the full AUTO/GATED matrix live in
`references/actions.md` — read it during phase 2.