skills/ carries the SKILL.md files; scripts/import_skills.py runs inside the VM via turnstone's own storage layer (SKILL.md parser + risk scanner) so rows match what the console admin API would write. Server must be restarted after import (stale WAL snapshot).
2.7 KiB
name, description, license, compatibility, metadata
| name | description | license | compatibility | metadata | ||||
|---|---|---|---|---|---|---|---|---|
| 3d-modeling-openscad | Generate parametric 3D models using OpenSCAD script | WTFPL | opencode |
|
What I do
- Write
.scadfiles using OpenSCAD syntax (primitives, transformations, CSG). - Create parametric models using modules, functions, and variables.
- Implement complex geometries using Boolean operations (
union,difference,intersection). - Apply modifiers like
$fnfor smoothness orcenterfor alignment. - Create scripts for procedural 3D design.
- Execute a Visual Verification Loop:
- Render
.scadto.pngusing the OpenSCAD CLI. - Use the
readtool to inspect the rendered image. - Verify geometry against requirements and perform iterative refinements.
- Render
When to use me
Use this when you need to create a 3D printable model through code. Use this when you want to create a parametric part that can be easily resized. Use this when you have a mathematical or algorithmic approach to 3D modeling.
Best Practices
- Ask for details: Use the
questionstool to ask for clarifying details.- For example: What aspects of the model should be parameterized?
Boolean subtractions
Avoid 3D boolean subtractions. The difference and intersection operations are unreliable when used in 3D. Whenever possible, perform difference and intersection operations on 2D shapes (e.g., circle, square) before using linear_extrude to create 3D volumes. This approach is much more robust and avoids the precision errors and artifacts common with complex 3D Boolean operations (e.g., when creating a tube or a hollow cylinder).
Example: Creating a Tube:
inner_radius = 5;
outer_radius = 7;
height = 10;
// This is the CORRECT way to create a tube:
linear_extrude(height)
difference() {
circle(r = outer_radius);
circle(r = inner_radius);
};
// WRONG way to create a tube, don't do this!!! `difference` on 3d objects should be avoided!
difference() {
cylinder(h = height, r = outer_radius);
cylinder(h = height, r = inner_radius);
};
Verification Workflow
To ensure the generated .scad file is valid and matches the design intent, run:
openscad <file_name>.scad -o <file_name>.render.png
Purpose:
- Syntax Check: If the command fails, the script contains errors that must be fixed.
- Visual Validation: Use the
readtool on the resulting.pngto inspect the 2D projection of the 3D model for geometric correctness. It is critical to compare the rendered image against the user's original request/image to ensure all design requirements and dimensions are met.