---
name: apt:catch-up
description: "Re-view the catch-up panel (Welcome-Back + Team-Change Digest) on demand"
apt-skill-version: {{APT_VERSION}}
stage: resume
intent: capture
when_to_use: "The user dismissed the auto catch-up panel on their last /apt and wants to re-summon it — an idempotent re-view of where they left off plus what teammates merged. Distinct from /apt:resume (full context restore) and never advances the Last-Seen Marker."
user_invocable: true
internal: false
spawns_agent: false
agent_name: null
task_context: none
default_execution_mode: auto
execution_modes:
  - auto
allowed-tools: "Bash, Read"
argument-hint: "apt:catch-up"
gates: []
---
<objective>
Recompute and display the combined catch-up panel — the **Welcome-Back
Summary** (your most-recently-active task, phase, next step) and the
**Team-Change Digest** (the PRs teammates merged to main since you last
pulled) — exactly as the auto-on-apt display would show it, but **without
advancing the Last-Seen Marker**. This is a read-only re-view: a user who
dismissed the auto panel can re-summon it without disturbing the baseline and
without invoking the heavier `/apt:resume`.
</objective>

<your_environment>
- **Working directory:** The project root (where you were invoked)
- **apt-tools:** `node packages/framework/bin/apt-tools.mjs` or the installed `apt-tools` binary
- **Last-Seen Marker:** `.aperant/last-seen/{email-slug}.json` (gitignored, per-machine) — this skill READS it but NEVER writes it.
</your_environment>

<process>

## 1. Recompute the panel (read-only)

```bash
node packages/framework/bin/apt-tools.mjs catch-up .
```

This computes the SAME panel the interactive route call produces, against the
**current** marker — and deliberately does **NOT** call `advanceLastSeen`
(recompute-only contract). Parse the JSON `catch_up` field from the envelope.

## 2. Render the panel

Render exactly as the `apt/SKILL.md` "Catch-up panel" block does — Welcome-Back
half first, then the Team-Change Digest half. Omit a half whose field is null.

If `catch_up` is null, tell the user there is nothing new since their last
visit (no active stale task and no new merges on main).

```
Where you left off: {description} — {lifecycle_phase} · subtask {current_subtask} ({relative_time})
  Next: {next_step}
  (+{others_count} others · /apt:resume)

While you were away:
  #{number} {title} — {author}
  +{more_count} more on main
```

</process>

<notes>
- **Never advances the marker.** Unlike the auto-on-apt display (which advances
  the Last-Seen Marker after the panel is evaluated), this command is purely a
  re-view. Re-running it is idempotent.
- **Distinct from `/apt:resume`.** Resume restores full context and routes to
  the next action; catch-up is a lightweight orientation re-view.
- **v1 is lazy compute.** The panel is computed on demand here, bounded by the
  commits since your last pull. A background pre-warm worker (like the
  update-check worker) is a tracked follow-up (LD-12), not part of v1.
- **Vocabulary.** This is the Welcome-Back Summary + Team-Change Digest — not an
  "activity feed", "changelog", or "notifications".
</notes>
