← text-to-cadCONTENT HISTORY

Update to text-to-cad

Snapshot Oct 6, 2026 · 00:02 UTC · version 0.7.10

Collection source: downloaded plugin package.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "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`.",
  "included_files": [
    {
      "relative_path": "LICENSE",
      "size_in_bytes": 1074
    },
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 209
    },
    {
      "relative_path": "references/process-limits.md",
      "size_in_bytes": 3089
    },
    {
      "relative_path": "requirements.txt",
      "size_in_bytes": 367
    },
    {
      "relative_path": "scripts/dfam_tool.py",
      "size_in_bytes": 15277
    }
  ],
  "name": "dfam-check",
  "skill_md_contents": "---\nname: dfam-check\ndescription: 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`.\nlicense: MIT\n---\n\n# DfAM Check\n\nProvenance: maintained in [earthtojake/text-to-cad](https://github.com/earthtojake/text-to-cad).\nUse the installed local skill files as the runtime source of truth; the\nrepository link is only for provenance and release review.\n\nUse this skill to produce conservative, evidence-backed DfAM reports for mesh\nfiles before slicing or printing. It measures geometry facts locally and\ncompares them against per-process design limits; it never slices, uploads, or\nstarts print jobs.\n\n## Geometry Inspection\n\nUse `scripts/dfam_tool.py` in the active project Python environment for all\ngeometry facts (install `requirements.txt` first — every run needs it). The tool is fact-only:\nit reports measurements and never emits pass/fail or readiness statuses.\nComparisons and verdicts belong to this workflow. Do not estimate wall\nthickness, overhang angles, or support volume by eye or from renders when the\ntool can measure them.\n\n```bash\npython scripts/dfam_tool.py measure part.stl --angle-limit 45\npython scripts/dfam_tool.py orientations part.stl --angle-limit 45\n```\n\nSet `--angle-limit` to the target process's self-supporting angle from\n`references/process-limits.md` before measuring, and re-run when the target\nprocess changes: the aggregate support-area facts are binned against it.\n\nSTEP/STP input is boundary-representation CAD, not a mesh. When the `$cad`\nskill is installed, export an STL sidecar with it first, then measure the STL\nhere. Report that remediation instead of attempting raw STEP parsing. `measure`\non a STEP exits 1 with `{\"error\": \"failed to load mesh: ...\"}`; that is the\nwrong-input signal, not a missing dependency — do not install extra mesh\nloaders to work around it.\n\nA fact family that cannot compute returns `{\"error\": ...}` in its place rather\nthan costing the report its other measurements — `wall_thickness` does this when\nthe dependency set is incomplete, `support_volume` on geometry with no convex\nhull. That report is PARTIAL: it carries `\"partial\": true`, names the families\nin `partial_sections`, and the command exits **2** (0 is a complete report, 1 a\nmesh that would not load at all). Treat every such object as an unmeasured fact\n(`❓ need more info`), never as a measurement of zero, and reinstall\n`requirements.txt` before comparing wall limits.\n\n## Workflow\n\n1. Collect print intent: target process, material, layer height, and any\n   machine or material datasheet the user can provide. If the process is\n   unknown, measure once with the default 45° limit, then present findings\n   per candidate process rather than guessing a single verdict.\n2. Read `references/process-limits.md` and select the limit column for the\n   target process. A user-provided machine/material datasheet overrides the\n   defaults; cite whichever source is used for every comparison.\n3. Run `measure` on the exact upload file. Do not inspect only a generator\n   script, source CAD model, or console summary of the file.\n4. Run `orientations` when the process requires supports and the measured\n   support area is nonzero. Report any candidate that materially reduces\n   support area, with its build-height tradeoff.\n5. Compare each measured fact to the cited limit and report findings with\n   restrained status labels:\n   - `✅ pass`: the measured fact satisfies the cited limit.\n   - `❌ fail`: a measured fact directly violates the cited limit.\n   - `❓ need more info`: missing process context, unmeasured geometry,\n     sampling too sparse to trust, or tool limitations.\n6. Order findings by severity: watertightness first (blocks slicing for\n   every process), then wall thickness, then overhangs/supports, then\n   orientation and cost signals.\n\n## Comparison\n\nCompare only trustworthy pairs of evidence.\n\n- Cite the limit source (process-limits table row, or the user's datasheet\n  field) and the measured fact (JSON field path) for every finding.\n- Treat `p05_mm` below the wall-thickness limit as a violation even when\n  `min_mm` alone could be a sampling outlier; report both values.\n- On an assembly, `wall_thickness` reports `body_count` and a `per_body`\n  breakdown. Attribute a violation to the body it belongs to; a thin figure\n  pooled across bodies is not a finding against the part as a whole.\n- Do not apply support-angle findings to powder processes (SLS, MJF); the\n  relevant powder-process check is trapped-volume powder escape, which this\n  tool does not yet measure — report that as `❓ need more info` when\n  enclosed cavities are likely.\n- Do not silently rescale geometry. `scale.units_suspect` is measured from\n  the bounding-box diagonal: when it is `true`, the source is probably in\n  meters or inches, every down-facing face reads as resting on the plate, and\n  overhang and support figures of 0.0 mean nothing. Report a unit/scale\n  finding and ask the user to confirm units before comparing anything against\n  a material limit.\n- Support-volume ratios are coarse upper bounds; report them as cost\n  signals, not hard failures, unless the user has set an explicit budget.\n\n## Redesign Handoff\n\nFor every `❌ fail`, include a concrete, plain-language redesign instruction\nwith target numbers (for example \"thicken the wall at [12.4, 3.0, 8.1] from\n0.6 mm to ≥1.2 mm\" or \"chamfer the overhang at [23.3, 10.0, 52.0] to ≥45°\").\nWhen the `$cad` skill is installed, offer to apply the redesign instructions\nwith it and re-measure the regenerated geometry here, repeating until no\n`❌ fail` findings remain.\n"
}

SHA-256 of public snapshot: 84cb259dd48479ca48498a900dce7de4b60a600d03aa0a4207d1167c7eaf37f2