Skip to content

Instantly share code, notes, and snippets.

@Makisuo
Created January 19, 2026 17:32
Show Gist options
  • Select an option

  • Save Makisuo/efb6c68cb8aefeb062f1c38f5e3f6ff2 to your computer and use it in GitHub Desktop.

Select an option

Save Makisuo/efb6c68cb8aefeb062f1c38f5e3f6ff2 to your computer and use it in GitHub Desktop.
name: Weekly Changelog
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9:00 AM UTC
workflow_dispatch:
jobs:
generate-changelog:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
id-token: write
steps:
- name: Checkout hazel-landing
uses: actions/checkout@v4
- name: Clone hazel app repo
run: |
git clone --depth 100 https://github.com/hazelchat/hazel.git /tmp/hazel-app
- name: Get last week's commits
id: commits
run: |
cd /tmp/hazel-app
COMMITS=$(git log --oneline --since="1 week ago" --no-merges --format="%h %ad %s" --date=short)
echo "commits<<EOF" >> $GITHUB_OUTPUT
echo "$COMMITS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "date=$(date +%Y-%m-%d)" >> $GITHUB_OUTPUT
- name: Generate changelog with Claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
settings: '{"model": "claude-opus-4-5-20251101", "permissions": {"allow": ["Bash", "Read", "Write", "Edit", "Glob", "Grep"]}}'
prompt: |
Generate a customer-facing changelog for the Hazel app based on these commits from the past week:
${{ steps.commits.outputs.commits }}
Follow these rules:
1. ONLY include user-facing changes (features, fixes, improvements users would notice)
2. EXCLUDE: dependency bumps, internal refactors, CI/CD changes, code cleanup, TypeScript fixes
3. Group related commits into single entries
4. Write descriptions in plain language customers understand
IMPORTANT: Use the Write tool (not Bash) to create the changelog file.
Create a new file at src/content/changelog/${{ steps.commits.outputs.date }}.md with this format:
---
week: "[Month Day, Year]"
date: [YYYY-MM-DD]
title: "[Brief descriptive title]"
summary: "[One sentence summary]"
isMajor: false
author: "Hazel Team"
changes:
- type: feature|fix|improvement|performance|security|breaking|deprecated
title: "[Entry name]"
description: "[User-friendly description]"
---
[Brief paragraph about release highlights]
If there are no user-facing changes, create the file with an empty changes array and note that in the summary.
After creating the file, create a pull request with:
- Branch: changelog/${{ steps.commits.outputs.date }}
- Title: "Changelog: Week of ${{ steps.commits.outputs.date }}"
- Body: Summary of the changes included
claude_args: "--max-turns 25"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment