$npx -y skills add meshy-dev/meshy-3d-agent --skill meshy-3d-printing3D print models generated with Meshy AI, plus Creative Lab consumer products. Handles slicer detection, white model printing, multi-color printing via API, the Creative Lab pipeline (figure / lamp / keychain / fridge-magnet), and print-optimized download workflows. Use when the u
| 1 | # Meshy 3D Printing |
| 2 | |
| 3 | Prepare and send Meshy-generated 3D models to a slicer for 3D printing. Supports white model (single-color) and multicolor printing workflows with automatic slicer detection. |
| 4 | |
| 5 | **Prerequisite:** This skill reuses the utility functions (`create_task`, `poll_task`, `download`, `get_project_dir`, etc.) and environment setup from `meshy-3d-generation`. However, **when the user wants to 3D print, this skill controls the entire workflow** — including generation, format selection, downloading, and slicer integration. Do NOT run `meshy-3d-generation`'s workflow first and then hand off here — this skill must control parameters from the start (e.g. `target_formats` with `"3mf"` for multicolor). |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Intent Detection |
| 10 | |
| 11 | Proactively suggest 3D printing when these keywords appear in the user's request: |
| 12 | - **Direct**: print, 3d print, slicer, slice, bambu, orca, prusa, cura, multicolor, multi-color, 3mf |
| 13 | - **Implied**: figurine, miniature, statue, physical model, desk toy, phone stand |
| 14 | |
| 15 | When detected, guide the user through the appropriate print pipeline below. |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## Decision Tree: White Model vs Multicolor |
| 20 | |
| 21 | **IMPORTANT**: When the user wants to 3D print, follow this flow: |
| 22 | |
| 23 | 1. **Detect installed slicers** first (see Slicer Detection Script below) |
| 24 | 2. **Ask the user**: "Do you want a single-color (white) print or multicolor?" |
| 25 | 3. If **white model** → follow White Model Pipeline |
| 26 | 4. If **multicolor**: |
| 27 | a. Check if a multicolor-capable slicer is installed |
| 28 | b. Supported multicolor slicers: **OrcaSlicer, Bambu Studio, Creality Print, Elegoo Slicer, Anycubic Slicer Next** |
| 29 | c. If no multicolor slicer detected, warn the user and suggest installing one |
| 30 | d. Ask: "How many colors? (default: 4, max: 16)" and "Segmentation depth? (3=coarse, 6=fine, default: 4)" |
| 31 | e. Confirm cost: generation (20) + texture (10) + multicolor (10) = **40 credits total** (+10 if repair is needed) |
| 32 | f. Follow Multicolor Pipeline |
| 33 | 5. **(Recommended)** Insert a **printability analysis** step (`POST /openapi/v1/print/analyze`, FREE) after generation in either pipeline. Run **`POST /openapi/v1/print/repair`** (10 credits) only if analyze flags errors. |
| 34 | |
| 35 | --- |
| 36 | |
| 37 | ## Slicer Detection Script |
| 38 | |
| 39 | Append this to the reusable script template from `meshy-3d-generation`: |
| 40 | |
| 41 | ```python |
| 42 | import subprocess, shutil, platform, os, glob as glob_mod |
| 43 | |
| 44 | SLICER_MAP = { |
| 45 | "OrcaSlicer": {"mac_app": "OrcaSlicer", "win_exe": "orca-slicer.exe", "win_dir": "OrcaSlicer", "linux_exe": "orca-slicer"}, |
| 46 | "Bambu Studio": {"mac_app": "BambuStudio", "win_exe": "bambu-studio.exe", "win_dir": "BambuStudio", "linux_exe": "bambu-studio"}, |
| 47 | "Creality Print": {"mac_app": "Creality Print", "win_exe": "CrealityPrint.exe", "win_dir": "Creality Print*", "linux_exe": None}, |
| 48 | "Elegoo Slicer": {"mac_app": "ElegooSlicer", "win_exe": "elegoo-slicer.exe", "win_dir": "ElegooSlicer", "linux_exe": None}, |
| 49 | "Anycubic Slicer Next": {"mac_app": "AnycubicSlicerNext", "win_exe": "AnycubicSlicerNext.exe", "win_dir": "AnycubicSlicerNext", "linux_exe": None}, |
| 50 | "PrusaSlicer": {"mac_app": "PrusaSlicer", "win_exe": "prusa-slicer.exe", "win_dir": "PrusaSlicer", "linux_exe": "prusa-slicer"}, |
| 51 | "UltiMaker Cura": {"mac_app": "UltiMaker Cura", "win_exe": "UltiMaker-Cura.exe", "win_dir": "UltiMaker Cura*", "linux_exe": None}, |
| 52 | } |
| 53 | MULTICOLOR_SLICERS = {"OrcaSlicer", "Bambu Studio", "Creality Print", "Elegoo Slicer", "Anycubic Slicer Next"} |
| 54 | |
| 55 | def detect_slicers(): |
| 56 | """Detect installed slicer software. Returns list of {name, path, multicolor}.""" |
| 57 | found = [] |
| 58 | system = platform.system() |
| 59 | for name, info in SLICER_MAP.items(): |
| 60 | path = None |
| 61 | if system == "Darwin": |
| 62 | app = info.get("mac_app") |
| 63 | if app and os.path.exists(f"/Applications/{app}.app"): |
| 64 | path = f"/Applications/{app}.app" |
| 65 | elif system == "Windows": |
| 66 | win_dir = info.get("win_dir", "") |
| 67 | win_exe = info |