workspace/skills/cml-lab-lifecycle/SKILL.md
Cisco CML lab lifecycle management — create, start, stop, wipe, delete, clone, import/export labs. Use when building a network lab, starting or stopping a CML lab, cloning a topology, or importing lab YAML files.
npx skillsauth add automateyournetwork/netclaw cml-lab-lifecycleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
cml-mcp (pip-installed, stdio transport)CML_URL, CML_USERNAME, CML_PASSWORD environment variablesCML_VERIFY_SSL (default: true)| Tool | Parameters | What It Does |
|------|-----------|-------------|
| create_lab | title | Create a new empty lab with a title |
| get_lab | lab_id or lab_title | Get lab details (state, node count, link count) |
| get_labs | none | List all labs on the CML server |
| start_lab | lab_id or lab_title | Start all nodes in a lab (boot the topology) |
| stop_lab | lab_id or lab_title | Stop all nodes in a lab (graceful shutdown) |
| wipe_lab | lab_id or lab_title | Wipe lab node configurations (reset to factory) |
| delete_lab | lab_id or lab_title | Delete a lab permanently |
| Tool | Parameters | What It Does |
|------|-----------|-------------|
| import_lab | topology (YAML string) | Import a lab from CML topology YAML |
| export_lab | lab_id or lab_title | Export a lab as CML topology YAML |
| clone_lab | lab_id or lab_title | Clone an existing lab (deep copy) |
| download_lab_configs | lab_id or lab_title | Download all node configs from a running lab |
When a user says something like "build me a 3-router OSPF lab" in Slack:
create_lab with a descriptive titlestart_lab to boot everything"Build me a 3-router OSPF lab" → create_lab "OSPF Lab - 3 Routers" → create_node x3 (IOSv: R1, R2, R3) → create_interface + create_link (R1-R2, R2-R3, R1-R3 full mesh) → set_node_config for each (OSPF area 0, loopbacks, point-to-point links) → start_lab → execute_command: "show ip ospf neighbor" on each router → Report: "Lab ready! R1, R2, R3 all have FULL OSPF adjacencies."
"Add a 4th router to the OSPF lab" → stop_lab (topology changes require stopped state) → create_node R4 (IOSv) → create_interface + create_link (R4 to R2 and R3) → set_node_config for R4 (OSPF area 0) → Update R2 and R3 configs if needed → start_lab → Verify all 4 routers have adjacencies
"Create a lab from this YAML topology" → import_lab with the provided YAML → start_lab → Report node count, link count, state
"Clone the OSPF lab and add BGP peering" → clone_lab "OSPF Lab - 3 Routers" → "OSPF+BGP Lab" → Modify configs to add BGP router stanzas → start_lab → Verify both OSPF and BGP adjacencies
When a user is done with a lab:
stop_lab — graceful shutdown of all nodesexport_lab)wipe_lab to reset node configs (if reusing later)delete_lab to free CML resourcesWhen a user wants to experiment with a variant of an existing lab:
clone_lab creates a deep copystart_lab on the new copyWhen a user wants to share a lab topology:
export_lab returns CML YAML topologyLabs go through these states:
| State | Meaning |
|-------|---------|
| DEFINED_ON_CORE | Lab exists but no nodes are running |
| STARTED | All (or some) nodes are booting/running |
| STOPPED | All nodes have been shut down |
| BOOTED | All nodes have finished booting |
"Create a CCIE routing lab with:
- 4 x IOSv routers (R1-R4)
- 2 x IOSv L2 switches (SW1-SW2)
- Full mesh between R1-R4
- SW1 connecting R1 and R2, SW2 connecting R3 and R4"
"Build a DC lab:
- 2 x NX-OS spines
- 4 x NX-OS leaves
- 1 x external router (IOSv)
- Spine-leaf full mesh, external router to both spines"
"Create an SP lab:
- 4 x IOS-XR routers (PE1, PE2, P1, P2)
- 2 x IOSv CE routers
- PE-P full mesh, CE1 to PE1, CE2 to PE2"
get_labs first to see what already exists — avoid duplicate lab namesCML_URL — CML server URL (e.g., https://cml.example.com)CML_USERNAME — CML usernameCML_PASSWORD — CML passwordCML_VERIFY_SSL — Verify SSL certificate (true/false)testing
Human-in-the-loop escalation via HumanRail — route low-confidence agent decisions, pre-destructive operation approvals, and ambiguous incident tickets to real human engineers. Human answers are verified and returned as structured output. Workers are paid via Lightning Network. Use when the agent is uncertain, when a destructive change needs explicit human sign-off beyond a ServiceNow CR, or when an ambiguous ticket requires human triage before automated handling.
testing
Manage EVE-NG node lifecycle. Use when listing nodes, checking runtime state, creating or deleting nodes, starting or stopping nodes or whole labs, verifying node details, or wiping node NVRAM back to factory defaults.
development
Manage EVE-NG labs and platform inventory. Use when listing labs, checking lab metadata, creating or deleting labs, importing or exporting lab archives, checking EVE-NG health or auth, or verifying available node images before build work.
tools
Execute live CLI commands on running EVE-NG nodes over telnet console. Use when running show commands, making live config changes, verifying protocol state, testing connectivity, checking console readiness, or interacting with IOS, Junos, VPCS, EOS, or NX-OS nodes.