agentleFS
randomonkey05randomonkey05/SolidCraft-Agent-Skills/skills/solidcraft-tutorial-recipes/SKILL.md

solidcraft-tutorial-recipes

Skill12 starsChanged 17 days agoApache-2.0View on GitHub

Use when a SolidCraft task is described in GUI terms (sketch, constraint, dimension, extrude, revolve, hole, shell, fillet, offset plane, circular pattern) or follows the public tutorials, to translate it into validated MCP commands.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Edge picks on circular edges: must lie ON the circle (for example [50,0,43.301] for a radius-50 circle at z=43.301), not at a profile …

    line 58
  2. Very specific:

    Do not call sketch.inspect on large sketches (huge reply).

    line 63

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

SolidCraft: GUI tutorial steps -> MCP commands (validated)

Public SolidCraft video tutorials teach the GUI. Every recipe below was re-run through the MCP server and checked with measure against hand-computed volumes. The tutorials themselves are not reproduced here, only the numbers needed to check a rebuild. Use together with solidcraft-modeling (command shapes, plane table, ids). For sweep recipes (twist, scale, vase, cup) and the rules for booleans that hang the app see solidcraft-sweep-and-boolean-hangs.

GUI -> MCP mapping

GUI stepMCP
New designnew_design (ask first if the open design has unsaved work)
Create sketch on the Right / Front / Top planesketch.create plane YZ / XZ / XY. On XZ the sketch y axis is -Z, so for a profile drawn upright use a custom plane {origin:[0,0,0], x_dir:[1,0,0], y_dir:[0,0,1]} (normal -Y)
Sketch on a top face or offset planesketch.create {plane:"XY", offset:10} or construct.plane.offset
Draw a line chain with horizontal/vertical constraintssketch.line {points:[[..],..]} (points, not p0/p1; tested on 0.29.0). A polyline already gets horizontal and vertical constraints where lines are axis-aligned. Give exact coordinates instead of constrain-and-dimension steps
Polygon with a dimension across flatssketch.polygon.inscribed {center, radius, sides, angle}; radius = across-flats / (2 cos(180/n)), for example a hexagon across flats 40 gives radius 23.0940108
Sketch fillet on polygon cornerssketch.fillet {points:[p1..pn], radius}
Sketch chamfer on several corners (0.29 "several corners in one operation")sketch.chamfer.equal_distance {points:[corners], distance}, sketch.chamfer.two_distance, sketch.chamfer.distance_angle. One call, one operation; the sketch gets more degrees of freedom. Tested on 0.29.0 on a 60 x 40 x 10 plate: 4 corners d=5 -> 23 500 mm3, 3 corners 8/4 -> 23 520 mm3, 4 corners d=6 at 30 deg -> 23 584.3 mm3, all exact
Offset a closed profile inwardsketch.offset {curves:[all curve ids after the fillet], distance, side:[0,0]} gives 2 profiles (a ring). Sign: on a rectangle chain a POSITIVE distance went INWARD and a negative one outward (tested on 0.29.0). A wrong sign gives a full block: check the volume with measure
Centre-point arcsketch.arc.center_point {center, radius, start, end}
Equal constraint, dimensions, TieOnly needed for parametric designs. For speed, compute the points and skip them. Use sketch.dimension when parameters must drive the geometry
Finish sketchsketch.finish
Extrude, Symmetric, New bodysolid.extrude {distance, direction:"symmetric", operation:"new", body_name}. A symmetric distance is the TOTAL length. direction:"negative" goes below the sketch plane
Hole by a reference sketch pointa sketch with sketch.point, then sketch.finish, then solid.hole {sketch, diameter} (through all by default, drills along -normal of the sketch plane)
Counterbore holesolid.hole {sketch, diameter, cb_diameter, cb_depth} with the point sketch on the face (XY offset = face height)
Hole by clicking a facesolid.hole {position:[x,y,z] on the face, diameter}
Extrude cut, Extent All, Symmetricsolid.extrude {through_all:true, direction:"symmetric", operation:"cut", targets:[body]}
Revolve with an axis linesolid.revolve {axis:"y" (sketch axis) or a line id, angle:"360 deg", operation:"new"}. For a partial turn such as "270 deg" use 360 minus the GUI's -90. On a custom upright plane the axis "y" is world Z
Offset planeconstruct.plane.offset {base:"XY", offset:"11.5", name} then sketch.create {plane:"<name>"}
Filletsolid.fillet {edges:[[x,y,z]..], radius} (one call per fillet group). Edges that meet at a vertex can go in one call or one at a time; the result is identical (tested, see solidcraft-modeling). After a fillet the edge midpoints move: re-pick from body_topology
Shell, remove the top facesolid.shell {faces:[[x,y,z] on the face], thickness, direction:"inside"}
Circular or polar patternsolid.pattern.circular {features:[...], axis:"Z", count:n}; see trap 1
Parameters panel (D15 and so on)parameters.add {name, value} and use the name in the dimension

