# Changelog Entry

Write the hand-curated entries for open-slide's /changelog page...

- Repository: https://github.com/open-slide/open-slide (9607 stars)
- Category: Documents
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add open-slide/open-slide --skill changelog-entry -g -a claude-code -y`
Codex: `npx skills add open-slide/open-slide --skill changelog-entry -g -a codex -y`
Cursor: `npx skills add open-slide/open-slide --skill changelog-entry -g -a cursor -y`
Gemini CLI: `npx skills add open-slide/open-slide --skill changelog-entry -g -a gemini-cli -y`

## Description

Write the hand-curated entries for open-slide's /changelog page (apps/web/lib/changelog.ts) from new @open-slide/core releases, turn CHANGELOG.md line items into a titled entry with a summary, highlights, patch notes, contributor credits, docs links, and a framed screenshot when the release earns one. Use this whenever a new version of @open-slide/core is released or about to be (a "chore: release packages" PR), when apps/web/lib/changelog.test.ts fails with "Missing from apps/web/lib/changelog.ts", or when the user asks to update, add to, or fix the changelog page, even if they only say "update the changelog".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Changelog entries

`/changelog` on the landing site is written by hand on purpose. It is not a
list of PR titles. Each minor version line (2.3, 2.2, …) is one entry with a
human title and summary, and patch releases fold into it. The raw line items
live in `packages/core/CHANGELOG.md`, written by Changesets. This skill turns
those into page copy.

- Data: `apps/web/lib/changelog.ts` (types `Era`, `Release`, `Patch`, `Shot`).
- Rendering: `apps/web/components/changelog/timeline.tsx`. You shouldn't need
  to touch it.
- Guard: `apps/web/lib/changelog.test.ts` (runs in `pnpm test:changelog`, its own CI job). It fails when
  a stable core version in `CHANGELOG.md` is missing from the page, when the
  page lists a version that was never published, or when the latest page
  version doesn't match `packages/core/package.json`.
- The release count and latest version on the page are computed. Don't
  hard-code numbers.

## When to run it

Changesets opens `chore: release packages` (branch `changeset-release/main`),
which bumps `packages/core/package.json` and prepends to `CHANGELOG.md`.
GitHub Actions does not run on that bot PR, so nothing fails there. If it
merges without a page entry, the test fails on `main` and on every PR after
it, until the entry lands.

Preferred: add the entry as the **last commit on the release PR, right before
merging it**. The Changesets action force-pushes that branch whenever another
PR merges to `main`, which would drop an earlier commit. If the release has
already merged, open a follow-up PR to `main` instead. Before merging, check
the release PR's `CHANGELOG.md` diff: it is the source of truth for what
shipped.

## Steps

1. **Find what's missing.** Run `pnpm test:changelog`. The
   failure lists the versions. Read their sections in
   `packages/core/CHANGELOG.md`, and the same-date sections of
   `packages/cli/CHANGELOG.md`: CLI changes fold into the core entry they
   shipped with.

The rest: https://github.com/open-slide/open-slide/blob/HEAD/.claude/skills/changelog-entry/SKILL.md
