Agent skill

Pyats Network

by automateyournetwork in automateyournetwork/netclaw

Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices.

Apache-2.0Auto-check passedMobile

Install Pyats Network

skills CLI
$ npx skills add automateyournetwork/netclaw --skill pyats-network -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install automateyournetwork/netclaw pyats-network --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/automateyournetwork/netclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/workspace/skills/pyats-network .claude/skills/pyats-network && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pyats-network
GitHub stars
676
Token cost
~2.8k tokens
SKILL.md length
958 words
Files
1
Skills in repo
120
Repo updated
First seen
Licence
Apache-2.0

At a glance

Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices.

  • Works in 8 steps: pyats_list_devices → pyats_run_show_command → pyats_configure_device → …
  • Running CLI commands on routers
  • SKILL.md covers Server & Testbed, Available Devices, How to Call Tools and All 8 Available Tools, plus 3 more sections
  • Calls python3

What it does

Pyats Network is an agent skill from automateyournetwork/netclaw. Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices. Use when running CLI commands on routers or switches, checking interface status, applying configuration changes, or collecting device data via pyATS. To author or design a new aetest validation script (rather than execute an existing one), use pyats-dynamic-test instead.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile. It works with Linux and iOS. The repository describes itself as: An AI agent that claws through your network. The licence is Apache-2.0.

When your agent uses it

  • Running CLI commands on routers
  • Checking interface status
  • Applying configuration changes
  • Collecting device data via pyATS

Example prompts

  • “/pyats-network”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. pyats_list_devices
  2. pyats_run_show_command
  3. pyats_configure_device
  4. pyats_show_running_config
  5. pyats_show_logging
  6. pyats_ping_from_network_device
  7. pyats_run_linux_command
  8. pyats_run_dynamic_test

What it can do on your machine

Read from SKILL.md and the folder at commit 95bb17e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pyats Network loads about 2.8k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 958 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from automateyournetwork/netclaw at commit 95bb17e, republished under its Apache-2.0 licence (© automateyournetwork). 958 words, ~2,810 tokens.

Download SKILL.mdSave it as .claude/skills/pyats-network/SKILL.md (or your agent's skills folder).
name
pyats-network
description
Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices. Use when running CLI commands on routers or switches, checking interface status, applying configuration changes, or collecting device data via pyATS. To author or design a new aetest validation script (rather than execute an existing one), use `pyats-dynamic-test` instead.
license
Apache-2.0
user-invocable
true

pyATS Network Device Tool

Server & Testbed

  • Server script: $PYATS_MCP_SCRIPT
  • Testbed: $PYATS_TESTBED_PATH
  • Environment variable: PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH

Available Devices

Devices are defined in $PYATS_TESTBED_PATH and vary per installation — run pyats_list_devices first to see the actual device names, aliases, and platforms available in this testbed (e.g. R1 on Cisco IOS-XE). Examples below use R1 as a placeholder device name; substitute the real device name(s) returned by pyats_list_devices.

How to Call Tools

Use the $MCP_CALL protocol handler to invoke MCP tools:

bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" TOOL_NAME 'ARGS_JSON'

All 8 Available Tools

1. pyats_list_devices

List all devices in the testbed with their properties: name, alias, type, OS, platform, connection types, credentials summary.

bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_list_devices '{}'

Use when: Starting any session — always list devices first to confirm connectivity and inventory.

2. pyats_run_show_command

Execute any show command with automatic Genie structured parsing. Returns parsed JSON when a Genie parser exists, raw text otherwise.

  • device_name (string): Target device from testbed
  • command (string): Show command — must start with "show"
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"R1","command":"show ip interface brief"}'

Validation rules:

  • Must start with "show"
  • No pipes (|), redirects (>), or shell characters
  • Cannot include: copy, delete, erase, reload, write, configure keywords
  • Do NOT use for show running-config or show logging — use the dedicated tools

Commands with Genie parsers (structured JSON output) on IOS-XE:

Routing:

  • show ip route / show ip route vrf <name>
  • show ip protocols
  • show ip bgp / show ip bgp summary / show ip bgp neighbors
  • show ip ospf / show ip ospf neighbor / show ip ospf interface / show ip ospf database
  • show ip eigrp neighbors / show ip eigrp topology
  • show isis neighbors / show isis database
  • show ip static route

Interfaces:

  • show ip interface brief / show ipv6 interface brief
  • show interfaces / show interfaces <name>
  • show interfaces status
  • show interfaces counters
  • show ip interface