Release-video items (0.25 - 0.29): only from the videos, not tested on the MCP

These come from the SolidCraft release videos and notes. Treat them as GUI facts and test them before relying on them in a recipe.

  • Name = value in a dimension box (0.25): typing pocket diameter = 24 mm in the size box creates a user parameter and links the dimension. Defining a name in one box and using that new name in the other box of the same operation is not supported; reuse it afterwards. Via MCP use parameters.add first.
  • Value box in extrude (0.26): typing plate T = 5 mm in the distance box creates the parameter. Via MCP: parameters.add, then the name in distance.
  • Parameter expressions in rectangle coordinates (0.29): the corner can be written as length, width. Not tested here.
  • Equation curve (0.27): parametric form with X(t), Y(t), start, end, tolerance, e.g. X = body_widtht, Y = body_depth + wave_ampsin(2pit); close the profile with three lines and extrude.
  • Interface only: toggle radius/diameter on a dimension, Shift+R (repeat last command, default shortcut), freehand lasso selection, settings profiles, status bar, view angles readout, CGA and one-bit themes, saved render shots (look / light / frame / output stages).
  • Point clouds (0.26): insert a PLY as a reference display; it is not a scan-to-solid tool.
  • Copy and paste between designs (0.27, 0.28, 0.29): the 0.27 video shows a component paste refused with an unknown parameter when it only appears inside an equation, and the workaround of creating that parameter in the empty destination first. My own attempt failed with "nothing copied" because new_design clears the clipboard; paste inside the same design works. Cross-design paste is NOT confirmed.
  • 0.28: flat pattern DXF organises cutting geometry, bend directions and bend notes; select several holes in one operation; infinite construction lines.

