Proc is a semantic CLI tool for process management on macOS, Linux, and Windows. Target processes by port, PID, name, or path. proc kill :3000 ends whatever is listening on port 3000 immediately (SIGKILL), asking first and supporting --dry-run previews. A leading colon means a port; proc acts on whatever is listening on it.
When a dev server won't start because port 3000 is taken, proc finds the old tmux session holding it, frees the port, then cleans up leftovers. One command replaces a pipeline of lsof, ps, and kill. proc why :3000 explains why a process is there. proc free :3000 frees the port. proc wait node waits for a process to exit.
Every command takes the same targets and supports --in to stay inside one project, --json for scripts, and --dry-run before changes. All commands print one JSON document with --json, and exit codes always mean the same thing: 0 success, 1 error, 2 not found, 3 permission denied, 4 invalid input. An agent can read proc the way you do, without parsing tables.
The agent skill teaches Claude Code, Codex, Cursor, and Gemini CLI when to reach for proc. Example: proc on :8080 --json | jq '.process | {pid, cwd, uptime_secs}' returns {"pid": 177, "cwd": "/home/dev/code/shop", "uptime_secs": 35}.
Source: Hacker News · Summarized by HeadlinesBriefing