release · ypollak2 — Claude Code skill: release and setup
This skill guides an llm-router release from version selection through PyPI and GitHub publishing. Run /release when the next version is ready to ship.
npx skills add ypollak2/llm-router --skill release -a claude-codeWhat release does
The skill asks which version to release, updates the version in pyproject.toml and both plugin files, then adds an entry to CHANGELOG.md. It runs the test suite and Ruff, checks that the version strings match, and copies hook files to ~/.claude/hooks/ if hooks changed.
Next, the workflow commits the changes, tags and pushes them, publishes the package to PyPI, creates a GitHub Release, and reinstalls the plugin. It also records the release decision in docs/decisions.md. Tests run with uv run; publishing reads the PyPI token from /Users/yali.pollak/.pypirc, and a failed check stops the release.
What it helps with
- Keep project and plugin version strings in sync
- Add a release entry to
CHANGELOG.md - Run tests and verify versions before publishing
- Publish the package to PyPI and create a GitHub Release
Example prompts for the agent
- Prepare version
4.0.1for release with/release. - Run
/releaseand take llm-router through its release steps. - Release the current llm-router version using
/release.
How to install release
1Skills CLI (Vercel)
npx skills add ypollak2/llm-router --skill release -a claude-code2Manually: put the files in place
~/.claude/skills/release/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/release/
1Skills CLI (Vercel)
npx skills add ypollak2/llm-router --skill release -a codex2Manually: put the files in place
.agents/skills/release/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add ypollak2/llm-router --skill release -a cursor2Manually: put the files in place
.cursor/skills/release/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install ypollak2/llm-router release2Manually: put the files in place
.github/skills/release/SKILL.md1Skills CLI (Vercel)
npx skills add ypollak2/llm-router --skill release -a gemini-cli2Platform CLI
gemini skills install https://github.com/ypollak2/llm-router --path skills/releaseManually: put the files in place
.devin/skills/release/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add ypollak2/llm-router --skill release -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about release
How do I install release in Claude Code?
Run npx skills add ypollak2/llm-router --skill release -a claude-code. The skill file is located at ~/.claude/skills/release/SKILL.md.
What does the release skill do?
It manages an llm-router release: updates version files and the changelog, runs checks, pushes a Git tag, publishes to PyPI, and creates a GitHub Release.
What does publishing to PyPI require?
The workflow reads a token from /Users/yali.pollak/.pypirc and passes it to uv publish. A failed test or Ruff check halts the release.
Source text
SKILL.md · MIT
---
name: release
description: Run the full llm-router release pipeline: version bump, checks, tag and publish
trigger: /release
---
# /release — llm-router Release Skill
Automates the full release pipeline for llm-router. Run this skill whenever
you are ready to ship a new version.
## Steps
### 1. Confirm version
Ask the user: "What version are we releasing?" (e.g. `4.0.1`)
### 2. Sync all version strings
Update ALL of the following to the new version — grep first to catch any extras:
```bash
grep -rn "version" pyproject.toml .claude-plugin/plugin.json .claude-plugin/marketplace.json --include="*.toml" --include="*.json" | grep -v ".venv"
```
Files to update:
- `pyproject.toml` → `version = "X.Y.Z"`
- `.claude-plugin/plugin.json` → `"version": "X.Y.Z"`
- `.claude-plugin/marketplace.json` → `"version": "X.Y.Z"`
### 3. Update CHANGELOG.md
Add entry at the top:
```
## vX.Y.Z — YYYY-MM-DD
### What's new
- <bullet points>
### Technical notes
- <any migration notes>
```
### 4. Run tests — abort if any fail
```bash
uv run pytest tests/ -q --ignore=tests/test_integration.py
uv run ruff check src/ tests/
```
### 5. Verify version sync
```bash
python3 -c "
import tomllib, json
v1 = tomllib.load(open('pyproject.toml','rb'))['project']['version']
v2 = json.load(open('.claude-plugin/plugin.json'))['version']
v3 = json.load(open('.claude-plugin/marketplace.json'))['version']
assert v1==v2==v3, f'MISMATCH: pyproject={v1} plugin={v2} marketplace={v3}'
print(f'✅ All versions in sync: {v1}')
"
```
### 6. Deploy hooks (if any hook changed)
```bash
install -m 755 src/llm_router/hooks/auto-route.py ~/.claude/hooks/llm_router-auto-route.py
install -m 755 src/llm_router/hooks/session-end.py ~/.claude/hooks/llm_router-session-end.py
install -m 755 src/llm_router/hooks/session-start.py ~/.claude/hooks/llm_router-session-start.py
install -m 755 src/llm_router/hooks/enforce-route.py ~/.claude/hooks/llm_router-enforce-route.py
```
### 7. Commit and tag
```bash
git add -p # stage deliberately — never git add .
git commit -m "feat(vX.Y.Z): <headline>"
git tag vX.Y.Z
git push && git push origin --tags
```
### 8. Publish to PyPI
```bash
rm -rf dist/ && uv build
PYPI_TOKEN=$(python3 -c "import configparser; c=configparser.ConfigParser(); c.read('/Users/yali.pollak/.pypirc'); print(c['pypi']['password'])")
uv publish --token "$PYPI_TOKEN"
```
### 9. Create GitHub Release
```bash
gh release create vX.Y.Z \
--title "vX.Y.Z — <headline>" \
--latest \
--notes "## What's new
- <bullets from CHANGELOG>
## Upgrade
\`\`\`bash
pip install --upgrade llm-routing && llm-router install
\`\`\`"
```
### 10. Reinstall plugin locally
```bash
claude plugin reinstall llm-router
claude plugin list | grep llm-router
```
### 11. Log the decision
Append to `docs/decisions.md`:
```
## YYYY-MM-DD — Release vX.Y.Z
**Decision**: shipped version X.Y.Z
**What changed**: <summary>
**Outcome**: published to PyPI, plugin reinstalled
```
© ypollak2 · MIT · ypollak2/llm-router
Similar skills
All skills for DevOps and infrastructure →release by other authors comes first.