Help us improve
Share bugs, ideas, or general feedback.
From peterpme-skills
Summarizes merged PRs in a GitHub repo over the last N hours, excluding ones you authored or touched, and ranks what's worth reviewing.
npx claudepluginhub peterpme/skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/peterpme-skills:morning-recapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Recap merged PRs in a GitHub repo over the last N hours, skip ones the user authored or has already touched (any review state / comment / @-mention), and rank the rest by review priority.
Fetches and filters human review comments from recent merged PRs in GitHub repos using Python script and gh CLI. Outputs clean JSON of comments, reviewers, and PR details for team coding rules analysis.
Generates witty changelogs from recent main branch merges, categorizing PRs into features, bug fixes, breaking changes, improvements, with contributor shoutouts and deployment notes.
Summarizes recent codebase activity over a time period (default 2 weeks): features landed, fixes, refactors, focus/neglected areas, and contributor patterns. Uses git log or timewarp tools for quick catch-up.
Share bugs, ideas, or general feedback.
Recap merged PRs in a GitHub repo over the last N hours, skip ones the user authored or has already touched (any review state / comment / @-mention), and rank the rest by review priority.
The script filters server-side using GitHub's -involves:USER search qualifier — covers author, assignee, commenter, reviewer, and @-mentioned. Excluded PRs never come back over the wire.
This skill is repo-agnostic but needs to know which repo to recap. Pick one:
Option A — set a default in your shell (recommended if you only watch one repo):
# ~/.zshrc or ~/.bashrc
export MORNING_RECAP_REPO="owner/repo"
Option B — pass it inline each time:
MORNING_RECAP_REPO=owner/repo /morning-recap 12
Option C — edit the default in run.sh (change the REPO default near the top).
You also need:
gh CLI installed and authenticated (gh auth status)jq installedThe exclude-user defaults to your authenticated gh user; override with EXCLUDE_USER=someoneelse if needed.
12.Run the helper script. It does the GitHub queries, filters PRs you've touched, trims bodies, and returns compact JSON. Do not call gh directly — the script consolidates everything in one call.
bash "${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills}/morning-recap/run.sh" "${HOURS:-12}" 2>&1
If the skill is installed under ~/.claude/skills/morning-recap/, the absolute path works too. When loaded as a plugin, $CLAUDE_PLUGIN_ROOT points at the plugin's skill dir.
Stderr (one line) reports the window, the filters applied, and how many PRs came back. Stdout is a JSON array of the remaining PRs:
[
{
"number": 11652,
"title": "...",
"author": "yhpark",
"mergedAt": "...",
"url": "...",
"additions": 19,
"deletions": 4,
"changedFiles": 4,
"files": ["..."],
"body": "trimmed, comments stripped, capped at 500 chars"
}
]
Env overrides: MORNING_RECAP_REPO=... (or legacy REPO=...) and EXCLUDE_USER=....
Recap section — print a chronological markdown list:
## Merged in the last <N>h (<count> PRs — excludes ones you authored or already touched)
- [#1234](url) **Title** — @author — one-line summary
- …
No unreviewed PRs merged in the last <N>h. and stop.Review priority section — classify each PR High / Medium / Low using these heuristics. Lean on judgment; rules are signals, not a checklist.
High signals (any one is usually enough):
*Navigator.tsx, *ScreenStack*)Medium signals:
useEffect with non-trivial deps in a hot pathView/Text/StyleSheet in a Tamagui/NativeWind-styled area)Low signals:
fix(...): center align …, fix padding, etc.Adapt the heuristics to the target repo — these defaults assume a React Native app. For a backend or library repo, substitute the relevant hotspots (migrations, public API surface, auth, schema, etc.).
Print priorities sorted High → Medium → Low (drop the Low list if it's long, summarize):
## Review priority
### High
- [#NNNN] **Title** — concrete reason it's worth a look (1 line). Files: `path/a.ts`, `path/b.tsx` (+N more)
### Medium
- [#NNNN] **Title** — reason
### Low (skim)
- [#NNNN], [#NNNN] — single-file cosmetic fixes
The "why" line should name a concrete risk rather than restate the title. Cap file list at 3 paths + "(+N more)".
End with a one-line recommendation: "Top N to actually open: #X, #Y, #Z."
gh calls into one — don't loop gh pr view per PR. If you need extra detail on a single PR, fetch only that one.gh auth issues, surface verbatim and stop.cron-runner.sh is a launchd-friendly wrapper that runs the recap headlessly, summarizes via claude -p, writes markdown to ~/Documents/Claude/morning-recap/YYYY-MM-DD.md, and fires a macOS notification.
It's personal-setup-flavored (hardcoded paths, macOS-only osascript, assumes the claude CLI is installed). Treat it as a starting point — copy it somewhere editable and adjust SKILL_DIR, OUT_DIR, MORNING_RECAP_REPO, and the schedule for your machine.
Example launchd plist snippet:
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/path/to/morning-recap/cron-runner.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key><integer>7</integer>
<key>Minute</key><integer>30</integer>
</dict>
<key>EnvironmentVariables</key>
<dict>
<key>MORNING_RECAP_REPO</key><string>owner/repo</string>
</dict>