Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Parse architectural drawings, floor plans, and building code compliance documents using Vision AI. Extracts building type, occupancy, floor areas, room layouts, dimensions, and code parameters. Use when: reading PDF floor plans, analyzing architectural drawings, extracting building data from images or scanned documents.
.claude/skills/terminalskills-architectural-drawing-parser/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 279% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 94% | 0% |
Vision AI pipeline to extract structured building data from architectural drawings, floor plans, and IBC/IRC code compliance documents. Uses Claude's vision capabilities to read and interpret professional drawings, returning a normalized JSON object suitable for downstream 3D modeling or code validation workflows.
Supports IBC occupancy types (A-1 through U), construction types (I-A through V-B), sprinkler systems (NFPA 13/13R/13D), building dimensions, unit breakdowns, egress data, and floor plan elements (rooms, walls, doors, windows).
| Drawing Type | What Is Extracted | |---|---| | IBC/IRC code compliance drawings | Occupancy, construction type, heights, stories, areas, egress, units | | Floor plans (unit-level) | Rooms, dimensions, wall layouts, door/window positions | | Site plans | Building footprint, setbacks, parking | | Building area analysis tables | Unit types, SF per unit, occupant loads, travel distances |
The parser returns a BuildingData JSON object with these fields:
{ permitted, actual }{ permitted: { feet, meters }, actual: { feet, meters } }{ sqft, sqm }{ name, area: { sqft, sqm }, occupantLoad, loadFactor, count }{ floor, maximum: { feet, meters } }1/16" = 1'-0"){ name, type, estimatedArea, dimensions } (floor plans only)pdftoppm -jpeg -r 150 drawing.pdf output)A developer receives a scanned floor plan of a 2-bedroom apartment unit and needs room dimensions for a renovation estimate.
Input: apartment_unit_plan.jpg (scanned at 200 DPI, 1/4" = 1'-0" scale)
Extracted JSON:
{
"rooms": [
{ "name": "Living Room", "type": "living", "estimatedArea": { "sqft": 240, "sqm": 22.3 }, "dimensions": { "width": 16, "depth": 15, "units": "feet" } },
{ "name": "Kitchen", "type": "kitchen", "estimatedArea": { "sqft": 120, "sqm": 11.1 }, "dimensions": { "width": 12, "depth": 10, "units": "feet" } },
{ "name": "Master Bedroom", "type": "bedroom", "estimatedArea": { "sqft": 168, "sqm": 15.6 }, "dimensions": { "width": 14, "depth": 12, "units": "feet" } },
{ "name": "Bedroom 2", "type": "bedroom", "estimatedArea": { "sqft": 132, "sqm": 12.3 }, "dimensions": { "width": 12, "depth": 11, "units": "feet" } },
{ "name": "Bathroom", "type": "bathroom", "estimatedArea": { "sqft": 48, "sqm": 4.5 }, "dimensions": { "width": 8, "depth": 6, "units": "feet" } }
],
"scale": "1/4\" = 1'-0\""
}The developer uses the room dimensions to calculate material quantities for flooring (708 sqft total) and wall paint coverage.
An architect submits a code compliance sheet for a 3-story apartment building. The parser extracts all building classification and egress data.
Input: ibc_compliance_sheet.jpg (building area analysis table + egress diagram)
Extracted JSON:
{
"occupancy": "R-2",
"constructionType": "V-B",
"sprinklerSystem": "NFPA 13",
"stories": { "permitted": 4, "actual": 3 },
"height": {
"permitted": { "feet": 60, "meters": 18.29 },
"actual": { "feet": 35, "meters": 10.67 }
},
"totalBuildingArea": { "sqft": 8910, "sqm": 827.9 },
"units": [
{ "name": "Type A", "area": { "sqft": 834, "sqm": 77.5 }, "occupantLoad": 5, "loadFactor": "1/200 SF", "count": 6 },
{ "name": "Type B", "area": { "sqft": 645, "sqm": 59.9 }, "occupantLoad": 4, "loadFactor": "1/200 SF", "count": 6 }
],
"travelDistances": [
{ "floor": "Level 1", "maximum": { "feet": 66, "meters": 20.1 } },
{ "floor": "Level 2", "maximum": { "feet": 66, "meters": 20.1 } },
{ "floor": "Level 3", "maximum": { "feet": 66, "meters": 20.1 } }
]
}This data feeds into the ibc-building-codes skill for compliance validation and the spec-to-3d skill for 3D model generation.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→pass | 12,673 | 12,069 | -5% | 1 | 1 | 0% | 2,850 | 4,733 | +66% | 0 | 0 | — |
case-01 | fail→pass | 24,011 | 7,013 | -71% | 1 | 1 | 0% | 862 | 3,269 | +279% | 0 | 0 | — |
case-02 | fail→pass | 12,163 | 8,726 | -28% | 1 | 1 | 0% | 2,733 | 3,692 | +35% | 0 | 0 | — |
case-04 | pass→pass | 9,348 | 3,212 | -66% | 1 | 1 | 0% | 1,722 | 2,334 | +36% | 0 | 0 | — |
case-05 | pass→pass | 16,372 | 12,162 | -26% | 1 | 1 | 0% | 3,005 | 4,064 | +35% | 0 | 0 | — |
case-06 | pass→pass | 14,931 | 3,211 | -78% | 1 | 1 | 0% | 801 | 2,313 | +189% | 0 | 0 | — |
case-07 | pass→pass | 2,610 | 2,172 | -17% | 1 | 1 | 0% | 466 | 2,103 | +351% | 0 | 0 | — |
case-08 | fail→pass | 8,956 | 3,576 | -60% | 1 | 1 | 0% | 1,689 | 2,393 | +42% | 0 | 0 | — |
case-09 | pass→pass | 5,527 | 3,091 | -44% | 1 | 1 | 0% | 983 | 2,222 | +126% | 0 | 0 | — |
case-10 | fail→pass | 6,479 | 2,652 | -59% | 1 | 1 | 0% | 1,147 | 2,222 | +94% | 0 | 0 | — |
case-11 | fail→pass | 5,898 | 4,165 | -29% | 1 | 1 | 0% | 1,198 | 2,508 | +109% | 0 | 0 | — |
case-12 | fail→pass | 5,213 | 3,101 | -41% | 1 | 1 | 0% | 1,028 | 2,358 | +129% | 0 | 0 | — |
case-22 | fail→fail | 13,996 | 13,463 | -4% | 1 | 1 | 0% | 2,758 | 4,541 | +65% | 0 | 0 | — |
case-13 | pass→pass | 5,940 | 3,676 | -38% | 1 | 1 | 0% | 1,251 | 2,467 | +97% | 0 | 0 | — |
case-14 | pass→pass | 12,550 | 10,818 | -14% | 1 | 1 | 0% | 2,256 | 3,803 | +69% | 0 | 0 | — |
case-15 | fail→pass | 9,669 | 4,959 | -49% | 1 | 1 | 0% | 1,631 | 2,436 | +49% | 0 | 0 | — |
case-16 | pass→pass | 10,750 | 2,488 | -77% | 1 | 1 | 0% | 1,529 | 2,064 | +35% | 0 | 0 | — |
case-17 | fail→pass | 5,241 | 2,870 | -45% | 1 | 1 | 0% | 994 | 2,260 | +127% | 0 | 0 | — |
case-18 | pass→pass | 6,197 | 2,542 | -59% | 1 | 1 | 0% | 1,093 | 2,225 | +104% | 0 | 0 | — |
case-19 | pass→pass | 4,094 | 3,633 | -11% | 1 | 1 | 0% | 682 | 2,356 | +245% | 0 | 0 | — |
case-20 | fail→fail | 18,330 | 18,362 | +0% | 1 | 1 | 0% | 3,954 | 5,872 | +49% | 0 | 0 | — |
case-21 | pass→pass | 10,791 | 9,359 | -13% | 1 | 1 | 0% | 1,835 | 3,232 | +76% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.