Release Lithe
Apply this Skill after develop-lithe for stable releases. Preview releases
keep their existing workflow unless the task explicitly includes them.
Prepare the release notes first
Create docs/releases/v<version>.md and commit it before creating the tag or
manually dispatching either stable release workflow.
Derive the content from the commits, pull requests, tests, packaging changes,
and known limitations between the previous stable tag and the target commit.
Do not invent features, compatibility claims, download assets, or fixes.
Treat the release notes as a required release artifact. A missing or empty
file blocks the release; never fall back to GitHub-generated notes.
Keep the release description short, plain-language, and focused on what users
can do or notice after updating. Write from the user's point of view: explain
the problem solved or workflow improved before naming the implementation.
Include all meaningful user-facing changes, grouping related changes when that
makes the release easier to scan. Do not impose a fixed number of highlights.
Each highlight should answer “What does this change mean for me?” in one
sentence. Avoid internal names and jargon such as
implementation class names, protocol phases, rendering backends, or test
terminology. Mention a technical name only when a user must recognize it in
the UI or follow a setup step, and explain it in plain language.
Do not publish a raw commit or pull-request list as the release description.
Every stable release description must include the macOS Gatekeeper recovery
note below in both languages. Keep the command exactly as written and remind
users to use it only for an app downloaded from a source they trust:
Chinese:
xattr -dr com.apple.quarantine /Applications/Lithe.app
English:
xattr -dr com.apple.quarantine /Applications/Lithe.app
Use the bilingual structure
Write Simplified Chinese first and English second, separated by ---. Keep the
two sections equivalent in meaning. Use these literal required headings and
this order:
## 中文, a short release summary, ### 下载, and ### 重点更新.
- A brief overview sentence under
### 重点更新, then #### ✨ 新功能,
#### ⚡ 改进, and #### 🛠 修复; omit categories with no changes.
### 升级说明 and ### 兼容性与已知问题.
- A comparison link from the previous stable tag to the new tag.
## English, a short release summary, ### Downloads, and ### Highlights.
- A matching overview under
### Highlights, then #### ✨ New features,
#### ⚡ Improvements, and #### 🛠 Fixes; omit the same empty categories.
### Upgrade instructions and ### Compatibility and known issues.
- The equivalent English comparison link.
- At the very bottom,
### 🙌 感谢贡献者 followed by ### 🙌 Contributors, with
equivalent contributor names or GitHub profile links in both languages.
The download sections cover the project page, both macOS architectures,
Windows x64, and the complete Release Assets page. Use versioned asset URLs
that match the packaging workflows. Upgrade instructions cover macOS DMG,
Homebrew, and Windows. The compatibility section must include the Gatekeeper
note, plus platform preview or signing limitations only when they actually
apply to that version.
User-facing writing checklist
Lead with the result: “启动项目更快”“终端输出更流畅”“打开文件不再反复报错”.
Replace implementation descriptions with the visible effect on editing,
running, debugging, Git, databases, or updates.
Keep each bullet to one idea and one sentence; combine related fixes when the
user impact is the same.
Use everyday words. If a technical term is unavoidable, add a short
explanation the first time it appears.
Do not claim performance numbers, compatibility, security, or fixes unless
the target commit and release checks verify them.
Include the Gatekeeper recovery instructions as a small, actionable note:
Chinese: “如果 macOS 提示无法打开 Lithe.app,请在‘应用程序’中按住 Control
点按应用并选择‘打开’;如果仍被阻止,可在终端执行
xattr -dr com.apple.quarantine /Applications/Lithe.app。仅对可信来源的应用使用。”
English: “If macOS says it cannot open Lithe.app, Control-click it in
Applications and choose Open. If it is still blocked, run
xattr -dr com.apple.quarantine /Applications/Lithe.app in Terminal. Use
this only for an app from a source you trust.”
Use the reusable release template as the
formatting source of truth. Copy it to docs/releases/v<version>.md, replace
all placeholders, and remove its authoring comment. Previous releases are only
factual references; do not inherit their structure or stale claims.
Keep change bullets as single Markdown source lines with no nested lists. Aim
for roughly 40 Chinese characters or 20 English words when practical; this is
a writing target, not a display-width guarantee. Put the platform first only
when a change is platform-specific. Group by new capability, improvement, or
fix, not by implementation layer. Credit verified contributors together at
the bottom; optional per-item attribution must be verified and stay concise.
Do not copy another project's features, identities, or compatibility claims.
Run node scripts/validate-stable-release-notes.mjs docs/releases/v<version>.md
before committing the notes.
Contributors
- Add a contributor list at the bottom of every stable release description,
after the English comparison link.
- Build the list from the commits and merged pull requests between the
previous stable tag and the new tag. Verify names and profile links against
GitHub before publishing; do not infer identities from an email address.
- Include human contributors who made code, documentation, design, testing, or
release work relevant to the version. Exclude automation accounts such as
github-actions[bot] unless the release explicitly needs to credit them.
- Keep the list short and readable. Do not include a raw commit log or every
incidental merge author.
- Use the same people and links in the Chinese and English sections. If no
human contribution can be verified for a release, write a brief equivalent
sentence instead of leaving the section empty.
Validate before publishing
- Confirm the version uses
MAJOR.MINOR.PATCH, the filename is exactly
docs/releases/v<version>.md, and the file is non-empty.
- Check that Chinese and English describe the same release and that download
filenames match the artifacts produced by both platform workflows.
- Check the comparison range, current platform requirements, bundled tools,
signing status, updater availability, and known issues against the target
commit and release configuration.
- Run
actionlint after changing a GitHub Actions workflow. Run any focused
packaging or manifest checks required by develop-lithe for other release
changes.
Creating tags, pushing commits, dispatching workflows, or editing a live GitHub
Release changes external state. Perform those actions only when the user has
explicitly requested them. Preparing and validating the local release artifact
does not authorize publication.
1---2name: release-lithe3description: Prepare and validate stable Lithe release notes and publishing workflows. Use when drafting docs/releases files, cutting a stable version, publishing a GitHub Release, or changing stable release automation.4---56# Release Lithe78Apply this Skill after `develop-lithe` for stable releases. Preview releases9keep their existing workflow unless the task explicitly includes them.1011## Prepare the release notes first1213- Create `docs/releases/v<version>.md` and commit it before creating the tag or14 manually dispatching either stable release workflow.15- Derive the content from the commits, pull requests, tests, packaging changes,16 and known limitations between the previous stable tag and the target commit.17 Do not invent features, compatibility claims, download assets, or fixes.18- Treat the release notes as a required release artifact. A missing or empty19 file blocks the release; never fall back to GitHub-generated notes.20- Keep the release description short, plain-language, and focused on what users21 can do or notice after updating. Write from the user's point of view: explain22 the problem solved or workflow improved before naming the implementation.23- Include all meaningful user-facing changes, grouping related changes when that24 makes the release easier to scan. Do not impose a fixed number of highlights.25 Each highlight should answer “What does this change mean for me?” in one26 sentence. Avoid internal names and jargon such as27 implementation class names, protocol phases, rendering backends, or test28 terminology. Mention a technical name only when a user must recognize it in29 the UI or follow a setup step, and explain it in plain language.30- Do not publish a raw commit or pull-request list as the release description.31- Every stable release description must include the macOS Gatekeeper recovery32 note below in both languages. Keep the command exactly as written and remind33 users to use it only for an app downloaded from a source they trust:3435 Chinese:36 `xattr -dr com.apple.quarantine /Applications/Lithe.app`3738 English:39 `xattr -dr com.apple.quarantine /Applications/Lithe.app`4041## Use the bilingual structure4243Write Simplified Chinese first and English second, separated by `---`. Keep the44two sections equivalent in meaning. Use these literal required headings and45this order:46471. `## 中文`, a short release summary, `### 下载`, and `### 重点更新`.482. A brief overview sentence under `### 重点更新`, then `#### ✨ 新功能`,49 `#### ⚡ 改进`, and `#### 🛠 修复`; omit categories with no changes.503. `### 升级说明` and `### 兼容性与已知问题`.514. A comparison link from the previous stable tag to the new tag.525. `## English`, a short release summary, `### Downloads`, and `### Highlights`.536. A matching overview under `### Highlights`, then `#### ✨ New features`,54 `#### ⚡ Improvements`, and `#### 🛠 Fixes`; omit the same empty categories.557. `### Upgrade instructions` and `### Compatibility and known issues`.568. The equivalent English comparison link.579. At the very bottom, `### 🙌 感谢贡献者` followed by `### 🙌 Contributors`, with58 equivalent contributor names or GitHub profile links in both languages.5960The download sections cover the project page, both macOS architectures,61Windows x64, and the complete Release Assets page. Use versioned asset URLs62that match the packaging workflows. Upgrade instructions cover macOS DMG,63Homebrew, and Windows. The compatibility section must include the Gatekeeper64note, plus platform preview or signing limitations only when they actually65apply to that version.6667## User-facing writing checklist6869- Lead with the result: “启动项目更快”“终端输出更流畅”“打开文件不再反复报错”.70- Replace implementation descriptions with the visible effect on editing,71 running, debugging, Git, databases, or updates.72- Keep each bullet to one idea and one sentence; combine related fixes when the73 user impact is the same.74- Use everyday words. If a technical term is unavoidable, add a short75 explanation the first time it appears.76- Do not claim performance numbers, compatibility, security, or fixes unless77 the target commit and release checks verify them.78- Include the Gatekeeper recovery instructions as a small, actionable note:7980 Chinese: “如果 macOS 提示无法打开 Lithe.app,请在‘应用程序’中按住 Control81 点按应用并选择‘打开’;如果仍被阻止,可在终端执行82 `xattr -dr com.apple.quarantine /Applications/Lithe.app`。仅对可信来源的应用使用。”8384 English: “If macOS says it cannot open Lithe.app, Control-click it in85 Applications and choose Open. If it is still blocked, run86 `xattr -dr com.apple.quarantine /Applications/Lithe.app` in Terminal. Use87 this only for an app from a source you trust.”8889Use [the reusable release template](../../../docs/releases/TEMPLATE.md) as the90formatting source of truth. Copy it to `docs/releases/v<version>.md`, replace91all placeholders, and remove its authoring comment. Previous releases are only92factual references; do not inherit their structure or stale claims.9394Keep change bullets as single Markdown source lines with no nested lists. Aim95for roughly 40 Chinese characters or 20 English words when practical; this is96a writing target, not a display-width guarantee. Put the platform first only97when a change is platform-specific. Group by new capability, improvement, or98fix, not by implementation layer. Credit verified contributors together at99the bottom; optional per-item attribution must be verified and stay concise.100Do not copy another project's features, identities, or compatibility claims.101Run `node scripts/validate-stable-release-notes.mjs docs/releases/v<version>.md`102before committing the notes.103104## Contributors105106- Add a contributor list at the bottom of every stable release description,107 after the English comparison link.108- Build the list from the commits and merged pull requests between the109 previous stable tag and the new tag. Verify names and profile links against110 GitHub before publishing; do not infer identities from an email address.111- Include human contributors who made code, documentation, design, testing, or112 release work relevant to the version. Exclude automation accounts such as113 `github-actions[bot]` unless the release explicitly needs to credit them.114- Keep the list short and readable. Do not include a raw commit log or every115 incidental merge author.116- Use the same people and links in the Chinese and English sections. If no117 human contribution can be verified for a release, write a brief equivalent118 sentence instead of leaving the section empty.119120## Validate before publishing121122- Confirm the version uses `MAJOR.MINOR.PATCH`, the filename is exactly123 `docs/releases/v<version>.md`, and the file is non-empty.124- Check that Chinese and English describe the same release and that download125 filenames match the artifacts produced by both platform workflows.126- Check the comparison range, current platform requirements, bundled tools,127 signing status, updater availability, and known issues against the target128 commit and release configuration.129- Run `actionlint` after changing a GitHub Actions workflow. Run any focused130 packaging or manifest checks required by `develop-lithe` for other release131 changes.132133Creating tags, pushing commits, dispatching workflows, or editing a live GitHub134Release changes external state. Perform those actions only when the user has135explicitly requested them. Preparing and validating the local release artifact136does not authorize publication.