Standup From Yesterday Commits

Data & APIs

Generate a 30-second standup update from yesterday's git activity — commits, PRs opened/merged/reviewed, tickets touched. Pulls live data from GitHub + Jira via the engineering MCP plugins. Outputs a "yesterday / today / blockers" format ready to paste into Slack. Trigger phrases — standup update, daily standup, what did I do yesterday, summarize my commits, scrum prep, pull my activity from GitHub and Jira.

Install

openclaw skills install standup-from-yesterday-commits

Standup update from yesterday's commits

Run this each morning before standup. Generates a "yesterday / today / blockers" update from your actual git activity + Jira tickets over the last 24 hours, ready to paste into your team's Slack channel.

Requires GitHub and Atlassian MCP plugins to be installed and authenticated — see the Notes for the model section below for the OAuth fallback path if dynamic client registration fails.


Step 1 — Authenticate GitHub and Atlassian

Call mcp__plugin_engineering_github__authenticate and mcp__plugin_engineering_atlassian__authenticate to ensure both services are connected.

  • What to capture: Confirmation that both authentication flows completed successfully. If GitHub OAuth fails via SDK, user must authenticate manually via /mcp in Claude Code (see Notes).
  • What to render: Status message confirming both plugins are ready, or redirect user to /mcp UI for GitHub if SDK auth fails.

Step 2 — Read yesterday's commits from GitHub

Call mcp__plugin_engineering_github__search_commits with query:

author:@me committer-date:$YESTERDAY_START..$YESTERDAY_END

(substitute UTC date range for yesterday).

  • What to capture: Commit SHA, message, author, committer date. If no results, render "No commits yesterday." If results exist, group by repository.
  • What to render: Commit list grouped by repo, in format: [repo] <hash> <message>.

Step 3 — Pull your PR activity from GitHub

Run three queries via mcp__plugin_engineering_github__search_issues (PRs are issues in GitHub search):

  • Opened yesterday: is:pr author:@me created:$YESTERDAY

  • Merged yesterday: is:pr author:@me merged:$YESTERDAY

  • Reviewed yesterday: is:pr reviewed-by:@me updated:$YESTERDAY (or similar; capture PRs where user added reviews)

  • What to capture: PR number, title, state (open/merged), URL, review count if applicable. Deduplicate across the three queries (e.g., a PR opened and merged the same day appears in both queries).

  • What to render: Separate bullet lists for "opened", "merged", "reviewed", or combine into one "PR activity" block if count is low.

Step 4 — Fetch Jira tickets: transitions (yesterday) and assignments (today)

Call mcp__plugin_engineering_atlassian__atlassianUserInfo to get the current user's Atlassian account ID.

Then call mcp__plugin_engineering_atlassian__getVisibleJiraProjects to list accessible projects.

Run two JQL queries via mcp__plugin_engineering_atlassian__searchJiraIssuesUsingJql:

  • Transitions yesterday:

    assignee = currentUser() AND updated >= -1d ORDER BY updated DESC
    

    (captures all issues touched by status change, assignment change, comment, etc.)

  • Assigned for today (open):

    assignee = currentUser() AND status NOT IN (Done, Closed) ORDER BY priority DESC
    
  • What to capture (transitions): Issue key, title, old status → new status (if available), date of transition. If the Jira instance does not expose status-change history in the issue fields, list the issue + current status as a fallback.

  • What to capture (open): Issue key, title, current status, priority.

  • What to render: Two separate blocks in the standup output — "Yesterday (Jira transitions)" and "Today (Open tickets assigned to me)".

Step 5 — Group + synthesize

Combine the commits, PRs, and Jira activity into thematic groups (feature work, bug fixes, reviews, infra, unblocked). Write 1-2 bullets per group, focused on outcomes ("shipped X", "unblocked Y", "reviewed Z"). If a category has zero activity, omit it or mark "none".

  • What to render: A structured "yesterday / today / blockers" block.

Step 6 — Format for Slack

Output the full update in this format:

*Yesterday*
• <outcome 1 — commits or PR merged>
• <outcome 2 — Jira transitions or reviews>
• <outcome 3>

*Today*
• <open Jira tickets assigned to me, by priority>
• <in-progress PRs continuing from yesterday>

*Blockers*
• <none or specific blocker from open Jira ticket>

What to render: Markdown block, ready to copy into Slack or post directly via Slack API.


