.claude/skills/release/SKILL.md
Run the full release workflow: validate branch, test, bump version, generate changelog, tag, push, and publish to all editor marketplaces. Asks for patch/minor/major if not specified.
npx skillsauth add bitwisecook/tcl-lsp 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.
Orchestrates a full release of tcl-lsp. This skill is internal to the project.
Follow these steps in order. Stop and report on failure at any step.
branch=$(git branch --show-current)
if [ "$branch" != "main" ]; then
echo "ERROR: Must be on 'main' branch to release (currently on '$branch')"
exit 1
fi
Fail immediately if not on main. Do not offer to switch branches.
git pull origin main
Run the fast gate first, then slow tests:
make prep-pr
If prep-pr applies formatting changes, commit them:
git add -A && git commit -m "Pre-release formatting fixes"
Then run slow tests:
make test-slow
If any test fails, investigate and fix the issue. After fixing, re-run the failing target. Once all tests pass, commit fixes and push:
git push origin main
Check $ARGUMENTS for patch, minor, or major. If not provided, ask the
user with AskUserQuestion:
What type of version bump? (patch / minor / major)
Compute the new version from the latest git tag:
prev_tag=$(git describe --tags --abbrev=0)
prev_version=${prev_tag#v}
Split prev_version into MAJOR.MINOR.PATCH and apply the bump:
patch: increment PATCHminor: increment MINOR, reset PATCH to 0major: increment MAJOR, reset MINOR and PATCH to 0Generate a changelog from the source diff between the previous tag and HEAD, not from the git log:
git diff "$prev_tag"..HEAD -- '*.py' '*.ts' '*.rs' '*.toml' '*.json' '*.tcl' \
':!**/package-lock.json' ':!**/Cargo.lock'
Analyse the diff and write a concise RELEASE_NOTES.md at the repository root
with these sections (omit empty sections):
# vX.Y.Z
## New Features
- ...
## Improvements
- ...
## Bug Fixes
- ...
## Breaking Changes
- ...
Focus on user-visible changes. Group related changes. Use UK spelling. Do not list every file touched; summarise the meaningful changes. Commit the file:
git add RELEASE_NOTES.md
git commit -m "Add release notes for vX.Y.Z"
make release-tag V=X.Y.Z
This runs scripts/release.sh which bumps all version files, commits, creates
an annotated tag vX.Y.Z, and pushes with --follow-tags.
Ask the user which editors to publish to using AskUserQuestion:
Which editors should be published? (All / None / comma-separated list of: vscode, jetbrains, sublime, zed) Default: None
Based on the response:
make publish-all.make publish-<editor> targets.Available targets:
make publish-vsix — VS Code Marketplace (requires valid PAT)make publish-jetbrains — JetBrains Marketplace (requires JETBRAINS_TOKEN env var)make publish-sublime — Sublime Text (built; distributed via GitHub Release)make publish-zed — Zed (built; distributed via GitHub Release)Print a summary of what was done:
Release vX.Y.Z complete.
Previous version: <prev>
New version: X.Y.Z
Tag: vX.Y.Z
Editors published: <list or "none">
$ARGUMENTS
development
Apply LSP optimiser suggestions to a Tcl file and explain why each optimisation is safe and beneficial. Covers constant folding, propagation, dead code elimination, strength reduction, and expression canonicalisation. Use when optimising Tcl code, improving .tcl file performance, refactoring Tcl scripts for efficiency, or applying language server optimisation suggestions.
development
Apply LSP optimiser suggestions to an F5 iRule and explain why each optimisation is safe and beneficial. Covers constant folding, propagation, dead code elimination, strength reduction, and expression canonicalisation. Use when optimising iRule code, improving iRule performance, applying F5 iRule optimisations, or refactoring iRules for efficiency.
development
Create Tk GUI code from a description with proper widget hierarchy. Generates the code, validates with the LSP analyser (including TK-specific checks), and iterates until clean. Use when creating Tk GUIs, generating Tcl/Tk code from descriptions, building Tk widget layouts, or scaffolding Tk applications.
development
Run full LSP validation on a Tcl file and produce a categorised report of all issues: errors, security, style, and optimiser suggestions. Use when validating Tcl code, linting .tcl files, checking Tcl script quality, or running static analysis on Tcl scripts.