3 added, 1 removed. Audit A to A.
---
name: ops-resume
- description: Reopen recently-closed Claude Code sessions, one per Ghostty tab. Finds recent session transcripts in ~/.claude/projects and resumes each in its own new tab via `claude --resume`, from the directory it was running in. macOS + Ghostty only.
+ description: "This skill should be used when the user asks to \"/ops:ops-resume\", \"run ops-resume\", or \"use ops-resume\". Reopen recently-closed Claude Code sessions, one per Ghostty tab. Finds recent session transcripts in ~/.claude/projects and resumes each in its own new tab via `claude --resume`, from the directory it was running in. macOS + Ghostty only."
argument-hint: '[-m minutes | -H hours | -n max | --here | --dry-run]'
allowed-tools:
- Bash
---
# ops-resume
+
+ Load `ops-rules` before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If `AskUserQuestion` / `Workflow` are missing, follow Rule 10 in `ops-rules` (Hermes: numbered options / two-turn Telegram card; `delegate_task`).
Reopen recently-closed Claude Code sessions — **one session per Ghostty tab**.
For every recent session transcript under `~/.claude/projects`, the helper opens a
new Ghostty tab (`cmd+t`) and types `cd <cwd> && claude --resume <sessionId>`, so each
session resumes in its own tab from whatever directory or repo it was running in.
**Default:** every session touched in the **last 60 minutes**, from **any directory**.
Platform: macOS + [Ghostty](https://ghostty.org) only. Tabs are driven via AppleScript
System Events, so Accessibility permission must be granted to the terminal running this.
## How it works
1. Scans `~/.claude/projects/**/*.jsonl` and keeps files whose mtime is inside the
lookback window (default 60 min) but older than `OPS_RESUME_MIN_AGE_SEC` (default
45s — so the session you are _currently_ in is not reopened).
2. Keeps only real interactive sessions (UUID filenames); skips subagent transcripts
(`agent-*`), workflow journals, and empty/junk sessions.
3. Reads each session's original `cwd` from the transcript.
4. For each, opens a fresh Ghostty tab and resumes the session there.
## Usage
Run the bundled helper. Pass through any flags the user gave (`$ARGUMENTS`).
Always preview first with `--dry-run`, show the user the list, and — unless they
clearly asked to "just open them" — confirm before opening real tabs (opening many
tabs is hard to undo).
```bash
# Preview what would be resumed
${CLAUDE_PLUGIN_ROOT}/bin/ops-resume --dry-run $ARGUMENTS
```
```bash
# Actually open the tabs
${CLAUDE_PLUGIN_ROOT}/bin/ops-resume $ARGUMENTS
```
### Flags
| Flag | Meaning |
| ----------------- | ---------------------------------------------- |
| `-m, --minutes N` | Lookback window in minutes (default 60) |
| `-H, --hours N` | Lookback window in hours |
| `-n, --max N` | Cap number of tabs (default 20, newest first) |
| `--here` | Only sessions whose `cwd` == current directory |
| `--dry-run` | List matches, open nothing |
### Env overrides
- `OPS_RESUME_MINUTES` (60) — lookback window
- `OPS_RESUME_MAX` (20) — safety cap on tabs
- `OPS_RESUME_MIN_AGE_SEC` (45) — skip sessions touched more recently than this
## Reporting
After running, report concisely: how many sessions matched, how many tabs were
opened, and any that were capped/skipped. If `--dry-run`, just show the list and ask
whether to open them for real.