name: bump-dependency description: 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.
Bump Python Package Dependency in Home Assistant Core
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.
Gotchas & Non-Obvious Constraints
- PR Template Integrity: Follow Home Assistant's Pull Request template (
.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. - GitHub Tag Volatility: Release tags on GitHub are highly inconsistent (e.g.,
v1.2.3vs1.2.3vsrelease-1.2.3). Always use the automated resolverresolve_dependency.pyto check HEAD status for correct tags before hardcoding comparison URLs.
Step-by-Step Workflow Checklist
Phase A: Research and Plan
- [ ] 1. Identify Targets: Note the requested target package and target version to bump.
- [ ] 2. Discover Codebase References: Search the codebase to find all
manifest.jsonand requirements files referencing the package. - [ ] 3. Resolve Version/Tag Details: Run the integrated validation helper script to resolve version details, GitHub repo, release tag format, and formatted PR links:
uv run --no-sync python3 ./.claude/skills/bump-dependency/scripts/resolve_dependency.py <package> <old_version> [--new-version <new_version>] - [ ] 4. Plan-Validate-Execute (Draft Plan): Before modifying any files, write a brief, structured plan outlining the integrations to change, old version, new version, and the resolved comparison link. Show this draft plan to the user.
Phase B: Execute and Validate (Local Changes)
- [ ] 5. Check Uncommitted Changes: Check for any uncommitted changes in the repository. If they exist, ask the user whether to stash, commit, or discard them before proceeding.
- [ ] 6. Git Branch Setup: Create a clean branch starting from the latest
upstream/dev:git fetch upstream dev git checkout -b bump-<package>-to-<version> upstream/dev - [ ] 7. Apply Bump to manifests: Update the version constraint string in all identified
manifest.jsonfiles (e.g., change"package==1.0.0"to"package==1.1.0"). - [ ] 8. Regenerate Core Requirements: Run the requirements generator to update all derivative requirements and constraint files:
uv run --no-sync python3 -m script.gen_requirements_all - [ ] 9. Validate Requirements: Check
git diffto ensure that only the targetedmanifest.jsonfiles andrequirements_all.txt(and potentially standard constraints) were modified. No unrelated files must be affected. - [ ] 10. Local Venv Verification: Install the exact targeted package version directly inside the virtual environment:
uv pip install "<package>==<version>"
Phase C: Validation Loop (Tests & Lint)
- [ ] 11. Run Integration Tests: Execute the pytest suite for all integrations that consume the bumped package:
uv run --no-sync pytest tests/components/<integration_name>- Validation Loop: If tests fail, analyze the error, apply appropriate fixes, and re-run pytest until all tests pass cleanly.
- [ ] 12. Run prek Lint Checks: Run the local prek hooks on modified files:
uv run --no-sync prek run- Validation Loop: If prek checks report any formatting or linting violations, fix them and repeat
uv run --no-sync prek rununtil it passes completely without errors.
- Validation Loop: If prek checks report any formatting or linting violations, fix them and repeat
Phase D: User Confirmation & PR Creation
- [ ] 13. Commit Changes: Commit the clean changes:
git add <modified_files> git commit -m "Bump <package> to <version>" - [ ] 14. Push Branch: Push the local branch to your origin remote:
git push origin bump-<package>-to-<version> - [ ] 15. PR Description Preparation: Generate the pull request body from
.github/PULL_REQUEST_TEMPLATE.md:- Proposed change: Describe the package, old version, new version, target/source branches, and insert the resolved PyPI, changelog, and comparison diff links.
- Type of change: Check only 1 box in this section, and mark the
Dependency upgradecheckbox as checked:[x] Dependency upgrade. - Breaking change: You may remove the "Breaking change" section entirely from the template.
- Validation checklists: Mark
The code change is testedcheckbox as checked:[x] The code change is tested. - Keep remaining template intact: Do NOT remove any other commented-out blocks, headers, or unchecked checkboxes in the template.
- [ ] 16. Mandatory Review Presentation: Format the PR proposal using the PR Presentation Template below and display it to the user. Stop and wait for the user to review and explicitly confirm/approve the PR template and draft details before creating the PR.
- [ ] 17. Raise Pull Request: Once the user approves, create the Pull Request using the GitHub CLI:
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>
PR Presentation Template
### π 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>
Related skills
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
Claude CodeCursoradvanced
890
234
3,482
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
claudeCursorWindsurfbeginner
259
72
1,379
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.
claudeCursorWindsurfintermediate
156
44
1,262