Full-featured Monaco editor with OpenSCAD syntax highlighting, AI code generation, and live error detection. Write parametric models at the speed of thought.
VS Code-quality editing
OpenSCAD-aware colors
Inline error markers
include() & use() support
Write the same code you'd write in standard OpenSCAD. All primitives, transforms, and boolean operations work exactly as expected. We've also added real-time rendering on top.
Primitives
cube, sphere, cylinder, polyhedron
Transforms
translate, rotate, scale, mirror
Booleans
union, difference, intersection
Extrusions
linear_extrude, rotate_extrude
Modules
module, children()
Functions
function, let, for loops
Math
sin, cos, atan2, sqrt, pow
Special
$fn, $fa, $fs, color()
Every change is tracked. Browse your design history, compare versions, and roll back to any previous state. Connect to GitHub for full Git workflow.
Every AI interaction and manual edit creates a version. Browse the complete timeline of your design evolution.
Made a mistake? Roll back to any previous version with one click. Your work is never lost.
Connect to GitHub for commits, branches, and collaboration. Export your project as a proper Git repository.
Don't know OpenSCAD syntax? No problem. Describe what you want in natural language, and AI generates the code. Iterate with follow-up prompts.
Describe what you want in plain English. AI writes the OpenSCAD code.
Ask AI to change specific parts. It understands context.
When something breaks, AI can diagnose and fix issues.
Incrementally build up complexity with each prompt.
AI generates well-structured OpenSCAD with clear parameters at the top, modular functions, and comments explaining the logic. Easy to understand, easy to modify.
// Generated by Skiss AI
$fn = 48;
// Parameters
wall = 2;
inner_d = 75;
height = 100;
// Main body with smooth curves
module vase() {
difference() {
// Outer shell with varying radius
rotate_extrude()
polygon([
[0, 0],
[inner_d/2 + wall, 0],
[inner_d/2 + wall + 5, height * 0.3],
[inner_d/2 + wall, height * 0.7],
[inner_d/2 + wall + 3, height],
[0, height]
]);
// Inner cavity
translate([0, 0, wall])
cylinder(h=height, d=inner_d);
}
}
vase();