Claude-skill-registry energyplus-builder
Generate EnergyPlus building simulations from natural language descriptions or building images. Use when user asks to 'create building simulation', 'generate IDF', 'simulate X-story building', provides building floor plans, 3D models, or describes buildings like 'a 3-story office building in Shenzhen'.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/energyplus-builder" ~/.claude/skills/majiayu000-claude-skill-registry-energyplus-builder && rm -rf "$T"
manifest:
skills/data/energyplus-builder/SKILL.mdsource content
EnergyPlus Building Simulation Skill
This skill automates the complete workflow from building description to EnergyPlus simulation results.
Capabilities
- Parse natural language building descriptions (Chinese/English)
- Analyze building images (floor plans, 3D models) for geometry extraction
- Generate compliant YAML configuration files
- Execute YAML-to-IDF conversion with Pydantic validation
- Run EnergyPlus simulations
- Detect and auto-fix common errors
- Output clean, validated YAML files
Input Types
Natural Language Examples
- "一栋三层的办公楼,复杂度:complex,地点位于深圳"
- "A 2-story residential building in Beijing, simple layout"
- "Create a medium complexity commercial building, 5 floors, 1000 m²"
Image Types Supported
- Floor plans (2D layout drawings)
- 3D building models/renderings
- CAD exports
Parameter Extraction Rules
When parsing user input, extract the following parameters:
| User Input Pattern | Parameter | Default Value |
|---|---|---|
| "X层/楼/story/floor/level" | num_floors | 1 |
| "在[城市]/in [city]" | location | Shenzhen |
| "办公/住宅/商业/office/residential/commercial" | building_type | office |
| "complex/medium/simple" | complexity | medium |
| "X平方米/X m²/X sqm" | total_area | 500 m² |
| "朝北/朝南/facing north/south" | north_axis | 0 degrees |
Complexity Levels
Simple (每层最多3个热区)
- Zones per floor: 1-3
- Layout: Single zone or linear divisions
- Windows per exterior wall: 0-1
- Default zone area: 100 m²
- Ceiling height: 3.0 m
- No interior walls between zones
Medium (每层最多8个热区和8个门窗)
- Zones per floor: 4-8
- Layout: Grid pattern (2x2, 2x3, 2x4)
- Windows per exterior wall: 1-2
- Default zone area: 50 m²
- Ceiling height: 3.2 m
- Interior walls between zones
Complex (多热区及多门窗)
- Zones per floor: 9+
- Layout: Perimeter + core pattern
- Windows per exterior wall: 2-3
- Default zone area: 30 m²
- Ceiling height: 3.5 m
- Interior walls and doors
City Location Database
Shenzhen/深圳: Name: Shenzhen_GD_CHN Design_Conditions Latitude: 22.54 Longitude: 114.00 Time Zone: 8.00 Elevation: 4.00 Beijing/北京: Name: Beijing_CHN Design_Conditions Latitude: 39.92 Longitude: 116.46 Time Zone: 8.00 Elevation: 55.00 Shanghai/上海: Name: Shanghai_CHN Design_Conditions Latitude: 31.17 Longitude: 121.43 Time Zone: 8.00 Elevation: 4.00 Guangzhou/广州: Name: Guangzhou_GD_CHN Design_Conditions Latitude: 23.13 Longitude: 113.32 Time Zone: 8.00 Elevation: 11.00
Workflow Instructions
Step 1: Parse User Input
- Extract building parameters from natural language or image
- Determine complexity level (simple/medium/complex)
- Set defaults for missing parameters
Step 2: Calculate Building Geometry
Use the geometry rules from
./docs/geometry-rules.md:
- Calculate building footprint based on total area and number of floors
- Subdivide into zones based on complexity level
- Generate surface vertices for each zone (floor, ceiling/roof, walls)
- Calculate window positions for exterior walls
Step 3: Generate YAML File
Generate YAML following the structure in
./docs/yaml-schema-reference.md:
# Required sections in order: SimulationControl: Building: Timestep: Site:Location: RunPeriod: Material: Construction: GlobalGeometryRules: Zone: BuildingSurface:Detailed: FenestrationSurface:Detailed: # if windows exist Schedule: HVAC: Output:VariableDictionary: Output:Diagnostics: Output:Table:SummaryReports: OutputControl:Table:Style: Output:Variable:
Save to:
schemas/generated_building_YYYYMMDD_HHMMSS.yaml
Step 4: Execute Pipeline
# Run the conversion and simulation pipeline python main.py schemas/generated_building_XXXXXX.yaml dependencies/Shenzhen.epw
Step 5: Check for Errors
- Pydantic Validation Errors: Check console output for validation failures
- EnergyPlus Errors: Check
files in.erroutput/results/energyplus_runs_*/
Common error patterns and fixes are documented in
./docs/error-handling.md.
Step 6: Auto-Fix and Retry
If errors occur:
- Parse error message to identify issue
- Apply appropriate fix from error handling guide
- Regenerate YAML with corrections
- Re-run pipeline (maximum 3 retries)
Step 7: Output Results
After successful simulation:
- Report simulation success and output location
- Clean the final YAML file (remove comments, format consistently)
- Present the validated YAML to user
YAML Generation Template
Use this template structure for generating YAML files:
# ================================================================== # Simulation Control # ================================================================== SimulationControl: Do Zone Sizing Calculation: No Do System Sizing Calculation: No Do Plant Sizing Calculation: No Run Simulation for Sizing Periods: No Run Simulation for Weather File Run Periods: Yes Do HVAC Sizing Simulation for Sizing Periods: Yes Maximum Number of HVAC Sizing Simulation Passes: 1 # ================================================================== # Building # ================================================================== Building: Name: {building_name} North Axis: {north_axis} Terrain: {terrain} Loads Convergence Tolerance Value: 0.04 Temperature Convergence Tolerance Value: 0.40 Solar Distribution: FullInteriorAndExterior Maximum Number of Warmup Days: 25 Minimum Number of Warmup Days: 6 # ================================================================== # Timestep # ================================================================== Timestep: Number of Timesteps per Hour: 4 # ================================================================== # Site Location # ================================================================== Site:Location: Name: {location_name} Latitude: {latitude} Longitude: {longitude} Time Zone: {time_zone} Elevation: {elevation} # ================================================================== # Run Period # ================================================================== RunPeriod: Name: Run Period 1 Begin Month: 1 Begin Day of Month: 1 Begin Year: 2040 End Month: 12 End Day of Month: 31 End Year: 2040 Day of Week for Start Day: Tuesday Use Weather File Holidays and Special Days: Yes Use Weather File Daylight Saving Period: Yes Apply Weekend Holiday Rule: No Use Weather File Rain Indicators: Yes Use Weather File Snow Indicators: Yes # ================================================================== # Materials # ================================================================== Material: - Name: Concrete_20cm Type: Standard Roughness: MediumRough Thickness: 0.2 Conductivity: 1.729 Density: 2240 Specific_Heat: 837 - Name: Gypsum_1.3cm Type: Standard Roughness: Smooth Thickness: 0.0127 Conductivity: 0.16 Density: 785 Specific_Heat: 830 - Name: Interior_Insulation Type: NoMass Roughness: MediumRough Thermal_Resistance: 2.5 - Name: SimpleGlazingSystem Type: Glazing U-Factor: 5.8 Solar_Heat_Gain_Coefficient: 0.8 Visible_Transmittance: 0.9 # ================================================================== # Constructions # ================================================================== Construction: - Name: Exterior_Wall_Const Layers: - Concrete_20cm - Name: Interior_Wall_Const Layers: - Gypsum_1.3cm - Gypsum_1.3cm - Name: Roof_Const Layers: - Concrete_20cm - Name: Floor_Const Layers: - Concrete_20cm - Name: Ceiling_Const Layers: - Concrete_20cm - Name: Window_Const Layers: - SimpleGlazingSystem # ================================================================== # Global Geometry Rules # ================================================================== GlobalGeometryRules: Starting Vertex Position: UpperLeftCorner Vertex Entry Direction: Counterclockwise Coordinate System: World # ================================================================== # Zones (generate based on complexity) # ================================================================== Zone: # Generate zone entries based on complexity level # ================================================================== # Building Surfaces (generate for each zone) # ================================================================== BuildingSurface:Detailed: # Generate surfaces: Floor, Roof/Ceiling, 4 Walls per zone # ================================================================== # Fenestration Surfaces (if applicable) # ================================================================== FenestrationSurface:Detailed: # Generate windows on exterior walls # ================================================================== # Schedules # ================================================================== Schedule: ScheduleTypeLimits: - Name: On/Off Lower Limit Value: 0 Upper Limit Value: 1 Numeric Type: DISCRETE Unit Type: Dimensionless - Name: Temperature Numeric Type: CONTINUOUS Unit Type: Temperature Schedule:Compact: - Name: Always On Schedule Type Limits Name: On/Off Data: - Through: "12/31" Days: - For: "AllDays" Times: - Until: Time: "24:00" Value: 1 - Name: Heating_Setpoint_Schedule Schedule Type Limits Name: Temperature Data: - Through: "12/31" Days: - For: "AllDays" Times: - Until: Time: "24:00" Value: 20 - Name: Cooling_Setpoint_Schedule Schedule Type Limits Name: Temperature Data: - Through: "12/31" Days: - For: "AllDays" Times: - Until: Time: "24:00" Value: 26 # ================================================================== # HVAC # ================================================================== HVAC: HVACTemplate:Thermostat: - Name: Ideal Loads Thermostat Heating Setpoint Schedule Name: Heating_Setpoint_Schedule Cooling Setpoint Schedule Name: Cooling_Setpoint_Schedule HVACTemplate:Zone:IdealLoadsAirSystem: # One entry per zone - Zone Name: {zone_name} Template Thermostat Name: Ideal Loads Thermostat System Availability Schedule Name: Always On # ================================================================== # Output Settings # ================================================================== Output:VariableDictionary: Key Field: regular Output:Diagnostics: Key 1: DisplayExtraWarnings Output:Table:SummaryReports: Report 1 Name: AllSummary OutputControl:Table:Style: Column Separator: HTML Output:Variable: - Key Value: "*" Variable Name: Zone Mean Air Temperature Reporting Frequency: Hourly - Key Value: "*" Variable Name: Surface Inside Face Temperature Reporting Frequency: Hourly
Important Validation Rules
Surface Vertices
- Each surface must have exactly 4 vertices (rectangular surfaces)
- Vertices must be specified counterclockwise when viewed from outside
- Minimum distance between vertices: 1e-10
- All surfaces in a zone must form a closed volume
Interior Walls
- Interior walls connecting two zones must have paired surfaces
- Use
Outside Boundary Condition: Surface - Specify
with paired surface nameOutside Boundary Condition Object
Boundary Conditions
| Surface Type | Typical Boundary Condition |
|---|---|
| Floor (ground level) | Ground |
| Floor (upper levels) | Surface (to ceiling below) |
| Roof | Outdoors |
| Ceiling | Surface (to floor above) |
| Exterior Wall | Outdoors |
| Interior Wall | Surface |
Reference Files
For detailed specifications, refer to:
- Complete field referencedocs/yaml-schema-reference.md
- Complexity level configurationsdocs/complexity-presets.md
- Vertex calculation formulasdocs/geometry-rules.md
- Error patterns and fixesdocs/error-handling.md
- Working YAML examples for each complexity levelexamples/