Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manages release preparation including validation, version bumping, documentation verification, and security checks.
.claude/skills/aiskillstore-releasing-versions/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 39% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 10% | 0% |
| Phase | Purpose | Blocking? | |-------|---------|-----------| | 1. Pre-Release Validation | Tests, security | Yes | | 2. Version Bump | Update version strings | Yes | | 3. Documentation | Verify/update docs | Warning | | 4. Template Sync | Cookiecutter alignment | Warning | | 5. Build Verification | Package builds | Yes | | 6. Git Operations | Commit and tag | Yes |
bash# Check for incomplete tasks bpsai-pair task list --status in_progress bpsai-pair task list --status blocked # Check current state bpsai-pair status
BLOCKER: All tasks must be complete or moved to next sprint.
bash# All tests must pass pytest tests/ -v --tb=short # Check coverage meets target (80%) pytest tests/ --cov=bpsai_pair --cov-report=term-missing --cov-fail-under=80
BLOCKER: Release cannot proceed if tests fail.
bash# Scan for accidentally committed secrets bpsai-pair security scan-secrets # Scan dependencies for known vulnerabilities bpsai-pair security scan-deps
BLOCKER: Secrets detected = cannot release. WARNING: Dependency vulnerabilities should be reviewed but may not block.
bashgrep -E "^version|__version__" tools/cli/pyproject.toml tools/cli/bpsai_pair/__init__.py
| File | Format | |------|--------| | pyproject.toml | version = "X.Y.Z" | | __init__.py | __version__ = "X.Y.Z" |
Note: Version in files has NO 'v' prefix. Git tags use 'v' prefix.
| File | Update | |------|--------| | capabilities.yaml | version: "X.Y.Z" | | config.yaml | version: "X.Y.Z" |
bash# Check CHANGELOG has entry for this version grep -A 20 "## \[X.Y.Z\]" CHANGELOG.md # Check README mentions current features head -100 README.md # Check FEATURE_MATRIX is current head -50 .paircoder/docs/FEATURE_MATRIX.md
bash# Check modification dates git log -1 --format="%ci" -- README.md git log -1 --format="%ci" -- CHANGELOG.md git log -1 --format="%ci" -- .paircoder/docs/FEATURE_MATRIX.md
WARNING if any required doc older than 7 days - may need update.
If missing, create entry following Keep a Changelog format:
markdown## [X.Y.Z] - YYYY-MM-DD ### Added - Feature 1 - Feature 2 ### Changed - Change 1 ### Fixed - Fix 1 ### Removed - (if applicable)
Generate content from archived tasks:
bashbpsai-pair task changelog-preview --since <last-version>
Verify cookiecutter template matches current version:
bash# Check template exists ls -la tools/cli/bpsai_pair/data/cookiecutter-paircoder/ # Compare key files diff .paircoder/config.yaml \ tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/.paircoder/config.yaml diff CLAUDE.md \ tools/cli/bpsai_pair/data/cookiecutter-paircoder/{{cookiecutter.project_slug}}/CLAUDE.md
Key files that should stay in sync:
config.yaml structure (not values)CLAUDE.md instructionscapabilities.yaml formatbash# Clean old builds rm -rf tools/cli/dist/ tools/cli/build/ tools/cli/*.egg-info # Build the package cd tools/cli && pip install build && python -m build # Verify clean install pip install dist/*.whl --force-reinstall # Verify version is correct bpsai-pair --version
bash# Stage all changes git add -A # Commit with release message git commit -m "Release vX.Y.Z" # Create annotated tag git tag -a "vX.Y.Z" -m "Release vX.Y.Z" # Show what will be pushed git log --oneline -5 git tag -l | tail -5
DO NOT push yet - let user review and confirm.
📦 **Release Prepared**: vX.Y.Z
**Pre-Release Checks**:
- ✅ All tasks complete
- ✅ Tests: XXX passed
- ✅ Coverage: XX%
- ✅ Security: Clean
**Documentation**:
- ✅ CHANGELOG: Updated
- ✅ README: Current
- ✅ FEATURE_MATRIX: Updated
- ⚠️ User guide: Last updated X days ago (review recommended)
**Cookiecutter**:
- ✅ Template synced
**Build**:
- ✅ Package built: bpsai_pair-X.Y.Z-py3-none-any.whl
- ✅ Installs cleanly
- ✅ Version verified
**Ready to Release**:git push origin main git push origin vX.Y.Z
Then publish to PyPI:cd tools/cli && twine upload dist/
Release configuration in config.yaml:
yamlrelease: version_source: tools/cli/pyproject.toml documentation: - CHANGELOG.md - README.md - .paircoder/docs/FEATURE_MATRIX.md cookie_cutter: template_path: tools/cli/bpsai_pair/data/cookiecutter-paircoder sync_required: true freshness_days: 7
| Location | Format | Example | |----------|--------|---------| | pyproject.toml | X.Y.Z | 2.9.0 | | __init__.py | X.Y.Z | 2.9.0 | | Git tags | vX.Y.Z | v2.9.0 | | CHANGELOG | X.Y.Z] | 2.9.0] |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,857 | 12,978 | +167% | 1 | 1 | 0% | 216 | 2,469 | +1043% | 0 | 0 | — |
case-02 | fail→fail | 14,826 | 16,471 | +11% | 1 | 1 | 0% | 283 | 2,270 | +702% | 0 | 0 | — |
case-03 | fail→fail | 5,950 | 17,659 | +197% | 1 | 1 | 0% | 281 | 2,250 | +701% | 0 | 0 | — |
case-04 | pass→pass | 17,470 | 18,165 | +4% | 1 | 1 | 0% | 2,387 | 4,423 | +85% | 0 | 0 | — |
case-05 | pass→pass | 10,531 | 4,697 | -55% | 1 | 1 | 0% | 956 | 2,670 | +179% | 0 | 0 | — |
case-06 | pass→fail | 18,947 | 20,450 | +8% | 1 | 1 | 0% | 2,508 | 4,540 | +81% | 0 | 0 | — |
case-07 | pass→pass | 11,366 | 5,044 | -56% | 1 | 1 | 0% | 2,030 | 2,990 | +47% | 0 | 0 | — |
case-08 | pass→pass | 19,137 | 7,950 | -58% | 1 | 1 | 0% | 1,191 | 2,423 | +103% | 0 | 0 | — |
case-09 | pass→pass | 10,606 | 8,476 | -20% | 1 | 1 | 0% | 840 | 2,348 | +180% | 0 | 0 | — |
case-10 | fail→pass | 17,034 | 10,591 | -38% | 1 | 1 | 0% | 1,982 | 3,107 | +57% | 0 | 0 | — |
case-11 | fail→pass | 9,023 | 1,928 | -79% | 1 | 1 | 0% | 1,543 | 2,228 | +44% | 0 | 0 | — |
case-12 | fail→pass | 11,526 | 7,532 | -35% | 1 | 1 | 0% | 1,115 | 2,299 | +106% | 0 | 0 | — |
case-13 | fail→pass | 16,573 | 4,436 | -73% | 1 | 1 | 0% | 2,036 | 2,820 | +39% | 0 | 0 | — |
case-14 | fail→pass | 19,387 | 7,540 | -61% | 1 | 1 | 0% | 2,157 | 2,371 | +10% | 0 | 0 | — |
case-15 | fail→pass | 12,870 | 9,181 | -29% | 1 | 1 | 0% | 1,347 | 2,668 | +98% | 0 | 0 | — |
case-16 | fail→pass | 12,279 | 9,889 | -19% | 1 | 1 | 0% | 2,205 | 2,794 | +27% | 0 | 0 | — |
case-17 | pass→pass | 18,115 | 7,335 | -60% | 1 | 1 | 0% | 2,165 | 3,179 | +47% | 0 | 0 | — |
case-18 | pass→pass | 11,654 | 9,335 | -20% | 1 | 1 | 0% | 1,834 | 2,655 | +45% | 0 | 0 | — |
case-19 | pass→pass | 10,606 | 9,357 | -12% | 1 | 1 | 0% | 951 | 2,685 | +182% | 0 | 0 | — |
case-20 | fail→pass | 19,033 | 9,047 | -52% | 1 | 1 | 0% | 2,461 | 2,701 | +10% | 0 | 0 | — |
case-21 | pass→pass | 24,757 | 7,795 | -69% | 1 | 1 | 0% | 1,408 | 2,333 | +66% | 0 | 0 | — |
case-22 | fail→fail | 12,988 | 3,666 | -72% | 1 | 1 | 0% | 2,369 | 2,516 | +6% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.