5 merged, 3 opened, 7 reviews since yesterday
The invoice timezone fix and the new settings pages shipped. One PR is stuck on requested changes.
Each weekday before standup: what merged, what opened and what got reviewed in the repo since yesterday morning, written person by person.
What lands on your board
The invoice timezone fix and the new settings pages shipped. One PR is stuck on requested changes.
Standup goes better when it starts from what actually happened instead of from everyone trying to remember yesterday. Pull requests are a good record of that work, but reading it on GitHub means the closed tab, the open tab and every review thread.
Each weekday the agent collects the last day of pull request activity in one repo and writes it the way people talk at standup: who shipped what, what is new and waiting, which reviews happened, and what is stuck. Monday's run reaches back to Friday morning, so the weekend is covered.
From 9:00 yesterday until now, or from 9:00 Friday on a Monday. Write it as an ISO timestamp for the search qualifiers, for example merged:>=2026-10-15T09:00:00Z.
gh pr list --repo acme/acme-web --state merged --search "merged:>=<since>" --json number,title,author,mergedAt,labels for merges, and --state open --search "created:>=<since>" for new PRs.
For PRs updated in the window (updated:>=<since>), read GET /repos/{owner}/{repo}/pulls/{number}/reviews and keep reviews whose submitted_at falls inside it, with their state: APPROVED, CHANGES_REQUESTED or COMMENTED.
Note open PRs with changes requested and no commit since, and PRs whose statusCheckRollup is failing, so the update has a blockers line.
One line per person: what they merged, opened and reviewed. Then a Blockers line. Leave out Dependabot and Renovate PRs unless they merged.
With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.
Pick your agent, where the data comes from and how to schedule it; the commands below follow.
One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.
shellcurl -fsSL https://briefkin.dev/skills/github-daily-standup-summary/install | shAsk Claude Code:
promptRun the github-daily-standup-summary skillOr paste the prompt instead of installing:
promptFor the GitHub repo acme/acme-web, collect pull request activity since 9:00 yesterday (since Friday 9:00 if today is Monday) with the gh CLI or the GitHub API: PRs merged (merged:>=), PRs opened (created:>=), and reviews submitted in that window (GET /repos/{owner}/{repo}/pulls/{number}/reviews, by submitted_at). Write it as a standup update grouped by person, one line each: what they merged, opened and reviewed. Then a Blockers line for open PRs with changes requested and no new commits, or with failing checks. Leave out Dependabot and Renovate PRs unless they merged.Weekdays at 9:15, from cron on any machine where Claude Code is signed in:
crontab15 9 * * 1-5 claude -p "Run the github-daily-standup-summary skill"Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.
Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a report card. How setup works
SKILL.md---
name: github-daily-standup-summary
description: "Each weekday before standup: what merged, what opened and what got reviewed in the repo since yesterday morning, written person by person. Use when the user asks for this, or when it runs on a schedule."
---
# GitHub daily standup summary
Each weekday before standup: what merged, what opened and what got reviewed in the repo since yesterday morning, written person by person.
Standup goes better when it starts from what actually happened instead of from everyone trying to remember yesterday. Pull requests are a good record of that work, but reading it on GitHub means the closed tab, the open tab and every review thread.
Each weekday the agent collects the last day of pull request activity in one repo and writes it the way people talk at standup: who shipped what, what is new and waiting, which reviews happened, and what is stuck. Monday's run reaches back to Friday morning, so the weekend is covered.
## Two ways to get the data
Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.
## Route A: API or MCP server
### What you need
- Read access to the repository, through `gh auth login` or a token that can read pull requests.
- The `gh` CLI, or a GitHub MCP server or connector that can search PRs and list reviews.
If something is missing, say what and stop; do not invent numbers.
### Steps
1. **Set the window**: From 9:00 yesterday until now, or from 9:00 Friday on a Monday. Write it as an ISO timestamp for the search qualifiers, for example `merged:>=2026-10-15T09:00:00Z`.
2. **Pull merged and opened PRs** (GitHub): `gh pr list --repo acme/acme-web --state merged --search "merged:>=<since>" --json number,title,author,mergedAt,labels` for merges, and `--state open --search "created:>=<since>"` for new PRs.
3. **Pull reviews** (GitHub): For PRs updated in the window (`updated:>=<since>`), read `GET /repos/{owner}/{repo}/pulls/{number}/reviews` and keep reviews whose `submitted_at` falls inside it, with their `state`: APPROVED, CHANGES_REQUESTED or COMMENTED.
4. **Spot what is stuck**: Note open PRs with changes requested and no commit since, and PRs whose `statusCheckRollup` is failing, so the update has a blockers line.
5. **Write it like a standup**: One line per person: what they merged, opened and reviewed. Then a Blockers line. Leave out Dependabot and Renovate PRs unless they merged.
## Route B: the browser
### What you need
- Signed in to GitHub with read access to the repository.
If something is missing, say what and stop; do not invent numbers.
### Steps
Start at https://github.com/pulls. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.
1. **Search merged PRs since yesterday**: In the search box at the top of the pull requests page, replace the default query with `is:pr repo:acme/acme-web merged:>=2026-10-15T09:00:00Z`, with the timestamp set to 9:00 yesterday, or 9:00 Friday on a Monday. Note number, title and author for each row.
2. **Search new PRs**: Change the query to `is:pr repo:acme/acme-web created:>=<since>`. Open each one and read the **Reviewers** box in the right sidebar for who was asked to review.
3. **Collect reviews**: Run `is:pr repo:acme/acme-web updated:>=<since>` and open each result. In the **Conversation** timeline keep the "approved these changes", "requested changes" and "reviewed" entries whose time falls inside the window, with the reviewer's name.
4. **Spot what is stuck**: While there, note open PRs whose latest review is "Changes requested" with no commit after it, and PRs whose merge box shows failing checks.
5. **Write it like a standup**: One line per person: what they merged, opened and reviewed. Then a Blockers line. Leave out Dependabot and Renovate PRs unless they merged.
Note: The pull requests page accepts a `repo:` qualifier, so no repository page is needed. Reviews only show in each PR's timeline, so a repo with more than ten or fifteen active PRs a day is faster through the API route.
## The report
- **Shipped**: merged PRs, by author.
- **New**: PRs opened since yesterday and who is asked to review.
- **Reviewed**: approvals and change requests, by reviewer.
- **Blockers**: PRs waiting on changes or with red checks.
- One line per person, ready to read out.
## Post it to Briefkin
When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.
```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
-H "authorization: Bearer $BRIEFKIN_TOKEN" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"v": 1,
"event_id": "github-daily-standup-summary/<date of this run, e.g. 2026-10-16>",
"item_key": "github-daily-standup-summary",
"project": "acme-web",
"source": "GitHub daily standup summary skill",
"kind": "update",
"title": "5 merged, 3 opened, 7 reviews since yesterday",
"summary": "The invoice timezone fix and the new settings pages shipped. One PR is stuck on requested changes.",
"widget": [
{
"type": "Table",
"props": {
"columns": [
"Who",
"Since yesterday"
],
"rows": [
[
"Dana",
"Merged #1284 (invoice timezone fix). Reviewed #1297 and #1301."
],
[
"Mo",
"Merged #1297 (settings on the app router) and #1295. Reviewed #1284 and #1290."
],
[
"Jin",
"Merged #1290 (CSV escaping). Opened #1302. Reviewed #1293."
],
[
"Priya",
"Merged #1293 (retry on 429). Opened #1303 and #1304. Reviewed #1302 and #1299."
]
]
}
},
{
"type": "Callout",
"props": {
"text": "Blocker: #1302 has had changes requested since 15:40 yesterday, with no new commits.",
"tone": "warn"
}
}
]
}
JSON
```
Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.
## Run it on a schedule
Suggested: Weekdays at 9:15 (`15 9 * * 1-5`). From cron, with the agent signed in on that machine:
```bash
15 9 * * 1-5 claude -p "Run the github-daily-standup-summary skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```
Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/github-daily-standup-summary#schedule
Source: https://briefkin.dev/skills/github-daily-standup-summary
Read access to the repository, through gh auth login or a token that can read pull requests.
The gh CLI, or a GitHub MCP server or connector that can search PRs and list reviews.
https://api.githubcopilot.com/mcp/. Sign in with OAuth or a personal access token; add /readonly to the URL, or use a toolset URL such as https://api.githubcopilot.com/mcp/x/pull_requests/readonly, to expose only read tools. It also runs locally (source).gh CLI. Run gh auth login once, or set GH_TOKEN for scheduled runs. gh pr list --search "review-requested:@me" --json number,title,url,createdAt and gh api repos/{owner}/{repo}/dependabot/alerts cover most reports.GITHUB_TOKEN, limit it to the repositories in the report, and grant Read on Metadata, Contents, Pull requests and Issues, plus Dependabot alerts if you report on them.With every permission on a fine-grained token set to Read, the agent can't push, merge, comment or close anything.
Yes. Swap gh pr list --repo for gh search prs --owner acme --merged-at ">=<since>" (and --created for new PRs), then group lines by person across repos. Past five or six busy repos, a card per repo reads better.
No, only pull requests. If your team pushes straight to the default branch, add gh api "repos/{owner}/{repo}/commits?sha=main&since=<since>" as a step and list those commits under Shipped.
No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a report card, so you can glance at it instead of asking again.
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.
Yes. Switch the data source to "Your browser" and the steps change to the GitHub pages themselves: the agent opens github.com/pulls in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.
Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.
Free during the open beta. No card.