What does this skill do, and when should you use it?
dfam-check is one of 13 skills bundled in the earthtojake/text-to-cad repository. It evaluates whether a mesh file is printable by actually measuring geometry facts locally — wall thickness, overhangs, support area and volume — and comparing them against per-process design limits for FDM, SLS, SLA/DLP, metal PBF and MJF. The script is deliberately fact-only: it never slices, uploads files, or starts print jobs, and it never issues pass/fail verdicts itself; comparisons and verdicts belong to the skill workflow, which must cite the limit source for every finding. Each failure comes with a concrete redesign instruction, and when the companion $cad skill is installed, the loop can close by applying the redesign and re-measuring.
- Reads .stl, .obj, .ply or .3mf meshes and runs scripts/dfam_tool.py measure to record wall thickness, overhang angles and support area/volume
- Runs orientations to enumerate candidate build orientations and report any that materially reduce support area, with height tradeoffs
- Selects the limit column for the target process from references/process-limits.md (or a user-provided datasheet) and compares each measured fact against it
- Emits ✅ pass / ❌ fail / ❓ need more info findings, ordered by severity: watertightness, wall thickness, overhangs/supports, then orientation and cost
- Attaches a concrete redesign instruction with target numbers to every ❌ fail, and offers to apply it via the $cad skill and re-measure
- Flags suspicious units via scale.units_suspect and requires the user to confirm units before any material-limit comparison
- An FDM user with an STL who wants to know whether downfacing faces exceed the 45° self-supporting angle and how much support is needed
- A designer shipping a part to SLS/MJF who needs trapped-powder escape risk flagged (reported as ❓ need more info since the tool does not measure it) and minimum wall thickness verified
- An engineer who finds a 0.6 mm wall before slicing and needs a fix with coordinates and a target thickness, e.g. 'thicken to ≥1.2 mm at [12.4, 3.0, 8.1]'
- A user unsure of the target process who measures once with the default 45° limit and gets findings presented per candidate process
- Teams pairing with the $cad skill to iterate: apply redesign instructions, regenerate geometry, re-measure until no ❌ fail remains
- Users who want slicing or print-job submission — the skill explicitly never slices, uploads, or starts prints
- Users analyzing STEP/STP boundary-representation CAD directly — the tool only accepts meshes; a STEP export via the $cad skill is required first
- Users needing quantitative trapped-volume powder-escape checks for powder processes — not yet implemented
How do you install this skill?
- Static review only; nothing was executed — the measurement tool's real correctness is unverified. Self-test on a mesh of known thickness/overhang before trusting outputs.
- requirements.txt contents are not in the evidence; dependency versions and supply-chain security unverified.
- The repo enables telemetry by default; dfam_tool.py itself sends nothing, but read the README telemetry section before installing the full plugin.
- Hole diameter, min positive feature, max bridge and powder trapped-powder limits have no measured counterpart; findings there are reported as unchecked, not a complete check.
- Requires PyPI and GitHub downloads, which may be constrained from mainland China; no Chinese documentation.
- Only the latest release receives security fixes.
- Shell / CLI
- Local filesystem
Python (project environment)dfam_tool.py requirements.txt
This skill ships inside the text-to-cad library; installing the collection installs it. Other Agents (any Agent Skills client, including Claude Code, Codex, Cursor, Gemini and Grok):
npx skills add earthtojake/text-to-cad#latestClaude Code (plugin route, also brings the CAD server):
claude plugin marketplace add earthtojake/text-to-cad#latest
claude plugin install text-to-cad@earthtojakeThe skill needs its requirements.txt installed in the active project Python environment:
pip install -r skills/dfam-check/requirements.txtHow do you use this skill?
Once installed, send your agent any of these to trigger it:
- Check whether bracket.stl is printable in FDM at a 45° self-supporting angle — focus on overhangs and wall thickness
- This STL is going to SLS; assess trapped-powder escape risk for the enclosed cavities and verify minimum wall thickness
- Recommend a build orientation for housing.3mf that minimizes support area, and note the height tradeoff
- Is this part viable for SLA? Give me redesign instructions with target numbers for any failures
Trigger it with a natural-language request about printability, overhang/wall-thickness/support analysis, or build orientation. The workflow: collect print intent (process, material, layer height, datasheets), read references/process-limits.md and pick the process column, run measure on the exact uploaded file (never a generator script or console summary), run orientations when supports are needed and support area is nonzero, then compare each fact to the cited limit. Typical commands:
python scripts/dfam_tool.py measure part.stl --angle-limit 45
python scripts/dfam_tool.py orientations part.stl --angle-limit 45Notes: set --angle-limit to the process's self-supporting angle and re-run when the process changes; exit code 0 is a complete report, 1 a mesh that would not load, and 2 a PARTIAL report (some fact families returned {"error": ...}) — treat partial sections as unmeasured, never as zero.
What are this skill's strengths and limitations?
- All measurement is local — no slicing, no uploads, no print jobs
- Fact-only tool plus mandatory limit citations prevent eyeballing or unverifiable verdicts
- Per-process limits across five mainstream processes rather than one-size-fits-all
- Every failure ships with a concrete redesign instruction with target numbers, closing the loop with the $cad skill
- Graceful degradation: incomplete fact families yield a PARTIAL report instead of discarding the rest, and unmeasured is never conflated with zero
- Requires a Python environment and requirements.txt; an incomplete dependency set silently disables wall_thickness
- STEP/STP is unsupported as direct input and needs a sidecar STL export via the $cad skill first
- Trapped-volume powder escape for SLS/MJF is not yet measured, so enclosed cavities can only be reported as ❓
- Support-volume ratios are coarse upper bounds — cost signals only, not hard verdicts
- If units are suspect, every overhang/support figure is meaningless until the user confirms units
How does this skill compare with similar options?
Side by side with related skills; every score comes from the same FSRS standard.
| Skill | FS score | Stars | Last updated | License |
|---|---|---|---|---|
| DfAM Check — 3D Printability Analysis this page | 67 · Recommended | ★ 19k | 1d ago | MIT |
| CAD (text-to-cad's CAD skill) | 55 · Use with care | ★ 19k | 1d ago | MIT |
| Web Clone Methodology | 53 · Use with care | ★ 1k | 3mo ago | MIT |
| HTML Anything: Turn Anything Into a Page | 53 · Use with care | ★ 153 | 5mo ago | MIT-0 |
| 3D Morph PPT Skill | 48 · Use with care | ★ 32k | 5d ago | Apache-2.0 |
Within the same text-to-cad collection, the separate DFM skill covers manufacturability review for sheet metal, CNC machining and injection molding, including draft, undercuts and projected area. For injection molding or machining instead of 3D printing, DFM is the better fit; dfam-check is focused on per-process additive-manufacturing printability.
How did FollowSkills review this skill?
The skill only measures mesh files locally, explicitly never slicing, uploading, or starting print jobs; no external side effects, transparent data flow, local Python dependencies. Deductions: SKILL.md does not state the telemetry boundary for this skill (repo default telemetry is on, though dfam_tool.py itself sends nothing), and requirements.txt contents are not visible in evidence, so dependency security is unverifiable statically; read-only measurement means no rollback concern — high but not full marks.
Self-consistent: fact-only tool matches workflow, exit codes 0/1/2 well-defined, PARTIAL reporting, units-suspect flag, per-body breakdown and degenerate-mesh handling all explained in both code and docs with high-quality failure feedback. Deductions: static review cannot execute key paths; no committed tests for dfam_tool.py visible in evidence; scipy/networkx degradation behavior is only described. Conservative static calibration caps this. Confidence low.
Clear triggers (.stl/.obj/.ply/.3mf, DfAM questions) and explicit non-fit boundaries (STEP needs STL sidecar, powder trapped-powder unmeasured, three limit rows unmeasured) with ❓ branches. Deductions: depends on pip/PyPI reachability, which may be constrained from mainland China; no Chinese-language support noted.
Well-layered docs (SKILL.md + references + agents yaml), specific cited sources (Hubs/Formlabs/HP/EOS, ISO/ASTM 52910/52911-1), MIT license, clear provenance. Deductions: no skill-level changelog/versioning visible, maintenance responsibility rests only at repo level — incomplete governance keeps it below full marks.
Clear value proposition: local measurement + limit comparison + concrete redesign handoff, a real increment over eyeballing, with directly citable JSON facts and graded findings. Deductions: static review cannot verify output correctness on real meshes; no representative output samples; capped at 7.
Script, limits table and interpretation notes are mutually consistent with specific standard and guide citations — auditable primary material. Deductions: no committed tests covering this skill's key paths and no third-party execution evidence; limit-table values cannot be statically re-derived; capped at 5.
Open a dimension to read why it scored that way
Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.
See the full review method →