skills/debug-thread-network/SKILL.md
Debug and diagnose Thread mesh networks and OpenThread Border Routers. Use when troubleshooting Thread connectivity, analyzing Router Advertisements, testing IPv6 reachability to Thread devices, inspecting Thread Network Data, or diagnosing Border Router configuration issues.
npx skillsauth add emliunix/home.conf debug-thread-networkInstall 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.
Comprehensive toolkit for debugging Thread mesh networks and OpenThread Border Routers.
Run the main diagnostic script to test connectivity and gather network information:
scripts/test_thread_connectivity.sh <border-router-ip>
Example:
scripts/test_thread_connectivity.sh 192.168.50.104
scripts/test_thread_connectivity.sh)Purpose: Comprehensive connectivity test for Thread Border Router
Usage:
scripts/test_thread_connectivity.sh <border-router-ip>
What it tests:
Output: Summary report with pass/fail status for each test
scripts/ipv6_diagnostics.sh)Purpose: Gather complete IPv6 configuration and routing information
Usage:
scripts/ipv6_diagnostics.sh [interface]
Collects:
Output: Formatted diagnostic report
scripts/query_otbr_api.sh)Purpose: Query OpenThread Border Router REST API endpoints
Usage:
scripts/query_otbr_api.sh <border-router-ip> [port]
Endpoints queried:
/get_properties - Network properties/node_information - Node details/topology - Network topology/diagnostics - Full diagnostic info/node/dataset/active - Thread credentialsOutput: JSON responses from each endpoint
scripts/decode_thread_netdata.py)Purpose: Decode Thread Network Data hex string into human-readable format
Usage:
scripts/decode_thread_netdata.py <netdata-hex>
Or pipe from API:
curl -s http://192.168.50.104/diagnostics | \
jq -r '.[0].NetworkData' | \
scripts/decode_thread_netdata.py
Decodes:
Output: Structured TLV analysis with prefix flags
scripts/analyze_ra_packet.sh)Purpose: Capture and analyze Router Advertisement packets
Usage:
sudo scripts/analyze_ra_packet.sh <interface>
Captures:
Output: Parsed RA packet details
When you know the network but not the border router IP:
# Scan for Thread Border Routers on network
scripts/scan_for_otbr.sh 192.168.1
When troubleshooting connectivity issues:
# Step 1: Test connectivity
scripts/test_thread_connectivity.sh 192.168.50.104
# Step 2: Check IPv6 configuration
scripts/ipv6_diagnostics.sh en0
# Step 3: Query Border Router
scripts/query_otbr_api.sh 192.168.50.104
# Step 4: Analyze Router Advertisements
sudo scripts/analyze_ra_packet.sh en0
When analyzing Thread network prefixes and routes:
# Get Network Data and decode
curl -s http://192.168.50.104/diagnostics | \
jq -r '.[0].NetworkData' | \
scripts/decode_thread_netdata.py
When verifying external connectivity to Thread devices:
# Get OMR addresses from border router
OMR_ADDR=$(curl -s http://192.168.50.104/diagnostics | \
jq -r '.[0].IP6AddressList[] | select(startswith("fd03"))')
# Test connectivity
ping6 -c 3 $OMR_ADDR
# Test HTTP over IPv6
curl -s "http://[$OMR_ADDR]/get_properties" | jq
For detailed explanation of Thread IPv6 addressing, see references/thread-addressing.md
For RA packet structure and interpretation, see references/router-advertisements.md
For complete API documentation, see references/otbr-api.md
ping <border-router-ip>ndp -pnetstat -rn -f inet6 | grep fdsysctl net.inet6.ip6.forwardingThis is expected behavior. Mesh-local addresses (fd65::/64) are only reachable from within the Thread mesh. External devices must use OMR addresses instead.
ifconfigicmpv6.type == 134ndp commands for neighbor discoverysysctl net.inet6.ip6.forwardingen0 for Wi-Fi, en1 for Ethernetip -6 commands instead of ndpsysctl net.ipv6.conf.all.forwardingsysctl net.ipv6.conf.eth0.accept_ratest_thread_connectivity.sh firsthttp://[fd03::1]/development
Manages thinking patterns and mental models when switching between different topics or modes. Use when (1) switching from analysis to design, (2) switching from exploration to validation, (3) switching from reading to writing, (4) any topic transition where thinking approach must change, (5) user signals "we're going to sketch/design/build" after analysis phase.
development
Systematic codebase investigation producing structured exploration files (Notes → Facts → Claims). Use when researching unknown systems, tracing code paths, or documenting architecture.
testing
Collaborative design workflow for architecture and system design. Use when the user wants to design or redesign a system, component, or feature. Triggers on phrases like "design", "architecture", "how should we", "what's the best way to", or when the user asks for tradeoff analysis. This skill is for exploration and decision-making, not implementation.
development
Change plan workflow for non-trivial code changes. Create, review, and track changes before implementation.