resumelisted
Install: claude install-skill suxrobGM/jobpilot
# Resume — Continue an Interrupted Run
Resumes a `paused` or `interrupted` Run by replaying the apply loop on jobs that
are still `approved` (or `pending` if approval was implicit). The user already
approved the fit when the run was first launched, so no re-confirmation gate.
Live view: `http://localhost:8000/runs/<run-id>`.
## Setup
Follow `plugin/skills/shared/setup.md` to load profile, resume,
credentials. Check the web app is up:
```bash
JOBPILOT_API=http://localhost:8000
curl -fsS "$JOBPILOT_API/api/health" >/dev/null || { echo "JobPilot web is down. Start it with 'bun run dev'."; exit 1; }
```
## Phase 0: Resolve Run
Argument is `<run-id>`. If missing, list candidates and ask:
```bash
curl -fsS "$JOBPILOT_API/api/runs" \
| jq -r '.data[] | select(.status=="paused" or .status=="interrupted")
| "\(.runId)\t\(.status)\t\(.source)\t\(.query)"'
```
Fetch the run + jobs:
```bash
RUN_ID="<run-id>"
RUN=$(curl -fsS "$JOBPILOT_API/api/runs/$RUN_ID")
```
Verify status is `paused` or `interrupted`. If `completed` or `failed`, stop:
**"Run <id> is already <status>. Nothing to resume."** If `in_progress`, stop:
**"Run <id> is still in progress. If the agent crashed, wait for the
auto-reconciler (5 min) or stop the run from the UI first."**
Refuse to resume if there are no jobs with `status === "approved"`:
```bash
APPROVED=$(echo "$RUN" | jq '[.data.jobs[] | select(.status=="approved")] | length')
[ "$APPROVED" = "0" ] && { echo "No approved jobs left to app