L2/Switching:

  • show vlan / show vlan brief
  • show spanning-tree / show spanning-tree detail
  • show mac address-table
  • show etherchannel summary

Neighbors:

  • show cdp neighbors / show cdp neighbors detail
  • show lldp neighbors / show lldp neighbors detail

FHRP:

  • show standby / show standby brief
  • show vrrp / show vrrp brief

System:

  • show version
  • show inventory
  • show processes cpu / show processes cpu sorted
  • show processes memory / show processes memory sorted
  • show platform
  • show ntp associations / show ntp status
  • show snmp
  • show clock
  • show bootflash
  • show license

Security:

  • show access-lists / show ip access-lists
  • show crypto isakmp sa / show crypto ipsec sa
  • show dot1x
  • show port-security
  • show authentication sessions

QoS:

  • show policy-map / show policy-map interface

VRF / MPLS:

  • show vrf / show vrf detail
  • show mpls forwarding-table
  • show mpls ldp neighbor

Other:

  • show arp
  • show ip nat translations
  • show ip dhcp binding
  • show track
  • show route-map
  • show ip prefix-list
  • show bfd neighbors
  • show flow monitor
3. pyats_configure_device

Apply configuration changes to a device. Automatically enters config mode and exits.

  • device_name (string): Target device
  • config_commands (list of strings OR multiline string): Configuration lines
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_configure_device '{"device_name":"R1","config_commands":["interface Loopback99","ip address 99.99.99.99 255.255.255.255","description NetClaw-Test","no shutdown"]}'

Rules:

  • Do NOT include configure terminal, conf t, or end — the tool handles mode transitions
  • DO include exit commands when you need to return to a higher config context
  • Preserves indentation for submode commands (route-maps, ACLs, etc.)
  • Blocked commands: write erase, erase, reload, delete, format
4. pyats_show_running_config

Retrieve the full running configuration from a device.

  • device_name (string): Target device
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_show_running_config '{"device_name":"R1"}'

Use when: Capturing configuration baselines, auditing config, pre/post change verification.

5. pyats_show_logging

Fetch system logs (last 250 entries) from a device.

  • device_name (string): Target device
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_show_logging '{"device_name":"R1"}'

Use when: Checking for errors, tracebacks, interface flaps, protocol events after changes.

6. pyats_ping_from_network_device

Execute ping from the network device itself (not from the MCP client).

  • device_name (string): Source device
  • command (string): Ping command (e.g., ping 8.8.8.8, ping 10.0.0.1 repeat 100 source Loopback0)
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_ping_from_network_device '{"device_name":"R1","command":"ping 8.8.8.8"}'

Returns: Structured JSON with success rate %, RTT stats, packet loss when Genie parsing succeeds.

Show full SKILL.md (375 more words)Show less
7. pyats_run_linux_command

Execute shell commands on Linux-based devices in the testbed.

  • device_name (string): Linux-capable device
  • command (string): Shell command

Use when: The testbed includes Linux hosts (containers, VMs) for system administration tasks.

8. pyats_run_dynamic_test

Execute a complete pyATS AEtest validation script inline. The script runs in a sandboxed environment.

  • test_script_content (string): Complete Python AEtest script
bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "${PYATS_PYTHON:-python3} -u $PYATS_MCP_SCRIPT" pyats_run_dynamic_test '{"test_script_content":"import logging\nfrom pyats import aetest\n\nlogger = logging.getLogger(__name__)\n\nTEST_DATA = {\"expected_interfaces\": [\"GigabitEthernet1\", \"Loopback0\"]}\n\nclass InterfaceTest(aetest.Testcase):\n    @aetest.test\n    def verify_interfaces(self):\n        for intf in TEST_DATA[\"expected_interfaces\"]:\n            logger.info(f\"Checking interface: {intf}\")\n            assert intf.startswith(\"Gi\") or intf.startswith(\"Loop\"), f\"Unexpected interface type: {intf}\"\n\nif __name__ == \"__main__\":\n    aetest.main()"}'

Rules:

  • Must define TEST_DATA as a Python dict literal (not loaded from file/network)
  • Cannot connect to devices (embed all data inline)
  • 300-second timeout
  • Banned imports: os, sys, subprocess, shutil, socket, pathlib, pickle, yaml, requests, urllib, http, ssl
  • Banned functions: __import__(), eval(), exec(), compile(), open(), json.loads()

Use when: Complex pass/fail validation, multi-step assertions, compliance checks on data already collected via show commands.

Alternative: Direct Python pyATS

