How to keep each app's user-facing changelog. Use when you ship a change a user would notice (a new feature, a visible improvement, a bug fix), when wiring the in-app "What's new" surface into a template, or when releasing pending changelog entries. Apps opt in with `changelog.enabled: true` in `agent-native.config.ts`.
68
85%
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
Changelog generation is off by default. Read this skill only when the app's
agent-native.config.ts enables changelog.enabled; otherwise do not create
pending entries for ordinary app changes.
Every template app keeps a CHANGELOG.md of the 100 most recent
user-facing release sections and a changelog/ folder of dated entry files
for the complete history. The top-level file links to that folder for older
updates at the end of the file. The in-app command menu (Cmd+K → "What's new")
and settings page read both surfaces together, so folder-backed history remains
visible without making the top-level file grow forever.
Package release histories follow the same compact shape: the 100 newest
package release sections stay in the root CHANGELOG.md, while older sections
live in changelog/archive/CHANGELOG.md. The package archive is nested so it
cannot be mistaken for a new app entry by the Vite changelog loader.
Add an entry whenever you ship something a user of that app would notice:
Do not add entries for refactors, internal tooling, tests, dependency bumps, or anything invisible to the end user. The changelog is product notes, not a commit log — write it the way you'd describe the change to a customer.
From the app directory (the template you changed):
agent-native changelog add "Recordings can be trimmed before sharing" --type added
agent-native changelog add "Faster transcript search" --type improved
agent-native changelog add "Fixed a crash when opening an empty folder" --type fixed--type is one of added, improved, fixed, changed, removed,
security (aliases like feature, bugfix, enhancement are accepted). This
writes changelog/<date>-<slug>.md — one file per change, so parallel work
never conflicts. You can also hand-write that file; the frontmatter is just:
---
type: added
date: 2026-06-23
---
Recordings can be trimmed before sharing.release refreshes the recent 100-section window in CHANGELOG.md from every
dated entry in changelog/. It deliberately keeps the folder files as the
canonical history, so rerunning the command is safe and older updates remain
available to the app and to repository readers:
agent-native changelog release # refreshes today's recent window
agent-native changelog list # preview pending + releasedReleasing is usually done at deploy/merge time to keep the top-level summary
current. The in-app surface imports CHANGELOG.md?raw, and the core Vite
plugin merges adjacent changelog/*.md entries into that raw markdown at
dev/build time, so new app notes appear in What's new automatically. Refreshing
the committed app-facing 100-entry window still happens when
agent-native changelog release or pnpm changelog:compact runs. Package Changesets are
wired to run pnpm changelog:compact automatically in the Version Packages
workflow, which also moves older package releases into
changelog/archive/CHANGELOG.md.
Templates already get the rendering for free from @agent-native/core. To
expose it in an app:
Command menu — pass the app's own changelog to CommandMenu:
import changelog from "../CHANGELOG.md?raw";
// ...
<CommandMenu open={cmdkOpen} onOpenChange={setCmdkOpen} changelog={changelog}>
{/* existing groups */}
</CommandMenu>This adds a "What's new" entry with an unseen-release dot and an in-app dialog — no other wiring needed.
Settings (optional) — drop the card on the settings page:
import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
import changelog from "../CHANGELOG.md?raw";
// ...
<ChangelogSettingsCard markdown={changelog} />CHANGELOG.md?raw is inlined by Vite at build time, so this works on every
host with no server route or runtime file access.
changelog.enabled is true and the change is user-visible? Run
agent-native changelog add "…".changelog to its CommandMenu and seed a
CHANGELOG.md.agent-native changelog release refreshes
the recent top-level window while retaining the folder history.b0df876
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.