# Jo Minjun Petrify Release

> Release

- Skill: `tomevault-io/jo-minjun-petrify-release` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/jo-minjun-petrify-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/jo-minjun-petrify-release/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/jo-minjun-petrify-release

---


# Release

Automate the full release pipeline for this Obsidian plugin project.

## Version Files

Three files track the plugin version:

| File | Field | Example |
|------|-------|---------|
| `packages/obsidian-plugin/manifest.json` | `"version"` | `"0.3.0"` |
| `packages/obsidian-plugin/package.json` | `"version"` | `"0.3.0"` |
| `packages/obsidian-plugin/versions.json` | `"0.3.0": "minAppVersion"` | `"0.3.0": "1.11.4"` |

`minAppVersion` is read from the current `manifest.json`.

## Process

### 1. Pre-flight Checks

Verify before proceeding:
- Working tree is clean (`git status --porcelain` returns empty)
- On `main` branch
- CHANGELOG.md `[Unreleased]` section has content (not empty)

If any check fails, report and stop.

### 2. Determine Version

Read current version from `packages/obsidian-plugin/manifest.json`.

**If user provided a version argument:** use it directly.

**If no argument:** infer from CHANGELOG.md `[Unreleased]` categories:
- `### Added` or `### Changed` present → **minor** bump
- Only `### Fixed` present → **patch** bump
- Present the inferred version and ask user to confirm or override

### 3. Update CHANGELOG.md

1. Replace `## [Unreleased]` with `## [x.y.z] - YYYY-MM-DD` (today's date)
2. Add new empty `## [Unreleased]` section above it
3. Update bottom reference links:
   - Change `[Unreleased]` link to compare from new version tag
   - Add `[x.y.z]` compare link between previous version and new version

### 4. Update Version Files

1. `packages/obsidian-plugin/manifest.json` → set `"version": "x.y.z"`
2. `packages/obsidian-plugin/package.json` → set `"version": "x.y.z"`
3. `packages/obsidian-plugin/versions.json` → add `"x.y.z": "<minAppVersion>"`

### 5. Verify

Run: `pnpm check && pnpm typecheck && pnpm test && pnpm build`

If any step fails, stop and report.

### 6. Commit, Tag, Push

```
git add CHANGELOG.md packages/obsidian-plugin/manifest.json packages/obsidian-plugin/package.json packages/obsidian-plugin/versions.json
git commit -m "chore: release x.y.z"
git tag x.y.z
git push && git push origin x.y.z
```

The tag push triggers `.github/workflows/release.yml` which automatically builds and publishes the GitHub Release.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/jo-minjun) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

