Skip to content

Daily

Post a daily engineering digest from GitHub in Slack

Each morning before standup, Slack shows what merged yesterday, which pull requests are waiting for review and which issues were opened.

Runs
Daily
Apps
GitHub, Slack
AI
Optional
Access
read repo; chat:write

Send this to your assistant

Create a ClickRuntime automation: every weekday at 9:15, post to #eng a summary of yesterday's merged PRs, open PRs waiting on review and new issues in our repos.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A product team of eight holds a daily standup that keeps running long, because half of it is people reading out what they merged and asking who can review what. The information is all in GitHub, just scattered across repositories.

A digest posted before the meeting covers the status update in writing. Standup becomes a short conversation about blockers, and reviewers see what is waiting for them before anyone has to ask.

What you get out of it

  • Shorter standups

    The status part of the meeting is already in Slack. Time together goes on problems, not recaps.

  • Reviews do not stall

    Pull requests waiting for review are listed with their age. Old ones get picked up instead of sitting for days.

  • Everyone sees all repositories

    Work across several repositories appears in one message. People notice changes in parts of the system they do not usually watch.

  • A readable summary if you want one

    With AI turned on, the digest opens with a few plain sentences about the day's themes. Product managers and leads get the gist without reading every title.

How it works

What happens, step by step

  1. Every weekday morning, ClickRuntime searches your GitHub repositories for pull requests merged yesterday.

  2. It also finds open pull requests waiting for review and issues opened in the last day.

  3. If you turn on AI, it writes a short summary of the main themes.

  4. The digest is posted to your #eng Slack channel before standup.

Before it runs live

  • Connect GitHub
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsDaily
Post a daily engineering digest from GitHub in Slacktoday, 9:00Succeeded
Slack · #engMerged yesterday • Speed up invoice export Waiting for review • Add retry to webhook sender

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Google Sheets
  • Combine it with other GitHub and Slack steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
engineering_daily_digest_and_pre_meeting_briefings.pyexample
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, notify, ai

def gh(method, path, **kw):
    resp = http.request(method, f"https://api.github.com{path}", headers={
        "Authorization": f"Bearer {credentials.connection('github', 'work')}", "Accept": "application/vnd.github+json"}, **kw)
    return resp.raise_for_status() or (resp.json() if resp.content else None)

ORG = "acme"

def search(q):
    return gh("GET", "/search/issues", params={"q": f"org:{ORG} {q}", "per_page": 30})["items"]

@on_trigger
def run(event):
    since = date.today() - timedelta(days=1)
    merged = search(f"is:pr is:merged merged:>={since}")
    waiting = search("is:pr is:open draft:false review:required")
    issues = search(f"is:issue created:>={since}")
    fmt = lambda items: "\n".join(f"• <{i['html_url']}|{i['title']}>" for i in items[:10]) or "• none"
    text = f"*Merged yesterday*\n{fmt(merged)}\n*Waiting for review*\n{fmt(waiting)}\n*New issues*\n{fmt(issues)}"
    try:
        titles = "\n".join(i["title"] for i in merged + issues)[:3000]
        text = ai.generate(titles, system="Summarise the themes of this engineering work in two plain sentences.", max_output_tokens=120).text + "\n\n" + text
    except (ai.AINotIncluded, ai.AILimitReached):
        pass
    notify.slack(text, channel="#eng")
    return {"merged": len(merged), "waiting": len(waiting), "issues": len(issues)}

FAQ

Common questions

Can it run before a specific meeting instead of every morning?
Yes. Set the schedule to match the meeting, such as 10 minutes before a Tuesday planning session.
Which repositories are included?
The ones you list, or every repository in your organisation that the connected GitHub account can read.
Does it include draft pull requests?
Drafts are left out of the waiting-for-review list by default, since they are not ready. You can include them if your team reviews early.
What permissions does it need?
read repo; chat:write. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it runs (daily). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Post a daily engineering digest from GitHub in Slack” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.