Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7ad8633
Add release notes section to the website
mattleibow Apr 27, 2026
6b1210a
Add release notes template and refactor generator script
mattleibow Apr 27, 2026
195baff
Merge remote-tracking branch 'origin/main' into mattleibow/website-re…
mattleibow Apr 27, 2026
575479a
Add agentic workflow to regenerate unreleased release notes
mattleibow Apr 27, 2026
528b374
Remove build-time unreleased step from site workflow
mattleibow Apr 27, 2026
be921cf
Simplify unreleased notes flow
mattleibow Apr 27, 2026
cc7bd54
docs: update unreleased release notes with merged PRs since v3.119.4-…
mattleibow Apr 27, 2026
ec03183
Use UNRELEASED_BEGIN/END fence markers
mattleibow Apr 27, 2026
04c22e9
Reformat 3.119.2 release notes into polished template format
mattleibow Apr 27, 2026
04572c4
Polish 3.119.4 release notes into template format
mattleibow Apr 27, 2026
b32d5aa
Reformat release notes 3.119.0–3.119.4 using template
mattleibow Apr 27, 2026
24988b9
Reformat all remaining release notes (57 versions) using template
mattleibow Apr 27, 2026
e789083
Merge remote-tracking branch 'origin/main' into mattleibow/website-re…
mattleibow Apr 27, 2026
2a8595d
Update skills and AGENTS.md for release notes pipeline
mattleibow Apr 27, 2026
57efff9
Polish release notes: grouping, preview labels, GH links, upcoming ve…
mattleibow Apr 27, 2026
9e91790
Upcoming version as real file, obsolete in TOC, clean index
mattleibow Apr 27, 2026
54d6284
Collapsible obsolete sections, proper version grouping
mattleibow Apr 27, 2026
d6223d2
Always use major.minor.x group headings for all versions
mattleibow Apr 27, 2026
c18b359
Always nest versions under group in TOC
mattleibow Apr 27, 2026
b510dba
Remove collapsible sections, populate 4.133.0 upcoming notes
mattleibow Apr 27, 2026
08c3b51
Group obsolete versions under single TOC node
mattleibow Apr 28, 2026
61632bb
Fix 4.133.0: add Skia m133 bump, link contributor usernames
mattleibow Apr 28, 2026
fe22149
Fix agentic workflow: Skia milestone detection, linked usernames
mattleibow Apr 28, 2026
e1c22c7
Fix: only mention Skia bump when PR is actually merged
mattleibow Apr 28, 2026
ea3cf62
Restore Skia m133 in 4.133.0, fix workflow Skia detection
mattleibow Apr 28, 2026
2deb551
Fix unreleased script: use commit ancestry instead of date filtering
mattleibow Apr 28, 2026
dbd868d
Workflow creates version file if it doesn't exist
mattleibow Apr 28, 2026
8b4955f
Document TOC update process in TEMPLATE.md
mattleibow Apr 28, 2026
3c7c50c
Redesign template and workflow from scratch
mattleibow Apr 28, 2026
e102007
Remove UNRELEASED_BEGIN/END fences entirely
mattleibow Apr 28, 2026
23e2696
Consolidate into single clean script
mattleibow Apr 28, 2026
b3108f1
Fix baseline tag: use semver comparison, not git ancestry
mattleibow Apr 28, 2026
01d4454
Final 4.133.0 release notes from clean AW test run
mattleibow Apr 28, 2026
81aad16
Add release-notes skill, simplify release-publish Step 7
mattleibow Apr 28, 2026
dc35299
Regenerate 3.119.x via release-notes skill, move commit to publish
mattleibow Apr 28, 2026
572c453
Add Release Notes card to homepage resources section
mattleibow Apr 28, 2026
10563fc
Regenerate 3.118.0 release notes via release-notes skill
mattleibow Apr 28, 2026
6103371
Move generate-release-notes.py into release-notes skill
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
102 changes: 102 additions & 0 deletions .agents/skills/release-notes/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
name: release-notes
description: >
Generate or regenerate polished website release notes for SkiaSharp versions.
Fetches raw release data from GitHub, reads the template, and writes formatted
markdown pages to documentation/docfx/releases/.

Use this skill whenever the user asks to:
- 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

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.
---

# Release Notes Skill

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

## Process

### Step 1 — Determine versions

Ask the user which version(s) to generate, or infer from context:
- A specific version: `3.119.2`
- 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

### Step 2 — Fetch raw data

For each version, fetch the raw GitHub release data:

```bash
python3 .agents/skills/release-notes/scripts/generate-release-notes.py --version {X.Y.Z}
```

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.

### 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

### Step 4 — Write polished pages

For each version, write `documentation/docfx/releases/{X.Y.Z}.md` with polished content.
If the file exists, replace its entire content — this is a full regeneration.

Follow these rules:

1. **Highlights** — 1-3 sentences. What's the story? Lead with the biggest changes.
Mention community contributors by linked name.

2. **Skia engine** — If a "Bump skia" or "milestone" PR appears in the raw data,
list it first under an **Engine** category.

3. **Categorize features** — Group by what they affect. Use sub-headers:
Engine, GPU & Rendering, API Surface, Text & Fonts, Platform, Security, etc.
Each item: **bold title** — description. ❤️ [@contributor](https://github.com/contributor) ([#NNN](url))

4. **Community contributors** — Anyone not @mattleibow. Mark with ❤️ inline AND
in a Contributors table. **ALWAYS** link: `[@user](https://github.com/user)`.
Never write bare `@user` anywhere in the file.

5. **Omit noise** — Skip version bumps, CI-only fixes, doc updates, workflow/skill changes.
If many, mention as: "Plus several CI and documentation improvements."

6. **Breaking changes** — If any, list under `### ⚠️ Breaking Changes` after Highlights.

7. **PR links** — Every item links to its PR.

8. **Rollup at top** — Aggregate ALL changes across all previews into the main sections.

9. **Previews are minimal** — One sentence + changelog link each, at the bottom.

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.
Fetch all raw data in one script call, then launch one agent per version to write the polished page.
Loading
Loading