Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Everything you need to know to build, test and review Home Assistant Integrations. If you're looking at an integration, you must use this as your primary reference.
.claude/skills/home-assistant-ha-integration-knowledge/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -18% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -2% | 0% |
./homeassistant/components/<integration_domain>/./tests/components/<integration_domain>/data["key"]) over .get("key") so invalid assumptions fail fast.The following platforms have extra guidelines:
platform-diagnostics.md for diagnostic data collectionplatform-repairs.md for user-actionable repair issuesasync_added_to_hass() and async_will_remove_from_hass() have symmetrical behavior. For example, if a subscription is created in async_added_to_hass(), it should be unsubscribed in async_will_remove_from_hass(). Also, if something is torn down in async_will_remove_from_hass(), it should be set up in async_added_to_hass().SensorEntity, TrackerEntity) provide a stable API for child classes to inherit from. Do not suggest redeclaring or duplicating attributes, properties, or methods the base class already provides, and do not add guards against the parent's behavior changing — rely on the base class instead.Template scale file: ./script/scaffold/templates/integration/integration/quality_scale.yaml
manifest.json: Look for "quality_scale" key to determine integration levelquality_scale.yaml in integration folder for:done: Rule implementedexempt: Rule doesn't apply (with reason in comment)todo: Rule needs implementation| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 14,495 | 6,860 | -53% | 1 | 1 | 0% | 2,202 | 1,820 | -17% | 0 | 0 | — |
case-02 | fail→pass | 19,458 | 13,671 | -30% | 1 | 1 | 0% | 3,319 | 3,062 | -8% | 0 | 0 | — |
case-03 | fail→pass | 14,450 | 4,251 | -71% | 1 | 1 | 0% | 1,814 | 1,299 | -28% | 0 | 0 | — |
case-04 | pass→pass | 14,766 | 7,994 | -46% | 1 | 1 | 0% | 1,963 | 1,138 | -42% | 0 | 0 | — |
case-05 | pass→pass | 4,782 | 15,904 | +233% | 1 | 1 | 0% | 754 | 1,042 | +38% | 0 | 0 | — |
case-06 | pass→pass | 8,261 | 1,972 | -76% | 1 | 1 | 0% | 1,349 | 948 | -30% | 0 | 0 | — |
case-07 | pass→pass | 7,085 | 2,555 | -64% | 1 | 1 | 0% | 951 | 1,056 | +11% | 0 | 0 | — |
case-08 | fail→pass | 9,120 | 2,737 | -70% | 1 | 1 | 0% | 1,501 | 937 | -38% | 0 | 0 | — |
case-09 | pass→pass | 6,948 | 3,355 | -52% | 1 | 1 | 0% | 1,004 | 1,152 | +15% | 0 | 0 | — |
case-10 | pass→pass | 11,957 | 3,632 | -70% | 1 | 1 | 0% | 1,792 | 1,263 | -30% | 0 | 0 | — |
case-11 | pass→pass | 14,870 | 7,003 | -53% | 1 | 1 | 0% | 2,368 | 1,736 | -27% | 0 | 0 | — |
case-12 | pass→pass | 12,822 | 4,645 | -64% | 1 | 1 | 0% | 1,988 | 1,372 | -31% | 0 | 0 | — |
case-13 | pass→pass | 15,043 | 3,812 | -75% | 1 | 1 | 0% | 2,374 | 1,264 | -47% | 0 | 0 | — |
case-14 | fail→pass | 7,733 | 2,538 | -67% | 1 | 1 | 0% | 1,186 | 968 | -18% | 0 | 0 | — |
case-15 | fail→pass | 6,264 | 1,839 | -71% | 1 | 1 | 0% | 931 | 912 | -2% | 0 | 0 | — |
case-16 | fail→pass | 13,021 | 3,698 | -72% | 1 | 1 | 0% | 1,711 | 1,165 | -32% | 0 | 0 | — |
case-17 | fail→pass | 7,474 | 2,187 | -71% | 1 | 1 | 0% | 1,015 | 952 | -6% | 0 | 0 | — |
case-18 | fail→pass | 4,662 | 2,381 | -49% | 1 | 1 | 0% | 774 | 970 | +25% | 0 | 0 | — |
case-19 | pass→pass | 9,515 | 3,309 | -65% | 1 | 1 | 0% | 1,415 | 1,151 | -19% | 0 | 0 | — |
case-20 | pass→pass | 12,123 | 101,490 | +737% | 1 | 1 | 0% | 2,090 | 1,178 | -44% | 0 | 0 | — |
case-21 | pass→pass | 6,723 | 4,517 | -33% | 1 | 1 | 0% | 890 | 1,340 | +51% | 0 | 0 | — |
case-22 | pass→pass | 9,700 | 6,431 | -34% | 1 | 1 | 0% | 1,688 | 1,725 | +2% | 0 | 0 | — |
case-23 | pass→pass | 12,052 | 5,653 | -53% | 1 | 1 | 0% | 1,084 | 1,701 | +57% | 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. The headline lift of +35 percentage points is the difference between those two pass rates over the 23 comparable cases.
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.