# Oas Layout

> Use when producing or editing fully resolved OAS-Layout JSON — multi-level plans with levels, rooms, walls, openings, slabs, roofs, furniture, railings, and inter-level connections.

- Skill: `autodesk-platform-services/oas-layout` (Agent Skill)
- Install (CLI): `npx skillmds@latest add autodesk-platform-services/oas-layout`
- Raw SKILL.md: https://api.skillmd.com/api/skills/autodesk-platform-services/oas-layout/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: autodesk-platform-services (https://skillmd.com/u/autodesk-platform-services)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/autodesk-platform-services/oas-layout

---


# OAS Layout

## When to use

Use this skill whenever the task is "give me the resolved plan" — concrete polygons, walls with coordinates, openings placed on walls, multiple levels, stairs/elevators connecting levels. If you're only authoring single-level core entities without level/connection scaffolding, `oas-core` may be enough. If the task is intent-only (no geometry), use `oas-program`.

## Key entities (top-level arrays in a Layout document)

- `levels` — abstract reference planes (`id`, `name`, `elevation_mm`, optional `is_building_story`)
- `rooms`, `walls`, `openings`, `curtain_walls`, `roofs`, `floor_slabs`, `furniture`, `railings` — Core entities, each with optional `level` reference
- `connections` — inter-room circulation graph: `{ from, to, type }` where `type` is `direct` | `through` | `single_access`
- `metadata` — optional provenance (`generated_by`, `timestamp`, `notes`)

## Critical rules

1. **Walls are straight line segments**, defined by `from`/`to` points only — not polylines. For a bent wall, emit multiple wall entities.
2. **Validate opening placement against wall length.** `position_along_wall_mm ≥ 0` and `position_along_wall_mm + width_mm ≤ Euclidean distance between wall.from and wall.to`.
3. **`Level` is abstract; `FloorSlab` is physical.** Level is the reference plane (`elevation_mm`); FloorSlab is the construction. A single Level can have multiple slabs (split-level designs).
4. **`Connection` is a room-to-room graph, not a vertical traversal.** Types are `direct` (shared doorway), `through` (passes through other rooms), `single_access` (room only reachable via one neighbor). Vertical movement between levels is modeled via openings + level refs on the room/opening, not a special connection type.
5. **Non-rectangular wall tops use `top_profile_points`.** Each entry is `{ "t": 0..1, "z_mm": int }` where `t` is the **parametric position along the wall**, not an absolute coordinate.
6. **Roof arrays must align with the boundary polygon.** `slope_angles`, `defines_slope`, and `eave_overhang_mm` must each have exactly as many entries as the polygon has points. Edges where `defines_slope` is `false` are gables.
7. **Openings reference `in_wall` *or* `in_curtain_wall`, never both.** Curtain wall panels (`IfcPlate`) are not openings — only doors/windows are.

## Full schema

See [docs/layout.md](../../../docs/layout.md) for the complete reference — the largest module in OAS, covering levels, all entity placements, and connection semantics.

## Related skills

- `oas-core` — the entity vocabulary Layout reuses and scopes to levels
- `oas-geometry` — for polygon, wall-path, and angle conventions
- `oas-program` — the upstream intent a Layout is meant to satisfy
- `oas-render` — to visualize the resolved Layout
- `oas-extensions` — for machinery, materials, Autodesk metadata attached to Layout entities

