Skip to main content

navop-release-notes

Use when working in the Navop repository on CHANGELOG.md, version-tag preparation, GitHub Releases, or R2 updater release notes, especially when bilingual Chinese and English notes must be generated, reviewed, synchronized, published, or verified.

소스 정보

저장소
feigeCode/navop
최근 소스 활동
2026년 8월 30일 09:10
감지된 SKILL.md 언어
영어
스타
2,076
포크
206

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
navop-release-notes
description
Use when working in the Navop repository on CHANGELOG.md, version-tag preparation, GitHub Releases, or R2 updater release notes, especially when bilingual Chinese and English notes must be generated, reviewed, synchronized, published, or verified.
# Navop Release Notes ## Overview Maintain Navop's repository-root `CHANGELOG.md` as the single source of truth for user-facing release notes. Generate a bilingual entry before creating the version tag. The Release workflows extract that tagged entry to set both the GitHub Release body and the R2 updater manifest's `release_notes`. Do not treat GitHub or R2 as the primary editing surface. For a normal release, update and review `CHANGELOG.md`, commit it, and only then create the tag. Only edit an existing GitHub Release directly when the user explicitly asks for a manual synchronization or repair. ## Required Context Work from the Navop repo root and confirm the remote points to `feigeCode/navop`: ```bash rtk git status --short --branch rtk git remote -v rtk git tag --sort=-creatordate rtk gh release list --limit 8 ``` Confirm all four release inputs: - Target version tag, for example `v0.10.1`. - Previous version tag, for example `v0.10.0`. - Source ref containing the release changes: normally `HEAD` before tagging, or the target tag after it exists. - ISO release date, for example `2026-08-01`. If the user names versions, use those exact versions. Otherwise infer the previous tag from the newest stable version tag, but do not invent the target version. Never create a tag, commit, push, or publish unless the user explicitly requested that operation. Before writing notes, inspect recent Release style. Read the target Release only if it already exists: ```bash rtk gh release view <previous-tag> --json tagName,name,body,publishedAt,url rtk gh release view <older-tag> --json tagName,name,body,publishedAt,url rtk gh release view <target-tag> --json tagName,name,body,publishedAt,url # existing release/repair only ``` If Navop has no established Release style yet, use this bilingual shape. Entries carry no `## 中文` / `## English` language headings; each entry must include the CNB mirror download line: ```markdown ### 更新内容 - ... ### 修复与优化 - ... 国内下载:如果 GitHub 下载较慢,可从 [CNB 镜像](https://cnb.cool/navop-dev/navop/-/releases/tag/<target-tag>) 下载桌面端安装包 --- ### What's New - ... ### Fixes and Improvements - ... **Full Changelog**: https://github.com/feigeCode/navop/compare/<previous-tag>...<target-tag> ``` For larger releases, add short overview paragraphs and extra sections only when prior style or commit volume justifies it. ## Generate Notes Read commits and changed files: ```bash TARGET_REF=HEAD # or the existing target tag rtk git log --reverse --format='%H%n%s%n%b%n---END---' <previous-tag>.."$TARGET_REF" rtk git diff --stat <previous-tag>.."$TARGET_REF" rtk git diff --name-status <previous-tag>.."$TARGET_REF" ``` For unclear commits, inspect targeted diffs: ```bash rtk git show --stat --oneline --find-renames <commit> rtk git show --format=medium --find-renames <commit> -- <path> ``` Summarize user-facing behavior, not implementation trivia. Use categories: - Chinese `更新内容`: features, UX improvements, performance, workflow improvements. - Chinese `修复与优化`: bug fixes, compatibility, stability, maintenance with user impact. - English `What's New`: faithful English version of `更新内容`. - English `Fixes and Improvements`: faithful English version of `修复与优化`. Include maintenance bullets only when visible in commits and useful to release readers. Keep internal refactors out unless they explain a visible behavior change. ## Prepare The Changelog Entry Save the generated body to a temporary Markdown file first. Prefer `/private/tmp` on this machine: ```bash NOTES=/private/tmp/navop-<target-tag>-release-notes.md ``` Create the file with normal editing tools, then review it: ```bash rtk sed -n '1,240p' /private/tmp/navop-<target-tag>-release-notes.md ``` The notes file is **incomplete unless every one of these items is present**. Check each one before continuing: - [ ] At least one Chinese content section (`### 更新内容` or `### 修复与优化`) - [ ] At least one English content section (`### What's New` or `### Fixes and Improvements`) - [ ] The CNB mirror download line, using the exact target tag (hard requirement, easy to forget): ```markdown 国内下载:如果 GitHub 下载较慢,可从 [CNB 镜像](https://cnb.cool/navop-dev/navop/-/releases/tag/<target-tag>) 下载桌面端安装包 ``` - [ ] The final compare link must use three dots: ```markdown **Full Changelog**: https://github.com/feigeCode/navop/compare/<previous-tag>...<target-tag> ``` Run `grep -F "cnb.cool/navop-dev/navop/-/releases/tag/<target-tag>" "$NOTES"` and fail the entry if it returns nothing. ```markdown **Full Changelog**: https://github.com/feigeCode/navop/compare/<previous-tag>...<target-tag> ``` Upsert the reviewed body into `CHANGELOG.md`: ```bash python3 script/changelog.py upsert \ --tag <target-tag> \ --date <YYYY-MM-DD> \ --notes-file "$NOTES" \ --changelog CHANGELOG.md ``` The tool inserts the newest version after `<!-- NAVOP_RELEASES -->`, preserves older entries, and replaces an existing target entry idempotently. Extract it back before approving the entry: ```bash EXTRACTED=/private/tmp/navop-<target-tag>-release-notes-from-changelog.md python3 script/changelog.py extract \ --tag <target-tag> \ --changelog CHANGELOG.md \ --output "$EXTRACTED" diff -u "$NOTES" "$EXTRACTED" rtk git diff -- CHANGELOG.md ``` The extracted file must match the generated body. Small newline-only differences can be normalized, but content, headings, ordering, and compare URL must be identical. Commit the reviewed changelog before tagging. `script/release-tag.sh` and `script/bump-version.sh` validate the target entry and fail before tagging if it is missing or malformed. ## Workflow Publishing For normal releases, do not run `gh release edit` yourself: 1. The Release workflow checks out the requested tag. 2. `script/changelog.py extract` produces the GitHub Release body. 3. The same extracted Markdown is added to R2 `updates/latest.json` as `release_notes`. 4. The application renders either GitHub's Release body or R2's `release_notes`, depending on the selected update source. Tags older than the changelog infrastructure are legacy-only. Repair workflows may preserve an already-existing GitHub Release body, but they must not create a new changelog-less Release. ## Manual Synchronization Only when explicitly asked to synchronize an existing GitHub Release, extract from `CHANGELOG.md` first and use that file: ```bash EXTRACTED=/private/tmp/navop-<target-tag>-release-notes-from-changelog.md python3 script/changelog.py extract \ --tag <target-tag> \ --changelog CHANGELOG.md \ --output "$EXTRACTED" rtk gh release edit <target-tag> \ --title "Navop <target-tag>" \ --notes-file "$EXTRACTED" ``` Do not compose a different body directly in GitHub. If the desired text changes, update `CHANGELOG.md` first. ## Verify Always validate the local entry: ```bash python3 script/changelog.py validate \ --tag <target-tag> \ --changelog CHANGELOG.md ``` If a GitHub Release was published or synchronized, run a fresh read: ```bash rtk gh release view <target-tag> --json tagName,name,body,publishedAt,url ``` Verify: - `tagName` is the intended target tag. - `body` contains the Chinese `更新内容` and English `What's New` sections, the CNB mirror download line, and the expected compare URL. - The visible content matches the file extracted from `CHANGELOG.md`. If R2 was published, read its public updater manifest and verify: - `version` matches the target tag without the leading `v`. - `release_notes` contains the same Chinese and English Markdown. - Download URLs and checksums remain present. Also check the working tree so unrelated local edits are not mistaken for release-note work: ```bash rtk git status --short --branch ``` Report the changed changelog entry, whether it was committed/tagged/published, and the verification result. Never claim GitHub or R2 was updated unless a fresh remote read confirms it. ## Common Mistakes | Mistake | Correct Action | | --- | --- | | Using only Chinese notes | Publish matching Chinese and English sections. | | Omitting the CNB mirror download line | Every entry must include the `国内下载` / CNB mirror line pointing at the exact target tag; grep the notes file for it before continuing. | | Creating the tag before the changelog | Generate, review, and commit the target `CHANGELOG.md` entry first. | | Editing GitHub and changelog separately | Treat `CHANGELOG.md` as authoritative and extract the GitHub body from it. | | Omitting R2 notes | Confirm `latest.json.release_notes` is populated from the same extracted entry. | | Assuming legacy repository details | Confirm the remote is `feigeCode/navop` and use Navop URLs, titles, and temp-file names. | | Comparing the wrong tags | Confirm newest two tags or use user-specified tags before writing. | | Listing raw commits | Group commits into release-reader categories. | | Replacing a legacy Release accidentally | Only use the legacy fallback for an already-existing pre-changelog Release. | | Claiming saved without verification | Validate locally and re-read each remote destination that was actually published. |
GitHub에서 보기