
Cli Anything Freecad
- 457 installs
- 46.6k repo stars
- Updated August 3, 2026
- hkuds/cli-anything
cli-anything-freecad is an agent skill that exposes 258 headless FreeCAD CLI commands across all major workbenches for developers automating parametric 3D modeling and batch CAD exports.
About
cli-anything-freecad is a CLI harness agent skill from hkuds/cli-anything that lets agents drive FreeCAD parametric 3D modeling entirely from the terminal without manual GUI work. It documents 258 commands spanning every major workbench: Part (29 primitives plus boolean, mirror, loft, sweep), Sketcher (26 geometry and constraint commands), PartDesign (38 pad, pocket, fillet, pattern, and hole operations), Assembly (11), Mesh (16), TechDraw (15 views and dimensions), Draft (33), FEM (12), CAM (10), Surface (6), Spreadsheet (7), Import (13 formats), Export (17 formats), Measure (12), and Materials (21 presets). Headless export covers STEP, IGES, STL, OBJ, DXF, PDF, glTF, and 3MF. Developers reach for cli-anything-freecad when CAD-heavy build pipelines need scripted geometry edits, TechDraw PDF generation, or batch mesh exports inside Claude Code, Cursor, or Codex agent sessions instead of clicking through the FreeCAD desktop UI.
- Wraps FreeCAD behind standardized agent CLI commands
- Enables parametric 3D modeling without GUI interaction
- Supports scripted exports and geometry transformations
- Follows hkuds/cli-anything wrapper conventions
- Integrates CAD steps into autonomous build pipelines
Cli Anything Freecad by the numbers
- 457 all-time installs (skills.sh)
- +17 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #1,875 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hkuds/cli-anything --skill cli-anything-freecadAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 457 |
|---|---|
| repo stars | ★ 46.6k |
| Last updated | August 3, 2026 |
| Repository | hkuds/cli-anything ↗ |
How do you automate FreeCAD modeling from the terminal?
Let agents run FreeCAD from the terminal for parametric 3D modeling, geometry edits, and batch exports without manual GUI work in CAD-heavy build pipelines.
Who is it for?
Developers automating parametric CAD in CI or agent pipelines who need documented FreeCAD workbench commands and headless export formats.
Skip if: Artistic mesh sculpting without parametric constraints, proprietary CAD formats outside FreeCAD import support, or interactive GUI-only design reviews.
When should I use this skill?
User asks to run FreeCAD from terminal, batch export STEP or STL, parametric PartDesign edits, or mentions cli-anything-freecad headless modeling.
What you get
Parametric FreeCAD models and batch exports in STEP, IGES, STL, OBJ, DXF, PDF, glTF, or 3MF from headless CLI commands.
- Parametric CAD model files
- STEP or STL exports
- TechDraw PDF drawings
By the numbers
- Covers 258 FreeCAD CLI commands across all major workbenches
- PartDesign workbench documents 38 commands; Sketcher documents 26 commands
- Headless export supports 8 formats including STEP, STL, PDF, and glTF
Files
cli-anything-freecad
Complete CLI harness for FreeCAD — 258 commands across 17 groups covering ALL workbenches.
Prerequisites
FreeCAD must be installed: freecadcmd must be in PATH.
Installation
pip install -e freecad/agent-harnessBasic Usage
cli-anything-freecad --json <command> # JSON output for agents
cli-anything-freecad --json -p proj.json <cmd> # With project file
cli-anything-freecad # Interactive REPLPreview, Live Preview, and Motion
FreeCAD is currently the deepest preview integration in this branch.
Preview commands:
# List preview recipes
cli-anything-freecad --json -p proj.json preview recipes
# Capture a real 4-view bundle
cli-anything-freecad --json -p proj.json preview capture --recipe quick
# Start poll-mode live preview
cli-anything-freecad --json -p proj.json preview live start --recipe quick --mode poll --source-poll-ms 500
# Query current live state without rendering
cli-anything-freecad --json -p proj.json preview live status --recipe quick
# Stop live preview publication
cli-anything-freecad --json -p proj.json preview live stop --recipe quickTypical quick bundle artifacts:
hero.pngfront.pngtop.pngright.png
Live preview persists:
session.json- immutable bundle directories
trajectory.json
preview live status --json is intended for agents and includes a compact trajectory_summary in addition to _session_dir, current bundle refs, and _trajectory_path.
Viewer commands:
cli-hub previews inspect /path/to/bundle-or-session
cli-hub previews html /path/to/bundle-or-session -o page.html
cli-hub previews watch /path/to/session --open
cli-hub previews open /path/to/bundle-or-sessionMotion commands remain separate from preview and are used for final truthful frame rendering and showcase videos:
cli-anything-freecad --json -p proj.json motion new --name spin --duration 6 --fps 24
cli-anything-freecad --json -p proj.json motion keyframe spin --time 0.0 --part 0 --position 0,0,0
cli-anything-freecad --json -p proj.json motion render-video spin output.mp4Command Groups (258 commands)
document (5) — Document management
cli-anything-freecad --json document new --name "Part" -o proj.json
cli-anything-freecad --json document new --profile print3d -o proj.json
cli-anything-freecad --json -p proj.json document info
cli-anything-freecad --json -p proj.json document save -o copy.json
cli-anything-freecad --json document profilespart (29) — 3D primitives, boolean, transforms, operations
# Primitives: box, cylinder, sphere, cone, torus, wedge, helix, spiral, thread, plane, polygon_3d
cli-anything-freecad --json -p p.json part add box -P length=20 -P width=15 -P height=5
cli-anything-freecad --json -p p.json part add cylinder -P radius=3 -P height=10 --position 10,7.5,0
# Operations
cli-anything-freecad --json -p p.json part boolean cut 0 1
cli-anything-freecad --json -p p.json part copy 0
cli-anything-freecad --json -p p.json part mirror 0 --plane XY
cli-anything-freecad --json -p p.json part scale 0 --factor 2.0
cli-anything-freecad --json -p p.json part loft --indices 0,1,2
cli-anything-freecad --json -p p.json part sweep 0 1
cli-anything-freecad --json -p p.json part revolve 0 --axis Z --angle 360
cli-anything-freecad --json -p p.json part extrude 0 --direction 0,0,1 --length 10
cli-anything-freecad --json -p p.json part fillet-3d 0 --radius 2
cli-anything-freecad --json -p p.json part thickness 0 --thickness 1
cli-anything-freecad --json -p p.json part compound --indices 0,1,2
cli-anything-freecad --json -p p.json part section 0 --plane XY
cli-anything-freecad --json -p p.json part info 0
cli-anything-freecad --json -p p.json part line-3d --start 0,0,0 --end 10,5,0
cli-anything-freecad --json -p p.json part wire --points "0,0,0;10,0,0;10,10,0"sketch (26) — 2D constrained sketching
cli-anything-freecad --json -p p.json sketch new --plane XY
cli-anything-freecad --json -p p.json sketch add-line 0 --start 0,0 --end 20,0
cli-anything-freecad --json -p p.json sketch add-circle 0 --center 10,10 --radius 5
cli-anything-freecad --json -p p.json sketch add-rect 0 --corner 0,0 --width 20 --height 15
cli-anything-freecad --json -p p.json sketch add-arc 0 --center 0,0 --radius 5
cli-anything-freecad --json -p p.json sketch add-ellipse 0 --center 0,0 --major-radius 10 --minor-radius 5
cli-anything-freecad --json -p p.json sketch add-polygon 0 --center 0,0 --sides 6 --radius 10
cli-anything-freecad --json -p p.json sketch add-bspline 0 --points "0,0;5,10;10,0;15,10"
cli-anything-freecad --json -p p.json sketch add-slot 0 --center1 0,0 --center2 10,0 --radius 2
cli-anything-freecad --json -p p.json sketch constrain 0 distance --elements 0,1 --value 10
cli-anything-freecad --json -p p.json sketch edit-element 0 0 --radius 8
cli-anything-freecad --json -p p.json sketch remove-element 0 2
cli-anything-freecad --json -p p.json sketch validate 0
cli-anything-freecad --json -p p.json sketch solve-status 0
# Constraints: coincident, horizontal, vertical, parallel, perpendicular, equal,
# fixed, distance, angle, radius, tangent, symmetric, block, diameter,
# point_on_object, distance_x, distance_ybody (38) — PartDesign features
cli-anything-freecad --json -p p.json body new
cli-anything-freecad --json -p p.json body pad 0 0 --length 10
cli-anything-freecad --json -p p.json body pocket 0 1 --length 5
cli-anything-freecad --json -p p.json body groove 0 0 --angle 360
cli-anything-freecad --json -p p.json body fillet 0 --radius 2
cli-anything-freecad --json -p p.json body chamfer 0 --size 1.5
cli-anything-freecad --json -p p.json body revolution 0 0 --angle 360
cli-anything-freecad --json -p p.json body additive-loft 0 --sketch-indices 0,1
cli-anything-freecad --json -p p.json body additive-pipe 0 0 1
cli-anything-freecad --json -p p.json body additive-helix 0 0 --pitch 5 --height 20
cli-anything-freecad --json -p p.json body additive-box 0 -P length=10 -P width=10 -P height=10
cli-anything-freecad --json -p p.json body hole 0 0 --diameter 5 --depth 10 --threaded
cli-anything-freecad --json -p p.json body draft-feature 0 --angle 5
cli-anything-freecad --json -p p.json body thickness-feature 0 --thickness 1
cli-anything-freecad --json -p p.json body linear-pattern 0 --occurrences 5 --length 50
cli-anything-freecad --json -p p.json body polar-pattern 0 --occurrences 6 --angle 360
cli-anything-freecad --json -p p.json body mirrored 0 --plane XY
cli-anything-freecad --json -p p.json body datum-plane 0 --reference XY --offset 10material (8) — PBR materials with engineering properties
# 21 presets: steel, aluminum, copper, brass, titanium, stainless_steel, cast_iron,
# carbon_fiber, nylon, abs, pla, petg, plastic_white, plastic_black, wood, glass,
# rubber, gold, concrete, granite, marble
cli-anything-freecad --json -p p.json material create --preset steel
cli-anything-freecad --json -p p.json material create --preset titanium
cli-anything-freecad --json -p p.json material assign 0 0
cli-anything-freecad --json -p p.json material set 0 density 7800
cli-anything-freecad --json -p p.json material import-material mat.json
cli-anything-freecad --json -p p.json material export-material 0 --output mat.jsonassembly (11) — Assembly management
cli-anything-freecad --json -p p.json assembly new --name "MyAssembly"
cli-anything-freecad --json -p p.json assembly add-part 0 0
cli-anything-freecad --json -p p.json assembly constrain 0 coincident --components 0,1
cli-anything-freecad --json -p p.json assembly constrain 0 distance --components 0,1 --distance 10
cli-anything-freecad --json -p p.json assembly solve 0
cli-anything-freecad --json -p p.json assembly dof 0
cli-anything-freecad --json -p p.json assembly bom 0
cli-anything-freecad --json -p p.json assembly explode 0 --factor 2.0
# Constraints: fixed, coincident, distance, angle, parallel, perpendicular,
# tangent, revolute, prismatic, cylindrical, ball, planar, gear, beltmesh (16) — Mesh operations
cli-anything-freecad --json -p p.json mesh from-shape 0 --deviation 0.1
cli-anything-freecad --json -p p.json mesh import path/to/model.stl
cli-anything-freecad --json -p p.json mesh export 0 output.stl --format stl
cli-anything-freecad --json -p p.json mesh boolean union 0 1
cli-anything-freecad --json -p p.json mesh decimate 0 --target-faces 1000
cli-anything-freecad --json -p p.json mesh smooth 0 --iterations 5
cli-anything-freecad --json -p p.json mesh repair 0
cli-anything-freecad --json -p p.json mesh to-shape 0techdraw (15) — Technical drawings
cli-anything-freecad --json -p p.json techdraw new-page
cli-anything-freecad --json -p p.json techdraw add-view 0 0 --direction 0,0,1 --scale 1.0
cli-anything-freecad --json -p p.json techdraw add-projection-group 0 0
cli-anything-freecad --json -p p.json techdraw add-section-view 0 0
cli-anything-freecad --json -p p.json techdraw add-dimension 0 0 length --references 0,1
cli-anything-freecad --json -p p.json techdraw add-annotation 0 "Note text"
cli-anything-freecad --json -p p.json techdraw export-pdf 0 drawing.pdf
cli-anything-freecad --json -p p.json techdraw export-svg 0 drawing.svgdraft (33) — 2D drafting
cli-anything-freecad --json -p p.json draft wire --points "0,0,0;10,0,0;10,10,0"
cli-anything-freecad --json -p p.json draft rectangle --width 20 --height 15
cli-anything-freecad --json -p p.json draft circle --radius 10
cli-anything-freecad --json -p p.json draft polygon --sides 6 --radius 10
cli-anything-freecad --json -p p.json draft text --content "Hello" --position 0,0,0
cli-anything-freecad --json -p p.json draft move 0 --vector 10,5,0
cli-anything-freecad --json -p p.json draft array-linear 0 --direction 1,0,0 --count 5 --spacing 10
cli-anything-freecad --json -p p.json draft array-polar 0 --center 0,0,0 --count 6
cli-anything-freecad --json -p p.json draft extrude 0 --direction 0,0,1 --length 10
cli-anything-freecad --json -p p.json draft to-sketch 0measure (12) — Measurement and analysis
cli-anything-freecad --json -p p.json measure volume 0
cli-anything-freecad --json -p p.json measure area 0
cli-anything-freecad --json -p p.json measure distance 0 1
cli-anything-freecad --json -p p.json measure bounding-box 0
cli-anything-freecad --json -p p.json measure center-of-mass 0
cli-anything-freecad --json -p p.json measure check-geometry 0surface (6) — Surface operations
cli-anything-freecad --json -p p.json surface filling --edges 0,1,2
cli-anything-freecad --json -p p.json surface sections --sections 0,1,2
cli-anything-freecad --json -p p.json surface extend 0 --length 10
cli-anything-freecad --json -p p.json surface sew --indices 0,1fem (12) — Finite Element Analysis
cli-anything-freecad --json -p p.json fem new-analysis
cli-anything-freecad --json -p p.json fem add-fixed 0 --references face1,face2
cli-anything-freecad --json -p p.json fem add-force 0 --references face3 --magnitude 1000
cli-anything-freecad --json -p p.json fem set-material 0 0
cli-anything-freecad --json -p p.json fem mesh-generate 0 --max-size 5
cli-anything-freecad --json -p p.json fem solve 0
cli-anything-freecad --json -p p.json fem results 0cam (10) — CNC machining
cli-anything-freecad --json -p p.json cam new-job 0
cli-anything-freecad --json -p p.json cam set-stock 0 --stock-type box
cli-anything-freecad --json -p p.json cam set-tool 0 --diameter 6 --type endmill
cli-anything-freecad --json -p p.json cam add-profile 0
cli-anything-freecad --json -p p.json cam add-pocket 0 --depth 5
cli-anything-freecad --json -p p.json cam generate-gcode 0
cli-anything-freecad --json -p p.json cam export-gcode 0 output.ncspreadsheet (7) — Parametric data tables
cli-anything-freecad --json -p p.json spreadsheet new
cli-anything-freecad --json -p p.json spreadsheet set-cell 0 A1 "50"
cli-anything-freecad --json -p p.json spreadsheet set-cell 0 B1 "=A1*2"
cli-anything-freecad --json -p p.json spreadsheet set-alias 0 A1 plate_width
cli-anything-freecad --json -p p.json spreadsheet export-csv 0 data.csvimport (13) — Import CAD/mesh files
cli-anything-freecad --json -p p.json import auto model.step
cli-anything-freecad --json -p p.json import step model.step
cli-anything-freecad --json -p p.json import stl model.stl
cli-anything-freecad --json -p p.json import dxf drawing.dxf
cli-anything-freecad --json -p p.json import info model.step
# Formats: step, iges, stl, obj, dxf, svg, brep, 3mf, ply, off, gltfexport (3) — Export to 17 formats
# Presets: step, iges, stl, stl_fine, obj, brep, fcstd, dxf, svg, gltf, 3mf, ply, off, amf, pdf, png, jpg
cli-anything-freecad --json -p p.json export render output.step --preset step
cli-anything-freecad --json -p p.json export render model.stl --preset stl --overwrite
cli-anything-freecad --json -p p.json export presetssession (4) — Undo/redo
cli-anything-freecad --json -p p.json session undo
cli-anything-freecad --json -p p.json session redo
cli-anything-freecad --json -p p.json session status
cli-anything-freecad --json -p p.json session historyJSON Output
All commands support --json. Responses include structured data. Errors: {"error": "message"}.
Error Handling
- Missing FreeCAD: Clear install instructions
- Invalid types: Lists valid options
- Index out of range: Reports valid range
- File exists: Use
--overwrite
Agent Preview Notes
- Use
preview capture --jsonwhenever geometric changes need visual verification. - Use
preview live startfor iterative build loops; prefer poll mode when the
project file is being saved repeatedly.
- Use
preview live status --jsonas the cheap status probe before reading the
full trajectory.json.
- Treat
_bundle_diras a single snapshot only; the stable live identity is
_session_dir plus _trajectory_path.
- Use
cli-hub previews ...only to inspect/open already-published previews.
Related skills
How it compares
Pick cli-anything-freecad for scripted FreeCAD parametric workflows; use general OpenSCAD or Blender CLI skills when the pipeline is procedural code or mesh animation instead of feature-based CAD.
FAQ
How many CLI commands does cli-anything-freecad document?
cli-anything-freecad documents 258 FreeCAD CLI commands spanning Part, Sketcher, PartDesign, Assembly, Mesh, TechDraw, Draft, FEM, CAM, Import, Export, Measure, and Materials workbenches.
Which export formats does cli-anything-freecad support headlessly?
cli-anything-freecad supports headless export to STEP, IGES, STL, OBJ, DXF, PDF, glTF, and 3MF through the documented Export workbench commands.
When should agents use cli-anything-freecad instead of the FreeCAD GUI?
cli-anything-freecad fits batch geometry edits, scripted parametric updates, and CI pipeline exports where agents must run CAD operations from the terminal without manual GUI interaction.