with one click
write-release-announcement
// Write a blog post and Discord announcement for a new Readium Swift Toolkit release. Use this skill whenever the user wants to announce a new version, write a blog post, or draft a Discord post.
// Write a blog post and Discord announcement for a new Readium Swift Toolkit release. Use this skill whenever the user wants to announce a new version, write a blog post, or draft a Discord post.
Write Swift unit tests using Swift Testing (the modern Apple testing framework, not XCTest). Use this skill whenever the user asks to write tests, add test cases, create a test suite, or test a Swift type or function. Also triggers when the user asks to convert XCTest tests to Swift Testing, or when adding new tests to an existing XCTest-based file (always convert first). Invoke proactively when the user has just written a new Swift type or function and hasn't tested it yet.
Updates or adds entries to CHANGELOG.md based on the changes in the current branch. Use this skill whenever the user asks to update the changelog, add a changelog entry or document changes.
Use this skill to write user guides about features in the Readium Swift Toolkit. Invoke whenever the user wants to document a feature, API, or workflow — whether they say "write docs for X", "document this feature", "create a guide for Y", "write a user guide", or "explain how to use Z".
| name | write-release-announcement |
| description | Write a blog post and Discord announcement for a new Readium Swift Toolkit release. Use this skill whenever the user wants to announce a new version, write a blog post, or draft a Discord post. |
This skill writes two release announcement documents to the project root:
BLOG-{VERSION}.md — a blog post (no length limit) in the established Readium styleDISCORD-{VERSION}.md — a Discord message (≤ 2000 characters)Run this command to get the most recent release tag:
git tag --sort=-version:refname | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | head -1
This is VERSION for the rest of the workflow.
python3 scripts/release-md-tools.py extract-changelog VERSION CHANGELOG.md
Read the output carefully. The changelog is organized by module (Shared, Navigator, Streamer, LCP) and change type (Added, Changed, Deprecated, Fixed, Removed). Your job is to translate these raw technical entries into user-facing themes that matter to developers integrating the toolkit.
Good themes cut across modules and focus on what the developer can now do or what changed in their workflow, not on internal architecture. Examples of good theme names:
Aim for 3–6 themes. Always surface breaking changes as their own theme or subsection — developers must not miss them.
Use the tool to ask user questions with multi-selection. Present your proposed themes as options. The user's selection determines the structure of both documents.
If the changelog has breaking changes, always include a "Technical updates and breaking changes" option (or similar).
Ask the user: "Is there anything else you'd like to mention in the announcements that isn't in the changelog?" (e.g. a new documentation site, an upcoming major version, a community shoutout).
This is a free-text follow-up — use the tool to ask the user with a single open question.
Read references/example-3.7.0.md and references/example-3.8.0.md before writing. Each file contains the raw changelog, the finished blog post, and the finished Discord message for one release — study how the changelog entries were grouped, reworded, and condensed at each step.
EPUBNavigatorViewController, LCPKeychainLicenseRepository, etc.The reference examples in references/example-3.7.0.md and references/example-3.8.0.md also contain the Discord announcements.
https://blog.readium.org/release-note-swift-toolkit-version-{VERSION_DASHES}/ where 3.9.0 becomes 3-9-0.https://github.com/readium/swift-toolkit/releases/tag/{VERSION}Write the blog post to BLOG-{VERSION}.md and the Discord message to DISCORD-{VERSION}.md in the project root.
references/example-3.7.0.md — full example for a feature-rich release: raw changelog → blog post → Discordreferences/example-3.8.0.md — full example for a focused release: raw changelog → blog post → Discord