Install
openclaw skills install nai-print-failure-analystDiagnose 3D print failures by symptoms or images, recommend slicer setting fixes, log issues, view history, and generate failure reports.
openclaw skills install nai-print-failure-analystDiagnose failures, recommend slicer fixes, and track a personal failure log.
references/failure-types.md — 18 failure types with keywords, causes, visual symptomsreferences/slicer-fixes.md — Specific values for PrusaSlicer, Cura, OrcaSlicer per failure typeRead these when formulating diagnoses or recommending fixes. Do not recite them wholesale — extract relevant sections.
All scripts use Python stdlib only. Log stored at assets/failure-log.json.
python3 scripts/diagnose.py --symptoms "stringing,warping"
python3 scripts/diagnose.py --description "hair between parts and corners lifting"
python3 scripts/diagnose.py --symptoms "stringing" --description "worse at layer transitions" --json
Outputs: ranked failure types with confidence, causes, and slicer-specific fixes.
Use --json when you need structured output to reason over.
python3 scripts/log_failure.py \
--printer "Prusa MK4" \
--material "PETG" \
--failure-type "stringing" \
--description "Heavy stringing between towers" \
--slicer-settings '{"temperature": 235, "retraction_distance_mm": 1.0}' \
--fixed-by "Reduced temp to 230C, enabled wipe" \
--notes "Filament may be wet"
Valid --failure-type values: stringing, warping, layer_adhesion, under_extrusion, over_extrusion, elephant_foot, layer_shifting, bridging, overhang, clog, pillowing, ringing, z_banding, seam, supports, first_layer, wet_filament, spaghetti, other
python3 scripts/history.py # All failures
python3 scripts/history.py --last 10 # Last 10
python3 scripts/history.py --material PETG # Filter by material
python3 scripts/history.py --printer "Prusa MK4" # Filter by printer
python3 scripts/history.py --failure-type stringing
python3 scripts/history.py --patterns # Pattern analysis only
python3 scripts/report.py # Print to stdout
python3 scripts/report.py --output r.md # Save to file
python3 scripts/report.py --days 30 # Last 30 days only
diagnose.py --symptoms or --description with the user's inputreferences/failure-types.md for the top match to get full contextreferences/slicer-fixes.md for that failure type to get specific valueslog_failure.pyreferences/failure-types.mddiagnose.py --symptoms "<observed symptoms>" for structured outputlog_failure.py with collected infohistory.py with appropriate filtersreport.py, optionally with --days if user wants a time-bounded view