# Project Release

> Release workflow for obsidian-wechat-converter (version bump, release notes, tag and publish).

- Skill: `davidlam-oss/project-release` (Agent Skill)
- Install (CLI): `npx skillmds@latest add davidlam-oss/project-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davidlam-oss/project-release/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: davidlam-oss (https://skillmd.com/u/davidlam-oss)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/davidlam-oss/project-release

---


# Obsidian WeChat Converter Release Skill

发布新版本的完整流程。

## 版本号更新

发布新版本（如 `2.5.6` -> `2.6.0`）时，确保以下文件都已更新：

1. **`package.json`**: 更新 `"version": "..."`
2. **`manifest.json`**: 更新 `"version": "..."`
3. **`versions.json`**: 添加新版本映射，如 `"2.6.0": "0.15.0"`
4. **`README.md`**: 更新 Badge 中的版本号 `![Version](https://img.shields.io/badge/version-X.X.X-blue)`

> **提示**：插件设置面板的「关于」页面（`views/settings/about-tab.js`）会自动读取 `manifest.json` 中的 `version` 动态呈现标题版本号，无需手动修改代码。若本次发版包含新增赞助者，可顺带在 `services/sponsors-data.js` 中追加赞助鸣谢记录。

## 开发期门禁

在做 feature / enhancement 时，先跑快速自检：

```bash
npm run scan:guard
```

它用于尽早发现新的 Obsidian scan 风险模式，但不替代最终发布前检查。

## Release Notes

在 `RELEASE_NOTES/` 目录下创建对应版本的文件：

```
RELEASE_NOTES/v{version}.md
```

文件格式：
```markdown
---
title: 简短标题（会显示为 "v{version} - 标题"）
---

## 更新内容

### 🚀 重大更新
- ...

### 🐛 问题修复
- ...

### ✨ 功能优化
- ...
```

## 发布流程

### 情况 A：当前在 feature 分支

1. **准备阶段**（在 feature 分支完成）
   - 更新版本号文件
   - 创建 `RELEASE_NOTES/v{version}.md`
   - 先运行 `npm run scan:guard` 做快速自检
   - 确保 Obsidian scan readiness guard 通过：`npm run review:guard`

2. **合并 PR**
   - 将 feature 分支合并到 `main` 分支

3. **触发发布**
   ```bash
   git checkout main
   git pull
   git tag {version}
   git push origin {version}
   ```

### 情况 B：当前已在 main 分支

1. **准备阶段**
   - 更新版本号文件
   - 创建 `RELEASE_NOTES/v{version}.md`
   - 先运行 `npm run scan:guard` 做快速自检
   - 确保 Obsidian scan readiness guard 通过：`npm run review:guard`

2. **提交并触发发布**
   ```bash
   git add .
   git commit -m "chore: bump version to {version}"
   git push
   git tag {version}
   git push origin {version}
   ```

## 自动化流程

无论哪种情况，推送无前缀版本 tag 后 GitHub Actions 会自动执行：

- 校验 `versions.json` 与 `manifest.json.minAppVersion` 映射
- 校验 tag 与 `manifest.json.version` 一致，且不使用 `v` 前缀
- 运行 `npm run review:guard`，其中包含：
  - scan-risk guard
  - ESLint
  - 生产构建
  - generated build artifact 一致性检查
  - Vitest 全量测试
  - release zip 打包
  - release artifact 校验
- 创建 GitHub Release（从 release notes 文件读取内容）
- 上传 release 文件

## Obsidian 社区插件注意事项

- Git tag 必须与 `manifest.json.version` 完全一致，例如 `2.6.6`
- 不要使用 `v2.6.6` 这样的前缀 tag
- `RELEASE_NOTES` 文件仍然沿用 `RELEASE_NOTES/v{version}.md`
- GitHub Release assets 需要至少包含：
  - `main.js`
  - `manifest.json`
  - `styles.css`
- 如果 `scan:guard` 失败，不要直接进入 release 流程

