Automate daily changelogs
Build a workflow that drafts a reviewable changelog from a day's repository activity.
Build a workflow that prepares a changelog draft for a human to review each day, instead of someone combing through a day's merges by hand.
Shape it in the editor
From Workflows → New workflow, add one agent — slot changelog, with a
harness and model — and give it these ordered steps (see
the editor for what each step kind does):
- Script — gather the day's merged pull requests, closed issues, and
commits and write them to a file in the run's checkout
(
git log --since="{{inputs.since}}" > activity.txt,gh pr list --state merged >> activity.txt). A Script step's stdout isn't handed to the next step; only the file it writes is, so the draft has real activity to work from. - Prompt — ask the agent to read
activity.txtand draft a changelog from it, grouped by audience: user-facing changes, developer-facing changes, fixes and reliability, with links back to each source PR or issue. Name the file explicitly. The prompt doesn't inherit the script's output on its own. - Write output — named
changelog, re-ask for the draft as a typed result with anotestext field and ashippedboolean, so a later step can branch on whether anything shipped. - Branch — switch on
changelog.shipped: end the run on a quiet day, otherwise continue. - Prompt — have the agent write
{{changelog.notes}}into your changelog file (sayCHANGELOG.md) and commit it in the run's checkout. This is the step that actually puts the draft in the repo. - Open PR — open a pull request with a templated title and body, so the review happens where your team already reviews. Open PR publishes the run's branch and opens the PR; it doesn't write or commit the draft itself, which is why step 5 has to land the commit first.
Declare a single since input (text, default yesterday) so a run can cover
a different window without editing the workflow.
What good changelog output looks like
Tell the agent in the Prompt step to keep the draft concise, sourced, and easy to edit:
- User-facing changes.
- Developer-facing changes.
- Fixes and reliability work.
- Links to the source pull requests or issues.
- Open questions for the reviewer to resolve before publishing.
Put it on a daily schedule
Once a manual run reads well, attach a schedule trigger and set it to
daily (or weekdays only if your weekends are quiet). Target a cloud
workspace so the trigger fires on its own clock and the draft is waiting
whether or not your laptop was open. An On this Mac occurrence can come
due while the app is closed, but it waits for an open Desktop app signed in as
you to claim and execute it. Pin the repository on the trigger and fix the
since argument to yesterday. See
scheduling a workflow.
Scheduled cloud runs execute in a fresh worktree per run. Nothing publishes on its own here — the run opens a PR and stops, so a human still approves the draft before it ships.
Reviewing a run
Each run leaves its own sessions, outputs, and diff. Open the run from its history, use Open session to read the transcript and the checkout the draft was written in, and review the PR the Open PR step produced before merging. For the full run view, see running a workflow.