Diagnose interface errors, drops, CRCs, duplex mismatches, flapping, speed negotiation issues, and counter trends on routers, switches, and Linux hosts.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "network-interface-health" skill from askskill: 1. Download https://raw.githubusercontent.com/affaan-m/ECC/main/skills/network-interface-health/SKILL.md 2. Save it as ~/.claude/skills/network-interface-health/SKILL.md 3. Reload skills and tell me it's ready
Use this skill when a network symptom might be caused by a physical link, switch port, cable, transceiver, duplex setting, or congested interface.
ifInErrors, ifOutErrors, or ifOutDiscards.Interface counters are evidence, but the trend matters more than the absolute number. Capture a baseline, wait a measurement interval, capture again, then compare increments.
show interfaces <interface>
show interfaces <interface> status
show logging | include <interface>|changed state|line protocol
On Linux hosts:
ip -s link show <interface>
ethtool <interface>
ethtool -S <interface>
| Counter | Meaning | Common cause |
|---|---|---|
| CRC | Received frame checksum failed | Bad cable, dirty fiber, bad optic, duplex mismatch |
| input errors | Aggregate receive-side errors | Check sub-counters before concluding |
| runts | Frames below minimum Ethernet size | Duplex mismatch, collision domain, faulty NIC |
| giants | Frames larger than expected MTU | MTU mismatch or jumbo-frame boundary |
| input drops | Device could not accept inbound packets | Burst, oversubscription, CPU path, queue pressure |
| output drops | Egress queue discarded packets | Congestion, QoS policy, undersized uplink |
| resets | Interface hardware reset | Flapping, keepalive, driver, optic, power |
| collisions | Ethernet collision counter | Half duplex or negotiation mismatch |
Prefer auto-negotiation on modern Ethernet links when both sides support it. If one side must be fixed, configure both sides explicitly and document why. Never mix fixed speed/duplex on one side with auto on the other.
show interfaces <interface> | include duplex|speed
Slice each interface block from one header to the next. Do not use an arbitrary character window; large interface blocks can cause counters to be missed or assigned to the wrong port.
import re
from typing import Any
HEADER_RE = re.compile(
r"^(?P<name>\S+) is (?P<status>(?:administratively )?down|up), "
r"line protocol is (?P<protocol>up|down)",
re.I | re.M,
)
ERROR_RE = re.compile(r"(?P<input>\d+) input errors, (?P<crc>\d+) CRC", re.I)
DROP_RE = re.compile(r"(?P<output>\d+) output errors", re.I)
DUPLEX_RE = re.compile(r"(?P<duplex>Full|Half|Auto)-duplex,\s+(?P<speed>[^,]+)", re.I)
def parse_show_interfaces(raw: str) -> list[dict[str, Any]]:
headers = list(HEADER_RE.finditer(raw))
interfaces = []
for index, header in enumerate(headers):
end = headers[index + 1].start() if index + 1 < len(headers) else len(raw)
block = raw[header.start():end]
errors = ERROR_RE.search(block)
drops = DROP_RE.search(block)
duplex = DUPLEX_RE.search(block)
interfaces.append({
"name": header.group("name"),
"status": header.group("status"),
…
Process documents with OCR, conversion, extraction, redaction, signing, and form filling.
Build robust Django tests with pytest-django, TDD, mocks, factories, and API coverage.
Build robust Python test suites with pytest, TDD, mocking, and coverage.
Learn Rust testing patterns and TDD to improve code quality and reliability.
Research prediction market signals for products, dashboards, agents, and decision intelligence.
Learn frontend patterns for React, Next.js, state, performance, and UI best practices.