Monitor and control Snapmaker 3D printers (U1 with Moonraker/Klipper). Use when checking print status, temperatures, progress, or controlling prints (pause/resume/cancel). Triggers on "printer", "3D print", "Snapmaker", "print status", "nozzle temp", "bed temp".
Scanned 9/7/2026
Install to Claude Code
npx -y skills add Demerzels-lab/elsamultiskillagent --skill snapmaker --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Snapmaker?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/demerzels-lab-snapmaker)More formats (shields.io, HTML) on the badges page.
---
name: snapmaker
version: 1.0.0
description: Monitor and control Snapmaker 3D printers (U1 with Moonraker/Klipper). Use when checking print status, temperatures, progress, or controlling prints (pause/resume/cancel). Triggers on "printer", "3D print", "Snapmaker", "print status", "nozzle temp", "bed temp".
license: MIT
---
# Snapmaker Printer Control
Control Snapmaker U1 printers via the Moonraker API.
## Configuration
Create a config file at `~/clawd/config/snapmaker.json`:
```json
{
"ip": "192.168.x.x",
"port": 80
}
```
Or use environment variables:
```bash
export SNAPMAKER_IP=192.168.x.x
export SNAPMAKER_PORT=80 # optional, defaults to 80
```
**Config search order:**
1. `SNAPMAKER_IP` environment variable (highest priority)
2. `~/clawd/config/snapmaker.json`
3. `~/.config/clawdbot/snapmaker.json`
## Quick Commands
### Check Status
```bash
scripts/snapmaker.py status
```
### Filament Info
```bash
scripts/snapmaker.py filament
```
Shows RFID tag data for each slot: material type, color (hex), temp ranges, and sensor status.
### Monitor Print (Live)
```bash
scripts/snapmaker.py monitor
```
### Print Control
```bash
scripts/snapmaker.py pause
scripts/snapmaker.py resume
scripts/snapmaker.py cancel
```
### Temperature
```bash
scripts/snapmaker.py temps
```
## API Reference
The U1 uses Moonraker REST API on port 80:
| Endpoint | Description |
|----------|-------------|
| `/server/info` | Server status |
| `/printer/info` | Printer info |
| `/printer/objects/query?heater_bed&extruder&print_stats` | Status |
| `/printer/print/pause` | Pause print |
| `/printer/print/resume` | Resume print |
| `/printer/print/cancel` | Cancel print |
## Status Response Fields
- `print_stats.state`: `standby`, `printing`, `paused`, `complete`, `error`
- `print_stats.filename`: Current file
- `print_stats.print_duration`: Seconds elapsed
- `virtual_sdcard.progress`: 0.0 to 1.0
- `heater_bed.temperature` / `heater_bed.target`: Bed temps
- `extruder.temperature` / `extruder.target`: Nozzle temps
## Filament & Sensor Data
Query filament RFID and sensors:
```
/printer/objects/query?filament_detect&filament_motion_sensor%20e0_filament&filament_motion_sensor%20e1_filament&filament_motion_sensor%20e2_filament&filament_motion_sensor%20e3_filament
```
### filament_detect.info[]
Array of 4 slots with RFID tag data (or defaults if no tag):
| Field | Description |
|-------|-------------|
| `VENDOR` | "Snapmaker" or "NONE" if no RFID |
| `MANUFACTURER` | e.g. "Polymaker" |
| `MAIN_TYPE` | Material: "PLA", "PETG", "ABS", etc. |
| `SUB_TYPE` | Variant: "SnapSpeed", "generic", etc. |
| `RGB_1` | Color as decimal int (convert: `#${(rgb>>16&0xFF).toString(16)}...`) |
| `ARGB_COLOR` | Color with alpha (decimal) |
| `WEIGHT` | Spool weight in grams |
| `HOTEND_MIN_TEMP` / `HOTEND_MAX_TEMP` | Nozzle temp range |
| `BED_TEMP` | Recommended bed temp |
| `OFFICIAL` | true if official Snapmaker filament |
### filament_motion_sensor e{0-3}_filament
| Field | Description |
|-------|-------------|
| `filament_detected` | Boolean - filament present in slot |
| `enabled` | Boolean - sensor active |
**Note:** Slots can have `filament_detected: true` but `VENDOR: NONE` — this means third-party filament without RFID tag.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!