proc-cli 2.0.0

Semantic CLI tool for process management. Target by port, PID, name or path.
Documentation
---
layout: page
title: Agent skill
description: "Teach your coding agent to use proc: install the proc-cli skill for Claude Code, Codex, Cursor, Gemini CLI and others."
permalink: /skill
---

The proc-cli skill teaches coding agents (Claude Code, Codex, Cursor, Gemini CLI and others) when to reach for proc and how to use it safely. Instead of `lsof -ti :3000 | xargs kill -9`, your agent previews with `proc free :3000 --dry-run`, reads structured JSON, and checks with you before touching a process it didn't start. It adds `--yes` only for a process it started itself or after you've seen the list and agreed, and never with a name. proc enforces its side too: nothing that stops, kills or pauses a process runs without `--yes` unless a person confirms at the prompt, `--json` never counts as a yes, and a name matches only the whole process name.

## Install

proc itself has to be installed first (see [install](install)). Then add the skill:

```bash
npx skills add yazeed/proc-cli
```

Or with bun:

```bash
bunx skills add yazeed/proc-cli
```

To pick the agent and where it's installed:

```bash
npx skills add yazeed/proc-cli --skill proc-cli -a claude-code -y   # one agent, this project
npx skills add yazeed/proc-cli --skill proc-cli -g                   # every project (user-level)
```

### Claude Code plugin

In Claude Code, you can install it as a plugin instead:

```text
/plugin marketplace add yazeed/proc-cli
/plugin install proc-cli@proc-cli
```

## Update

```bash
npx skills update
```

Installs always fetch the current skill from the repository, so a new install is up to date too. The skill is written for proc 2.0 or later. It tells your agent to check `proc --version`, and to ask you to upgrade rather than run destructive commands on an older proc.

## What your agent learns

- **When to use proc**: a busy port (`EADDRINUSE`, "address already in use"), what's listening on a port or running in a directory, stopping or freeing something, a dev server that won't start, a stuck process or a slow machine, and cleaning up the servers and browsers it started. Not containers, system services or remote hosts
- **A safety model on the first screen**: which commands only read, which can be undone (`freeze`, `thaw`), and which end a process (`stop`, `kill`, `free`); a process is its own only if it started it and recorded the PID; a name is a search, not approval
- **The contract**: `--json` on every command, one JSON document per command (`watch` streams one per refresh), and fixed exit codes (0 success, 1 error, 2 not found, 3 permission denied, 4 invalid input or confirmation needed). Exit 4 with `needs_confirmation` means nothing changed: it shows you the list, and it doesn't retry with `--yes` on its own
- **Playbooks**: a busy port, stopping its own servers by PID with a guard (`--in` and `--by`), stopping something it didn't start only after you approve the PIDs, cleaning up only what it recorded, and reading `stuck` and `orphans` as leads rather than verdicts
- **Safety**: preview with `--dry-run`, show you the PID, name, directory, command and parent, and wait for a yes; prefer `stop` over `kill`; never `--kill` on `orphans` or `stuck`; ask before `sudo`
- **Gotchas**: `kill` and `stop` don't signal child processes, `:3000` is a port but `3000` is a PID, a port can have several holders, `--in` narrows a search but doesn't prove a process is the agent's, and an orphaned process isn't necessarily abandoned

## Try it

Once it's installed, ask your agent things like:

- "What's on port 3000?"
- "Port 3000 is taken, free it"
- "Why is port 8080 busy?"
- "What did you leave running in this project?"
- "My machine is slow, what's using the CPU?"
- "Wait for the build to finish, then start the server"

## Where it lives

- Source: [`skills/proc-cli/`](https://github.com/yazeed/proc-cli/tree/main/skills/proc-cli) in the repository ([`SKILL.md`](https://github.com/yazeed/proc-cli/blob/main/skills/proc-cli/SKILL.md), and [`reference.md`](https://github.com/yazeed/proc-cli/blob/main/skills/proc-cli/reference.md) for every JSON output)
- Listing: [skills.sh/yazeed/proc-cli/proc-cli](https://www.skills.sh/yazeed/proc-cli/proc-cli), where it passes the security audits from Gen Agent Trust Hub, Socket and Snyk
- Evals: [`evals.md`](https://github.com/yazeed/proc-cli/blob/main/skills/proc-cli/evals.md) lists the tasks the skill is checked against, each with what the agent must and must never do
- Format: the [Agent Skills](https://agentskills.io) standard, so any agent that supports skills can use it