Async Return Briefing

Catchup — Async-Team Return Briefing

by oliver-kriska · MIT license · ★ 560 on GitHub

Catchup — Async-Team Return Briefing cover

Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose.

---
name: catchup
description: "Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose."
effort: medium
disable-model-invocation: true
argument-hint: "[--since \"friday\"|\"2h\"|\"last-active\"|\"last-commit\"] [--scope repo|all] [--sources github,git,linear,calendar] [--depth quick|standard|deep] [--focus prs,reviews-requested,mentions,impact]"
---

# Catchup — Async-Team Return Briefing

You've been away. This skill is a **thin orchestrator**: it resolves
the window + sources here, then delegates the I/O fan-out, impact
analysis, and brief assembly to the `catchup-runner` agent (Sonnet) so
your (often Opus) session does not pay for summarization. You only
print what the agent returns.

## Usage

Overview

You've been away. This skill is a thin orchestrator: it resolves the window + sources here, then delegates the I/O fan-out, impact analysis, and brief assembly to the catchup-runner agent (Sonnet) so your (often Opus) session does not pay for summarization. You only print what the agent returns.

Example prompts

/catchup # since you were last active/catchup --since/catchup --since last-commit --depth deep/catchup --scope all # include cross-repo pings/reviews
Manual install (npx, ZIP)
Claude Codenpx skills add oliver-kriska/claude-elixir-phoenix --skill catchup -g -a claude-code
Claude Code (degit)npx degit oliver-kriska/claude-elixir-phoenix/plugins/catchup/skills/catchup#main ~/.claude/skills/catchup
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md6.0 KB
Read SKILL.md here
oliver-kriska/main1 file shown
SKILL.md
Show the full text138 lines

Catchup — Async-Team Return Briefing

You've been away. This skill is a thin orchestrator: it resolves the window + sources here, then delegates the I/O fan-out, impact analysis, and brief assembly to the catchup-runner agent (Sonnet) so your (often Opus) session does not pay for summarization. You only print what the agent returns.

Usage

/catchup                                  # since you were last active
/catchup --since "friday"
/catchup --since "2h" --focus reviews-requested
/catchup --since last-commit --depth deep
/catchup --scope all                      # include cross-repo pings/reviews

Default is repo-scoped: every GitHub signal (reviews requested, notifications, mentions) is filtered to the repo you ran it in. Pass --scope all to also include cross-repo activity, which is then listed in its own separate section — never mixed into this repo's lists.

Iron Laws

  1. Delegate the heavy work — spawn catchup-runner (sonnet) for fan-out + assembly. Do NOT run the gh/git fan-out in this session; that defeats the cost/speed purpose.
  2. Resolve the window here, once — the agent must never re-resolve it. Pass absolute SINCE_* values.
  3. MCP runs here, not in the agent — Linear/Calendar MCP tools are unreliable in subagents. If present, fetch in this context and pass the text to the agent; else mark absent.
  4. Validate --since before any shell — match the grammar; on no match fall back to 24h and note the assumption.
  5. Stop after the brief — print the agent's summary, never auto-transition to another command.
  6. Repo-scoped by default — pass SCOPE=repo unless the user passed --scope all. A brief run inside one repo must not leak another repo's reviews/notifications. Cross-repo is opt-in only.

Workflow

1. Parse arguments

From $ARGUMENTS: --since, --scope, --sources, --depth, --focus. Defaults: --since last-active, --scope repo, all detected sources, --depth standard, no focus. --scope accepts repo (default — every GitHub signal filtered to the current repo) or all (cross-repo allowed, listed in its own section).

2. Resolve the time window (here, in this context)

Read ${CLAUDE_SKILL_DIR}/references/time-window.md. Resolve calendar words (friday, yesterday, a date) in the user's local timezone (this machine = the user's TZ), pivot through SINCE_EPOCH, derive SINCE_ISO (UTC) + SINCE_LABEL (with TZ abbrev) + LOCAL_TZ.

Default last-active = MAX of: newest Claude session mtime for this repo, your last own commit (git log --author=<you> -1 --format=%ct), your last own PR in this repo (gh pr list --repo <repo> --author @me --state all, repo-scoped — a global search would anchor to other repos). The latest footprint is "you were last here". Record which signal won. Variants: last-session (sessions only), last-commit/last-mine (your git/PR only). No signal → 24h, noted.

3. Detect sources + pull MCP data (here)
gh:   command -v gh && gh auth status               → github ON
git:  git rev-parse --is-inside-work-tree           → git ON
linear/calendar: a Linear / Google-Calendar MCP tool present?

