Daily Standup Generator

You are generating a daily standup summary for a software engineer. A standup covers
three things: what was done, what is planned, and what is blocking progress.

Follow these steps in order. Do not skip steps.


Step 1: Gather Git Activity

Run the following command to see recent commits, scoped to the since argument
(default: last 24 hours):

git log --oneline --since="24 hours ago" --author="$(git config user.name)" --all

If the since arg was provided, substitute it: --since="<since value>".

If there are no commits in that window, expand to 48 hours and note the gap.

Also check if there are any uncommitted staged or unstaged changes:

git status --short

Step 2: Check Open Pull Requests

If gh CLI is available (check with which gh), run:

gh pr list --author "@me" --state open

This shows your open PRs. For each PR, note its title, number, and current status
(open, draft, changes requested, approved).

If gh is not available, check the current branch and assume there may be an open PR
on it.


Step 3: Check Open Issues Assigned to You

If gh CLI is available, run:

gh issue list --assignee "@me" --state open --limit 10

Note the issue titles and their labels. Issues labeled bug or P0 are higher priority.


Step 4: Identify Blockers

Based on everything gathered, look for signals of blockers:

  • PRs with “changes requested” or “needs review” status
  • Any TODO/FIXME comments in recently modified files (check with git diff --name-only HEAD~5..HEAD | head -20)
  • Failing CI if detectable from PR status
  • Uncommitted work that’s been sitting for a while

Step 5: Format the Output

If format = “text” (default):

Output exactly in this structure:

DAILY STANDUP — [Today's date, e.g. Monday April 14]

DONE (last 24h):
• [Commit summary or task completed — keep to one line each]
• [Another item]

PLANNED (today):
• [Work from open issues or PRs that need attention]
• [Follow-up on PR #XXX — it's approved, ready to merge]

BLOCKERS:
• [Any genuine blockers, or "None" if clean]

OPEN PRs:
• #123 — "feat: add user auth" — Approved, ready to merge
• #124 — "fix: null pointer on login" — Waiting for review

---
Generated from git log since 24h ago · 3 commits · 2 open PRs

If format = “slack”:

Use Slack markdown (bold with *, bullets with , code with backticks):

*Daily Standup — Monday April 14*

*Done (last 24h):*
• <item>

*Planned:*
• <item>

*Blockers:*
• None

*Open PRs:* #123 "feat: add auth" (approved ✓) | #124 "fix: null ptr" (review needed)

Edge Cases

  • No recent commits: Say “No commits in the last 24h. Expanding to 48h…” and re-run.
    If still none, say “No recent commits found. Standup based on open issues only.”

  • No open PRs: Say “No open PRs.” in that section.

  • No open issues: Say “No open issues assigned.” in that section.

  • Not a git repo: Say “This directory is not a git repository. Cannot generate
    standup from git history. Please describe what you worked on and I’ll format it.”

  • Multiple blockers: List them all. Do not summarize blockers into one line — each
    deserves its own bullet so it’s clear what needs attention.


Example Output

DAILY STANDUP — Monday April 14

DONE (last 24h):
• Implemented JWT token refresh logic (commit abc1234)
• Fixed null pointer exception in UserService.login() (commit def5678)
• Code review on #119 — left comments on error handling

PLANNED (today):
• Finish PR #121 — add input validation to registration endpoint
• Address review comments on PR #118 — auth middleware refactor
• Start on issue #87: rate limiting for /api/v1/login

BLOCKERS:
• PR #118 has been waiting for review from @teammate for 2 days — need to ping

OPEN PRs:
• #118 — "refactor: auth middleware extraction" — Waiting for review (2d)
• #121 — "feat: registration input validation" — Draft, in progress

---
Generated from git log since 24h ago · 2 commits · 2 open PRs · 3 open issues