Read and parse XML from construction systems - P6 schedules, BSDD exports, IFC-XML, COBie-XML. Convert to pandas DataFrames.
SkillScore52Maintained
Automatic
◆Data Engineer pack
Last verified 8/23/2026
What it changes
Passed 12 of 23 test cases with the skill, and 7 of 23 without it.
Without skill30%
With skill52%
Checks it passed that the model alone missed
Uses flatten_xml on the XML root.
Uses find_elements to locate tagged elements.
Refers to COBIE_SHEETS inside COBieXMLReader.
and 3 more in the full report
6 fixed6 passed either way10 still failing1 broke
Pass-rate lift
+22 pp
Tokens
+55%
Agent turns
0%
Response time
-31%
Model gemini-3.6-flashMeasured 8/23/2026v112 of 23 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 6
Prompt
In the COBie XML reader implementation, which class variable defines the full list of supported COBie sheets (such as Facility, Floor, Space, Component)?
What was checked, without and with the skill
Checked
Without skill
With skill
Refers to COBIE_SHEETS inside COBieXMLReader.
Missed
Passed
case-15 · gemini-3.6-flash · 8/23/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md254 linessingle file
XML Reader for Construction Data
Overview
XML is used in construction for P6 schedules (XER), IFC-XML, COBie-XML, and buildingSMART Data Dictionary exports. This skill parses XML and converts to structured DataFrames.
Python Implementation
import xml.etree.ElementTree as ET
import pandas as pd
from typing import Dict, Any, List, Optional, Union
from dataclasses import dataclass
from pathlib import Path
import re
@dataclass
class XMLElement:
"""Parsed XML element."""
tag: str
attributes: Dict[str, str]
text: Optional[str]
children: List['XMLElement']
class ConstructionXMLReader:
"""Parse XML from construction systems."""
def __init__(self):
self.namespaces: Dict[str, str] = {}
def parse_file(self, file_path: str) -> ET.Element:
"""Parse XML file and return root element."""
tree = ET.parse(file_path)
root = tree.getroot()
# Extract namespaces
self._extract_namespaces(root)
return root