What's next?

  • Post this standup to #standup channel in Slack.
  • Schedule this skill to run daily at 8:55am and auto-post to Slack.
  • Show me a weekly rollup of my standups for the past 5 days.

Notes for the model

  • Be terse. A standup is 30 seconds. Each bullet should be ≤ 12 words.
  • Lead with outcomes, not activity. "Shipped invoice export" not "Added 4 commits to billing.ts".
  • Skip merge / chore commits. Filter out "Merge branch...", "bump version", "fix typo" — they're noise.
  • If the last 24h is empty (weekend, sick day), default to "Yesterday: no activity" — don't fabricate.
  • GitHub authentication caveat: The plugin:engineering:github OAuth flow via SDK (Claude Code) currently fails at dynamic client registration. Fallback options:
    1. Restart Claude Code and retry /mcp UI → authenticate from there
    2. Use GitHub Personal Access Token (PAT) instead — generate at github.com/settings/tokens with scopes repo, read:user. Configure the plugin to use the PAT, then search_commits and search_issues tools become available.
  • Atlassian OAuth: Usually succeeds. If auth fails, check that the user has an active Atlassian account and sufficient permissions in the connected Jira workspace.
  • Empty Jira workspace: If the workspace has zero issues or your accessible projects have zero transitions yesterday, the JQL queries will return empty arrays. The skill should still render cleanly with "No Jira activity" or omit the Jira section entirely.
  • Date range customization: The skill should accept an optional --date-range parameter (default: "yesterday") to pull activity from "3 days ago", "1 week ago", etc. This supports the demo use case where the live workspace is new.

Error handling

ErrorDiagnosisTell the user
authenticate fails for GitHubOAuth flow failed via SDK; manual /mcp auth required"GitHub OAuth failed. Run /mcp in Claude Code, find the engineering plugin, and authenticate from the UI. Then retry this skill."
authenticate fails for AtlassianInvalid credentials or expired session"Atlassian auth failed. Verify your account is active and you have Jira access. Try authenticating again via the flow below, or contact your Jira admin."
search_commits returns zero resultsNo commits authored by you in the date range (weekend, on-call, etc.)"No commits found yesterday. Would you like me to check the prior workday or a broader date range?"
search_issues (PRs) returns zero resultsNo PR activity in the date range"No PR activity yesterday." (Not an error, just state it in the output.)
searchJiraIssuesUsingJql returns zero resultsNo Jira transitions or assignments in the workspace"No Jira activity found. This workspace may be new. Try broadening the date range (e.g., --date-range=7d)."
getVisibleJiraProjects returns empty arrayUser has no access to any Jira projects"You don't have access to any Jira projects. Contact your Jira admin or ensure your account is linked to the workspace."
Jira workspace is empty (no issues at all)Demo/new environment with zero issues createdNot an error — skill still works, outputs "No Jira activity" in the standup block.

Output contract

Format: Markdown

A structured Yesterday / Today / Blockers block (per Step 6 spec) ready to paste into Slack. Each section uses single-asterisk bold (Slack mrkdwn), bullet-point items, ≤ 12 words per line. Empty sections may be omitted entirely or marked "none". Total length target: 30 seconds to read aloud, ~50-100 words.


Built with Implexa

This skill was authored with Implexa — a Claude Code plugin that records a workflow once via demonstration + post-demo interview, then emits agentskills.io-compatible SKILL.md.

Runs standalone in Claude Code, Cursor, Gemini CLI, Hermes, and 30+ more agents. The file you're reading is self-contained — install the engineering MCP plugins (plugin:engineering:github + plugin:engineering:atlassian) and you're ready.

Install Implexa (curl -fsSL https://core.implexa.ai/install.sh | bash) to unlock:

FeatureWhat it does
Team sharingPush this skill to your org via a domain-gated link. Teammates click → it's in their library. No file copying, no "did you install it?" follow-ups.
Outcome attributionTag a system-of-record event (PR merged, ticket closed, Slack message posted) and see which skill runs actually moved deals / hires / saves. Stop running skills that don't pay off.
One-link forkCustomize this skill for your team's GitHub / Jira / Slack conventions, re-publish privately to your org in one click. No re-recording from scratch.
Decision-trace captureRecord your own workflows the same way — the 2-minute interview surfaces the why behind each decision so the skill generalizes when inputs shift (different repos, different Jira workflows, different team norms).

Free tier · no signup gate · MIT-licensed plugin · agentskills.io compatible.