npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-1 --plugin aradotso-trending-skills-37This skill uses the workspace's default tool permissions.
```markdown
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
---
name: port-whisperer-cli
description: CLI tool for visualizing and managing processes running on network ports with framework detection and Docker support
triggers:
- "what's running on my ports"
- "install port-whisperer"
- "check which process is using port"
- "kill process on port"
- "show dev server ports"
- "port whisperer commands"
- "find what's listening on a port"
- "manage ports from terminal"
---
# Port Whisperer CLI
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
`port-whisperer` is a beautiful CLI tool that shows every process listening on your network ports — with color-coded status, framework detection (Next.js, Vite, Django, etc.), Docker container identification, and interactive process management. Runs in ~0.2s via three shell calls.
## Install
```bash
# Global install (recommended — gives you `ports` and `whoisonport` commands)
npm install -g port-whisperer
# Run without installing
npx port-whisperer
Requires macOS. Linux support is planned; Windows is not supported.
ports
Shows dev servers, Docker containers, and databases. Filters out system apps (Spotify, Raycast, etc.) by default.
ports --all
ports 3000
# or
whoisonport 3000
Outputs full process tree, repository path, git branch, memory usage, and an interactive kill prompt.
ports kill 3000 # kill by port number
ports kill 3000 5173 8080 # kill multiple ports at once
ports kill 42872 # kill by PID
ports kill -f 3000 # force kill (SIGKILL) for stubborn processes
ports ps # dev processes only
ports ps --all # every running process
Displays PID, CPU%, memory, project name, detected framework, uptime, and a description column. Docker processes are collapsed into a single summary row.
ports clean
Finds and kills orphaned or zombie dev server processes. Only targets dev runtimes (node, python, ruby, etc.) — safe for desktop apps.
ports watch
Notifies whenever a port starts or stops listening.
┌───────┬─────────┬───────┬──────────────────────┬────────────┬────────┬───────────┐
│ PORT │ PROCESS │ PID │ PROJECT │ FRAMEWORK │ UPTIME │ STATUS │
├───────┼─────────┼───────┼──────────────────────┼────────────┼────────┼───────────┤
│ :3000 │ node │ 42872 │ frontend │ Next.js │ 1d 9h │ ● healthy │
│ :5432 │ docker │ 58351 │ backend-postgres-1 │ PostgreSQL │ 10d 3h │ ● healthy │
│ :6379 │ docker │ 58351 │ backend-redis-1 │ Redis │ 10d 3h │ ● healthy │
└───────┴─────────┴───────┴──────────────────────┴────────────┴────────┴───────────┘
Status colors:
Port Whisperer auto-detects frameworks by reading package.json dependencies and inspecting process command lines:
| Category | Detected Frameworks |
|---|---|
| JavaScript | Next.js, Vite, Express, Angular, Remix, Astro |
| Python | Django, FastAPI |
| Ruby | Rails |
| Docker images | PostgreSQL, Redis, MongoDB, LocalStack, nginx |
Three shell calls, batched for performance:
1. lsof -iTCP -sTCP:LISTEN → all TCP listeners
2. ps (batched) → command, uptime, memory, PPID, status per PID
3. lsof -d cwd (batched) → working directory → project/framework detection
4. docker ps → maps host ports to container names/images
# Check what's there
ports 3000
# Kill it
ports kill 3000
# Or force kill if it won't die
ports kill -f 3000
ports kill 3000 5173 8080 4000
ports --all
# or just:
ports
# Docker containers appear automatically with container name and image detected
ports clean
ports watch
# Streams notifications as ports open/close
# Exit code 0 if port is active, non-zero if free
ports 3000 && echo "port in use" || echo "port free"
ports command not found after install
# Check npm global bin is in PATH
npm bin -g
# Add to ~/.zshrc or ~/.bashrc:
export PATH="$(npm bin -g):$PATH"
Permission denied when killing a process
# Use force kill flag
ports kill -f 3000
# Or use sudo if process is owned by another user
sudo ports kill 3000
Docker containers not showing up
docker ps works in your terminal (Docker CLI must be accessible)Port shows as orphaned (yellow)
ports clean to sweep these up, or ports kill <port> to target directlyProcess won't die with graceful kill
ports kill -f 3000 # sends SIGKILL instead of SIGTERM
Only macOS is supported