Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
a957bd7
Automate release notes for main, release/*, and tag pushes
mattleibow Apr 28, 2026
6cc4048
Rewrite release-notes script to branch-diffing system
mattleibow Apr 28, 2026
2b53aab
Address review feedback: fix tag mapping, error handling, status dete…
mattleibow Apr 28, 2026
881a14f
Unify script output: single file with YAML header, no stderr split
mattleibow Apr 28, 2026
3256309
Auto-regen TOC in --branch, drop separate --update-toc call from work…
mattleibow Apr 28, 2026
9f79f80
Write branch diff directly to releases/{version}.md, no temp files
mattleibow Apr 28, 2026
7ed34b5
Fix workflow/skill inconsistencies with script
mattleibow Apr 28, 2026
4b274ac
Fix status detection: match release tags by base version, not exact tag
mattleibow Apr 28, 2026
20c8d7e
Fix servicing branch: write to next patch version, not X.Y.x.md
mattleibow Apr 28, 2026
74cbad1
docs: polish 3.119.2 release notes with full PR data
mattleibow Apr 28, 2026
bfd5cd3
Add polished release notes for SkiaSharp 3.119.1
mattleibow Apr 28, 2026
4b99923
Write polished website release notes for 3.119.3
mattleibow Apr 28, 2026
de75e9d
Add polished website release notes for SkiaSharp 4.147.0
mattleibow Apr 28, 2026
09508f3
Polish website release notes for SkiaSharp 3.119.0
mattleibow Apr 28, 2026
7e077b8
Format polished website release notes for 3.119.4
mattleibow Apr 28, 2026
7dea759
Add polished release notes for 3.119.x and 4.147.0
mattleibow Apr 28, 2026
b54384c
Add REPLACE THIS ENTIRE FILE comment to raw script output
mattleibow Apr 28, 2026
1fbd184
Regenerate polished release notes for SkiaSharp 3.119.2
mattleibow Apr 28, 2026
80276d3
Regenerate release notes for SkiaSharp 3.119.1
mattleibow Apr 28, 2026
41c83c7
Regenerate polished release notes for 3.119.3
mattleibow Apr 28, 2026
b30709b
Regenerate polished release notes for SkiaSharp 3.119.0
mattleibow Apr 28, 2026
b9dff70
Regenerate polished release notes for SkiaSharp 4.147.0
mattleibow Apr 28, 2026
256c6ea
Regenerate polished release notes for SkiaSharp 3.119.4
mattleibow Apr 28, 2026
b82eb2f
Regenerate polished release notes for 3.119.x and 4.147.0
mattleibow Apr 28, 2026
02e7153
Address final review: 3-state status, servicing off-by-one, tag guard…
mattleibow Apr 28, 2026
63a3814
Skill: skip script if raw data already present (workflow already ran it)
mattleibow Apr 28, 2026
61d0c43
Regenerate polished release notes for SkiaSharp 3.119.1
mattleibow Apr 28, 2026
3442d53
Regenerate polished release notes for SkiaSharp 4.147.0
mattleibow Apr 28, 2026
d57299c
Regenerate polished release notes for SkiaSharp 3.119.2
mattleibow Apr 28, 2026
e812bc5
Write polished release notes for SkiaSharp 3.119.4
mattleibow Apr 28, 2026
c3003a0
Workflow delegates to skill entirely; skill always runs the script
mattleibow Apr 28, 2026
e4d92cb
Fix null author crash, merge workflow branch logic into single guard
mattleibow Apr 28, 2026
75495b8
Remove --version, --last, --unreleased from script
mattleibow Apr 28, 2026
8e23c4e
docs: regenerate polished release notes for 4.147.0
mattleibow Apr 28, 2026
17aac1d
Write polished release notes for SkiaSharp 3.119.4
mattleibow Apr 28, 2026
4f59aba
Split released/unreleased into separate files
mattleibow Apr 28, 2026
0e8d7f2
docs: polish 4.147.0-next release notes
mattleibow Apr 28, 2026
ce4f935
Regenerate 3.119.4-next.md release notes
mattleibow Apr 28, 2026
e7d7b34
Regenerate polished release notes for SkiaSharp 3.119.2
mattleibow Apr 28, 2026
8c1b36f
Regenerate polished release notes for SkiaSharp 4.147.0
mattleibow Apr 28, 2026
2c3573c
Regenerate 3.119.3 release notes
mattleibow Apr 28, 2026
e72e0f4
Regenerate release notes for SkiaSharp 3.119.0
mattleibow Apr 28, 2026
8e21130
Regenerate polished release notes for SkiaSharp 3.119.4
mattleibow Apr 28, 2026
da3640b
Add polished release notes and -next pages, fix TOC ordering
mattleibow Apr 28, 2026
3478b67
Rename -next to -unreleased for clarity
mattleibow Apr 28, 2026
4b4fa85
Regenerate 3.119.4 unreleased release notes
mattleibow Apr 28, 2026
eb32640
docs: regenerate 4.147.0 unreleased release notes
mattleibow Apr 28, 2026
7fb0676
Regenerate release notes for SkiaSharp 3.119.0
mattleibow Apr 28, 2026
7fb7d5c
Regenerate polished release notes for SkiaSharp 3.119.3
mattleibow Apr 28, 2026
e2a3ca2
docs: regenerate polished release notes for 3.119.1
mattleibow Apr 28, 2026
b9d47e2
docs: fix Tizen platform emoji in 4.147.0 release notes
mattleibow Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 21 additions & 24 deletions .agents/skills/release-notes/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,50 +9,55 @@ description: >
- Generate release notes for a version ("write release notes for 3.119.2")
- Regenerate or refresh release notes ("regenerate 3.119.x release notes")
- Format raw release data into the website template
- Update the release notes after publishing a new release
- Manually fix or update release notes that the automated workflow got wrong

Triggers: "release notes for X", "regenerate release notes", "format release notes",
"update website release notes", "write release notes", "refresh release notes".

This skill is also called by the release-publish skill (Step 7) after annotating
a GitHub release. You don't need to be asked explicitly — if release-publish is
running and reaches Step 7, invoke this skill.
NOTE: Website release notes are normally updated automatically by the
`update-release-notes` agentic workflow when code lands on main, release branches,
or tags are pushed. This skill is for manual regeneration or corrections only.
---

# Release Notes Skill

Generate polished website release notes for one or more SkiaSharp versions.
Manually generate or regenerate polished website release notes for SkiaSharp versions.

> **Note:** The `update-release-notes` agentic workflow handles this automatically
> for pushes to `main`, `release/*` branches, and tag creation. Use this skill only
> for manual regeneration, corrections, or bulk operations.

## Process

### Step 1 — Determine versions

Ask the user which version(s) to generate, or infer from context:
- A specific version: `3.119.2`
- A branch: `release/4.147.0-preview.1` or `main`
- Multiple versions: `3.119.0, 3.119.1, 3.119.2`
- A range by minor: "all 3.119.x" — list files matching `documentation/docfx/releases/3.119.*.md`
and also check GitHub for any releases not yet on disk
- If called from release-publish, the version is already known
- A range by minor: "all 3.119.x"

### Step 2 — Fetch raw data
### Step 2 — Run the script

For each version, fetch the raw GitHub release data:
Run the script to collect raw PR data and write it to the version file:

```bash
python3 .agents/skills/release-notes/scripts/generate-release-notes.py --version {X.Y.Z}
python3 .agents/skills/release-notes/scripts/generate-release-notes.py --branch release/4.147.0-preview.1
python3 .agents/skills/release-notes/scripts/generate-release-notes.py --branch main
```

This outputs raw markdown to a temp directory. Multiple `--version` flags can be
combined in one call. Read the output file(s) from the temp directory.
This writes raw PR data with YAML header to `documentation/docfx/releases/{version}.md`
and regenerates TOC/index. Read the file to get the raw data and metadata.

### Step 3 — Read the template

Read `documentation/docfx/releases/TEMPLATE.md`. This is a real example of a polished
release notes page. Match its structure, tone, and formatting exactly.

Determine each version's status from its raw data:
- **Stable release**: has a "## Stable Release" section → header uses `Released {date}` + NuGet link + GitHub Release link
- **Preview only**: only preview sections → header uses `Preview only` + NuGet preview link + GitHub Release link
Determine the version's status from the YAML header in the version file (`status: unreleased`, `status: preview`, or `status: stable`):
- **Stable**: header uses `Released {date}` + NuGet link + GitHub Release link
- **Preview**: header uses `Preview only` + preview NuGet link + GitHub Release link
- **Unreleased**: header uses `> **Upcoming release** · In development · Not yet available on NuGet`

### Step 4 — Write polished pages

Expand Down Expand Up @@ -88,14 +93,6 @@ Follow these rules:

10. **Links section** — Full Changelog, NuGet Package, API Diff.

### Step 5 — Update TOC and index

After writing all version files:

```bash
python3 .agents/skills/release-notes/scripts/generate-release-notes.py --update-toc
```

## Parallelization

When regenerating multiple versions, process them in parallel — each version is independent.
Expand Down
Loading
Loading