Detect and analyze geometric clashes between BIM elements. Identify hard clashes, soft clashes, and workflow conflicts using spatial analysis and rule-based detection.
SkillScore68Maintained
Automatic
◆Real Estate & Property pack
Last verified 8/22/2026
What it changes
Passed 15 of 22 test cases with the skill, and 8 of 22 without it.
Without skill36%
With skill68%
Checks it passed that the model alone missed
Applies a clearance requirement of 0.15 meters.
Includes by_type and by_severity breakdown dictionaries.
Includes CSS rules for summary, critical, and high style classes.
and 9 more in the full report
8 fixed7 passed either way6 still failing1 broke
Pass-rate lift
+32 pp
Tokens
+115%
Agent turns
0%
Response time
-19%
Model gemini-3.6-flashMeasured 8/22/2026v115 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 8 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 8
Prompt
When setting up soft clash checks for door openings against surrounding walls and structural columns in BIM models, what clearance distance threshold is standard for door swing clearance testing, and which IFC classes are evaluated?
What was checked, without and with the skill
Checked
Without skill
With skill
Applies a default clearance distance of 0.90 meters for door swing checks.
Missed
Passed
Evaluates IfcDoor against IfcColumn and IfcWall.
Passed
Passed
case-04 · gemini-3.6-flash · 8/22/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md466 linessingle file
Clash Detection Analysis
Overview
This skill implements automated clash detection for BIM models. Identify conflicts between building elements before construction to prevent costly rework and delays.
Types of Clashes:
Hard Clash: Physical intersection of elements
Soft Clash: Clearance/tolerance violations
Workflow Clash: Scheduling/sequencing conflicts
"Обнаружение коллизий на этапе проектирования может сократить затраты на исправление ошибок до 10 раз по сравнению с исправлением на стройплощадке."
Quick Start
import ifcopenshell
import ifcopenshell.geom
import numpy as np
from itertools import combinations
# Open model
ifc = ifcopenshell.open("model.ifc")
# Get structural and MEP elements
structural = ifc.by_type("IfcColumn") + ifc.by_type("IfcBeam")
mep = ifc.by_type("IfcPipeSegment") + ifc.by_type("IfcDuctSegment")
# Simple bounding box clash check
settings = ifcopenshell.geom.settings()
def get_bbox(element):
try:
shape = ifcopenshell.geom.create_shape(settings, element)
verts = np.array(shape.geometry.verts).reshape(-1, 3)
return verts.min(axis=0), verts.max(axis=0)
except:
return None, None
def check_bbox_clash(bbox1, bbox2):