A pipeline that automatically generates release notes and updates product documentation when pull requests are merged to main.
Developer creates PR ──> PR merged to main ──> GitHub Action triggers
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
Release Notes Slack + Email Claude AI compares
generated notifications docs vs PR changes
│
▼
Auto-generated
docs update PR
│
▼
PM reviews & merges
│
▼
GitHub Pages updated
- Developer creates a PR with a detailed description using the PR template
- PR is reviewed and merged to
main - The
release-notes.ymlworkflow triggers automatically:- Job 1 (Release Notes): Extracts PR info, sends to Slack and email via AWS SES
- Job 2 (Documentation Update): Uses
anthropics/claude-code-actionto compare the PR changes against current documentation, edits the docs, and creates a PR with proposed updates
- Product manager reviews the auto-generated documentation PR
- Merging the docs PR updates GitHub Pages
.github/
workflows/
release-notes.yml Main automation workflow
claude.yml Interactive @claude bot for PRs/issues
pull_request_template.md Structured PR description template
docs/
index.md Documentation home page (GitHub Pages)
authentication.md JWT authentication guide
billing.md Billing and pricing guide
src/
app.js Sample Express.js application
CLAUDE.md Instructions for Claude Code Action
- GitHub repository with Actions enabled
- Claude GitHub App installed on the repository
- Slack workspace with an incoming webhook
- AWS account with SES configured
- Anthropic API key
Configure these in repository Settings > Secrets and variables > Actions:
| Secret | Description |
|---|---|
ANTHROPIC_API_KEY |
Anthropic API key for Claude |
SLACK_WEBHOOK_URL |
Slack incoming webhook URL |
AWS_ACCESS_KEY_ID |
AWS IAM access key for SES |
AWS_SECRET_ACCESS_KEY |
AWS IAM secret key for SES |
AWS_REGION |
AWS region (e.g., us-east-1) |
SES_SENDER_EMAIL |
Verified SES sender email address |
SES_RECIPIENT_EMAIL |
Recipient email for release notes |
PAT_TOKEN |
GitHub Personal Access Token (repo scope) |
- Go to repository Settings > Pages
- Set Source to "Deploy from a branch"
- Set Branch to
mainand folder to/docs - Save
- Go to Settings > Actions > General
- Under "Workflow permissions", enable "Allow GitHub Actions to create and approve pull requests"
This repository demonstrates three documentation update scenarios in a single PR:
Change a value in src/app.js (e.g., JWT expiry from 24h to 48h). The
pipeline detects the mismatch and updates docs/authentication.md.
Add a new feature to src/app.js (e.g., Google OAuth2 endpoint or PayPal
payment method). The pipeline adds the corresponding section to the docs.
Remove a feature from src/app.js (e.g., the password reset endpoint). The
pipeline removes the documentation section and cleans up cross-references.
- Create a new branch from
main - Make changes to
src/app.js - Push the branch and open a PR using the template
- Fill in all sections, especially User-Facing Changes (Added/Changed/Removed)
- Merge the PR
- Watch the workflow in the Actions tab
- Check Slack for release notes and documentation comparison
- Review the auto-generated documentation update PR
You can also use @claude in any PR comment or issue to get help from Claude:
@claude review this PR for potential issues
@claude help me write a detailed PR description for these changes
@claude explain how the authentication module works