checklist-to-config
Use this skill when translating an energy code compliance checklist into a machine-readable JSON config for OpenStudio model measures. This includes interviewing the user about material layers from DD drawings, converting IP to SI units, performing gap analysis on checklist data, generating envelope configs, and validating config files. Triggers on checklist-to-config, compliance config, envelope config, material layers, config interview.
Checklist-to-Config
Reads energy code compliance checklists and produces validated JSON configuration files through collaborative dialogue with the user. The config files drive OpenStudio measures that apply properties to building energy models.
Current Scope: v1 Envelope only (roof, walls, floors, fenestration, doors, infiltration)
When to Use This Skill
Invoke when:
- Translating a compliance checklist into model-ready properties
- Building a JSON config for
apply_envelope_from_configor future measures - The user has a compliance checklist and DD drawings and needs to populate material layers
- Resuming a partially-completed config interview
Interactive Interview Process
Follow these five steps in order. One question at a time. Multiple choice preferred.
Step 1: Intake
- Read the compliance checklist file provided by the user
- Read the JSON schema to understand every required field:
.claude/skills/checklist-to-config/schemas/envelope-config.schema.json - Build a gaps list: which fields have values in the checklist vs. which are missing
Step 2: Triage
Group every config field into three categories and present the summary to the user:
- Known - Values clearly stated in the checklist (e.g., "Roof R-31.25, U-0.032"). These will be auto-populated.
- Findable - Values not in the checklist but likely in specific documents. Recommend where to look:
- "Check sheet A-501 for the roof detail section"
- "The door schedule is typically on the architectural set"
- "Wall section details are usually on structural sheets S-XXX"
- Unknown - Genuinely missing, needs design team input or a default assumption
Present the triage table and ask the user to confirm before proceeding.
Step 3: Interview (Assembly by Assembly)
Walk through each envelope assembly one at a time in this order:
- Roof
- Walls above grade
- Walls below grade
- Floors
- Slab on grade
- Fenestration (vertical glazing)
- Doors (swinging, nonswinging)
- Infiltration
For each assembly:
-
Present what's known from the checklist (R-values, U-factors, types)
-
Ask for material layer details from the DD set. Offer common assemblies as multiple choice:
Roof assembly. The checklist shows IEAD roof at R-31.25 (U-0.032). What materials make up this assembly?
- TPO/EPDM membrane + polyiso + metal deck (most common for commercial)
- Built-up roof + polyiso + concrete deck
- I have the roof detail — let me describe it
- Not sure yet — use a typical assembly
-
For each layer, collect or confirm:
- Material name
- Thickness (accept IP, convert to SI)
- Conductivity (W/m-K)
- Density (kg/m3)
- Specific heat (J/kg-K)
- For air gaps: thermal resistance (m2-K/W) instead of layer properties
-
For Findable gaps, recommend specific places to look:
- "This is usually in the wall section detail on sheet A-XXX"
- "Check the door schedule for the U-factor"
-
For Unknown gaps, offer smart defaults with engineering justification:
- "No VT specified. For SHGC 0.33, typical VT is 0.42-0.50. Use 0.45 as placeholder?"
- "Typical steel stud + R-19 batt has conductivity ~0.049 W/m-K"
- Mark defaulted items as
"status": "flagged"with a note explaining the assumption
-
Handle TBD items: If the user doesn't have the information and doesn't want a default, set
"status": "tbd"with a descriptive note. The measure will skip these.
Step 4: Validation (Per Assembly)
After completing each assembly, show what will go into the config:
Roof Assembly Summary:
ID: roof_iead
Type: IEAD
U-factor: 0.182 W/m2-K (0.032 Btu/h-ft2-F)
Layers (outside to inside):
1. TPO Membrane — 3mm, k=0.17, rho=1400, cp=900
2. Polyiso Insulation — 127mm, k=0.024, rho=32, cp=1470
3. Metal Deck — 2mm, k=45.0, rho=7800, cp=500
Status: verified
Apply to: all exterior roofs
Does this look correct? [Yes / Edit a layer / Add a layer / Start over]
Step 5: Output
- Assemble the complete JSON config with all assemblies
- Populate the metadata section (project name, climate zone, date, etc.)
- Save to the project configs directory:
User-Files/work-tracking/projects/{project}/configs/{project}_envelope_v1.json - Run validation:
node .claude/skills/checklist-to-config/tools/validate-config.js <config-path> - Report validation results to user
- If validation fails, walk through errors and fix interactively
Unit Conversion Reference
All config values are stored in SI units. During the interview, accept IP values and convert:
| Property | IP Unit | SI Unit | Conversion |
|---|---|---|---|
| U-factor | Btu/h-ft2-F | W/m2-K | × 5.678 |
| R-value | h-ft2-F/Btu | m2-K/W | × 0.1761 |
| Thickness | inches | meters | × 0.0254 |
| Conductivity | Btu-in/h-ft2-F | W/m-K | × 0.1442 |
| Density | lb/ft3 | kg/m3 | × 16.018 |
| Specific heat | Btu/lb-F | J/kg-K | × 4186.8 |
| Infiltration | cfm/ft2 | m3/s-m2 | × 0.00508 |
| C-factor | Btu/h-ft2-F | W/m2-K | × 5.678 |
| F-factor | Btu/h-ft-F | W/m-K | × 1.731 |
Config Schema
The JSON schema defines the complete structure:
.claude/skills/checklist-to-config/schemas/envelope-config.schema.json
Key design principles:
- SI units for all thermal values (what OpenStudio consumes)
- IP equivalents stored as metadata for human readability
statusfield on each item:verified,tbd, orflaggedlayers[]array for opaque constructions with full material properties- Nullable fields —
nullmeans "not yet known" - No massless materials — detailed layers required for LEED G2.2 compliance
Validation Tool
node .claude/skills/checklist-to-config/tools/validate-config.js <path-to-config.json>
Checks:
- All required fields present per schema
- SI values non-null for
verifieditems - Value ranges physically reasonable
- Every
layers[]entry has required material properties - No
tbditems will be silently applied
Status Field Rules
| Status | Meaning | Measure Behavior |
|---|---|---|
verified | Value confirmed by user or checklist | Apply to model |
tbd | Not yet known | Skip — do not apply |
flagged | Value has known issue or uses default | Apply with warning logged |
Resuming a Partial Interview
If context overflows or the session ends mid-interview:
- Check for existing config file in the configs directory
- Read it to see which assemblies are complete
- Resume from the next incomplete assembly
- The config file is the durable artifact — everything answered so far is preserved
Integration
This skill produces configs consumed by:
apply_envelope_from_configmeasure (v1 — envelope)- Future:
apply_loads_from_config,apply_hvac_from_config,apply_swh_from_config
After config generation, the workflow continues with:
writing-openstudio-model-measures— writes the measure if not yet writtenrunning-openstudio-models— applies measure and runs simulationenergyplus-assistant— QA/QC validation of results