
dfam-check
Measure mesh files against Design for Additive Manufacturing (DfAM) rules and report printability findings per process (FDM, SLS, SLA/DLP, metal PBF, MJF). Use when the user asks whether a part is printable, wants overhang/wall-thickness/support analysis of an .stl, .obj, .ply, or .3mf mesh, wants a build-orientation recommendation, or wants DfAM redesign guidance before slicing with $gcode or regenerating geometry with $cad.
- Installs
- 4.2K
- Last 24h
- +84
- Trending rank
- #2218
- Security
- Pass
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/earthtojake/text-to-cad --skill dfam-check- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads dfam-check automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
DfAM Check
Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review.
Use this skill to produce conservative, evidence-backed DfAM reports for mesh files before slicing or printing. It measures geometry facts locally and compares them against per-process design limits; it never slices, uploads, or starts print jobs.
Geometry Inspection
Use scripts/dfam_tool.py in the active project Python environment for all
geometry facts (install requirements.txt first — every run needs it). The tool is fact-only:
it reports measurements and never emits pass/fail or readiness statuses.
Comparisons and verdicts belong to this workflow. Do not estimate wall
thickness, overhang angles, or support volume by eye or from renders when the
tool can measure them.
python scripts/dfam_tool.py measure part.stl --angle-limit 45
python scripts/dfam_tool.py orientations part.stl --angle-limit 45
Set --angle-limit to the target process's self-supporting angle from
references/process-limits.md before measuring, and re-run when the target
process changes: the aggregate support-area facts are binned against it.
STEP/STP input is boundary-representation CAD, not a mesh. When the $cad
skill is installed, export an STL sidecar with it first, then measure the STL
here. Report that remediation instead of attempting raw STEP parsing. measure
on a STEP exits 1 with {"error": "failed to load mesh: ..."}; that is the
wrong-input signal, not a missing dependency — do not install extra mesh
loaders to work around it.
A fact family that cannot compute returns {"error": ...} in its place rather
than costing the report its other measurements — wall_thickness does this when
the dependency set is incomplete, support_volume on geometry with no convex
hull. That report is PARTIAL: it carries "partial": true, names the families
in partial_sections, and the command exits 2 (0 is a complete report, 1 a
mesh that would not load at all). Treat every such object as an unmeasured fact
(❓ need more info), never as a measurement of zero, and reinstall
requirements.txt before comparing wall limits.
Workflow
- Collect print intent: target process, material, layer height, and any machine or material datasheet the user can provide. If the process is unknown, measure once with the default 45° limit, then present findings per candidate process rather than guessing a single verdict.
- Read
references/process-limits.mdand select the limit column for the target process. A user-provided machine/material datasheet overrides the defaults; cite whichever source is used for every comparison. - Run
measureon the exact upload file. Do not inspect only a generator script, source CAD model, or console summary of the file. - Run
orientationswhen the process requires supports and the measured support area is nonzero. Report any candidate that materially reduces support area, with its build-height tradeoff. - Compare each measured fact to the cited limit and report findings with
restrained status labels:
✅ pass: the measured fact satisfies the cited limit.❌ fail: a measured fact directly violates the cited limit.❓ need more info: missing process context, unmeasured geometry, sampling too sparse to trust, or tool limitations.
- Order findings by severity: watertightness first (blocks slicing for every process), then wall thickness, then overhangs/supports, then orientation and cost signals.
Comparison
Compare only trustworthy pairs of evidence.
- Cite the limit source (process-limits table row, or the user's datasheet field) and the measured fact (JSON field path) for every finding.
- Treat
p05_mmbelow the wall-thickness limit as a violation even whenmin_mmalone could be a sampling outlier; report both values. - On an assembly,
wall_thicknessreportsbody_countand aper_bodybreakdown. Attribute a violation to the body it belongs to; a thin figure pooled across bodies is not a finding against the part as a whole. - Do not apply support-angle findings to powder processes (SLS, MJF); the
relevant powder-process check is trapped-volume powder escape, which this
tool does not yet measure — report that as
❓ need more infowhen enclosed cavities are likely. - Do not silently rescale geometry.
scale.units_suspectis measured from the bounding-box diagonal: when it istrue, the source is probably in meters or inches, every down-facing face reads as resting on the plate, and overhang and support figures of 0.0 mean nothing. Report a unit/scale finding and ask the user to confirm units before comparing anything against a material limit. - Support-volume ratios are coarse upper bounds; report them as cost signals, not hard failures, unless the user has set an explicit budget.
Redesign Handoff
For every ❌ fail, include a concrete, plain-language redesign instruction
with target numbers (for example "thicken the wall at [12.4, 3.0, 8.1] from
0.6 mm to ≥1.2 mm" or "chamfer the overhang at [23.3, 10.0, 52.0] to ≥45°").
When the $cad skill is installed, offer to apply the redesign instructions
with it and re-measure the regenerated geometry here, repeating until no
❌ fail findings remain.
FAQ
What does the dfam-check skill do?
Measure mesh files against Design for Additive Manufacturing (DfAM) rules and report printability findings per process (FDM, SLS, SLA/DLP, metal PBF, MJF). Use when the user asks whether a part is printable, wants overhang/wall-thickness/support analysis of an .stl, .obj, .ply, or .3mf mesh, wants a build-orientation recommendation, or wants DfAM redesign guidance before slicing with $gcode or regenerating geometry with $cad.
How do I install dfam-check?
Run npx skills add https://github.com/earthtojake/text-to-cad --skill dfam-check in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/dfam-check/ (personal) or .claude/skills/dfam-check/ (project).
Which AI agents can use dfam-check?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is dfam-check safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains dfam-check?
It is published by earthtojake in earthtojake/text-to-cad. It has 4,219 recorded installs.
More from earthtojake/text-to-cad
cad
earthtojake/text-to-cad
Create/edit parametric CAD models, organize CAD projects, export STEP/STL/3MF/GLB files, resolve prompt references, and measure geometry with cadgen. Open and visually review existing STEP/STP, STL, 3MF and GLB files in CAD Viewer.
step-parts
earthtojake/text-to-cad
Find, evaluate, and download common purchasable CAD parts from step.parts, including named off-the-shelf actuators, servos, motors, electronics boards, connectors, screws, bolts, nuts, washers, bearings, standoffs, and other catalog components. Use when Codex needs to search the hosted step.parts catalog before creating simplified placeholder geometry, resolve fuzzy part names, standards, aliases, or dimensions, choose a matching part, fetch a canonical .step file, verify checksums, or use the step.parts API/OpenAPI/catalog endpoints for standard part discovery.
sdf
earthtojake/text-to-cad
SDFormat/SDF model and world authoring, validation, and simulator handoff. Use for .sdf files, SDFormat XML, models, worlds, links, joints, poses, frames, inertials, visual/collision geometry, mesh URIs, sensors, lights, physics, plugins, includes, Gazebo, static SDF review, or simulator-specific metadata. Do not use for signed-distance-field geometry. Open and visually review existing SDF files in CAD Viewer.
urdf
earthtojake/text-to-cad
URDF robot description authoring and validation. Use when creating, editing, inspecting, validating, or debugging .urdf files, robot links, joints, limits, inertials, visual/collision geometry, mesh references, frame conventions, or robot-description artifacts. Use the SRDF skill for MoveIt2 semantic groups and IK/path-planning semantics; use the CAD skill for STEP/STL/3MF/DXF/GLB outputs. Open and visually review existing URDF files in CAD Viewer.
srdf
earthtojake/text-to-cad
MoveIt2 SRDF authoring, validation, and planning-semantics workflow. Use when creating, editing, inspecting, or validating .srdf files, MoveIt planning groups, virtual joints, passive joints, end effectors, group states, disabled collisions, URDF-paired planning semantics, or SRDF handoff for live review. Use the URDF skill for robot structure and the SDF skill for simulator descriptions. Open and visually review existing SRDF files in CAD Viewer.
sendcutsend
earthtojake/text-to-cad
Review DXF and STEP/STP uploads for SendCutSend.com orders using its ordering guide, catalog, and specs. Use only for SendCutSend.com preflight reports covering upload readiness, selected material/SKU/thickness/service availability, and service-specific checks for laser cutting, CNC routing, bending, tapping, countersinking, hardware insertion, and finishing.
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.