Skills & Specs Lab

A network engineer's lab for building reliable AI agents with MCP, agent skills, and behavioral specs.

This is the first half of the Packt workshop Engineering Agentic Network Operations. It is a standalone, hands-on lab: you stand up a small Nokia SR Linux fabric with Containerlab, wire MCP tooling together with Gridctl, and work through two modules with an MCP client (Claude Code is the worked example; any MCP-aware client works).

Skills & Specs Lab

What you build

  • Module 1, Tools to Skills. You see a raw MCP tool and the same capability as a structured skill side by side, build two composable skills (device state query and change validation), and chain them into a workflow against the live fabric.
  • Module 2, Spec-Driven Development. You write a behavioral spec for a network change agent, watch it drift in a repeatable way, and tighten the spec until the behavior is predictable, with no agent code changes.

Prerequisites

A laptop with Docker, Containerlab, Gridctl, and an MCP client. Full setup is in setup/ and should take under 30 minutes. Verify with:

./scripts/verify-setup.sh

Quick start

# 0. Get the repo (on macOS, clone inside the OrbStack VM; see setup/00)
git clone https://github.com/wcollins/skills-and-specs-lab.git
cd skills-and-specs-lab

# 1. Verify prerequisites
./scripts/verify-setup.sh

# 2. Deploy the lab fabric
./scripts/deploy.sh
./scripts/smoke-test.sh        # confirm interfaces and BGP are up

# 3. Bring up the agent stack and connect your client
gridctl skill add https://github.com/wcollins/skills-and-specs-lab --path skills  # import curated skills (offline: ./scripts/load-skills.sh)
gridctl apply stack.yaml
gridctl link claude-code

# 4. Start Module 1
open lab-01/README.md

If anything breaks mid-lab, ./scripts/reset.sh returns you to a known-good fabric in about 90 seconds.

Repository layout

Path What it is
setup/ Numbered setup guides (do these first).
lab-environment/ Containerlab topology and SR Linux configs.
scripts/ Deploy, destroy, reset, smoke-test, verify, checkpoint.
stack.yaml Gridctl stack: clab MCP server plus skill registry.
skills/ Curated core skills loaded into every registry.
showcase/ Community skills and labs (review before importing).
lab-01/ Module 1 guide, checkpoints, solutions.
lab-02/ Module 2 guide, spec templates, solutions.
spec/ The spec this workshop was built from (dogfood).
docs/ FAQ, troubleshooting, quick reference, midpoint contract.
run.md Instructor runbook: build, test, and roll back every part.
CONTRIBUTING.md Post-workshop fork-and-PR flow.

Using a different MCP client

Claude Code is the worked example, but everything student-facing speaks "your MCP client." Gridctl exposes one endpoint (http://localhost:8180/sse) and gridctl link supports Claude Desktop, Cursor, VS Code, OpenCode, and others. See setup/04-gridctl.md.

After the workshop

Keep your stack running. Build a skill or a lab, then open your first pull request into showcase/. The contributing skill walks you through the whole flow, including the GitHub authentication step (plan about 20 minutes for your first PR with the skill guiding you). See CONTRIBUTING.md.

License

See LICENSE.