Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add ypollak2/llm-router --skill release -a claude-code
Open on GitHub

What 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.1 for release with /release.
  • Run /release and 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-code

2Manually: put the files in place

~/.claude/skills/release/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/release/

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.

release tobi This skill manages a project release by checking the changelog, installing git hooks, and updating release versions. Use it when the project has a defined release flow. CX Codex +1 2,200installs release Yeachan-Heo A repo-aware skill that discovers release rules from CI files, caches them in .omc/RELEASE_RULE.md, and guides releases. Helpful when preparing tags and version bumps. CX Codex +1 838installs release parcadei Runs a release through five subagents: security audit, E2E tests, final review, version bump, release notes. Useful right before a production deploy. CX Codex +1 481installs release cyrusagents This skill walks a Cyrus CLI release through trusted publishing: prepare, verify, publish, finish. Useful when a version has to ship without touching packages by hand. CX Codex +1 829installs release modelcontextprotocol Walks one milestone release from the release issue through audit, version bumps and the merge PR to the GitHub Release a maintainer publishes. CX Codex +1 ★ 91,595repo stars wizard Matt Pocock This skill creates an interactive bash wizard for manual setup steps, CI secrets, third-party dashboards, and one-off migrations. 553,369installs hyperframes-cli heygen-com Controls HyperFrames video workflows from the CLI: audits layouts and contrast, edits timeline clips, captures snapshots, and renders locally or in cloud runtimes. CX Codex +1 1,300,000installs setup-pre-commit Matt Pocock This skill configures pre-commit checks for a JavaScript repository, running Prettier, type checking, and tests before each commit. 489,289installs using-git-worktrees Jesse Vincent Prepares an isolated workspace before feature work or plan execution. It checks the repository first, then uses native worktree support or Git. CX Codex 217,153installs finishing-a-development-branch Jesse Vincent This skill checks the test suite and guides branch completion: merge locally, open a Pull Request, or leave the work in place. CX Codex 214,439installs orca-cli stablyai The skill lets an agent manage Orca worktrees, terminals, artifacts and the built-in browser through the orca CLI. Useful when your work already runs inside Orca. CX Codex +1 354,000installs

From the same set4

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor