Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

dfam-check — Claude Code skill: what it does, how to install

Measures mesh files against Design for Additive Manufacturing rules to evaluate printability before slicing or running CAD regeneration.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add earthtojake/text-to-cad --skill dfam-check -a claude-code
Open on GitHub

What dfam-check does

The skill evaluates 3D mesh files in .stl, .obj, .ply, and .3mf formats against manufacturing limits for FDM, SLS, SLA/DLP, metal PBF, and MJF. It runs scripts/dfam_tool.py locally in the active Python environment to extract concrete geometry facts: watertightness, wall thickness, overhang angles, and support area. The script outputs raw measurements, which the skill compares against rules in references/process-limits.md or a user-provided datasheet.

It does not parse boundary-representation CAD files such as STEP or STP. Passing a STEP model exits with error code 1, which means the model must first be exported to an STL mesh using an external tool or the $cad skill.

Every run requires dependencies from requirements.txt inside the project Python environment. If dependencies are missing, sections like wall thickness cannot compute, leaving a partial report with exit code 2.

What it helps with

  • inspect STL mesh wall thickness against 3D printing process limits
  • identify unprintable overhangs before sending files to a slicer
  • find optimal part build orientations to cut down support volume
  • check mesh watertightness across multi-body assemblies

Example prompts for the agent

  • Check part.stl against FDM limits with a 45 degree overhang angle
  • Find the best build orientation to reduce support volume for bracket.3mf
  • Analyze wall thickness and overhangs on housing.obj for an SLA print

How to install dfam-check

1Skills CLI (Vercel)

npx skills add earthtojake/text-to-cad --skill dfam-check -a claude-code

2Manually: put the files in place

~/.claude/skills/dfam-check/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/dfam-check/

From the same set7

The whole set →

Similar

wcag-audit-patterns Seth Hobson Audits web interfaces against WCAG 2.2 with automated checks and manual verification. Use it to find violations and build accessible patterns. Claude Code CX Codex Cursor 12,486installs apple-hig nexu-io Integrates Apple Human Interface Guidelines for iOS, macOS, visionOS, watchOS, and tvOS into your coding agent during planning. Claude Code CX Codex Cursor +1 3,200installs agentation-self-driving benjitaylor Runs autonomous design critiques in a visible browser window and leaves feedback notes directly through the Agentation toolbar. Claude Code CX Codex Cursor +1 7,000installs hatch-pet nexu-io Creates, validates, and packages 8×9 animated pet spritesheets for Codex. Use it when turning visual references or concept prompts into importable digital pet companions. Claude Code CX Codex Cursor +1 3,100installs d3-visualization nexu-io This skill teaches the agent to create interactive D3.js visualizations. Use it to generate charts for dashboards, reports, and data-rich prototypes. Claude Code CX Codex Cursor +1 3,100installs design-review nexu-io Audits UI visually, fixes flaws with atomic commits, and captures before/after screenshots. Useful for tightening shipped interface code right before launch. Claude Code CX Codex Cursor +1 3,100installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs grill-me Matt Pocock grill-me interviews you about a plan or design to expose gaps and sharpen decisions. Use it before implementation starts. Claude Code 1,424,476installs

Questions about dfam-check

How to install dfam-check in Claude Code?

Run npx skills add earthtojake/text-to-cad --skill dfam-check -a claude-code.

What does dfam-check do?

It computes geometric measurements on 3D meshes locally and checks them against additive manufacturing constraints for FDM, SLS, SLA, metal PBF, or MJF.

Can dfam-check inspect STEP or STP files directly?

No, the inspection tool only accepts mesh formats like .stl, .obj, .ply, and .3mf. STEP files must be converted to STL before running the check.

Source text

SKILL.md · MIT
---
name: dfam-check
description: 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`.
license: MIT
---

# DfAM Check

Provenance: maintained in [earthtojake/text-to-cad](https://github.com/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.

```bash
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

1. 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.
2. Read `references/process-limits.md` and 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.
3. Run `measure` on the exact upload file. Do not inspect only a generator
   script, source CAD model, or console summary of the file.
4. Run `orientations` when the process requires supports and the measured
   support area is nonzero. Report any candidate that materially reduces
   support area, with its build-height tradeoff.
5. 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.
6. 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_mm` below the wall-thickness limit as a violation even when
  `min_mm` alone could be a sampling outlier; report both values.
- On an assembly, `wall_thickness` reports `body_count` and a `per_body`
  breakdown. 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 info` when
  enclosed cavities are likely.
- Do not silently rescale geometry. `scale.units_suspect` is measured from
  the bounding-box diagonal: when it is `true`, 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.

© earthtojake · MIT · earthtojake/text-to-cad

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor