Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Bumps a Python package dependency across Home Assistant Core integrations, regenerates core requirement files, runs verification tests and prek lint, and prepares a pull request with proper release/compare links.
.claude/skills/home-assistant-bump-dependency/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 68% | 0% |
Follow these systematic steps to successfully bump a python package requirement in the repository, regenerate necessary derivative files, verify the integration, and raise a pull request.
.github/PULL_REQUEST_TEMPLATE.md) exactly as written, including any instructions inside the template itself. Preserve all sections, comments, and unchecked checkboxes unless the template explicitly says otherwise; the only allowed removal is the Breaking change section when the template instructs you to remove it if not applicable.v1.2.3 vs 1.2.3 vs release-1.2.3). Always use the automated resolver resolve_dependency.py to check HEAD status for correct tags before hardcoding comparison URLs.manifest.json and requirements files referencing the package.bash uv run --no-sync python3 ./.claude/skills/bump-dependency/scripts/resolve_dependency.py <package> <old_version> [--new-version <new_version>]
upstream/dev:bash git fetch upstream dev git checkout -b bump-<package>-to-<version> upstream/dev
manifest.json files (e.g., change "package==1.0.0" to "package==1.1.0").bash uv run --no-sync python3 -m script.gen_requirements_all
git diff to ensure that only the targeted manifest.json files and requirements_all.txt (and potentially standard constraints) were modified. No unrelated files must be affected.bash uv pip install "<package>==<version>"
bash uv run --no-sync pytest tests/components/<integration_name>
bash uv run --no-sync prek run
uv run --no-sync prek run until it passes completely without errors.bash git add <modified_files> git commit -m "Bump <package> to <version>"
bash git push origin bump-<package>-to-<version>
.github/PULL_REQUEST_TEMPLATE.md:Dependency upgrade checkbox as checked: [x] Dependency upgrade.The code change is tested checkbox as checked: [x] The code change is tested.bash gh pr create --repo home-assistant/core --base dev --head <username>:bump-<package>-to-<version> --title "Bump <package> to <version>" --body-file <pr_body_file>
markdown### 🚀 Dependency Bump Pull Request Draft Review - **Package**: `<package_name>` (`<old_version>` → `<new_version>`) - **PR Title**: `Bump <package_name> to <new_version>` - **Target Branch**: `dev` - **Head Branch**: `<fork_username>:bump-<package_name>-to-<new_version>` #### 🔗 PyPI & GitHub Links - **PyPI Release**: https://pypi.org/project/<package_name>/<new_version>/ - **Changelog Link**: `<changelog_url>` - **Comparison Diff**: `<compare_url>` #### 📁 Modified Files - `<list_of_modified_files>` #### 📝 Proposed PR Body <render the complete filled PR template body here, showing all checks and modifications for user approval>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,428 | 8,090 | -14% | 1 | 1 | 0% | 1,435 | 1,753 | +22% | 0 | 0 | — |
case-02 | fail→fail | 7,496 | 6,932 | -8% | 1 | 1 | 0% | 1,193 | 1,789 | +50% | 0 | 0 | — |
case-03 | fail→fail | 7,962 | 7,731 | -3% | 1 | 1 | 0% | 289 | 1,755 | +507% | 0 | 0 | — |
case-04 | fail→pass | 18,078 | 4,631 | -74% | 1 | 1 | 0% | 2,720 | 2,105 | -23% | 0 | 0 | — |
case-05 | fail→pass | 10,066 | 5,156 | -49% | 1 | 1 | 0% | 1,582 | 2,093 | +32% | 0 | 0 | — |
case-06 | pass→pass | 8,503 | 6,562 | -23% | 1 | 1 | 0% | 1,213 | 2,278 | +88% | 0 | 0 | — |
case-07 | pass→pass | 8,907 | 4,985 | -44% | 1 | 1 | 0% | 1,329 | 2,283 | +72% | 0 | 0 | — |
case-08 | pass→pass | 14,223 | 9,017 | -37% | 1 | 1 | 0% | 2,092 | 2,800 | +34% | 0 | 0 | — |
case-09 | fail→pass | 11,009 | 4,012 | -64% | 1 | 1 | 0% | 1,678 | 2,004 | +19% | 0 | 0 | — |
case-10 | fail→pass | 14,322 | 6,305 | -56% | 1 | 1 | 0% | 1,267 | 2,255 | +78% | 0 | 0 | — |
case-11 | fail→pass | 13,852 | 3,066 | -78% | 1 | 1 | 0% | 1,081 | 1,817 | +68% | 0 | 0 | — |
case-12 | pass→pass | 12,036 | 7,546 | -37% | 1 | 1 | 0% | 1,659 | 2,455 | +48% | 0 | 0 | — |
case-13 | pass→pass | 4,008 | 2,698 | -33% | 1 | 1 | 0% | 477 | 1,830 | +284% | 0 | 0 | — |
case-14 | fail→pass | 13,068 | 3,588 | -73% | 1 | 1 | 0% | 2,098 | 2,062 | -2% | 0 | 0 | — |
case-15 | pass→pass | 16,679 | 3,655 | -78% | 1 | 1 | 0% | 1,022 | 1,984 | +94% | 0 | 0 | — |
case-16 | pass→pass | 26,362 | 14,565 | -45% | 1 | 1 | 0% | 1,955 | 2,380 | +22% | 0 | 0 | — |
case-17 | pass→pass | 10,360 | 6,398 | -38% | 1 | 1 | 0% | 1,674 | 2,114 | +26% | 0 | 0 | — |
case-18 | fail→fail | 7,394 | 3,679 | -50% | 1 | 1 | 0% | 994 | 1,913 | +92% | 0 | 0 | — |
case-19 | pass→pass | 12,398 | 13,497 | +9% | 1 | 1 | 0% | 2,074 | 3,465 | +67% | 0 | 0 | — |
case-20 | pass→fail | 16,032 | 7,366 | -54% | 1 | 1 | 0% | 2,528 | 1,825 | -28% | 0 | 0 | — |
case-21 | pass→pass | 10,106 | 10,005 | -1% | 1 | 1 | 0% | 1,572 | 3,065 | +95% | 0 | 0 | — |
case-22 | pass→pass | 14,621 | 4,824 | -67% | 1 | 1 | 0% | 1,964 | 2,335 | +19% | 0 | 0 | — |
case-23 | fail→pass | 11,228 | 6,087 | -46% | 1 | 1 | 0% | 1,455 | 2,365 | +63% | 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. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 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 +26 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are 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.