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 decomposes the model into independently named feature constants, uses hull() of spheres for the organic handle shape, avoids excessive boolean nesting, and writes a pure function with no imports.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Named feature constants",
"description": "The body, handle, and base (or equivalent features) are each assigned to separate named const variables — not built inline inside a single return expression",
"max_score": 12
},
{
"name": "hull for handle",
"description": "The handle is built using hulls.hull() or hulls.hullChain() of sphere or cylinder primitives — not as a torus or a boolean combination of primitives",
"max_score": 15
},
{
"name": "Boolean nesting depth",
"description": "No boolean call (subtract, union, intersect) is nested more than 2 levels deep — e.g. subtract(union(a,b), subtract(c,d)) is 2 levels and acceptable, but further nesting is not",
"max_score": 10
},
{
"name": "Hollow body via subtract",
"description": "The hollow mug body is created by subtracting an inner cylinder from an outer cylinder using booleans.subtract(), not a single primitive",
"max_score": 10
},
{
"name": "Cutter oversized",
"description": "The inner cavity cutter cylinder's height is larger than the outer body height (at least wall thickness + 1mm extra) to avoid co-planar faces",
"max_score": 8
},
{
"name": "No imports or require",
"description": "The script contains no import or require statements — all names (primitives, booleans, hulls, etc.) come from injected scope",
"max_score": 10
},
{
"name": "Pure function",
"description": "main() has no side effects — no console.log, no file I/O, no global variable mutations",
"max_score": 8
},
{
"name": "main(params = {}) signature",
"description": "Entry function is declared as main(params = {}) with a default parameter",
"max_score": 7
},
{
"name": "Correct v2 cylinder params",
"description": "All cylinder calls use radius (not r or diameter) and height (not h or length)",
"max_score": 8
},
{
"name": "Named dimension constants",
"description": "Key dimensions (outer radius, wall thickness, height) are declared as named constants — no bare magic numbers in primitive size arguments",
"max_score": 12
}
]
}