pre-changelog 是做什麼的?
Preview the user-facing Chinese changelog of an open kimi-code release PR before it is merged. Read-only: this skill writes no files and commits nothing.
This skill reuses sync-changelog's strip / classify / translate rules. Read sync-changelog first; only the data source (release PR diff instead of a published CHANGELOG.md) and the output (preview instead of docs files) differ.
Workflow
1. Locate the release PR
gh pr list --state open --search "ci: release packages in:title" \
--json number,title,url,headRefName,baseRefName
Pick the one with headRefName: changeset-release/main; record number, url as <RELEASE>. If none is open, nothing to preview — stop.
2. Read the pre-generated CLI changelog block
changesets already pre-generates apps/kimi-code/CHANGELOG.md inside the release PR. Extract the new version block from the diff:
gh api repos/MoonshotAI/kimi-code/pulls/<RELEASE>/files \
--jq '.[] | select(.filename=="apps/kimi-code/CHANGELOG.md") | .patch'
Take the added lines (+) from the top ## <version> down to (but not including) the next ## . That is the version block to preview.
If the CLI changelog is not in the diff (for example an SDK-only release), stop and tell the user — there is no user-facing CLI changelog to preview.
3. Render the Chinese preview (reuse sync-changelog)
Process the version block exactly as sync-changelog does for the docs site, but only in memory:
- Strip (
sync-changelogstep 3): drop the H1, the### Patch Changes/### Minor Changes/### Major Changessubheadings, PR links, and commit-hash links; keep only each entry's body text. TheThanks [@user](...)!credit (including the multi-author form) must be removed every time. Within each entry, drop SDK-only and provider-internal sentences (SDK capability mapping / API exposure, provider wire-format mechanics, internal XML markers) and keep only the user-facing effect and required constraints. - Merge and deduplicate (
sync-changelogstep 4): merge micro-tweaks to the same surface into one higher-level entry; when three or more fixes target the same UI area or the same class of problem, merge them into one higher-level fix entry (do not merge broad or genuinely distinct fixes); and drop a server/API entry that only backs a web feature already listed. - Classify (
sync-changelogstep 4): bucket into Features / Bug Fixes / Polish / Refactors / Other; order within each section by reader value (in Polish, user-visible improvements before protocol/internal adjustments). - Translate (
sync-changelogstep 6): translate entry bodies to Chinese; keep one sentence per entry with a parallel rhythm within a section; section headings become 新功能 / 修复 / 优化 / 重构 / 其他.
If an upstream entry is not in English, flag it and stop (changeset entries must be English).
4. Output
Print the preview directly. Use <version>(预览) as the heading because the version is not released yet. Write 无 for empty sections. Do not write any file.
发版 PR: <url>
## <version>(预览)
### 新功能
- ...
### 修复
- ...
Rules
- Read-only. Never write
CHANGELOG.md, docs files, or commit anything. - Classification, ordering, and translation follow
sync-changelogexactly — do not reword or reclassify beyond what it specifies. - If the release PR has no CLI changelog diff, report it and stop.