---
name: planu-release
description: Create a Planu release — bumps the version, generates changelog, publishes to npm, and tags the git commit. For projects using Planu as a library.
triggers:
  - let's release
  - create a release
  - publish to npm
  - bump version
  - release the project
  - ship it
  - time to release
  - make a release
version: 1.0.0
---

# /planu-release — Create a Release

## When to invoke

Use this skill when all done specs are merged to main and you want to publish a new version.

**Trigger phrases**: "let's release", "create a release", "publish to npm", "bump version", "ship it", "time to release"

## Prerequisites

- All in-progress specs must be `done` before releasing
- All commits must be merged to `main`
- `pnpm build` must pass cleanly

## How it works

1. **Check state** — calls `planu_status` to confirm no specs are `implementing` or `review`
2. **Determine version bump** — analyzes commits since last release: `feat` → minor, `fix` → patch, breaking changes → major
3. **Generate changelog** — calls `generate_changelog` to create the release notes
4. **Create release** — calls `create_release({ version, notes })` which:
   - Bumps `package.json` version
   - Writes `CHANGELOG.md` entry
   - Creates git tag `vX.Y.Z`
   - Publishes to npm (`npm publish --access public`)
   - Pushes tag to origin
5. **Confirm** — reports the published version and npm URL

## Usage

```
User: "let's release"
→ Planu: "3 specs done since last release. Suggested bump: minor (v1.5.0 → v1.6.0).
   Changelog: [preview]. Proceed?"
→ User: confirms
→ Planu: publishes and tags
```

## Notes

- GitHub Actions CI is disabled for this project — publishing is always manual via this skill
- The skill will warn if there are uncommitted changes
- Run `pnpm build` before releasing if source files changed