Validated recipes (mm)

  1. L-bracket plus hole: sketch YZ, polyline [[0,0],[100,0],[100,80],[75,80],[75,25],[0,25],[0,0]], extrude 50 symmetric new; solid.hole position [25,87.5,55] diameter 20. Volume 178 044.6 mm3 (193 750 minus the hole through the 50 mm arm).
  2. Notched profile plus hole by point: YZ polyline [[0,0],[10,0],[10,10],[40,10],[40,0],[50,0],[50,30],[35,30],[35,40],[15,40],[15,30],[0,30],[0,0]], extrude 25 symmetric; a point sketch on plane {origin:[12.5,0,0], x_dir:[0,1,0], y_dir:[0,0,1]} at [20,20], then solid.hole sketch diameter 10. Volume 33 036.8 mm3.
  3. Revolve 270 deg: upright plane, polyline [[0,0],[50,0],[38.453,20],[15,20],[15,65],[0,80],[0,0]], solid.revolve axis "y" angle "270 deg". Volume 119 197 mm3.
  4. Flange with 4 holes: polyline [[0,0],[5,0],[5,8.5],[15,8.5],[15,11.5],[5,11.5],[5,32],[0,37],[0,0]], revolve 360 (volume 4528.6). Holes via the cylinder-cut pattern in trap 1 (final volume 4293.07).
  5. Dish: revolve, fillet, shell, cross hole: polyline [[0,0],[25,0],[50,43.301],[75,43.301],[75,75],[0,75],[0,0]], revolve 360; solid.fillet R10 on [25,0,0] and [50,0,43.301]; solid.shell faces [[0,0,75]] thickness 5 inside; then a sketch on XZ with a circle centre [60,-60] r5 and solid.extrude through_all symmetric cut.
  6. Dish v2 (different numbers from recipe 5): upright plane polyline [[0,0],[50,0],[75,43.30127],[150,43.30127],[150,68.30127],[0,68.30127],[0,0]], revolve 360 axis y; fillet R10 at [[50,0,0],[75,0,43.30127],[150,0,43.30127]]; shell faces [[0,0,68.30127]] thickness 5 inside; a circle dia 10 at [0,60] on the upright plane, extrude cut symmetric through_all targeting the body. Tutorials with the same name can have different dimensions, so read them on the frames.
  7. Revolved flange with counterbore holes (from a Fusion 360 to SolidCraft tutorial): profile (20,0)-(70,0)-(70,7.6)-(40,7.6)-(34.24264,14.75736)-(34.24264,22.75736)-arc(centre (34.24264,25.25736), r 2.5, through (31.74264,25.25736))-(34.24264,27.75736)-(34.24264,30.75736)-(30,35)-(25,35)-(25,5)-(20,5)-(20,0); revolve 360; parameter R_holes=56; hole sketch on XY offset 7.6 with a point at (0,-56); solid.hole counterbore dia 5 / dia 12 / depth 3; solid.pattern.circular count 6; fillet R10 at [40,0,7.6], then R2 at [70,0,7.6], one per call. Final volume 151 384.4 mm3, within 0.002 % of the analytic value.

Traps found

  1. solid.hole plus solid.pattern.circular can be wrong. On the small flange of recipe 4 the patterned through-all hole removed extra material (4213.8 instead of 4293.1). On recipe 7 (counterbore hole from a face sketch, 6 copies) the pattern matched the analytic volume. Rule: try hole plus pattern, measure, and compare with the analytic volume. If it is off, build the hole as solid.cylinder {diameter, height, base, operation:"cut", targets:[body]} and pattern that (solid.pattern.circular {features:["cutname"], axis:"Z", count:4} gave exactly the analytic volume).
  2. Edge picks on circular edges must lie ON the circle (for example [50,0,43.301] for a radius-50 circle at z=43.301), not at a profile midpoint, or you get a no edge near error.
  3. A fillet bigger than the neighbouring wall fails ("blend is taller than the walls", "largest radius that fits is N mm"): the rim of a dish must be taller than the radius. On a plate, the R8 corner rounds belong on the edges that run along the thickness, not along the plate width (picking the wrong edges gave "largest radius that fits is 5 mm").
  4. Shell with a fillet on the open-face rim fails when radius > thickness. Fillet the other edges first, shell, and fillet the rim afterwards only if radius < thickness.
  5. A failed step in a batch rolls the WHOLE batch back (including the sketch and revolve before it). Re-send everything with the fix.
  6. Spoken numbers in transcripts are often wrong (seen: "14 / 18 / 19" for 40 / 80 / 90 deg, "100" for 90). Extract frames with ffmpeg -ss <t> -i video.mp4 -frames:v 1 at the dimension moments and read the on-screen labels.
  7. Do not call sketch.inspect on large sketches (huge reply). Use measure or sketch.solve.
  8. Pick after a fillet: the edge midpoints change after each fillet, so "no edge at [x,y,z]: nearest edge is 5 mm away" means re-pick from body_topology, not a larger radius.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.