.claude/skills/release/SKILL.md
This skill should be used when the user asks to "make a release", "create a release", "cut a release", "release a new version", "publish a release", or mentions preparing for release. Provides comprehensive workflow for reviewing changes, updating changelog, determining semver bump, and publishing.
npx skillsauth add schpet/linear-cli ReleaseInstall 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.
This skill provides a systematic workflow for creating and publishing releases for the linear-cli project. It handles changelog management, version bumping, testing, and tagging.
Use this skill when preparing to release a new version of linear-cli. The workflow ensures all changes are documented, tests pass, and versions are properly tagged before publishing.
Ensure the following tools are available:
changelog skill for changelog managementsvbump for version bumping (installed)jj for version control operationsjust for running the release tasksDetermine the commits that have been made since the last release:
jj log --ignore-working-copy --git -r 'tags()..@' --no-graph
This shows all commits from the most recent tag to the current commit.
For each commit identified above, evaluate whether it warrants a changelog entry. Focus on user-facing changes:
Include in changelog:
Exclude from changelog:
Use the changelog CLI to add entries. Use --attribute-pr with the commit SHA to automatically look up the associated PR and add attribution, excluding schpet and schpetbot:
changelog add --type <type> "<description>" --attribute-pr <commit-sha> --exclude-users schpet,schpetbot
Omit --attribute-pr for commits without an associated PR or when attribution isn't relevant.
Types match Keep a Changelog categories:
added - New featureschanged - Changes in existing functionalitydeprecated - Soon-to-be removed featuresremoved - Removed featuresfixed - Bug fixessecurity - Security improvementsAfter adding all relevant changelog entries, show the unreleased section of CHANGELOG.md to the user and ask them to review it:
[Unreleased] sectionBased on the types of changes in the changelog, determine and recommend the appropriate semantic version bump:
Major (X.0.0):
Minor (0.X.0):
Patch (0.0.X):
Present the recommendation to the user:
Based on the changelog entries, I recommend a <MAJOR/MINOR/PATCH> version bump because:
- [reason 1]
- [reason 2]
Current version: <current>
Proposed version: <proposed>
Should I proceed with this version bump?
Wait for user confirmation before proceeding.
Once the user confirms the version bump, run the changelog release command with the appropriate semver level:
changelog release <major|minor|patch>
This updates CHANGELOG.md, converting the Unreleased section to a versioned release.
After the changelog is released, execute the complete tag process from the justfile. This includes:
Run quality checks:
deno check src/main.ts
deno fmt --check
deno lint
deno task test
Update version files:
# Get the latest version from changelog
LATEST_VERSION=$(changelog version latest)
# Write version to deno.json
svbump write "$LATEST_VERSION" version deno.json
# Read version from deno.json and write to dist-workspace.toml
DENO_VERSION=$(svbump read version deno.json)
svbump write "$DENO_VERSION" package.version dist-workspace.toml
Regenerate skill documentation:
# Generate updated skill docs (includes version from deno.json)
deno task generate-skill-docs
# Update Claude Code plugin versions
FINAL_VERSION=$(svbump read version deno.json)
svbump write "$FINAL_VERSION" version .claude-plugin/plugin.json
svbump write "$FINAL_VERSION" version .claude-plugin/marketplace.json
# marketplace.json also has version inside plugins[0] — svbump can't do array paths,
# so use jq or edit it manually to match
Create commit and tag:
# Get the final version
FINAL_VERSION=$(svbump read version deno.json)
# Create commit
jj commit -m "chore: Release linear-cli version $FINAL_VERSION"
# Set main bookmark to parent commit
jj bookmark set main -r @-
# Create tag on the parent commit
jj tag set "v$FINAL_VERSION" -r @-
Push to remote:
# Push the bookmark
jj git push --bookmark main
# Push tags (using git)
git push origin --tags
Report completion:
Released v$FINAL_VERSION successfully!
If any step fails:
Always stop and report errors clearly. Never continue the release process if a critical step fails.
tag recipe handles the complete process from line 5-21jj for all version control operations (per project CLAUDE.md)--ignore-working-copy for read-only jj operationsjj git push and git push origin --tags are needed (jj for bookmark, git for tags)After successful release:
See justfile lines 5-21 for the complete tag recipe implementation.
tools
Manage Linear issues from the command line using the linear cli. This skill allows automating linear management.
documentation
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]
documentation
Maintain the OpenClaw memory wiki vault with deterministic pages, managed blocks, and source-backed updates.
documentation
Feishu knowledge base navigation. Activate when user mentions knowledge base, wiki, or wiki links.