Claude Code Plugins

Community-maintained marketplace

Feedback

openscad-modeler

@festion/homelab-gitops
0
0

OpenSCAD 3D modeling assistant for creating and modifying parametric 3D models. Use when working with .scad files, making adjustments to 3D models (resizing, adding/removing sections, holes, fillets), creating new OpenSCAD geometry, or debugging OpenSCAD code. Supplements the openscad MCP server (mcp__openscad__render_single) with language knowledge and modification patterns.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name openscad-modeler
description OpenSCAD 3D modeling assistant for creating and modifying parametric 3D models. Use when working with .scad files, making adjustments to 3D models (resizing, adding/removing sections, holes, fillets), creating new OpenSCAD geometry, or debugging OpenSCAD code. Supplements the openscad MCP server (mcp__openscad__render_single) with language knowledge and modification patterns.

OpenSCAD Modeler

Workflow for creating and modifying OpenSCAD parametric 3D models.

MCP Integration

Use mcp__openscad__render_single to preview changes:

scad_content: "cube([10,10,10]);"    // Inline code
scad_file: "/path/to/file.scad"     // Or file path
view: "isometric"                    // front/back/left/right/top/bottom/isometric

Render after each significant modification to verify results.

Quick Reference

Primitives

cube([x,y,z], center=true);
sphere(r=5); sphere(d=10);
cylinder(h=10, r=5); cylinder(h=10, r1=5, r2=3);  // cone

Transforms

translate([x,y,z]) obj;
rotate([x,y,z]) obj;        // degrees
scale([x,y,z]) obj;
mirror([1,0,0]) obj;        // mirror across YZ plane

Boolean Operations

difference() { base; subtract1; subtract2; }  // Remove
union() { obj1; obj2; }                        // Combine
intersection() { obj1; obj2; }                 // Keep overlap

Extrusions

linear_extrude(height=10) circle(r=5);
linear_extrude(h=10, twist=90, scale=0.5) square(10);
rotate_extrude() translate([10,0]) circle(r=3);  // Torus

Resolution

$fn = 100;  // Smooth curves (set globally or per-object)
cylinder(h=10, r=5, $fn=6);  // Hexagon

Common Modifications

Add hole

difference() {
    existing_part();
    translate([x,y,z]) cylinder(d=hole_d, h=99, center=true);
}

Resize

scale([1.5, 1.5, 1]) existing_part();     // 150% XY, keep Z
resize([50, 0, 0], auto=true) part();     // 50mm wide, proportional

Round edges

minkowski() {
    cube([w-2*r, d-2*r, h-2*r], center=true);
    sphere(r=r);
}

Shell/hollow

difference() {
    outer_shape();
    offset(-wall) outer_shape();  // 2D
    // Or for 3D: scale down slightly
}

Array

for (i = [0:count-1]) translate([i*spacing, 0, 0]) part();
for (i = [0:5]) rotate([0, 0, i*60]) translate([r, 0, 0]) part();

Workflow

  1. Read existing .scad file or start new
  2. Identify what to modify (add/remove/resize)
  3. Apply appropriate pattern from above
  4. Render with MCP to verify (view: "isometric")
  5. Iterate as needed

Detailed References

Debugging Tips

  • Use # prefix to highlight object in preview: #cube([10,10,10]);
  • Use % for transparent preview: %cylinder(h=20, r=5);
  • Use ! to show only that object: !sphere(r=10);
  • Use * to disable object: *cube([10,10,10]);
  • Check $preview for render vs preview mode
  • Increase convexity parameter if preview renders incorrectly