All tools
SkillMember post
Standup
by sanjaesuresh·Updated Jul 5, 2026
Turn recent repo activity into a short, human-sounding script you can say in a live standup. Mines this repo's git history (your own commits), GitHub PRs and issues, and code blocker signals over a recent window, then drafts a casual first-person Yesterday / Today / Blockers update — not a changelog. Use when the user says "standup", "standup script", "what do I say in standup", or "daily update". Read-only.
View on GitHubWhat it does
- /standup
Turn recent repo activity into a short, human-sounding script you can say in a live standup.
Files (1)
SKILL.mdprimary · markdown · 4.0 KB
---
name: standup
description: >
Turn recent repo activity into a short, human-sounding script you can say in a
live standup. Mines this repo's git history (your own commits), GitHub PRs and
issues, and code blocker signals over a recent window, then drafts a casual
first-person Yesterday / Today / Blockers update — not a changelog. Use when
the user says "standup", "standup script", "what do I say in standup", or
"daily update". Read-only.
---
## Tool contract — READ-ONLY
Gather, draft, print. This skill writes no file, pushes nothing, and runs nothing
destructive. It must not run heavy test suites unprompted. It produces a spoken
script in chat; the user says it themselves.
## How to work
1. **Resolve the window and author.**
- Default window: the last ~24 hours. If today is Monday, reach back to the
previous Friday so the weekend gap doesn't leave the update empty.
- Honor inline overrides from the invocation: `3d` / `2 days` (relative span),
`since friday` (named day), `branch` (everything on this branch vs `main`,
ignoring time). State the window you settled on before drafting.
- Author: read `git config user.email` and pass it to `git log --author` so a
shared repo doesn't pull in teammates' commits (`--author` matches the email
as a substring of the commit's "Name <email>", so email alone is enough).
2. **Gather — what I did.** Run, guarding each (skip a command cleanly if it
errors or returns nothing; never abort the run):
- `git log --author="<email>" --since="<window>" --pretty=format:'%h %s%n%b'`
— the user's commits, subjects and bodies.
- `git diff main...HEAD --stat` (fall back to `git diff HEAD~5 --stat` if not
on a branch off `main`) — the shape of in-progress work.
- `git status -s` — uncommitted / staged in-flight changes.
3. **Gather — waiting on others.** Only if `gh` is installed and authenticated
(`gh auth status`); if not, skip this whole step silently:
- `gh pr list --author @me --state open` — your open PRs (awaiting review).
- `gh pr list --search "review-requested:@me" --state open` — PRs waiting on
*you* to review.
- Optionally `gh issue list --assignee @me --state open` — assigned issues.
4. **Gather — blocker candidates (not assertions).**
- `grep -nE "TODO|FIXME|BLOCKED|HACK" <changed files only>` — limit to files
that appear in step 2's diff/status, not the whole repo.
- Look for merge-conflict markers (`<<<<<<<`) in changed files.
- Failing tests **only** if a runner is obvious and cheap to run; otherwise do
not run anything — note "tests not run" instead.
5. **Draft the 3-part script.** Casual, first-person, spoken sentences,
~30–45 seconds aloud:
- **Yesterday** — what got done, translated from commit messages into plain
human terms. No SHAs, no file-path lists read aloud.
- **Today** — inferred from in-flight branch / WIP / open PRs, phrased as
intent. Label inferred items as inferred (e.g. "probably", "next I'll").
- **Blockers** — only real ones. If there are none, say "no blockers."
Present any step-4 candidates separately, as "things that *might* be
blockers — confirm?", never as stated fact.
6. **Honesty + voice.** Never invent progress or blockers. If a source was empty,
say so rather than padding. The script must sound like a person talking —
avoid AI tells ("leverage", "robust", "crucial", "comprehensive", "seamless",
"delve"). Plain sentences.
7. **Offer a follow-up.** After printing, offer to tighten, shorten, or re-tone.
## Output format
```markdown
**Standup — <window you used>**
Yesterday: <1–3 spoken sentences on what got done.>
Today: <1–2 spoken sentences on what's next. Mark inferred items.>
Blockers: <Real blockers, or "No blockers.">
---
_Sources: <commit count> commits, <PR count> PRs<, N blocker candidates if any>.
gh <used / skipped>._
<If blocker candidates were found, list them here for the user to confirm.>
```