Create or update Chatto docs website release pages by comparing release-please state, tags, commits, changelog entries, and PRs
62
72%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/chatto-release-notes/SKILL.mdGenerate or update user-facing release pages for Chatto minor releases.
Release notes now live in the docs website, not in local .context Markdown
files or GitHub release bodies. The output is one MDX page per minor release,
for example:
apps/docs-website/src/content/docs/releases/0-4-0.mdxUse a URL-safe filename with hyphens (0-4-0) because Starlight content slugs
do not preserve dotted version filenames as sidebar slugs. Keep the visible
title, description, hero, and version text dotted (0.4.0).
Write only for:
Do not list changes that do not affect either group. Skip routine refactors, test work, CI work, codegen churn, internal API rearrangement, and dependency maintenance unless they change user-visible behavior or operator action.
Name the specific actor whenever one is known. Prefer "users", "members", "operators", "admins", or "integration authors" over generic actor wording.
API changes belong on these pages only when they affect self-hosters or integration authors running against their own Chatto servers. Phrase them as operator or integration impact, not as maintainer implementation detail. Do not mention generated package moves, import paths, or internal client extraction unless external integration authors must take action.
Do not use technical significance, implementation size, or a breaking-change
label to decide headline placement. Rank changes by the size of the
user-visible, admin-visible, or operator-visible outcome. A change that matters
only because clients, replicas, or integrations must upgrade together belongs
in ## Upgrade Notes, not automatically in the opening feature grid.
Treat a public integration API replacement as a headline only when it is itself
one of the release's defining changes for integration authors, such as
ConnectRPC replacing GraphQL. Use an explicit title like ConnectRPC replaces GraphQL, mark the card size="large", and repeat the required action in
## Upgrade Notes. Do not apply this exception to bundled-frontend transport
protocols, media delivery formats, storage formats, cursors, projections,
replay systems, caches, or synchronization internals merely because their
compatibility classification is breaking.
Do not turn an incidental effect of a technical migration into a feature card.
Media delivery conversions such as MP4-to-HLS, storage migrations, and bundled
realtime protocol replacements stay out of every feature grid. Include them
only in ## Upgrade Notes when readers must act or understand compatibility.
Add a feature card only when product documentation or the maintainer identifies
a separately intended user capability, independent of the mechanism that
implements it.
.release-please-config.json.release-please-manifest.json0.4.0-beta.4 targets 0.4.0.x.y.0.(unreleased) in the frontmatter title, an unreleased
description, and status="Unreleased" on ReleaseHero. Remove those markers
only when the stable release exists.Useful local check:
jq -r '.["."]' .release-please-manifest.jsonBefore writing, check whether the target page already exists:
apps/docs-website/src/content/docs/releases/<version-with-hyphens>.mdxIf it exists, assume a human maintainer has edited it manually.
.context/release-page-<version>-proposal.md
and tell the user where they are.Release pages should use the dedicated release-note components in:
apps/docs-website/src/components/release-notes/Expected components:
ReleaseHero.astro for the page opening.ReleaseFeatureGrid.astro to group feature cards.ReleaseFeatureCard.astro for one user/operator-facing feature per card.
Use size="large" for headline features, size="small" for compact items,
and omit size for normal cards. Maintainer-provided images can be attached
with imageSrc, imageAlt, imageCaption, and imagePosition.
Do not add audience labels or subheadings inside cards; cards should show only
the feature title and body text unless they include a maintainer-provided
image.ReleaseImage.astro for standalone maintainer-provided images.If these components are missing, add them before creating a release page.
ReleaseFeatureGrid uses CSS Grid Lanes for the box layout, with a local
polyfill fallback for browsers that do not support display: grid-lanes yet.
Keep release feature cards as direct children of ReleaseFeatureGrid so native
lanes and the polyfill can place them correctly.
Release pages compare the upcoming stable minor release against the highest stable patch release of the previous minor line.
0.4.0 page, compare against the highest stable 0.3.x tag, such as
v0.3.8.v0.4.0-beta.4, as the baseline
for a stable minor release page.0.4.0, including changes first released in 0.4.0-beta.*.0.4.0 prerelease cycle and later prereleases clean up method
names, message shapes, or generated docs before the stable release, describe
the stable ConnectRPC API once. Mention beta-to-stable migration work only in
upgrade notes for operators or integration authors who tested prereleases.Identify the baseline by listing stable tags for the previous minor:
git tag --list 'v0.3.*' --sort=-version:refname | grep -v '-' | head -1Then inspect changes from that baseline to the current release-preparation state:
git log --oneline <previous-minor-highest-stable-tag>..HEAD
git diff --name-only <previous-minor-highest-stable-tag>..HEADCHANGELOG.md for all stable and prerelease sections that roll into
the target stable release.Bug Fixes section in the
comparison range, plus any post-prerelease fix: commits not yet in
CHANGELOG.md. Then filter it for stable-release readers.Useful commands:
git tag --list --sort=-version:refname
gh pr view <number> --json title,body,url---
title: Chatto <version> (unreleased)
description: Unreleased release notes for Chatto <version>.
---For already shipped stable releases, remove (unreleased) from the title and
use Release notes for Chatto <version>. as the description.
../../../components/release-notes/....ReleaseHero. For unreleased pages, pass status="Unreleased".## Upgrade Notes or omit the change.## Running and Integrating Chatto by default unless a more specific title fits the release
better.ReleaseFeatureCard per notable feature.## Upgrade Notes, bug fixes to "Smaller
fixes you'll appreciate", or exhaustive links/PR detail to ## GitHub release.ReleaseFeatureCard, even if several fixes share a
theme or feel user-visible. Bug fixes belong only in the grouped "Smaller
fixes you'll appreciate" section.## Upgrade Notes when they affect prerelease testers.ReleaseImage or the image props on ReleaseFeatureCard.## Upgrade Notes section only when server operators, admins, or
integration authors need to act or review compatibility. Do not put upgrade
notes in a box or card.### subheadings such as "Messages and Threads",
"Notifications and Unread State", "Calls and Media", or "API and Operations".
Do not use one ungrouped catch-all list.Fixed ..., Prevented ..., Kept ..., or
another direct verb when it is clearer than repeating Fixed an issue where.## GitHub release section that links to the canonical
GitHub release URL for the stable version. The URL is always
https://github.com/chattocorp/chatto/releases/tag/v<version>, for example
https://github.com/chattocorp/chatto/releases/tag/v0.4.0.Every release page must end with ## GitHub release.
Use this format:
## GitHub release
The generated GitHub release lists every PR and commit:
[github.com/chattocorp/chatto/releases/tag/v<version>](https://github.com/chattocorp/chatto/releases/tag/v<version>)For unreleased pages, keep the same link target even if the GitHub release does not exist yet. The page is already marked as unreleased, and the URL will become valid when the stable release is published.
Do not create or generate release-page images by default. Use images only when the maintainer provides an asset, points you at an existing asset, or explicitly asks you to add one.
Store release-specific images under:
apps/docs-website/public/releases/<version-with-hyphens>/<descriptive-name>.pngFor a standalone image, import ReleaseImage and reference it as:
<ReleaseImage
src="/releases/<version-with-hyphens>/<descriptive-name>.png"
alt="..."
caption="..."
/>For an image attached to a feature card, use:
<ReleaseFeatureCard
title="..."
imageSrc="/releases/<version-with-hyphens>/<descriptive-name>.png"
imageAlt="..."
imageCaption="..."
>
...
</ReleaseFeatureCard>New pages usually need a sidebar entry in:
apps/docs-website/astro.config.mjsAdd a Releases sidebar group if none exists. If a group exists, add only the
new page. Preserve existing order and labels.
## Running and Integrating Chatto, focus
on operator outcomes such as faster startup, replay, backup, restore,
deployment, or resource use. Put frontend-only loading wins in a user-facing
section only when users will actually notice them. Prefer titles like "Faster
startup performance" or "Pages load faster" over internal labels like "Faster
loading paths", "projection replay improvements", or "bundle splitting".mise x -- pnpm --filter docs-website build65f65c3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.