For operations beyond the 8 MCP tools, use pyATS directly:

python
from pyats.topology import loader
tb = loader.load('$PYATS_TESTBED_PATH')
device = tb.devices['R1']
device.connect(learn_hostname=True, log_stdout=False)
output = device.parse('show ip interface brief')
print(output)
device.disconnect()
Genie Learn (multi-command feature snapshots)
python
from genie.testbed import load
testbed = load('$PYATS_TESTBED_PATH')
dev = testbed.devices['R1']
dev.connect(learn_hostname=True, log_stdout=False)

# Learn returns an OS-agnostic normalized data model
ospf = dev.learn('ospf')       # Neighbors, interfaces, database, areas, LSAs
bgp = dev.learn('bgp')         # Neighbors, address-families, routes, state
intf = dev.learn('interface')   # All interfaces: status, IP, counters, MTU, speed
routing = dev.learn('routing')  # Full routing table from all protocols
platform = dev.learn('platform') # Hardware, modules, images, slots

print(ospf.info)
dev.disconnect()

All 34 learnable features: acl, arp, bgp, config, device, dot1x, eigrp, fdb, hsrp, igmp, interface, isis, lag, lisp, lldp, mcast, mld, msdp, nd, ntp, ospf, pim, platform, prefix_list, rip, route_policy, routing, static_routing, stp, terminal, utils, vlan, vrf, vxlan.

Genie Diff (state comparison)
python
from genie.utils.diff import Diff

# Capture before state
before = dev.learn('ospf')

# ... make changes ...

# Capture after state
after = dev.learn('ospf')

diff = Diff(before.info, after.info)
diff.findDiff()
print(diff)  # Shows + additions and - deletions

Failure Behavior

  • If a tool call fails with an authentication or connection error, check that PYATS_MCP_SCRIPT, PYATS_TESTBED_PATH are set and valid before assuming a data or device problem.
  • On a tool error (timeout, unreachable host, malformed response), report the failure and its error message directly to the user rather than fabricating or guessing at results.
  • For a confirmed read-only call, check connectivity and retry once if appropriate. For any call that changes state or sends a message, a timeout does not prove the action failed: inspect current state or delivery status before retrying, preserve the required approval/change gates, and do not repeat an action whose outcome is unknown.

MCP Tasks

For eligible tools, a client declaring the current Tasks extension may receive a task handle. Retain it and poll for the terminal result; do not resubmit pending work. Ordinary clients continue receiving foreground results. A handle is not execution success or approval: preserve required baseline/change-control checks before invocation and verify the completed result afterward. Cancellation cannot undo commands already sent. Investigate unknown outcomes before retrying. pyATS retains completed results in SQLite and lets started work finish; other FastMCP tools default to ephemeral state and cooperative cancellation. See docs/MCP-TASKS.md.

© automateyournetwork, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in workspace/skills/pyats-network of automateyournetwork/netclaw.

Open the folder on GitHubat commit 95bb17e

Compare with similar skills

Pyats Network next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pyats Network compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pyats Network this skillautomateyournetwork/netclaw676—~2.8kAutomated safety check: PassApache-2.0
Engine Whats Newflutter/flutter179k—~978Automated safety check: PassBSD-3-Clause
OdevioOdevio/Odevio-CLI423—~7.6kAutomated safety check: PassMIT
Jetpack Composedarriousliu/PiPixiv263—~1.5kAutomated safety check: PassApache-2.0
Ccapwysaid/CameraCapture191—~1.4kAutomated safety check: PassMIT
Maui AI DebuggingRedth/Maui.Gtk101—~4.1kAutomated safety check: PassMIT

Similar skills

  • Engine Whats New

    flutter/flutter

    Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).

    179k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • Odevio

    Odevio/Odevio-CLI

    Take a Flutter project to an iPhone or the App Store with Odevio - build, sign and publish iOS apps from Windows, Linux or macOS with no Mac and no Xcode.

    423 GitHub stars~7.6k tokensUpdated 15 days ago
    MobileAuto-check passed
  • Jetpack Compose

    darriousliu/PiPixiv

    Jetpack Compose expert skill for Android UI development. An agent skill from darriousliu/PiPixiv.

    263 GitHub stars~1.5k tokensUpdated yesterday
    MobileAuto-check passed
  • Ccap

    wysaid/CameraCapture

    Install or use the ccap CLI for camera capture, webcam inspection, device listing, frame capture, and video metadata.

    191 GitHub stars~1.4k tokensUpdated 3 mo ago
    MobileAuto-check passed
  • Maui AI Debugging

    Redth/Maui.Gtk

    End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.

    101 GitHub stars~4.1k tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Install Mimi Remote

    gaixianggeng/mimi-remote

    安装、配置、配对、迁移、升级、诊断、回滚或卸载 Mimi Remote;在 macOS 上安装和维护 Mimi Remote Mac 菜单栏 App / DMG,或通过 Homebrew、Linux user-systemd 部署 agentd;从源码构建 iPhone/iPad App;配置 Codex 主通道和可选 Claude Code 实验 Runtime。用户提出“安装 Mimi…

    104 GitHub stars~2.8k tokensUpdated yesterday
    MobileAuto-check passed

