pm2listed
Install: claude install-skill jedbjorn/subfloor
# pm2 — driving the host process stack
Observe + manage the host's pm2-supervised app from the sandbox: process
status, app health, log tails, scoped restarts. Opt-in + link-only
(`common=0`; **admin** + **devops** flavors): the operator brings a host whose
app is already pm2-managed; you drive a scoped loop against it.
## Every verb goes through the host-side pm2-broker
The sandbox has no `pm2` binary and no route to the host's 127.0.0.1-bound
ports — NEVER shell out to pm2 or curl a host port directly (even read-only
`curl host:8000/health` has no route). Call the broker over its unix socket in
the bind-mounted repo; the broker runs pm2 and curls the app's local port
host-side. Detail: `.super-coder/docs/pm2-broker.md`.
```bash
SOCK="$(sc pm2-broker-sock)"
curl -s --unix-socket "$SOCK" http://pm2/health # liveness check first
```
"not reachable" = broker down -> ask the operator to run `sc pm2-broker-up` on
the host. You cannot start it yourself (host-side process).
## Precondition — `pm2` block in `.super-coder/instance.json`
```json
"pm2": { "processes": ["myapp-api", "myapp-ui"],
"health_url": "http://127.0.0.1:8000/health",
"allow_lifecycle": false }
```
- No `pm2` block = no stack linked -> stop; ask the operator to set it
(hand-edit, or `PUT /api/pm2`).
- `processes` = fail-closed allow-list: every verb (even `status`) works only
against names listed there; empty/absent list denies all. You see what the
fork declared, never the hos