Skip to content
Development
Skill

/catchup

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.

From plugin
claude-elixir-phoenix
574106 skills37 agents2 commands

Claude Code

$ npx -y skills add oliver-kriska/claude-elixir-phoenix --skill catchup --agent claude-code

SKILL.md

catchup.SKILL.md
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

/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

Read more
@oliver-kriska
Ships withclaude-elixir-phoenix

Docs: phxagents.dev -- install guides per runtime, the runtime compatibility matrix, all 26 Iron Laws, and a browsable skill and agent catalog. Claude Code is great.

574106 skills37 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
574
Star history of oliver-kriska/claude-elixir-phoenix on GitHub, a chart by star-history.com

Other skills on claude-elixir-phoenix.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills12d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about catchup.

Which coding agents can use catchup?
catchup installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.