Generate, validate, and render JSCAD v2 CAD scripts from natural language prompts
94
94%
Does it follow best practices?
Impact
97%
1.64xAverage score across 3 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent follows the named-coordinate-system rules: all dimensions declared as named constants, all center/translate positions derived as named variables (no inline arithmetic), correct open-front box formulas, and cutter shapes oversized to avoid co-planar faces.",
"type": "weighted_checklist",
"checklist": [
{
"name": "All dimensions named",
"description": "All numeric dimensions (wall thickness, inner width, depth, height) are declared as named constants at the top of main() — no bare magic numbers appear in primitive calls",
"max_score": 10
},
{
"name": "Named center coordinates",
"description": "Center coordinates used in center: parameters or translate() calls are assigned to named variables (e.g. innerZCenter, ribXCenter) — not computed inline at the call site",
"max_score": 15
},
{
"name": "No inline arithmetic in center/translate",
"description": "No expression like translate([x, (outerD/2 - wall)/2, innerH/2 + wall/2], ...) appears in the code — all position arguments reference named constants only",
"max_score": 15
},
{
"name": "Open-front depth formula",
"description": "Outer depth equals innerD + wall (one wall, not two) because the front is open, not innerD + 2*wall",
"max_score": 10
},
{
"name": "Inner Y-center offset",
"description": "The center Y coordinate for inner parts uses the -wall/2 offset pattern to align inner content toward the open front, not simply 0",
"max_score": 10
},
{
"name": "Cutter oversized",
"description": "Mounting holes (or any subtract cutter) have their cutting dimension (height/depth through the wall) set to wall + 2 or more — not exactly equal to wall thickness",
"max_score": 10
},
{
"name": "Correct cuboid size format",
"description": "Every cuboid call uses size: [x, y, z] array — no scalar size values",
"max_score": 8
},
{
"name": "Correct cylinder params",
"description": "Mounting hole cylinders use radius (not r) and height (not h or length)",
"max_score": 7
},
{
"name": "No imports or require",
"description": "The script contains no import or require statements — uses injected scope names (primitives, booleans, transforms) directly",
"max_score": 8
},
{
"name": "main(params = {}) signature",
"description": "The entry function is defined as main(params = {}) — not main() with no default, not a different name",
"max_score": 7
}
]
}