name: release description: Prepare a codegraph release — bump versions, update CHANGELOG, ROADMAP, BACKLOG, README, create PR argument-hint: <version e.g. 3.1.1> allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Agent
Release v$ARGUMENTS
You are preparing a release for @optave/codegraph version $ARGUMENTS.
Step 1: Gather context
Run these in parallel:
-
git log --oneline v<previous-tag>..HEAD— all commits since the last release tag - Read
CHANGELOG.md(first 80 lines) — understand the format - Read
package.json— current version -
git describe --tags --match "v*" --abbrev=0— find the previous stable release tag
Step 2: Bump version in package.json
Edit package.json to set "version": "$ARGUMENTS".
Do NOT bump:
-
crates/codegraph-core/Cargo.toml— synced automatically byscripts/sync-native-versions.jsduring the publish workflow -
optionalDependenciesversions — also synced automatically by the same script
Then run npm install --package-lock-only to update package-lock.json.
Step 3: Update CHANGELOG.md
The CHANGELOG doubles as release notes — it's what users see on the GitHub release page. Write it for humans, not machines.
Add a new section at the top (below the header) following the existing format:
## [X.Y.Z](https://github.com/optave/codegraph/compare/vPREVIOUS...vX.Y.Z) (YYYY-MM-DD)
**One-line summary.** Expanded description of the release highlights — what's new, what's better, what's fixed. This paragraph should tell a user whether they should upgrade and why.
### Features
* **scope:** description ([#PR](url))
### Bug Fixes
* **scope:** description ([#PR](url))
### Performance
* **scope:** description ([#PR](url))
### Refactors
* description ([#PR](url))
### Chores
* **scope:** description ([#PR](url))
Rules:
- Write for users, not developers. Describe what changed from the user's perspective, not the implementation details. "MCP server connects reliably on first attempt" beats "defer heavy imports in MCP server"
- The bold summary paragraph at the top is the most important part — it's the TL;DR that appears in release notifications
- Categorize every commit since the last tag (skip docs-only and benchmark-only commits unless they're notable)
- Use the conventional commit scope as the bold prefix
- Link every PR number
- Include a Performance section if there are performance improvements
- Read previous CHANGELOG entries to match the tone and detail level
Step 4: Update ROADMAP.md
Read docs/roadmap/ROADMAP.md and update:
-
Version header — update
Current version: X.Y.Z - Phase status table — if any phase moved from Planned to In Progress (or completed), update the status column
-
Task-level progress — for any roadmap tasks that have been completed or partially completed by commits in this release:
- Add a progress note with version and PR links
- Add checklist items:
- ✅for done,- 🔲for remaining - Check actual code exists (glob/grep for new files/directories mentioned in PRs) before marking tasks complete
Step 5: Update BACKLOG.md
Read docs/roadmap/BACKLOG.md and check if any backlog items were completed or partially completed by commits in this release.
- Backlog items are organized into tiers (1, 1b–1g, 2, 3) with an ID, title, and description per row
- Completed items are marked with strikethrough title (
~~Title~~) and a**DONE**suffix with a description of what was shipped and PR links - If a feature in this release matches a backlog item:
- Strike through the title:
~~Title~~ - Add
**DONE** — description of what shipped (PR links)at the end of the row - Check the "Depends on" column of other items — if they depended on the newly completed item, note that they are now unblocked
- Strike through the title:
- Update the
Last updateddate at the top of the file
Step 6: Update README.md
Read README.md and check if any new user-facing features from this release need to be documented:
- Commands table — if a new CLI command was added, add it to the commands section
- MCP tools table — if new MCP tools were added, add them to the AI integration section
- Feature descriptions — if a major new capability was added (new analysis type, new output format, etc.), add it to the relevant section
- Roadmap section — if a phase status changed, update the roadmap summary at the bottom
- Version references — only update version-specific references (e.g., install commands). Historical milestone markers like "Complete (v3.0.0)" should stay as-is
- If nothing user-facing changed (pure refactors, bug fixes, internal improvements), no README update is needed
Step 7: Verify package-lock.json
Run grep to confirm the new version appears in package-lock.json and that all @optave/codegraph-* optional dependency entries are complete (have version, resolved, integrity, cpu, os fields). Flag any incomplete entries — they indicate an unpublished platform binary.
Step 8: Create branch, commit, push, PR
- Create branch:
git checkout -b release/$ARGUMENTS - Stage only the files you changed:
CHANGELOG.md,package.json,package-lock.json,docs/roadmap/ROADMAP.md,docs/roadmap/BACKLOG.mdif changed,README.mdif changed - Commit:
chore: release v$ARGUMENTS - Push:
git push -u origin release/$ARGUMENTS - Create PR:
gh pr create --title "chore: release v$ARGUMENTS" --body "$(cat <<'EOF'
## Summary
- Bump version to $ARGUMENTS
- Add CHANGELOG entry for all commits since previous release
- Update ROADMAP progress
## Test plan
- [ ] `npm install` succeeds with updated lock file
- [ ] CHANGELOG renders correctly on GitHub
- [ ] ROADMAP checklist items match actual codebase state
EOF
)"
Important reminders
- No co-author lines in commit messages
- No Claude Code references in commit messages or PR descriptions
- The publish workflow (
publish.yml) handles: Cargo.toml version sync, optionalDependencies version sync, npm publishing, git tagging, and the post-publish version bump PR - If you find issues (incomplete lock entries, phantom packages), fix them in a separate commit with a descriptive message
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!