Skill: tobiasbischoff/bambu-cli (version 1.0.0)

--- name: bambu-cli description: Operate and troubleshoot BambuLab printers with the bambu-cli (status/watch, print start/pause/resume/stop, files, camera, gcode, AMS, calibration, motion, fans, light, config, doctor). Use when a user asks to control or monitor a BambuLab printer, set up profiles or access codes, or translate a task into safe bambu-cli commands with correct flags, output format, and confirmations. --- # Bambu CLI ## Overview Use bambu-cli to configure, monitor, and control BambuLab printers over MQTT/FTPS/camera, producing exact commands and safe defaults. ## Defaults and safety - Confirm the target printer (profile or IP/serial) and resolve precedence: flags > env > project config > user config. - Avoid access codes in flags; use `--access-code-file` or `--access-code-stdin` only. - Require confirmation for destructive actions (stop print, delete files, gcode send, calibrate, reboot); use `--force`/`--confirm` only when the user explicitly agrees. - Offer `--dry-run` when supported to preview actions. - Choose output format: human by default, `--json` for structured output, `--plain` for key=value output. ## Quick start - Configure a profile: `bambu-cli config set --printer <name> --ip <ip> --serial <serial> --access-code-file <path> --default` - Status: `bambu-cli status` - Watch: `bambu-cli watch --interval 5` - Start print: `bambu-cli print start <file.3mf|file.gcode> --plate 1` - Pause/resume/stop: `bambu-cli print pause|resume|stop` - Camera snapshot: `bambu-cli camera snapshot --out snapshot.jpg` ## Task guidance ### Setup & config - Use `config set/list/get/remove` to manage profiles. - Use env vars to avoid flags in scripts: `BAMBU_PROFILE`, `BAMBU_IP`, `BAMBU_SERIAL`, `BAMBU_ACCESS_CODE_FILE`, `BAMBU_TIMEOUT`, `BAMBU_NO_CAMERA`, `BAMBU_MQTT_PORT`, `BAMBU_FTP_PORT`, `BAMBU_CAMERA_PORT`. - Note config locations: user `~/.config/bambu/config.json`, project `./.bambu.json`. ### Monitoring - Use `status` for a one-off snapshot; use `watch` for periodic updates (`--interval`, `--refresh`). - Use `--json`/`--plain` for scripting. ### Printing - Use `print start <file>` with `.3mf` or `.gcode`. - Use `--plate <n|path>` to select a plate number or gcode path inside a 3mf. - Use `--no-upload` only when the file already exists on the printer; do not use it with `.gcode` input. - Control AMS: `--no-ams`, `--ams-mapping "0,1"`, `--skip-objects "1,3"`. - Disable flow calibration with `--flow-calibration=false` if requested. ### Files and camera - Use `files list [--dir <path>]`, `files upload <local> [--as <remote>]`. - Use `files download <remote> --out <path|->`; use `--force` to allow writing binary data to a TTY. - Use `files delete <remote>` only with confirmation. - Use `camera snapshot --out <path|->`; use `--force` to allow stdout to a TTY. ### Motion, temps, fans, light - Use `home`, `move z --height <0-256>`. - Use `temps get|set` (`--bed`, `--nozzle`, `--chamber`; require at least one). - Use `fans set` with `--part/--aux/--chamber` values `0-255` or `0-1`. - Use `light on|off|status`. ### Gcode and calibration - Use `gcode send <line...>` or `gcode send --stdin` (confirmation required; `--no-check` skips validation). - Avoid combining `--access-code-stdin` with `gcode send --stdin`; use an access code file instead. - Use `calibrate` with `--no-bed-level`, `--no-motor-noise`, `--no-vibration` when requested. ### Troubleshooting - Use `doctor` to check TCP connectivity to MQTT/FTPS/camera ports; suggest `--no-camera` if the camera port is unreachable. - Assume default ports: MQTT 8883, FTPS 990, camera 6000 unless configured. ## Reference Read `references/commands.md` for the full command and flag reference.

path: references/commands.md
content: # bambu-cli command reference

## Global flags
- `-h, --help`, `--version`
- `-q, --quiet`, `-v, --verbose`
- `--json` | `--plain` (mutually exclusive)
- `--no-color`
- `--no-input`
- `-f, --force`
- `--confirm <token>`
- `-n, --dry-run`
- `--printer <name>`
- `--ip <addr>`
- `--serial <serial>`
- `--access-code-file <path>`
- `--access-code-stdin`
- `--no-camera`
- `--timeout <seconds>`
- `--config <path>`

## Commands
- `status` - show printer status.
- `watch [--interval <seconds>] [--refresh]` - stream status updates.
- `light on|off|status` - control printer light.
- `temps get|set [--bed <C>] [--nozzle <C>] [--chamber <C>]` - set requires at least one value.
- `print start <file> [--plate <n|path>] [--no-upload] [--no-ams] [--ams-mapping <list>] [--skip-objects <list>] [--flow-calibration[=true|false]] [--remote-name <name>]`
- `print pause|resume|stop` - stop requires confirmation.
- `files list [--dir <path>]`
- `files upload <local> [--as <remote>]`
- `files download <remote> --out <path|->` (use `--force` for stdout on TTY)
- `files delete <remote>` - confirmation required.
- `camera snapshot [--out <path|->]` - default `snapshot.jpg` (use `--force` for stdout on TTY).
- `gcode send <line...> | --stdin` - confirmation required; `--no-check` to skip validation.
- `ams status` - show AMS data.
- `calibrate [--no-bed-level] [--no-motor-noise] [--no-vibration]` - confirmation required.
- `home` - home axes.
- `move z --height <0-256>` - move Z.
- `fans set [--part <0-255|0-1>] [--aux <0-255|0-1>] [--chamber <0-255|0-1>]`
- `reboot` - confirmation required.
- `config list|get|set|remove`
- `doctor` - check port reachability.

## Config and env
- User config: `~/.config/bambu/config.json`
- Project config: `./.bambu.json`
- Precedence: flags > env > project config > user config
- Env vars: `BAMBU_PROFILE`, `BAMBU_IP`, `BAMBU_SERIAL`, `BAMBU_ACCESS_CODE_FILE`, `BAMBU_TIMEOUT`, `BAMBU_NO_CAMERA`, `BAMBU_MQTT_PORT`, `BAMBU_FTP_PORT`, `BAMBU_CAMERA_PORT`

## Notes
- Do not pass access codes via flags; use `--access-code-file` or `--access-code-stdin`.
- `--access-code-stdin` cannot be combined with `gcode send --stdin`.
- Default ports: MQTT 8883, FTPS 990, camera 6000.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)