# GitHub Dev Announcements

> Generate user-facing development update announcements from recent GitHub commits across one or more repositories. The user supplies a list of repos on the first run (wildcards like `org/*` allowed); the workflow stores them in a Google Sheet so subsequent runs need no input. For each run, the agent fetches commits since the last run (or last 7 days on first run), categorizes them into New Features / Updates / Bug Fixes, applies a security filter to strip internal paths, endpoints, secrets, and vulnerability details, drafts the announcement in a Google Doc, polishes the writing with a quality check tool, and logs the run (date, repos, commit count, doc URL, status) back in the sheet. Designed as a starting template — users can remix it to add their own follow-up steps such as posting to Slack or emailing subscribers.

Content type: workflow
Source URL: https://www.agentpmt.com/agent-workflow-skills/github-dev-announcements
Markdown URL: https://www.agentpmt.com/api/agent/workflows/github-dev-announcements?format=agent-md
Updated: 2026-04-30T17:43:09.517Z
Author: firef1ie

---

Estimated time saved: 30 minutes.

## Tools

- GitHub Repo Browser - Read Only
- Google Sheets
- Google Docs Connector
- AI Writing Quality Check

## Workflow Outline

1. Parse User Input: Read the user's request. Extract: 1. `repos[]` — a list of `owner/repo` strings the user wants to monitor. Wildcards like `org/*` are allowed. 2. `lookback_days` — optional, default 7. Only used on the first run when th...
2. Fetch Commits: Call `list_commits` with: - `owner` — the owner portion of `repo` - `repo` — the repo name portion of `repo` - `since_hours` — computed from `cutoff_iso` to now (round up; max 720...
3. Find or Create Sheet: Search Google Drive root for a spreadsheet titled exactly `Github Dev Announcements`. If it does not exist, create it in Drive root with two tabs: 1. Tab `Repos` with header row:...
4. Resolve Repos and Cutoff: Using inputs from the prior steps: 1. Build the final repo list = union of `existing_repos` (from sheet) and `repos_input` (from user). Deduplicate. Preserve wildcard entries like `org/*` as-is — do not expand them in t...
5. Save Repos Tab: Update the `Repos` tab so it contains exactly `final_repo_list_for_sheet` (one repo per row, including any wildcard entries). Idempotent: if the contents already match, no changes...
6. For Each Repo: Repeat this section for each item.
7. Categorize and Draft: Aggregate all commits returned across all repos. **If total commit count is zero:** skip to step 12 (`Log Run`) with `status: "Skipped"`, `commit_count: 0`, and `doc_url: ""`. Do not create a Google Doc. Otherwise, buil...
8. Create Google Doc: Create a new Google Doc in Drive root titled `Dev Update — {YYYY-MM-DD}` using today's date. Insert `draft_markdown` as the document body in plain markdown form (the doc is meant...
9. Writing Quality Check: Call `check_for_banned_phrases` with `content` = `draft_markdown`. Return the tool's `passed` boolean and `corrections[]` array.
10. Polish Loop: If the quality check `passed` is true, set `final_markdown` = `draft_markdown` and continue. If `passed` is false: 1. Rewrite each flagged phrase in `corrections[]` while preserving the meaning of the announcement. 2. R...
11. Update Doc with Final: Replace the body of the doc at `doc_url` with `final_markdown`. Keep the same title and the same document — do not create a new one.
12. Log Run: Append one new row to the `Runs` tab of the `Github Dev Announcements` sheet: - Run Date: now (ISO 8601) - Repos: comma-separated `final_repo_list_for_sheet` (preserve wildcards a...