plugins/home-assistant-dev/skills/ha-config-migration/SKILL.md
Config entry version migration in Home Assistant. Use when incrementing VERSION or MINOR_VERSION, implementing async_migrate_entry, or migrating stored entry data between schema versions.
npx skillsauth add l3digital-net/claude-code-plugins ha-config-migrationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When your config entry schema changes (renaming keys, adding required fields, restructuring data), increment VERSION and implement async_migrate_entry.
# config_flow.py
class MyConfigFlow(ConfigFlow, domain=DOMAIN):
VERSION = 2 # Increment for breaking schema changes
MINOR_VERSION = 1 # Increment for non-breaking additions
# __init__.py
async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Migrate old entry to new version."""
_LOGGER.debug("Migrating from version %s.%s", entry.version, entry.minor_version)
if entry.version == 1:
# Migration from v1 to v2
new_data = {**entry.data}
# Example: rename a key
if "old_key" in new_data:
new_data["new_key"] = new_data.pop("old_key")
# Example: add new required field with default
if "new_field" not in new_data:
new_data["new_field"] = "default_value"
hass.config_entries.async_update_entry(
entry, data=new_data, version=2, minor_version=0
)
if entry.version == 2 and entry.minor_version < 1:
# Minor version migration (non-breaking additions)
new_options = {**entry.options}
new_options.setdefault("new_option", True)
hass.config_entries.async_update_entry(
entry, options=new_options, minor_version=1
)
_LOGGER.info("Migration to version %s.%s successful", entry.version, entry.minor_version)
return True
VERSION = 2): Breaking changes — existing users' data must be transformedMINOR_VERSION = 1): Non-breaking additions — safe to add defaultsTrue on success, False to signal migration failure (entry will be disabled)ha-config-flowha-deprecation-fixestools
Configures Python projects to the Python Tooling SSOT Standard (uv, Ruff, BasedPyright strict, pytest+coverage, pip-audit). Use when creating projects, writing standalone scripts, configuring pyproject.toml, migrating from pip/Poetry/mypy/black/flake8, or auditing a project for conformance to the standard.
development
Use when you're stuck or missing current information mid-task - the same command/API/approach failed twice, an error looks like a changed or deprecated API, or you need the current version of something, a fact from after your training cutoff, or to verify something you cannot confirm from the code in context. Starts with a cheap inline lookup and only escalates to a full research sweep if that fails. Do not use for routine pre-emptive checks before ordinary library work - for deliberate research, use /qdev:research.
documentation
Update the llm-wiki knowledge base (remote LXC CT 103, /srv/workspaces/llm-wiki, over SSH) with implementation-level details from the current session by dispatching the up-docs-propagate-wiki sub-agent. This skill should be used when the user runs /up-docs:wiki.
documentation
Update repository documentation (README.md, docs/, CLAUDE.md) based on session changes by dispatching the up-docs-propagate-repo sub-agent. This skill should be used when the user runs /up-docs:repo.