Read the latest handover notes and reply with a four-section catch-up brief — current state, open threads, gotchas, suggested actions. Use when starting or taking over work in a project that has handover notes, or when the user says "catchup", "catch me up", "接班".
Installs into .claude/skills of the current project.
Are you the author of Catchup?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dudupii-catchup)
---
name: catchup
description: Read the latest handover notes and reply with a four-section catch-up brief — current state, open threads, gotchas, suggested actions. Use when starting or taking over work in a project that has handover notes, or when the user says "catchup", "catch me up", "接班".
argument-hint: "[N]"
---
# Catch-up Brief
Read the latest handover notes and brief the incoming session, in-conversation. Strictly read-only — that is what makes auto-triggering safe.
## Reading the notes
1. List `*.md` files in `.handovers/` and in legacy `.claude/handovers/` (pre-0.4.0), merge the lists, and sort by filename; on a filename tie the `.handovers/` copy wins; `.lang` and `CURRENT.md` are not notes.
2. **State mode** — `.handovers/CURRENT.md` exists: read it first. It is the project's current state — one durable fact per line, latest state only, each with its confirmation date and source note. Then read **every note sharing the newest note's date prefix** (concurrent agents hand off same-day; the group, not just the newest note, is the event layer). A numeric argument replaces the group with the latest N notes (`/catchup 5`).
3. **Fallback** — no `CURRENT.md`: read the latest N notes — default 3; a numeric argument widens the window (`/catchup 5`).
4. Notes without frontmatter (legacy format) are read like any other.
5. If neither directory exists, or there are neither notes nor a `CURRENT.md`, say so briefly in the resolved language and stop. Never invent content. A `CURRENT.md` with no notes left is still briefed from — the projection is what matters.
## Git delta
If the newest note's frontmatter carries a `commit`, read `git log <commit>..HEAD --oneline` and fold those commits into Current state as what happened since the last handover, citing shas. No `commit` field, not a git repo, an empty range, or a commit git cannot resolve — say nothing about git delta; never invent commits.
## Language resolution
1. An explicit language request in the conversation wins.
2. Otherwise read `.handovers/.lang`, then legacy `.claude/handovers/.lang`; use the first that exists.
3. Otherwise infer from the user's messages.
4. Otherwise English.
Never persist the language — handover is the sole writer of `.lang`.
## Read-only
No file writes of any kind, no git state changes, nothing persisted. After a run both handover directories (including every `.lang` and `CURRENT.md`) are byte-identical.
## The brief
Four sections, in order, all localized:
<section-table>
| # | en | ja | zh |
|---|---|---|---|
| 1 | Current state | 現在の状況 | 当前状态 |
| 2 | Open threads and next steps | 未解決のスレッドと次のステップ | 待办线索与下一步 |
| 3 | Active gotchas | 今も有効なハマりどころ | 仍有效的踩坑记录 |
| 4 | Suggested actions | 推奨アクション | 建议行动 |
</section-table>
- Synthesize; cite note filenames so every claim traces back.
- Facts from `CURRENT.md` ride **with their confirmation dates** — surface the date next to each state fact; never grade freshness against a threshold. Dates are honest; cutoffs are false precision. A state entry outranks what an older note claims — the projection is later than the event.
- When the newest-date group holds more than one note, say so — count and authors (frontmatter `author`) — so same-day parallel handoffs are visible at a glance.
- Next steps come from the notes' "Next steps" sections, gotchas from "Gotchas". Drop threads a later note already resolved.
- Facts only, no fabrication: if the notes don't say it, the brief doesn't say it.