When to use
Use this skill whenever the task touches coordinates, curves, polygon validity, units, or angular conventions. This is the largest section of the spec, so load it early when you suspect a geometry bug (integer-mm violations, polygon not closing, arc winding wrong). If the work is about which entity owns the geometry (room vs. wall etc.), prefer oas-core or oas-layout.
Key types
Point—{ x, y }in integer mm (optionallyzfor railings on stairs)Polygon— orderedpointsarray plus explicit"closed": true;closed: falseis allowed for open paths (e.g. railings)LineSegment— straight edge fromstarttoendArc— circular arc withcenter,radius_mm,start_angle_deg,end_angle_degCircle— full circle (center,radius_mm)Spiral/Fillet— specialty curves used for stairs and corners
Critical rules
- No decimals in coordinates. Every
x,y,z, radius, length is integer millimeters. The single exception isarea_m2, which is a derived decimal value in square meters. - Polygons must declare
"closed": trueexplicitly. A polygon without this flag is not closed by convention — don't rely on the last point matching the first. - Consistent winding. Point order must be uniformly clockwise or counterclockwise; do not mix. Positive rotation is counterclockwise.
- Arc sweep is CCW from
start_angle_degtoend_angle_deg. If you want a clockwise visual arc, swap start/end — do not negate angles. - Units are global.
units.lengthis"mm"andunits.angleis"deg"for the whole document; do not introduce per-entity unit overrides.
Full schema
See docs/geometry.md for the complete reference, including arc parameterization, spiral construction, and fillet rules.
Related skills
oas-coreandoas-layout— consumers of these geometric primitivesoas-render— for how these primitives map onto screen coordinates (Y typically inverts)