skills/process-cleanup/SKILL.md
This skill should be used when the user asks to "find zombies", "kill zombie processes", "clean up zombies", "check for zombie processes", "reap zombies", or mentions zombie process detection, cleanup, or process state monitoring.
npx skillsauth add paulrberg/dot-agents process-cleanupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Detect and reap zombie processes using /bin/ps.
A zombie (state Z) is a process that has exited but whose parent hasn't called wait() to collect its exit status. Zombies consume no CPU or memory, but they hold a PID slot and can accumulate. You can't kill a zombie — it's already dead. The only remedies are:
SIGCHLD so it reaps the childinit/launchd adopts and reaps the orphanps for process state queriesAlways use ps (BSD) for process state queries. If ps is aliased, use /bin/ps to bypass it.
# List zombies
/bin/ps ax -o pid,state,ppid,user,command | awk '$2 ~ /Z/'
# List all processes with state
/bin/ps ax -o pid,state,ppid,etime,args
Run the helper script to scan for zombies:
# Detect only (default) — list zombie processes
bash scripts/kill-zombies.sh
# Reap zombies — send SIGCHLD to parent processes
bash scripts/kill-zombies.sh --kill
--kill, the script sends SIGCHLD to parent processes (non-destructive nudge to reap)SIGCHLD, the script reports the parent PID — confirm with the user before killing itinit/launchd)testing
Use ONLY to check or update the project-scoped agent skills installed under .agents/skills so they match the current state of the repo. Do not trigger for creating, finding, or installing skills, or for README/AGENTS.md updates.
testing
Use when CSV, TSV, or Excel (.xlsx) is the primary input/output: inspect, clean, transform, dedupe, merge, validate, convert, recalc formulas, or create/fix spreadsheets. Do not trigger when tabular data is incidental.
testing
Use only when explicitly asked to archive/prune/compact/roll over checked tasks from TODO.md into `.ai/todos/TODO_UNTIL_YYYY_MM_DD.md`, leaving unchecked tasks.
development
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.