Generate EntityDescription tuple lists for an HA Custom Integration platform module from a datapoint table or API-schema JSON, plus matching strings.json and icons.json entries. Activate on phrasings like "add sensors from this datapoint list", "generate EntityDescriptions from this CSV", "add binary_sensors for the alert types", "erweitere die Sensor-Plattform um folgende Datapoints". Do not activate for greenfield scaffolding (use ha-integration-scaffold) or when the platform file does not yet exist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-home-assistant:ha-entity-description-mapperThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Spec: <https://github.com/nolte/claude-home-assistant/blob/develop/spec/claude/ha-entity-description-mapper/de.md> (DE canonical) / [`en.md`](https://github.com/nolte/claude-home-assistant/blob/develop/spec/claude/ha-entity-description-mapper/en.md).
Spec: https://github.com/nolte/claude-home-assistant/blob/develop/spec/claude/ha-entity-description-mapper/de.md (DE canonical) / en.md.
Use this skill when the user wants to add datapoints (sensors, binary sensors, buttons, numbers, selects, switches, calendars, todos) to an existing platform file in declarative EntityDescription form.
ha-integration-scaffoldEntityDescription.key aborts with the conflicting key quoted.<TODO: translate '<EN value>'> unless the user supplies them. Skill output mentions these placeholders explicitly.entity_description.key-based access; mapping to actual coordinator data dict paths is the user's job.device_class/state_class/unit consistency. Mismatches block the run with a verbose violation list.| Field | Required | Default | Notes |
|---|---|---|---|
target_dir | yes | — | repo root |
platform | yes | — | sensor, binary_sensor, button, number, select, switch, calendar, todo |
datapoints | yes | — | list of dicts with key, translation_key, device_class?, state_class?, native_unit_of_measurement?, entity_category?, default_icon, state_icons? |
Datapoint input format: CSV (parsed as table), JSON (list-of-dicts), or markdown table. Free text is rejected.
git -C <target_dir> rev-parse --is-inside-work-tree and clean working tree<target_dir>/custom_components/<domain>/<platform>.py exists; read domain from manifest.jsonkey and translation_key are lowercase snake_case ASCIIdevice_class is HA-known for the platformstate_class ∈ MEASUREMENT / TOTAL_INCREASING / TOTAL when setnative_unit_of_measurement is consistent with device_classkeys collide with existing EntityDescription.keys in the platform filePrint a table of the datapoints, the resolved device_class/state_class/unit per row, and the inferred quality-scale tier. Wait for user confirmation.
<platform>.py — append the new descriptions to the tuple list (or create it if absent); add the generic entity class if absentstrings.json — append entity.<platform>.<translation_key>.name per datapointtranslations/<lang>.json — same keys, with translation or <TODO> markericons.json — append entity.<platform>.<translation_key>.default; for state-icon datapoints, the state: blockruff check custom_components/<domain>/<platform>.py
pytest tests/ -v
<TODO> translation markers that need user attentionha-integration-scaffoldha-coordinator-addha-translation-sync (planned)ha-test-harness-augment (planned)Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub nolte/claude-home-assistant --plugin claude-home-assistant