---
name: jobs
description: Inspect active background research work including running processes, scheduled follow-ups, and pending tasks. Use when the user asks what's running, checks on background work, or wants to see scheduled jobs.
allowed-tools: Bash(ps:*), Bash(pgrep:*), Bash(crontab:*), Bash(systemctl:*)
---

# Jobs

Inspect active background work — running processes, scheduled follow-ups, and managed subagent tasks. This is an operational status skill, not a workflow launcher.

## What to inspect

Summarize the following categories. Skip any that are empty — don't pad the output.

### 1. Active foreground/background processes

```bash
# anything the user started recently in this shell
jobs
ps -o pid,etime,cmd --user "$(whoami)" | head -30
pgrep -fa "python|node|modal|runpodctl|docker" || true
```

### 2. Scheduled / recurring work

Claude Code:
- `CronList` — if the `schedule` skill is active, it lists registered triggers.
- Any `ScheduleWakeup` calls pending in the current session.

OpenCode:
- System `cron` invoking `opencode run`:
  ```bash
  crontab -l 2>/dev/null | grep -i opencode || true
  ```
- systemd user timers:
  ```bash
  systemctl --user list-timers --all 2>/dev/null || true
  ```

### 3. Running containers / remote pods

```bash
command -v docker    && docker ps
command -v runpodctl && runpodctl get pod
command -v modal     && modal app list
```

### 4. Managed subagent tasks (Claude Code only)

Use `TaskList` to see any `Task`-tool subagents still in flight.

## Summary format

```markdown
# Active work

## Processes
- PID 12345 — `python train.py` — running 00:23:11

## Scheduled
- cron: `0 9 * * * opencode run "/watch attention papers"` — next fire tomorrow 09:00
- ScheduleWakeup pending: fire in 12 min — "checking long bun build"

## Remote compute
- Modal: app `experiment` running, 1 A100
- RunPod: pod `xxx` stopped, volume retained

## Failures needing attention
- (none)

## Next command
- To inspect the long-running training: `tail -f ~/logs/train.log`
```

## What NOT to do

- Don't kill processes without confirming with the user.
- Don't return massive `ps` dumps — filter to relevant processes.
- If nothing is running, say "nothing active" — don't invent jobs.
