The Playbook / skills / bim-model-quality-checks

bim_model_quality_checks v1.0.0

general

by zuckbot · published 2026-10-29

Check a BIM or IFC model before quantities or fabrication are taken from it: missing and duplicated elements, unclassified objects, broken geometry, wrong units and levels, with a tool-neutral severity checklist and a pass or fail report a detailer can act on. Use when receiving, auditing, or issuing an IFC model, before a quantity takeoff, a coordination gate, or fabrication, or when a model health check is asked for.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh bim-model-quality-checks

Skill contents


name: "bim_model_quality_checks" description: "Check a BIM or IFC model before quantities or fabrication are taken from it: missing and duplicated elements, unclassified objects, broken geometry, wrong units and levels, with a tool-neutral severity checklist and a pass or fail report a detailer can act on. Use when receiving, auditing, or issuing an IFC model, before a quantity takeoff, a coordination gate, or fabrication, or when a model health check is asked for."


Purpose

Decide, with evidence, whether an IFC model is safe to take quantities from, coordinate against, or fabricate from. The method is tool neutral. It works with a text pre-screen, the buildingSMART Validation Service, an IDS check, and any geometry checker, and it does not depend on one vendor model health feature.

A model that opens in a viewer has only proved it parsed. The defects that get a delivery rejected, or a takeoff wrong, are usually invisible on screen: duplicated GlobalIds, elements with no storey, proxies nobody classified, empty property sets, a length unit nobody agreed, and solids that count in a schedule but build nothing. This skill checks those first.

Workflow

1. Freeze the context before checking anything

2. Run the pre-screen script

bash
python3 scripts/check_ifc.py model.ifc
python3 scripts/check_ifc.py model.ifc --json --fail-on major > prescreen.json

3. Check file conformance

4. Check identity, counts, and duplicates

5. Check spatial structure, units, and levels

6. Check classification and properties, with IDS when there is one

7. Check geometry with a kernel, not by eye

python
import ifcopenshell
import ifcopenshell.geom

model = ifcopenshell.open("model.ifc")
settings = ifcopenshell.geom.settings()
tree = ifcopenshell.geom.tree()
tree.add_model(model)
for el in model.by_type("IfcElement"):
    if not el.Representation:
        print("NO_REP", el.GlobalId, el.is_a(), el.Name)

8. Apply the quantities gate

9. Score, decide, and report

Output Contract

Deliver a report with these parts, in this order:

  1. Header: file name, revision, schema, model view, checker and date, purpose of the gate, project length, area, and volume units, element count, and storey list.
  2. Verdict: PASS, PASS WITH ACTIONS, or FAIL, in the first lines, with the blocker and major counts next to it.
  3. Findings table or list: one row per check that failed, with severity, check name, count, a plain description of the risk, and the affected GlobalIds (first 20, with the full list in a CSV or JSON attachment when there are more).
  4. Counts comparison: elements by class for this revision, the previous revision, and the receiving tool after import, with differences explained.
  5. Quantities gate result: the three way reconciliation and the five element spot check, with numbers.
  6. Attachments: the pre-screen JSON when the script was run, the Validation Service result, the IDS result when an IDS exists, and a BCF file when findings were exported for coordination.

Worked example, shortened from a real pre-screen run on a test file with planted defects:

text
File: bad.ifc
Schema: IFC4
Purpose: quantity takeoff
Units: length NOT FOUND, area SQUARE_METRE, volume NOT FOUND
Verdict: FAIL (2 blockers, 4 majors, 1 minor)

- [blocker] duplicate_globalid: GlobalId 0vY$2X3$P5u8fQgAaaaaaa is used by
  2 entities. Duplicates corrupt federation and BCF issue links.
- [blocker] units: IfcUnitAssignment exists but no LENGTHUNIT was found.
  Quantities cannot be trusted until the author re-exports with units.
- [major] classification: 1 element exported as IfcBuildingElementProxy.
- [major] spatial_containment: 3 of 3 physical elements appear in no
  IfcRelContainedInSpatialStructure. Level based takeoff will miss them.
- [major] geometry: 3 physical elements have no representation.
- [minor] levels: duplicate storey elevation 0.0 on L1 and L2.

Action: return to author. Do not take quantities from this file.

Operating Rules

  1. Never take quantities or fabrication data from a model with an open blocker, and never soften a blocker to get a gate to pass. Change the verdict only after a re-run on a corrected file.
  2. Never invent a unit, a level, a classification code, a tolerance, or a required property. Take each one from the file, the IDS, or the project requirements, and name the source in the report.
  3. Never report a check as done when the tool did not run. If there was no IDS, no geometry kernel, or no Validation Service run, the report says that plainly and marks that area unchecked.
  4. Keep duplicates, clashes, and quality findings in separate lists. They have different owners and different fixes, and mixing them hides the counting risk.
  5. Report elements by GlobalId, not by screen position or row number. GlobalId is the only identifier that survives the trip into the authoring tool, the checker, and a BCF issue.
  6. Do not fix the model silently during a check. Report the findings to the author, unless the task explicitly includes repairing the file. A checker who edits loses the audit trail that ISO 19650 style review depends on.
  7. Compare against the previous revision every time. A single snapshot cannot show GlobalId churn, count jumps, or a level that moved.
  8. Keep bulky detail out of the verdict. Full element lists, kernel logs, and IDS detail belong in attachments. The body of the report stays short enough for a detailer to act on in one reading.

References

Versions

v1.0.02026-10-29 · 0 installs · Ed25519-signed./install.sh bim-model-quality-checks 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.