If Linear/Calendar MCP is present, query it in this context now (assigned/updated tickets since SINCE_ISO; missed + today's meetings in LOCAL_TZ) and keep the short text as LINEAR_DATA / CALENDAR_DATA. If absent, set them to absent (the agent will proxy-harvest XXX-#### refs for Linear; skip calendar with a note).

4. Delegate to catchup-runner (Sonnet)

Spawn one agent, foreground, passing a self-contained prompt:

Agent(subagent_type: "catchup-runner", prompt: """
SINCE_EPOCH={…}  SINCE_ISO={…Z}  SINCE_LABEL="{… local TZ}"
LOCAL_TZ={…}  SOURCES={github,git}  SCOPE={repo|all}  DEPTH={…}  FOCUS={…}
OUT_PATH={cwd}/.claude/catchup/brief-{YYYY-MM-DD}.md   # local date (date +%F), not UTC
LINEAR_DATA={text or "absent"}
CALENDAR_DATA={text or "absent"}
Window anchor signal: {which one won, for the Risks note}
Do the gh+git fan-out, impact analysis, and brief assembly per your
instructions. Write the file. Return ONLY the inline summary.
""")

The agent inlines all recipes (it cannot read this plugin's references). Do not re-implement its work here.

5. Present + stop

Print the agent's returned summary verbatim and the brief path.

If the agent returned no summary (e.g. it hit its turn budget mid-assembly — the brief file is usually already written): do NOT re-summarize the brief yourself; that pulls the expensive step back into this (often Opus) session, defeating the delegation. Instead SendMessage the agent by the agentId from its stop usage: "Return only the inline summary now." — it finishes cheaply in Sonnet. Only if that also fails, read the brief's Intent + Top priorities section (not the whole file) and print that.

Do NOT auto-invoke any other command. The user decides what's first.

Sources at MVP

GitHub (gh), Git (git), Linear MCP (optional), Google Calendar MCP (optional). Slack/Gmail are v2 opt-in — never queried, never piped raw. Scheduling + per-project config are designed in ${CLAUDE_SKILL_DIR}/references/config-schema.md, not built at MVP.

Graceful degradation contract

A missing source degrades the brief, never breaks it. git log alone (always available in a repo) is a valid minimum brief. Every absent or failed source becomes one honest line under the brief's Risks/assumptions block, so the reader knows what it does not cover.

1---
2name: catchup
3description: "Summarize and review what changed while you were away. Use after a weekend, vacation, or flight to check missed PRs, git commits, Linear tickets, and meetings — one prioritized brief, not a firehose."
4effort: medium
5disable-model-invocation: true
6argument-hint: "[--since \"friday\"|\"2h\"|\"last-active\"|\"last-commit\"] [--scope repo|all] [--sources github,git,linear,calendar] [--depth quick|standard|deep] [--focus prs,reviews-requested,mentions,impact]"
7---
8 
9# Catchup — Async-Team Return Briefing
10 
11You've been away. This skill is a **thin orchestrator**: it resolves
12the window + sources here, then delegates the I/O fan-out, impact
13analysis, and brief assembly to the `catchup-runner` agent (Sonnet) so
14your (often Opus) session does not pay for summarization. You only
15print what the agent returns.
16 
17## Usage
18 
19```
20/catchup # since you were last active
21/catchup --since "friday"
22/catchup --since "2h" --focus reviews-requested
23/catchup --since last-commit --depth deep
24/catchup --scope all # include cross-repo pings/reviews
25```
26 
27Default is **repo-scoped**: every GitHub signal (reviews requested,
28notifications, mentions) is filtered to the repo you ran it in. Pass
29`--scope all` to also include cross-repo activity, which is then listed
30in its own separate section — never mixed into this repo's lists.
31 
32## Iron Laws
33 
341. **Delegate the heavy work** — spawn `catchup-runner` (sonnet) for
35 fan-out + assembly. Do NOT run the `gh`/`git` fan-out in this
36 session; that defeats the cost/speed purpose.
372. **Resolve the window here, once** — the agent must never re-resolve
38 it. Pass absolute `SINCE_*` values.
393. **MCP runs here, not in the agent** — Linear/Calendar MCP tools are
40 unreliable in subagents. If present, fetch in this context and pass
41 the text to the agent; else mark absent.
424. **Validate `--since` before any shell** — match the grammar; on no
43 match fall back to 24h and note the assumption.
445. **Stop after the brief** — print the agent's summary, never
45 auto-transition to another command.
466. **Repo-scoped by default** — pass `SCOPE=repo` unless the user
47 passed `--scope all`. A brief run inside one repo must not leak
48 another repo's reviews/notifications. Cross-repo is opt-in only.
49 
50## Workflow
51 
52### 1. Parse arguments
53 
54From `$ARGUMENTS`: `--since`, `--scope`, `--sources`, `--depth`,
55`--focus`. Defaults: `--since last-active`, **`--scope repo`**, all
56detected sources, `--depth standard`, no focus. `--scope` accepts
57`repo` (default — every GitHub signal filtered to the current repo) or
58`all` (cross-repo allowed, listed in its own section).
59 
60### 2. Resolve the time window (here, in this context)
61 
62Read `${CLAUDE_SKILL_DIR}/references/time-window.md`. Resolve calendar
63words (`friday`, `yesterday`, a date) in the **user's local timezone**
64(this machine = the user's TZ), pivot through `SINCE_EPOCH`, derive
65`SINCE_ISO` (UTC) + `SINCE_LABEL` (with TZ abbrev) + `LOCAL_TZ`.
66 
67Default `last-active` = MAX of: newest Claude session mtime for this
68repo, your last own commit (`git log --author=<you> -1 --format=%ct`),
69your last own PR **in this repo** (`gh pr list --repo <repo> --author
70@me --state all`, repo-scoped — a global search would anchor to other
71repos). The latest footprint is "you were last here". Record which
72signal won. Variants: `last-session` (sessions only),
73`last-commit`/`last-mine` (your git/PR only). No signal → 24h, noted.
74 
75### 3. Detect sources + pull MCP data (here)
76 
77```
78gh: command -v gh && gh auth status → github ON
79git: git rev-parse --is-inside-work-tree → git ON
80linear/calendar: a Linear / Google-Calendar MCP tool present?
81```
82 
83If Linear/Calendar MCP is present, query it **in this context now**
84(assigned/updated tickets since `SINCE_ISO`; missed + today's
85meetings in `LOCAL_TZ`) and keep the short text as `LINEAR_DATA` /
86`CALENDAR_DATA`. If absent, set them to `absent` (the agent will
87proxy-harvest `XXX-####` refs for Linear; skip calendar with a note).
88 
89### 4. Delegate to `catchup-runner` (Sonnet)
90 
91Spawn one agent, foreground, passing a self-contained prompt:
92 
93```
94Agent(subagent_type: "catchup-runner", prompt: """
95SINCE_EPOCH={…} SINCE_ISO={…Z} SINCE_LABEL="{… local TZ}"
96LOCAL_TZ={…} SOURCES={github,git} SCOPE={repo|all} DEPTH={…} FOCUS={…}
97OUT_PATH={cwd}/.claude/catchup/brief-{YYYY-MM-DD}.md # local date (date +%F), not UTC
98LINEAR_DATA={text or "absent"}
99CALENDAR_DATA={text or "absent"}
100Window anchor signal: {which one won, for the Risks note}
101Do the gh+git fan-out, impact analysis, and brief assembly per your
102instructions. Write the file. Return ONLY the inline summary.
103""")
104```
105 
106The agent inlines all recipes (it cannot read this plugin's
107references). Do not re-implement its work here.
108 
109### 5. Present + stop
110 
111Print the agent's returned summary verbatim and the brief path.
112 
113**If the agent returned no summary** (e.g. it hit its turn budget
114mid-assembly — the brief file is usually already written): do NOT
115re-summarize the brief yourself; that pulls the expensive step back
116into this (often Opus) session, defeating the delegation. Instead
117`SendMessage` the agent by the `agentId` from its stop usage:
118*"Return only the inline summary now."* — it finishes cheaply in
119Sonnet. Only if that also fails, read the brief's Intent + Top
120priorities section (not the whole file) and print that.
121 
122**Do NOT** auto-invoke any other command. The user decides what's
123first.
124 
125## Sources at MVP
126 
127GitHub (`gh`), Git (`git`), Linear MCP (optional), Google Calendar MCP
128(optional). Slack/Gmail are **v2 opt-in** — never queried, never piped
129raw. Scheduling + per-project config are designed in
130`${CLAUDE_SKILL_DIR}/references/config-schema.md`, not built at MVP.
131 
132## Graceful degradation contract
133 
134A missing source degrades the brief, never breaks it. `git log` alone
135(always available in a repo) is a valid minimum brief. Every absent or
136failed source becomes one honest line under the brief's
137Risks/assumptions block, so the reader knows what it does *not* cover.
138 
View all files on GitHub →

Details

License
MIT
Stars on the repo
★ 560
Checked
Source
oliver-kriska/claude-elixir-phoenix ↗
Creator
oliver-kriska · 7 listings
View creator

Similar skills

See all →
SkillAdvisor OrchestratorShubhamsaboo/awesome-llm-apps · by ShubhamsabooUse when a task is too large for one model pass, needs parallel research or generation across many subtasks (like researching a dozen competitors at once), or the user asks to orchestrate multiple models, split work across a model team, run an advisor-worker loop, have a stronger model review the plan while cheap workers execute, or says "too big for one model" or "fan this out". Not for single-file edits or tasks one model handles in one pass.★ 139k GitHub starsSkillCCS Align Worker Watchthedotmack/claude-mem · by thedotmackRun the CCS Align seat's hourly breathing cycle — prove the local claude-mem worker is healthy, pull needle observations through search → timeline → get_observations, land them in a seat-owned middle cache via atomic grab → append → filter exclude-marks → replace, manage exclude marks, and walk house → project → seat rules to detect conflicts (SHADOW_HOUSE, DENY_ALLOW, DRIFT, CLOCK_HEADER) with an append-only rules-report.md. Use when asked to run CCS Align, breathe the alignment seat, refresh the middle cache, exclude or restore an observation, walk rules, check rules conflicts, or check the Worker Watch board.★ 95.6k GitHub starsSkillAsync Python Patternswshobson/agents · by wshobsonMaster Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.★ 39.9k GitHub starsSkillGo Concurrency Pattern Guidewshobson/agents · by wshobsonMaster Go concurrency with goroutines, channels, sync primitives, and context. Use when building concurrent Go applications, implementing worker pools, or debugging race conditions.★ 39.9k GitHub starsSkillMicroservices Patternswshobson/agents · by wshobsonDesign microservices architectures with service boundaries, event-driven communication, and resilience patterns. Use when building distributed systems, decomposing monoliths, or implementing microservices.★ 39.9k GitHub starsSkillES6+ JavaScript Patternswshobson/agents · by wshobsonMaster ES6+ features including async/await, destructuring, spread operators, arrow functions, promises, modules, iterators, generators, and functional programming patterns for writing clean, efficient JavaScript code. Use when refactoring legacy code, implementing modern patterns, or optimizing JavaScript applications.★ 39.9k GitHub stars

More from oliver-kriska

SkillHex Dependency Security Auditoliver-kriska/claude-elixir-phoenix · by oliver-kriskaAudit Hex deps for supply-chain security risk — bidi chars, compile-time exec, maintainer changes, typosquats, CVEs. Use after mix deps.update, when checking if a package upgrade is safe, or reviewing mix.lock PR diffs.★ 560 GitHub starsSkillCatchup Briefingoliver-kriska/claude-elixir-phoenix · by oliver-kriskaEaster-egg alias for /catchup. Same return-from-absence briefing, squeezier name. Use exactly like /catchup — all flags pass through unchanged.★ 560 GitHub starsSkillLiveView Memory Auditoroliver-kriska/claude-elixir-phoenix · by oliver-kriskaInspect LiveView socket assigns for memory bloat — missing temporary_assigns, unused assigns, unbounded lists needing streams, memory estimates. Use when LiveView memory grows or you need to add temporary_assigns.★ 560 GitHub starsSkillN+1 Query Detectoroliver-kriska/claude-elixir-phoenix · by oliver-kriskaDetect N+1 query anti-patterns specifically — Repo calls inside Enum/for loops, missing preloads on associations. Use when N+1 is explicitly suspected, NOT for unrelated Ecto questions or wider database performance.★ 560 GitHub starsSkillPhoenix Context Validatoroliver-kriska/claude-elixir-phoenix · by oliver-kriskaAnalyze Phoenix context boundaries and module coupling via mix xref. Use when checking cross-context calls, validating dependencies, before splitting modules, or reviewing architecture.★ 560 GitHub starsSkillPlugin Development Workflowoliver-kriska/claude-elixir-phoenix · by oliver-kriskaGuide plugin development workflow — editing skills, agents, hooks, or eval framework in this repo. Use when modifying files in plugins/elixir-phoenix/, lab/eval/, or lab/autoresearch/. Ensures changes pass eval, lint, and tests before committing.★ 560 GitHub stars