Skip to content
Design
Skill

/bambu-labs

Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain `.gcode`, using Bambu LAN FTPS/MQTT handoffs.

From plugin
cad
16k12 skills
Install
$ npx -y skills add earthtojake/text-to-cad --skill bambu-labs --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/bambu-labs

Context preview

The summary Claude sees to decide when to auto-load this skill.

Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain `.gcode`, using Bambu LAN FTPS/MQTT handoffs.

SKILL.md

bambu-labs.SKILL.md
name: bambu-labs
description: Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain `.gcode`, using Bambu LAN FTPS/MQTT handoffs.

Bambu Labs

Provenance: maintained in [earthtojake/text-to-cad](https://github.com/earthtojake/text-to-cad). Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review.

Use this skill for local-network Bambu Lab print handoffs after a plain `.gcode` file already exists and has been validated. This skill does not slice models.

Safety Rules

  • Default to dry-run plans. Real printer traffic requires `--execute`.
  • Never start a print without `--execute --confirm-start-print`.
  • Pause and cancel controls are live printer requests; default to dry-run plans.

Canceling a print requires `--execute --confirm-cancel-print`.

  • Treat an explicit user request to print or start a specific job as live-start

authorization; do not pause for a second confirmation solely for physical checks. Still validate the G-code, inspect the dry-run payload, read printer status, prefer upload-only before upload-start, state the physical checks, and stop if validation/status/intent is unsafe or ambiguous.

  • Do not ask for the printer serial by default; fetch it from the printer TLS certificate with `serial` or let `send` cache it.
  • Prefer workspace-root `bambu-printers.json` over repeating access codes in commands. The file is local config and should be ignored by Git.
  • Before a live start, state the physical checks: clear build plate, correct plate/filament/nozzle, safe surroundings, and operator nearby.
  • Publishing MQTT is only a start request. Confirm acceptance with printer status/UI and physical observation.

CAD Viewer Handoff

After completing Bambu work that creates or modifies a local `.3mf` print artifact, you must ALWAYS hand the explicit file path to `$cad-viewer` when that skill is installed. CAD Viewer does not open `.gcode`, so a plain G-code artifact takes no handoff. `$cad-viewer` must start CAD Viewer if it is not already running and return link(s) to the relevant created or updated file(s); if `$cad-viewer` is unavailable or startup fails, report that instead of silently omitting the handoff.

Workflow

1. Generate and validate plain G-code with `$gcode`. If no slicer is installed, install OrcaSlicer and retry; do not treat the missing slicer as a blocker. On macOS, prefer `brew install --cask orcaslicer`. 2. Configure the printer. The user can either give the IP/access code in the thread and let the agent write JSON, or edit `bambu-printers.json` directly. For a new printer setup or onboarding request, read `references/new-printer-onboarding.md` first. Walk the user through the model-specific touchscreen steps to find the IP and LAN access code, and make **Enable LAN Only** plus **Enable Developer Mode** explicit before running local start workflows.

python scripts/bambu_lan_print.py config set \
  --printer a1-mini \
  --host 192.168.1.34 \
  --access-code 12345678 \
  --model a1-mini \
  --fetch-serial

Manual JSON shape:

{
  "printers": {
    "a1-mini": {
      "host": "192.168.1.34",
      "access_code": "12345678",
      "model": "a1-mini"
    }
  }
}

On A1/A1 Mini, find the IP and LAN access code on the printer touchscreen under network/LAN settings. Enable LAN Only and Developer Mode when offered, then power-cycle before retrying local start commands.

3. Read status before live work:

python scripts/bambu_lan_print.py status \
  --printer a1-mini \
  --push-all \
  --wait-seconds 10

4. Dry-run the exact handoff, inspect the JSON payload, then run upload-only. Only after upload succeeds should you run upload-start. If the user explicitly asked to print or start the job, proceed to `upload-start --execute --confirm-start-print` after the validation, status, and upload checks pass. If the user only asked to prepare, slice, upload, or review, stop before the start request.

Handoff Modes

`--handoff template-project` is the A1 Mini path validated against a real printer over LAN. It starts from validated plain `.gcode`, copies a known-good same-printer `.gcode.3mf` template, replaces `Metadata/plate_N.gcode`, writes the plate MD5, uploads the project to the FTPS root, and publishes `print.project_file` with `url: ftp:///<name>.gcode.3mf`.

python scripts/bambu_lan_print.py send \
  --printer a1-mini \
  --gcode /tmp/job.gcode \
  --handoff template-project \
  --template-project /path/to/same-printer-template.gcode.3mf \
  --action upload-start

Execute after review when the user explicitly asked to print or start, or after physical confirmation when intent is unclear:

python scripts/bambu_lan_print.py send \
  --printer a1-mini \
  --gcode /tmp/job.gcode \
  --handoff template-project \
  --template-project /path/to/same-printer-template.gcode.3mf \
  --action upload-start \
  --execute \
  --confirm-start-print

`--handoff plain` uploads `cache/<name>.gcode` and publishes `print.gcode_file`. Keep it for diagnostics or printers/firmware where this is known to work. On the tested A1 Mini, direct plain G-code was uploaded successfully but `gcode_file` failed or was ignored, so do not use it as the A1 Mini live-start path.

`--handoff bambox-project` packages plain `.gcode` with `bambox`, uploads the `.gcode.3mf` project to FTPS root, and publishes `print.project_file`. Currently enabled only for `p1s-0.4` with `PLA`, `ASA`, or `PETG-CF`. Known but disabled until validated profiles exist: `a1-mini-0.4`, `a1-0.4`, `x1c-0.4`, and `p1p-0.4`.

Common Debugging Commands

Fetch/cache serial:

python scripts/bambu_lan_print.py serial \
  --printer a1-mini \
  --json

Clear a stale printer error after fixing the underlying cause:

python scripts/bambu_lan_print.py clear-error \
  --printer a1-mini \
  --execute

Use `--mqtt-qos 1

Read more
Ships withcad

text-to-cad is a library of agent skills for generating, inspecting, sourcing, slicing, and handing off CAD and robot-description artifacts from local project files. CAD URDF SRDF / MoveIt2

Get the whole plugin
Stats
15,697
Stars
1,619
Forks
Active
Maintenance
Python
Language
MIT
License
10h ago
Last commit
4mo ago
Created
13d ago
Added

Repo: earthtojake/text-to-cad

Other skills on cad.

smui
Skill

smui

Local copy of the **smui** ("spacemolt") design system (<https://smui.statico.io/skill.md>), adapted for the CAD Viewer. smui is a Nord-inspired terminal…

@earthtojake@earthtojakeView Skill
cad
Skill

cad

Create, modify, inspect, and validate parametric CAD parts and assemblies authored as cadgen model scripts. Use for natural-language CAD specs, reference…

@earthtojake@earthtojakeView Skill
dxf
Skill

dxf

Generate, regenerate, and validate 2D DXF drawings from Python build123d sources. Use for DXF files, `.py` drawing scripts, @dxf models, 2D profiles, outlines,…

@earthtojake@earthtojakeView Skill
gcode
Skill

gcode

Generate, inspect, dry-run, and statically validate plain FDM `.gcode` from 3D mesh files by orchestrating real slicer CLIs. Use when Codex needs to slice…

@earthtojake@earthtojakeView Skill