
Release
- 3.6k installs
- 878 repo stars
- Updated July 23, 2026
- schpet/linear-cli
release is an agent skill that cuts a linear-cli release by reviewing commits, updating the changelog, bumping semver, and tagging so the new version ships with verified checks.
About
release is an agent skill for the linear-cli project that walks through a release workflow from commit review to publish. Step one lists commits since the last tag with jj log from tags to HEAD. Step two adds changelog entries via changelog add with Keep a Changelog types added, changed, fixed, security, deprecated, and removed, using --attribute-pr to credit contributors while excluding schpet and schpetbot. Step three shows the Unreleased CHANGELOG section for user review. Step four recommends a MAJOR, MINOR, or PATCH semver bump and waits for confirmation. Step five runs changelog release with the chosen level. Step six executes the justfile tag process: deno check, fmt, lint, test, svbump writes to deno.json and dist-workspace.toml, generate-skill-docs, plugin version updates, jj commit, bookmark set, tag set, jj git push, and git push --tags. Prerequisites require changelog skill, svbump, jj, and just. Quality check failures block the release. Developers reach for it when asked to make, create, cut, or publish a linear-cli release.
- Six-step workflow: review commits, changelog entries, user review, semver bump, changelog release, tag push.
- jj log from tags to HEAD; changelog add with --attribute-pr excluding schpet and schpetbot.
- Semver recommendation: MAJOR for breaking, MINOR for features, PATCH for fixes.
- Tag process runs deno check, fmt, lint, test, svbump, generate-skill-docs, jj commit and tag.
- Stops on quality check failures; never continues release if tests or lint fail.
Release by the numbers
- 3,563 all-time installs (skills.sh)
- +249 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #7 of 257 Release Management skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
release capabilities & compatibility
- Capabilities
- commit review since last tag · changelog entry authoring and release · semver bump recommendation and confirmation · deno quality checks, version file updates, and j
- Works with
- github
- Use cases
- ci cd · documentation
What release says it does
jj log --ignore-working-copy --git -r 'tags()..@' --no-graph
changelog release <major|minor|patch>
Do not proceed with release if tests fail or linting errors exist.
npx skills add https://github.com/schpet/linear-cli --skill releaseAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3.6k |
|---|---|
| repo stars | ★ 878 |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 23, 2026 |
| Repository | schpet/linear-cli ↗ |
How do I cut a new linear-cli release with proper changelog entries, semver bump, tests, and git tags?
Cut a linear-cli release by reviewing commits, updating the changelog, bumping semver, running checks, and tagging with jj.
Who is it for?
Maintainers of the linear-cli repository preparing a semver release with jj, changelog, and deno quality checks.
Skip if: Skip for non-linear-cli projects or releases without jj, changelog CLI, svbump, and just available.
When should I use this skill?
User asks to make a release, create a release, cut a release, publish a release, or prepare linear-cli for release.
What you get
Versioned CHANGELOG release, updated deno.json and plugin versions, jj commit and v-tag pushed to remote.
- Updated CHANGELOG
- Version tag
- Published release
By the numbers
- Skill version 0.1.0
Files
Release Workflow
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.
When to Use
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.
Prerequisites
Ensure the following tools are available:
changelogskill for changelog managementsvbumpfor version bumping (installed)jjfor version control operationsjustfor running the release tasks
Release Workflow
Step 1: Review Commits Since Last Release
Determine the commits that have been made since the last release:
jj log --ignore-working-copy --git -r 'tags()..@' --no-graphThis shows all commits from the most recent tag to the current commit.
Step 2: Add Changelog Entries
For each commit identified above, evaluate whether it warrants a changelog entry. Focus on user-facing changes:
Include in changelog:
- New features
- Bug fixes
- Breaking changes
- Significant improvements
- Deprecations
Exclude from changelog:
- Internal refactoring without user impact
- Documentation-only changes
- Build/CI configuration changes
- Chore commits (unless significant)
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,schpetbotOmit --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 improvements
Step 3: Verify Changelog with User
After adding all relevant changelog entries, show the unreleased section of CHANGELOG.md to the user and ask them to review it:
1. Read the CHANGELOG.md file 2. Show the [Unreleased] section 3. Ask: "Please review these changelog entries. Are there any changes needed before release?" 4. Make any requested adjustments
Step 4: Determine Semver Bump
Based on the types of changes in the changelog, determine and recommend the appropriate semantic version bump:
Major (X.0.0):
- Breaking changes
- Removed features
- Significant API changes
Minor (0.X.0):
- New features (added)
- Deprecations
- Backward-compatible functionality additions
Patch (0.0.X):
- Bug fixes
- Security fixes
- Minor improvements with no new features
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.
Step 5: Run Changelog Release
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.
Step 6: Execute Tag Process
After the changelog is released, execute the complete tag process from the justfile. This includes:
1. Run quality checks:
deno check src/main.ts
deno fmt --check
deno lint
deno task test2. 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.toml3. 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 match4. 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 @-5. Push to remote:
# Push the bookmark
jj git push --bookmark main
# Push tags (using git)
git push origin --tags6. Report completion:
Released v$FINAL_VERSION successfully!Error Handling
If any step fails:
- Quality checks fail: Fix the issues before continuing. Do not proceed with release if tests fail or linting errors exist.
- Version bump fails: Verify the version format and files exist.
- Push fails: Check authentication and remote access.
Always stop and report errors clearly. Never continue the release process if a critical step fails.
Important Notes
- The justfile
tagrecipe handles the complete process from line 5-21 - Use
jjfor all version control operations (per project CLAUDE.md) - Always use
--ignore-working-copyfor read-only jj operations - The workflow creates a commit on the parent (@-) and then creates a new working commit
- Both
jj git pushandgit push origin --tagsare needed (jj for bookmark, git for tags)
Post-Release
After successful release:
1. Verify the tag appears on GitHub 2. Check that GitHub Actions release workflow triggers (if configured) 3. Confirm the new version is published
Reference
See justfile lines 5-21 for the complete tag recipe implementation.
Related skills
How it compares
Use release over generic git skills when the target is a linear-cli semver publish with changelog and test gates.
FAQ
How are commits since the last release found?
jj log --ignore-working-copy --git -r 'tags()..@' --no-graph shows commits from the latest tag to HEAD.
What blocks a release from continuing?
Failed deno check, fmt, lint, or test quality checks; the workflow stops and reports errors clearly.
How is the semver bump chosen?
MAJOR for breaking changes, MINOR for new features or deprecations, PATCH for bug and security fixes.
Is Release safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.