honeybee-apply-properties — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited honeybee-apply-properties (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
search_propertiesapplyDescription Unified property application bus for Honeybee, Energy, and Radiance operations.
Args
operation: strtarget_type: stridentifiers: list | None = Nonevalues: dict | None = NoneReturns
statusupdated_count or updated_room_countwarningsauto_saveroom_attributesTypical `values`
construction_set_identifiermodifier_set_identifierprogram_type_identifieris_conditionedreset_loadsSimple example
apply(
operation="room_attributes",
target_type="room",
values={"program_type_identifier": "Office_Open"}
)Scoped example
apply(
operation="room_attributes",
target_type="room",
identifiers=["Room_1", "Room_2"],
values={
"construction_set_identifier": "Office_Construction_Set",
"is_conditioned": True
}
)hvacTypical `values`
system_categorysystem_typevintagenamelist_optionseconomizer_typesensible_heat_recoverylatent_heat_recoverydemand_controlled_ventilationheating_limitcooling_limitradiant_typeSimple example
apply(
operation="hvac",
target_type="room",
values={"system_category": "Ideal"}
)Options example
apply(
operation="hvac",
target_type="room",
values={"system_category": "AllAir", "list_options": True}
)More complex example
apply(
operation="hvac",
target_type="room",
identifiers=["Room_1", "Room_2"],
values={
"system_category": "AllAir",
"system_type": "VAV",
"vintage": "ASHRAE_2019",
"sensible_heat_recovery": 0.7
}
)opaque_attributesTypical `target_type`
facedoorroomTypical `values`
construction_identifiers — list of library construction identifiers to applymodifier_identifiers — list of Radiance modifier identifiers to applycustom_construction — dict for creating and assigning a new opaque construction inlineLibrary construction example
apply(
operation="opaque_attributes",
target_type="face",
identifiers=["Face_1"],
values={"construction_identifiers": ["Generic Exterior Wall"]}
)Custom construction example
Create and assign a custom opaque construction in one step. Provide the custom_construction dict with name, layers (list of material dicts with name, thickness, conductivity, density, specific_heat):
apply(
operation="opaque_attributes",
target_type="face",
identifiers=["Face_1"],
values={
"custom_construction": {
"name": "HighInsulation_Wall",
"layers": [
{
"name": "InsulationMat",
"thickness": 0.1,
"conductivity": 0.04,
"density": 30,
"specific_heat": 1000
}
]
}
}
)window_attributesTypical `target_type`
aperturedoorfaceroomTypical `values`
construction_identifiersmodifier_identifierscustom_constructionOrientation-based example
apply(
operation="window_attributes",
target_type="room",
values={
"construction_identifiers": ["NorthGlass", "EastGlass", "SouthGlass", "WestGlass"]
}
)shade_attributesTypical `target_type`
shadeaperturedoorfaceroomKnown Issue (B-01): Applyingmodifier_identifiersto shades viashade_attributesmay trigger aTypeError: unhashable type: 'dict'in certain scenarios when the shade was created viaadd(louvers). If this occurs, the underlying bug is in the apply service and needs a code fix.
Direct shade example
apply(
operation="shade_attributes",
target_type="shade",
identifiers=["Shade_1", "Shade_2"],
values={"modifier_identifiers": ["MetalModifier"]}
)Each operation uses target_type="room" and accepts specific values:
people| Parameter | Type | Description |
|---|---|---|
people_per_area | float | People density (people/m²) |
occupancy_schedule_identifier | str | Schedule for occupancy fraction |
activity_schedule_identifier | str | Schedule for metabolic rate |
radiant_fraction | float | Fraction of sensible heat radiant |
latent_fraction | float | Fraction of gains that are latent |
apply(
operation="people",
target_type="room",
identifiers=["Room_1"],
values={
"people_per_area": 0.2,
"occupancy_schedule_identifier": "Office_Occ_Schedule"
}
)lighting| Parameter | Type | Description |
|---|---|---|
watts_per_area | float | Lighting power density (W/m²) |
schedule_identifier | str | Lighting schedule |
return_air_fraction | float | Fraction to return air |
radiant_fraction | float | Radiant fraction |
visible_fraction | float | Visible fraction |
apply(
operation="lighting",
target_type="room",
identifiers=["Room_1"],
values={"watts_per_area": 10.0}
)electric_equipment| Parameter | Type | Description |
|---|---|---|
watts_per_area | float | Equipment power density (W/m²) |
schedule_identifier | str | Equipment schedule |
radiant_fraction | float | Radiant fraction |
latent_fraction | float | Latent fraction |
lost_fraction | float | Lost fraction |
apply(
operation="electric_equipment",
target_type="room",
identifiers=["Room_1"],
values={"watts_per_area": 12.0}
)service_hot_water| Parameter | Type | Description |
|---|---|---|
flow_per_area | float | Hot water flow rate (L/h/m²) |
schedule_identifier | str | Hot water usage schedule |
target_temperature | float | Target temperature (°C) |
sensible_fraction | float | Sensible fraction |
latent_fraction | float | Latent fraction |
apply(
operation="service_hot_water",
target_type="room",
identifiers=["Room_1"],
values={"flow_per_area": 0.1}
)setpoint| Parameter | Type | Description |
|---|---|---|
heating_setpoint | float | Heating setpoint (°C) |
cooling_setpoint | float | Cooling setpoint (°C) |
heating_schedule_identifier | str | Heating setpoint schedule |
cooling_schedule_identifier | str | Cooling setpoint schedule |
apply(
operation="setpoint",
target_type="room",
identifiers=["Room_1"],
values={"heating_setpoint": 20, "cooling_setpoint": 26}
)ventilation| Parameter | Type | Description |
|---|---|---|
flow_per_person | float | Flow per person (m³/s/person) |
flow_per_area | float | Flow per area (m³/s/m²) |
air_changes_per_hour | float | Air changes per hour |
flow_per_zone | float | Flow per zone (m³/s) |
schedule_identifier | str | Ventilation schedule |
apply(
operation="ventilation",
target_type="room",
identifiers=["Room_1"],
values={"flow_per_person": 0.006}
)process_load| Parameter | Type | Description |
|---|---|---|
process_identifier | str | Identifier of existing process load to edit |
watts | float | Process load power (W) |
schedule_identifier | str | Process load schedule |
fuel_type | str | Fuel type |
end_use_category | str | End use category |
radiant_fraction | float | Radiant fraction |
latent_fraction | float | Latent fraction |
lost_fraction | float | Lost fraction |
apply(
operation="process_load",
target_type="room",
identifiers=["Room_1"],
values={
"process_identifier": "Process_A",
"watts": 600
}
)Update existing schedule resources. Use add to create new ones first.
schedule_type_limitapply(
operation="schedule_type_limit",
target_type="schedule_type_limit",
identifiers=["MyTypeLimit"],
values={"upper_limit": 2.0, "numeric_type": "Continuous"}
)schedule_dayapply(
operation="schedule_day",
target_type="schedule_day",
identifiers=["MyDay"],
values={"values": [0, 1, 0.5], "times": [[0, 0], [8, 0], [18, 0]]}
)schedule_rulesetapply(
operation="schedule_ruleset",
target_type="schedule",
identifiers=["MySchedule"],
values={"default_day_identifier": "NewDefaultDay"}
)schedule_fixed_intervalapply(
operation="schedule_fixed_interval",
target_type="schedule",
identifiers=["MyFixedSchedule"],
values={"values": [0.5] * 8760}
)Update existing Radiance resources. Use add to create new ones first.
modifierapply(
operation="modifier",
target_type="modifier",
identifiers=["TestPlastic"],
values={"r_reflectance": 0.6, "g_reflectance": 0.6, "b_reflectance": 0.6}
)modifier_setapply(
operation="modifier_set",
target_type="modifier_set",
identifiers=["TestModSet"],
values={"wall_modifier_identifier": "NewWallMod"}
)sensor_gridapply(
operation="sensor_grid",
target_type="sensor_grid",
identifiers=["Grid_01"],
values={"sensors": [{"pos": [2, 0, 0.8], "dir": [0, 0, 1]}]}
)viewapply(
operation="view",
target_type="view",
identifiers=["View_01"],
values={"direction": [0, 1, 0]}
)updated_room_count for room or HVAC operations.updated_count for opaque, window, and shade operations.resource_changes when schedules, constructions, modifiers, or modifier sets are created or updated as part of the operation.status="skipped", explain why no valid targets or values were applied.warnings exist, surface them explicitly.auto_save exists, mention shared-memory writeback.success=False, check the error field for details.values key, resource does not exist yet (use add first).list_options=True first to discover valid system_type values before applying.add first and apply second.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.