
Computah, summarize what these agents did to my repos
Using Kiro CLI and GitHub Actions to turn the last 24 hours of repo changes into a scheduled email recap.
I'm a chronic multitasker, and I'm constantly jumping between different projects throughout the day. If you're anything like me, keeping track of what changed where can get complicated fast. At any given time, I might have multiple AI agents running across different repos.
I wanted a simple way to stay caught up, so I built a workflow that sends me scheduled email summaries of my repo changes. I run mine daily, but you can choose whatever schedule works for you.
The setup is simple. To get started, we'll need three things: a Kiro account, a GitHub account, and a Gmail account.
First, we'll create a new repository on GitHubĀ . If you're curious to see the finished solution, you can look through the kiro-repo-brief repositoryĀ

Now that the repository is ready, we'll add a simple static site to use as our test project. You can use an existing project instead, or follow along by copying and committing the Version 1 filesĀ . Later, we'll add feature cards in a separate commit so the workflow has a change to summarize.
A few files under
.github power the automation. Here's how the repository is organized:1
2
3
4
5
6
7
8
9
kiro-repo-brief/
āāā .github/
ā āāā workflows/
ā ā āāā daily-digest.yml # Runs and coordinates the workflow
ā āāā digest-prompt.md # Tells Kiro how to write the digest
ā āāā send_digest.py # Formats and emails the digest
āāā index.html # Version 1 sample page
āāā styles.css # Sample page styling
āāā README.mdLet's go over the files inside
.github. This folder contains the pieces that power our automation: the workflow definition, the Kiro prompt, and the email script.We'll start with .github/workflows/daily-digest.yml, the file that tells GitHub when and how to run everything. It uses GitHub Actions, GitHub's built-in automation platform. GitHub Actions can run workflows when something changes in a repo, on a schedule, or when we trigger one manually. If you're curious to learn more, check out the GitHub Actions docsĀ .
The workflow runs every weekday at 9am ET. GitHub cron schedules use UTC, so that becomes
0 13 * * 1-5. workflow_dispatch adds the manual Run workflow button, while test_mode lets us test a brand-new repo without waiting 24 hours.1
2
3
4
5
6
7
8
9
10
on:
schedule:
- cron: "0 13 * * 1-5" # 9am ET while daylight saving time is active
workflow_dispatch:
inputs:
test_mode:
description: "Include all commits when the repo is less than 24 hours old"
required: true
default: true
type: booleanWe give the workflow read-only access to the repository. We then use
fetch-depth: 0 to download the full commit history. GitHub normally checks out only the latest commit, but our workflow needs older commits to find the 24-hour baseline and determine what changed.1
2
3
4
5
6
7
8
9
10
11
12
permissions:
contents: read
jobs:
digest:
runs-on: ubuntu-latest
steps:
- name: Checkout with full history
uses: actions/checkout@v7
with:
fetch-depth: 0Git gathers the last 24 hours of changes into three files for Kiro: the commit list, file summary, and full diff. Lockfiles and minified files are excluded to reduce noise.
1
2
3
4
5
6
7
8
9
10
BASE=$(git rev-list -1 --before="24 hours ago" HEAD || true)
git log --pretty="- %h %s (%an)" "$BASE"..HEAD > changes/commits.txt
git diff --stat "$BASE"..HEAD > changes/stat.txt
git diff "$BASE"..HEAD -- . \
':(exclude)package-lock.json' \
':(exclude)yarn.lock' \
':(exclude)*.lock' \
':(exclude)*.min.*' \
> changes/full.diffSomething really neat about Kiro CLI is its headless modeĀ , which lets it run without someone sitting at a terminal.
1
2
3
4
5
6
7
8
- name: Generate digest with Kiro
if: steps.gather.outputs.has_changes == 'true'
env:
KIRO_API_KEY: ${{ secrets.KIRO_API_KEY }}
run: |
kiro-cli chat --no-interactive --trust-tools=fs_read,fs_write \
"$(cat .github/digest-prompt.md)"
test -s digest.md--no-interactive lets Kiro run inside GitHub Actions, while --trust-tools=fs_read,fs_write limits it to reading and writing files. digest-prompt.mdĀ controls what Kiro summarizes and how the final output is organized. Mine asks for a short TL;DR, but you can customize it to fit your needs.Once the digest is ready, the workflow calls
send_digest.py, which formats it as HTML and sends it through Gmail SMTP.1
2
3
4
5
6
7
- name: Email digest
if: steps.gather.outputs.has_changes == 'true'
env:
MAIL_USERNAME: ${{ secrets.MAIL_USERNAME }}
MAIL_APP_PASSWORD: ${{ secrets.MAIL_APP_PASSWORD }}
MAIL_TO: ${{ secrets.MAIL_TO }}
run: python3 .github/send_digest.py digest.mdNow that our GitHub Actions workflow is set up, we need a couple of credentials before we can test it. Let's start with the Kiro API key.
Head over to the Kiro API Keys pageĀ . You should see something similar to the screenshot below. Give the key a name for this project, then click Create key.

You should now have an API key. Hold on to it because we'll use it later to give our repo access to Kiro.

The next thing we'll need is a Gmail app password so our workflow can send emails from the sender account. For testing purposes, I'm using my personal email as the sender and my work email as the receiver. You can choose any email address as the receiver. Just be responsible š
Head over to the Google App Passwords pageĀ . You should see something similar to the screenshot below. Give the app password a name, then click Create.

Copy the generated app password. We're going to need it in the next step.

Now that we have both credentials, let's add them to GitHub.
Head over to your repository and open Settings. In the left sidebar, under Security and quality, expand Secrets and variables, then select Actions. You should land on the Actions secrets and variables page shown below. Under Repository secrets, click New repository secret.

We'll create four repository secrets. Here's what each one is for:
KIRO_API_KEY: the Kiro API key we generatedMAIL_APP_PASSWORD: the 16-character Gmail app passwordMAIL_TO: the email address that will receive the digestMAIL_USERNAME: the Gmail account that will send the digest
Once we've added all four, the Repository secrets list should look similar to the screenshot below.

Now that our sample page, workflow, and credentials are ready, let's make a change for the summarizer to pick up. We'll add some feature cards to the sample page. If you'd like to make the same update I did, take a look at my Version 2 commitĀ .
Once we've committed and pushed the changes, head to the Actions tab and open Daily repo digest. It should have no runs yet.

Open the Run workflow dropdown. Because we're using a brand-new repo for this blog, we'll leave Include all commits when the repo is less than 24 hours old selected. Then click Run workflow.
Let the workflow run for a bit. If all goes well, we should be in for a treat.

The Actions summary gives us a preview of the digest. Now let's check the receiver's inbox to make sure the email arrived.

We successfully got the email summary š. Now, when I wonder what my agents have been doing to my repos, I won't have to dig through every commit. The answer will already be waiting in my inbox.
If you're juggling a few repos of your own, grab the workflow files from kiro-repo-briefĀ and tweak them to fit how you work.
Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article