local-link/skills/release-project/SKILL.md
--- name: release-project description: 项目版本发布流程指导,帮助用户完成版本规划、Changelog 管理、版本号升级、Git 标签创建和 npm 首次发布准备。Use when: (1) 用户需要发布新版本 (2) 需要创建版本发布流程 (3) 需要管理版本号和 Changelog (4) 需要自动化版本发布 (5) 需要检查 release 分支同步 (6) 首次 npm 发布准备 --- # Release Project 指导项目版本发布的完整流程,从版本规划到 Git 标签创建。 ## 前置要求 - 当前仓库使用 Git 进行版本控制 - 项目配置了 `package.json`(Node.js 项目)或相应的版本管理文件 - 具有 release 分支作为发布分支 ## 工作流程 ``` ┌─────────────────┐ │ 0. 分支检查 │ │ (确保release │ │ 分支最新) │ └────────┬────────┘ ▼ ┌──────────────
npx skillsauth add lionad-morotar/local-tools local-link/skills/release-projectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
指导项目版本发布的完整流程,从版本规划到 Git 标签创建。
package.json(Node.js 项目)或相应的版本管理文件┌─────────────────┐
│ 0. 分支检查 │
│ (确保release │
│ 分支最新) │
└────────┬────────┘
▼
┌─────────────────┐
│ 1. 版本规划 │
└────────┬────────┘
▼
┌─────────────────┐
│ 2. Changelog │
│ 整理 │
└────────┬────────┘
│
▼
┌──────────┐
│ 用户确认 │
└────┬─────┘
│ 确认后继续
▼
┌─────────────────┐
│ 3. 版本号升级 │
└────────┬────────┘
▼
┌─────────────────┐
│ 4. Git 提交 │
│ & 标签 │
└────────┬────────┘
▼
┌─────────────────┐
│ 5. 首次发布 │
│ 检测&准备 │
└─────────────────┘
目标:确保当前位于 release 分支,且代码与开发分支保持同步。
检查当前分支:
git branch --show-current
release 分支,切换到 release 分支:git checkout release确保 release 分支最新:
情况 A:用户在其他分支开发(如 develop/feature)
# 获取最新代码
git fetch origin
# 将开发分支合并到 release(假设开发分支是 develop)
git merge origin/develop --no-ff -m "chore: merge develop into release"
情况 B:用户已在 release 分支开发
# 只需拉取最新代码
git pull origin release
验证工作区干净:
git status
使用 Ask 工具询问用户:
确定版本类型(遵循 Semantic Versioning):
| 版本类型 | 适用场景 | 版本变化示例 |
|---------|---------|-------------|
| patch | Bug 修复、小幅改动 | 1.0.0 → 1.0.1 |
| minor | 新功能(向后兼容) | 1.0.0 → 1.1.0 |
| major | 破坏性变更 | 1.0.0 → 2.0.0 |
遵循 Keep a Changelog 规范。
YYYY-MM-DD# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
- 新添加的功能
### Changed
- 对现有功能的变更
### Deprecated
- 已经不建议使用,即将移除的功能
### Removed
- 已经移除的功能
### Fixed
- 对 bug 的修复
### Security
- 对安全性的改进
## [1.0.0] - 2024-01-15
### Added
- 正式发布版本
| 类型 | 说明 |
|-----|------|
| Added | 新添加的功能 |
| Changed | 对现有功能的变更 |
| Deprecated | 已经不建议使用,即将移除的功能 |
| Removed | 已经移除的功能 |
| Fixed | 对 bug 的修复 |
| Security | 对安全性的改进 |
在文档最上方维护 ## [Unreleased] 区块:
对于因重大 bug 或安全原因撤下的版本:
## [0.0.5] - 2014-12-13 [YANKED]
更新 Changelog 后,必须等待用户确认再继续下一步:
检查清单:
YYYY-MM-DD)[Unreleased] 区块根据项目类型选择升级方式:
单包项目:
# 使用 npm version
npm version [patch|minor|major]
# 或使用 standard-version
npx standard-version --release-as [patch|minor|major]
Monorepo 项目:
npx changeset versionnpx lerna version [patch|minor|major]版本号同步:
标准发布提交:
# 提交所有变更
git add .
git commit -m "release: v<版本号>"
# 创建标签
git tag -a "v<版本号>" -m "Release v<版本号>"
# 推送到远程
git push origin main --tags
触发时机:完成 "Git 提交 & 标签" 后
# 统计符合 v-* 格式的标签数量
git tag -l "v*" | wc -l
如果标签数量 == 1(意味着这是第一次发布):
使用 Ask 工具询问用户:
"检测到这是您第一次发布此项目。是否需要我协助进行 npm 发布准备工作?包括:
- 从 GitHub 读取您的个人信息(author、repository 等)
- 完善 package.json 字段(keywords、license、bugs、homepage 等)
- 配置 publishConfig(registry、access)"
如果用户确认需要准备:
获取 GitHub 用户信息:
gh api user -q '.login, .name, .email, .html_url'
完善 package.json 字段:
{
"author": "用户名 <邮箱> (个人主页)",
"repository": {
"type": "git",
"url": "git+https://github.com/用户名/仓库名.git"
},
"bugs": {
"url": "https://github.com/用户名/仓库名/issues"
},
"homepage": "https://github.com/用户名/仓库名#readme",
"keywords": ["keyword1", "keyword2", "keyword3"],
"license": "MIT",
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"access": "public"
}
}
提交发布准备变更:
git add package.json
git commit -m "chore: release prepare"
验证 package.json 格式:
node -e "JSON.parse(require('fs').readFileSync('./package.json'))" && echo "格式正确"
chore: release preparenpm publish --dry-run 预览发布内容根据项目需求,可创建发布脚本 scripts/release.sh:
核心步骤(按需求选择):
Dry-run 模式:
添加 --dry-run 参数预览变更,不实际执行。
| 场景 | 推荐工具 |
|-----|---------|
| 简单项目 | npm version |
| 需要自动生成 Changelog | standard-version / semantic-release |
| Monorepo | changesets / lerna |
| 严格流程控制 | 自定义脚本 |
release 分支release: v<版本号>)v<版本号>)chore: release prepare)npm publish --dry-run 验证tools
分批提交 Git 变更的完整工作流。当用户说"提交这个文件"、"帮我 commit"、"分批提交"、"整理提交计划"、"staged 的文件"、"git 提交"时触发
tools
从用户给出的文档片段中,提取"进阶必知"的深层知识,当用户提到"太简单了,给我几条秘密","面试必备的那种","八股文进阶"时触发
data-ai
批量给技能目录添加 disable-model-invocation,节省 token 开销。只保留需要 LLM 生成/分析/决策的技能有模型调用能力。
tools
open understand dashboard for user