Context for developing and debugging Hubitat Elevation apps, drivers, and hub environment — sandbox constraints, lifecycle idioms, capability contracts, plus grounded deploy/log-tail/lint mechanisms.
81
94%
Does it follow best practices?
Impact
27%
Average score across 2 eval scenarios
Advisory
Suggest reviewing before use
{
"context": "Grades ONLY the two facts that discriminate plugin knowledge from baseline competence — the exact FanControl speed enum and the supportedFanSpeeds attribute. The universal-competence checks (declaring FanControl, implementing setSpeed/cycleSpeed) are deliberately NOT scored: a baseline floor model already gets those ~100%, so including them inflates the baseline and masks lift (measured directly — declares_fancontrol and setSpeed both scored 100% baseline). The plugin's capabilities.json/driver-lifecycle rule prescribe the speed enum [\"low\",\"medium-low\",\"medium\",\"medium-high\",\"high\",\"on\",\"off\",\"auto\"] and the supportedFanSpeeds JSON attribute; baseline agents typically drop the medium-low/medium-high steps (measured: 75% on the enum) and omit supportedFanSpeeds entirely (measured: 20%). The task never names FanControl, the speed values, or supportedFanSpeeds, so these measure plugin-contributed knowledge, not reading.",
"type": "weighted_checklist",
"checklist": [
{
"name": "includes_medium_low_and_medium_high",
"description": "The speed values the driver accepts/reports include BOTH \"medium-low\" AND \"medium-high\" (the non-obvious intermediate steps of the standard FanControl enum), not just low/medium/high and not invented names like slow/fast or 1/2/3. Award 55 only if both intermediate steps are present; ~28 if exactly one is present; 0 if neither appears.",
"max_score": 55
},
{
"name": "emits_supported_fan_speeds",
"description": "The driver declares a supportedFanSpeeds attribute and actually populates it (e.g. sendEvent(name: \"supportedFanSpeeds\", value: JsonOutput.toJson([...]))) so apps can read the available speeds. Award 45 if declared AND populated; ~20 if the attribute name appears but is never set with a value; 0 if supportedFanSpeeds is absent entirely.",
"max_score": 45
}
]
}