More from automateyournetwork/netclaw

All 120 skills in this repo
  • EVE-NG Lab Topology Design

    automateyournetwork/netclaw

    Entry point for designing EVE-NG network labs: classifies the request, gathers missing requirements, proposes options and validates the resulting topology.

    676 GitHub stars~612 tokensUpdated 4 days ago
    Auto-check passed
  • ACI Policy Change Deployment

    automateyournetwork/netclaw

    Deploys Cisco ACI policy changes only behind an approved ServiceNow Change Request, capturing pre and post-change fault baselines and rolling back automatically on a fault delta.

    676 GitHub stars~4.2k tokensUpdated 4 days ago
    Auto-check passed
  • Cisco ACI Fabric Health Audit

    automateyournetwork/netclaw

    Runs a phased health audit of a Cisco ACI fabric through MCP tools: node status, links, tenant and policy review, faults and endpoint learning.

    676 GitHub stars~2.9k tokensUpdated 4 days ago
    Auto-check passed
  • Anta Validation

    automateyournetwork/netclaw

    Validate Arista EOS network state against ANTA's pre-built 208-test catalogue, with structured pass/fail verdicts.

    676 GitHub stars~1.2k tokensUpdated 4 days ago
    Auto-check passed
  • Arista Cvp

    automateyournetwork/netclaw

    Arista CloudVision Portal (CVP) automation via REST API — device inventory, events, connectivity monitoring, tag management (4 tools).

    676 GitHub stars~2.2k tokensUpdated 4 days ago
    Auto-check: notes
  • AWS Cloud Monitoring

    automateyournetwork/netclaw

    AWS CloudWatch monitoring — metrics, alarms, log queries, VPC flow log analysis, network performance.

    676 GitHub stars~1k tokensUpdated 4 days ago
    Auto-check passed

Works with

Categories

Questions about Pyats Network

What does Pyats Network do?

Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices. Pyats Network is an agent skill from automateyournetwork/netclaw. Network device automation via pyATS - run show commands, ping, apply config, learn config/logging, list devices, run Linux commands on Cisco IOS-XE/NX-OS devices.

When should I use Pyats Network?

Pyats Network fits situations like: running CLI commands on routers; checking interface status; applying configuration changes; collecting device data via pyATS.

How do I install Pyats Network in Claude Code?

Run `npx skills add automateyournetwork/netclaw --skill pyats-network -a claude-code`. Or copy the skill folder (workspace/skills/pyats-network in automateyournetwork/netclaw) into .claude/skills/pyats-network in your project. Claude Code loads it when a task matches its description.

How do I install Pyats Network in Codex?

Run `npx skills add automateyournetwork/netclaw --skill pyats-network -a codex`. Or copy the skill folder (workspace/skills/pyats-network in automateyournetwork/netclaw) into .agents/skills/pyats-network in your project. Codex loads it when a task matches its description.

Can I use Pyats Network in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add automateyournetwork/netclaw --skill pyats-network -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pyats-network, .gemini/skills/pyats-network, .github/skills/pyats-network and .opencode/skills/pyats-network in your project.

What does Pyats Network need to run?

Going by SKILL.md and its folder, Pyats Network needs the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Pyats Network access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Pyats Network safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pyats Network use?

Pyats Network is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pyats Network use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pyats Network?

Skills that share tags, products or a category with Pyats Network: Engine Whats New (flutter/flutter, 179k stars), Odevio (Odevio/Odevio-CLI, 423 stars), Jetpack Compose (darriousliu/PiPixiv, 263 stars) and Ccap (wysaid/CameraCapture, 191 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pyats Network?

automateyournetwork (a GitHub user) maintains it in automateyournetwork/netclaw, which has 676 GitHub stars. The repository holds 120 skills in this directory. The repository was last updated on October 5, 2026.

Source: automateyournetwork/netclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.