[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JDAP1QQGSS365Z4NQC2PDF":3,"skill-same:01M6JDAP1QQGSS365Z4NQC2PDF":58},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6JDAP1QQGSS365Z4NQC2PDF","network-interface-health",null,"Diagnose interface errors, drops, CRCs, duplex mismatches, flapping, speed negotiation issues, and counter trends on routers, switches, and Linux hosts.","S3YED\u002Fappie-kit","S3YED","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F62743867?v=4","01M6JBKBRRVP6KMS0VWZ27T3R6","01M6JBKBX0KG30284PW1DBYJT1",14,"MIT","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fecc\u002Fnetwork-interface-health\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30],"network","health","interface","network interface health","linux","diagnose","issues","negotiation","community","speed","trends","errors","hosts","2026-11-10 10:12:30",false,"---\nname: network-interface-health\ndescription: Diagnose interface errors, drops, CRCs, duplex mismatches, flapping, speed negotiation issues, and counter trends on routers, switches, and Linux hosts.\norigin: community\n---\n\n# Network Interface Health\n\nUse this skill when a network symptom might be caused by a physical link, switch\nport, cable, transceiver, duplex setting, or congested interface.\n\n## When to Use\n\n- A host or VLAN has packet loss, latency spikes, or intermittent reachability.\n- A switch or router interface shows CRCs, runts, giants, drops, resets, or flaps.\n- You need to compare both ends of a link before replacing hardware.\n- A change window needs before\u002Fafter interface counter evidence.\n- Monitoring reports rising `ifInErrors`, `ifOutErrors`, or `ifOutDiscards`.\n\n## How It Works\n\nInterface counters are evidence, but the trend matters more than the absolute\nnumber. Capture a baseline, wait a measurement interval, capture again, then\ncompare increments.\n\n```text\nshow interfaces \u003Cinterface>\nshow interfaces \u003Cinterface> status\nshow logging | include \u003Cinterface>|changed state|line protocol\n```\n\nOn Linux hosts:\n\n```text\nip -s link show \u003Cinterface>\nethtool \u003Cinterface>\nethtool -S \u003Cinterface>\n```\n\n## Counter Reference\n\n| Counter | Meaning | Common cause |\n| --- | --- | --- |\n| CRC | Received frame checksum failed | Bad cable, dirty fiber, bad optic, duplex mismatch |\n| input errors | Aggregate receive-side errors | Check sub-counters before concluding |\n| runts | Frames below minimum Ethernet size | Duplex mismatch, collision domain, faulty NIC |\n| giants | Frames larger than expected MTU | MTU mismatch or jumbo-frame boundary |\n| input drops | Device could not accept inbound packets | Burst, oversubscription, CPU path, queue pressure |\n| output drops | Egress queue discarded packets | Congestion, QoS policy, undersized uplink |\n| resets | Interface hardware reset | Flapping, keepalive, driver, optic, power |\n| collisions | Ethernet collision counter | Half duplex or negotiation mismatch |\n\n## Diagnosis Flow\n\n### CRCs Or Input Errors\n\n1. Confirm counters are incrementing, not just historical.\n2. Check both ends of the link. Receive-side errors usually point to the signal\n   arriving on that side, not necessarily the port reporting the error.\n3. Replace patch cable or clean\u002Freplace fiber and optics.\n4. Confirm speed\u002Fduplex settings match on both sides.\n5. Check logs for flap events around the same timestamp.\n\n### Drops\n\n1. Separate input drops from output drops.\n2. Compare interface rate against capacity.\n3. Check QoS policy, queue counters, and whether the link is an oversubscribed\n   uplink.\n4. Treat queue tuning as secondary. First prove whether the link is congested.\n\n### Duplex And Speed\n\nPrefer auto-negotiation on modern Ethernet links when both sides support it. If\none side must be fixed, configure both sides explicitly and document why. Never\nmix fixed speed\u002Fduplex on one side with auto on the other.\n\n```text\nshow interfaces \u003Cinterface> | include duplex|speed\n```\n\n## Safe Parser Example\n\nSlice each interface block from one header to the next. Do not use an arbitrary\ncharacter window; large interface blocks can cause counters to be missed or\nassigned to the wrong port.\n\n```python\nimport re\nfrom typing import Any\n\nHEADER_RE = re.compile(\n    r\"^(?P\u003Cname>\\S+) is (?P\u003Cstatus>(?:administratively )?down|up), \"\n    r\"line protocol is (?P\u003Cprotocol>up|down)\",\n    re.I | re.M,\n)\nERROR_RE = re.compile(r\"(?P\u003Cinput>\\d+) input errors, (?P\u003Ccrc>\\d+) CRC\", re.I)\nDROP_RE = re.compile(r\"(?P\u003Coutput>\\d+) output errors\", re.I)\nDUPLEX_RE = re.compile(r\"(?P\u003Cduplex>Full|Half|Auto)-duplex,\\s+(?P\u003Cspeed>[^,]+)\", re.I)\n\ndef parse_show_interfaces(raw: str) -> list[dict[str, Any]]:\n    headers = list(HEADER_RE.finditer(raw))\n    interfaces = []\n    for index, header in enumerate(headers):\n        end = headers[index + 1].start() if index + 1 \u003C len(headers) else len(raw)\n        block = raw[header.start():end]\n        errors = ERROR_RE.search(block)\n        drops = DROP_RE.search(block)\n        duplex = DUPLEX_RE.search(block)\n        interfaces.append({\n            \"name\": header.group(\"name\"),\n            \"status\": header.group(\"status\"),\n            \"protocol\": header.group(\"protocol\"),\n            \"duplex\": duplex.group(\"duplex\") if duplex else \"unknown\",\n            \"speed\": duplex.group(\"speed\").strip() if duplex else \"unknown\",\n            \"input_errors\": int(errors.group(\"input\")) if errors else 0,\n            \"crc_errors\": int(errors.group(\"crc\")) if errors else 0,\n            \"output_errors\": int(drops.group(\"output\")) if drops else 0,\n        })\n    return interfaces\n```\n\n## Examples\n\n### CRCs On One Switch Port\n\n1. Capture counters on the local port.\n2. Capture counters on the connected remote port.\n3. Replace the cable or optic before changing routing or firewall rules.\n4. Clear counters only after recording the baseline.\n5. Recheck after a fixed interval.\n\n### Internet Slow But LAN Is Fine\n\n1. Check WAN interface drops\u002Ferrors.\n2. Check LAN uplink utilization and output drops.\n3. Check gateway CPU if the WAN link is clean but throughput is still low.\n4. Compare wired and wireless tests before blaming upstream service.\n\n## Anti-Patterns\n\n- Clearing counters before saving a baseline.\n- Looking at only one side of a link.\n- Assuming all historical CRCs are active problems without a time window.\n- Mixing auto-negotiation on one side with fixed speed\u002Fduplex on the other.\n- Treating output drops as a cable problem before checking congestion.\n\n## See Also\n\n- Agent: `network-troubleshooter`\n- Skill: `network-config-validation`\n- Skill: `homelab-network-setup`\n","# Network Interface Health\n\nUse this skill when a network symptom might be caused by a physical link, switch\nport, cable, transceiver, duplex setting, or congested interface.\n\n## When to Use\n\n- A host or VLAN has packet loss, latency spikes, or intermittent reachability.\n- A switch or router interface shows CRCs, runts, giants, drops, resets, or flaps.\n- You need to compare both ends of a link before replacing hardware.\n- A change window needs before\u002Fafter interface counter evidence.\n- Monitoring reports rising `ifInErrors`, `ifOutErrors`, or `ifOutDiscards`.\n\n## How It Works\n\nInterface counters are evidence, but the trend matters more than the absolute\nnumber. Capture a baseline, wait a measurement interval, capture again, then\ncompare increments.\n\n```text\nshow interfaces \u003Cinterface>\nshow interfaces \u003Cinterface> status\nshow logging | include \u003Cinterface>|changed state|line protocol\n```\n\nOn Linux hosts:\n\n```text\nip -s link show \u003Cinterface>\nethtool \u003Cinterface>\nethtool -S \u003Cinterface>\n```\n\n## Counter Reference\n\n| Counter | Meaning | Common cause |\n| --- | --- | --- |\n| CRC | Received frame checksum failed | Bad cable, dirty fiber, bad optic, duplex mismatch |\n| input errors | Aggregate receive-side errors | Check sub-counters before concluding |\n| runts | Frames below minimum Ethernet size | Duplex mismatch, collision domain, faulty NIC |\n| giants | Frames larger than expected MTU | MTU mismatch or jumbo-frame boundary |\n| input drops | Device could not accept inbound packets | Burst, oversubscription, CPU path, queue pressure |\n| output drops | Egress queue discarded packets | Congestion, QoS policy, undersized uplink |\n| resets | Interface hardware reset | Flapping, keepalive, driver, optic, power |\n| collisions | Ethernet collision counter | Half duplex or negotiation mismatch |\n\n## Diagnosis Flow\n\n### CRCs Or Input Errors\n\n1. Confirm counters are incrementing, not just historical.\n2. Check both ends of the link. Receive-side errors usually point to the signal\n   arriving on that side, not necessarily the port reporting the error.\n3. Replace patch cable or clean\u002Freplace fiber and optics.\n4. Confirm speed\u002Fduplex settings match on both sides.\n5. Check logs for flap events around the same timestamp.\n\n### Drops\n\n1. Separate input drops from output drops.\n2. Compare interface rate against capacity.\n3. Check QoS policy, queue counters, and whether the link is an oversubscribed\n   uplink.\n4. Treat queue tuning as secondary. First prove whether the link is congested.\n\n### Duplex And Speed\n\nPrefer auto-negotiation on modern Ethernet links when both sides support it. If\none side must be fixed, configure both sides explicitly and document why. Never\nmix fixed speed\u002Fduplex on one side with auto on the other.\n\n```text\nshow interfaces \u003Cinterface> | include duplex|speed\n```\n\n## Safe Parser Example\n\nSlice each interface block from one header to the next. Do not use an arbitrary\ncharacter window; large interface blocks can cause counters to be missed or\nassigned to the wrong port.\n\n```python\nimport re\nfrom typing import Any\n\nHEADER_RE = re.compile(\n    r\"^(?P\u003Cname>\\S+) is (?P\u003Cstatus>(?:administratively )?down|up), \"\n    r\"line protocol is (?P\u003Cprotocol>up|down)\",\n    re.I | re.M,\n)\nERROR_RE = re.compile(r\"(?P\u003Cinput>\\d+) input errors, (?P\u003Ccrc>\\d+) CRC\", re.I)\nDROP_RE = re.compile(r\"(?P\u003Coutput>\\d+) output errors\", re.I)\nDUPLEX_RE = re.compile(r\"(?P\u003Cduplex>Full|Half|Auto)-duplex,\\s+(?P\u003Cspeed>[^,]+)\", re.I)\n\ndef parse_show_interfaces(raw: str) -> list[dict[str, Any]]:\n    headers = list(HEADER_RE.finditer(raw))\n    interfaces = []\n    for index, header in enumerate(headers):\n        end = headers[index + 1].start() if index + 1 \u003C len(headers) else len(raw)\n        block = raw[header.start():end]\n        errors = ERROR_RE.search(block)\n        drops = DROP_RE.search(block)\n        duplex = DUPLEX_RE.search(block)\n        interfaces.append({\n            \"name\": header.group(\"name\"),\n            \"status\": header.group(\"status\"),\n            \"protocol\": header.group(\"protocol\"),\n            \"duplex\": duplex.group(\"duplex\") if duplex else \"unknown\",\n            \"speed\": duplex.group(\"speed\").strip() if duplex else \"unknown\",\n            \"input_errors\": int(errors.group(\"input\")) if errors else 0,\n            \"crc_errors\": int(errors.group(\"crc\")) if errors else 0,\n            \"output_errors\": int(drops.group(\"output\")) if drops else 0,\n        })\n    return interfaces\n```\n\n## Examples\n\n### CRCs On One Switch Port\n\n1. Capture counters on the local port.\n2. Capture counters on the connected remote port.\n3. Replace the cable or optic before changing routing or firewall rules.\n4. Clear counters only after recording the baseline.\n5. Recheck after a fixed interval.\n\n### Internet Slow But LAN Is Fine\n\n1. Check WAN interface drops\u002Ferrors.\n2. Check LAN uplink utilization and output drops.\n3. Check gateway CPU if the WAN link is clean but throughput is still low.\n4. Compare wired and wireless tests before blaming upstream service.\n\n## Anti-Patterns\n\n- Clearing counters before saving a baseline.\n- Looking at only one side of a link.\n- Assuming all historical CRCs are active problems without a time window.\n- Mixing auto-negotiation on one side with fixed speed\u002Fduplex on the other.\n- Treating output drops as a cable problem before checking congestion.\n\n## See Also\n\n- Agent: `network-troubleshooter`\n- Skill: `network-config-validation`\n- Skill: `homelab-network-setup`\n",{"name":5,"origin":26,"description":7},"master","8ec37df6d71fb664ea19d32c079e7d3ff931a8e0","skills\u002Fecc\u002Fnetwork-interface-health",3,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit","https:\u002F\u002Fweblyfe.ai","https:\u002F\u002Fgithub.com\u002FS3YED","2026-08-27 01:54:02",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add S3YED\u002Fappie-kit --skill network-interface-health",{"tool":50,"command":51},"bunx","bunx skills add S3YED\u002Fappie-kit --skill network-interface-health",{"tool":53,"command":54},"pnpm","pnpm dlx skills add S3YED\u002Fappie-kit --skill network-interface-health","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fecc\u002Fnetwork-interface-health\u002FSKILL.md",true,[],[59,95,130,156,186,211],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":76,"publishedAt":31},"01M6JFD4M6N4DSGC7TXEJ5R3J2","ai-music","AI music generation and audio tools: HeartMuLa lyrics-to-music generation, songwriting craft (+ Suno prompts), and audio spectrogram\u002Ffeature visualization.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fwethlete\u002Fai-music\u002FSKILL.md",[65,70,73],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":71,"categoryName":72,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":74,"categoryName":75,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000023","Skill与智能体开发",[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],"music","ai music","humanizer","visualization","Tools","Audio","hermes","hermes agent","songwriting","suno","lyrics","prompts","heartmula","craft","generation","feature","ai music generation","music generation",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":109,"publishedAt":31},"01M6JFCZE4XNFQFMNZDHKHT5V5","agentic-webdesign-design-system-ingestion","Use v0 Design Systems 2.0, Bolt Design System Agents, or Lovable to generate production UI from a client's real design system components — not generic Tailwind. Use when building a client website where brand consistency matters.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-design-system-ingestion\u002FSKILL.md",[101,104],{"categoryNo":102,"categoryName":103,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129],"design","agentic","design system","system","ingestion","webdesign","agentic webdesign design system ingestion","components","generate","design systems","website","ui","Tailwind","bolt","lovable","v0","design-system","wed","design system components","appie",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":31},"01M6JFCVPX3913CFAS6QQJ33ZB","agentic-webdesign-agent-elements","Use 21st.dev Agent Elements — 25 shadcn\u002Fui components purpose-built for AI agent UIs. Tool cards (Bash, Edit, Search, Plan, Subagent, MCP), chat, input, streaming. Open source, shadcn-registry install, no runtime lock-in.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-agent-elements\u002FSKILL.md",[136,137],{"categoryNo":74,"categoryName":75,"taxonomyType":68,"taxonomyTypeDesc":69},{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},[111,139,115,140,141,142,117,143,144,145,146,147,148,149,150,151,152,153,154,155],"elements","agentic webdesign agent elements","MCP","ai agent","registry","search","streaming","open source","open","Bash","plan","subagent","edit","install","input","lock","source",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":166,"publishedAt":31},"01M6JFCQC7H65M9QJ6TRE71BS1","vercel-deployment","Deploy static sites and frontends to Vercel — handles both CLI and REST API paths, including the CLI token sanitization workaround.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fvercel-deployment\u002FSKILL.md",[162,165],{"categoryNo":163,"categoryName":164,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":74,"categoryName":75,"taxonomyType":68,"taxonomyTypeDesc":69},[167,168,169,170,171,22,172,173,174,175,176,177,178,179,180,181,182,183,184,185],"deployment","vercel deployment","vercel","macos","cli","windows","deploy","vercel deploy","REST","api","site","deploy to vercel","token","rest api","host","sites","paths","sanitization","static site",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":193,"publishedAt":31},"01M6JFCM4SMTXBM5A01BK2YQG1","software-quality-workflows","Umbrella workflow for TDD, debugging, code simplification, spikes, pre-commit review, and debugger-assisted investigation.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fsoftware-quality-workflows\u002FSKILL.md",[192],{"categoryNo":74,"categoryName":75,"taxonomyType":68,"taxonomyTypeDesc":69},[194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210],"workflows","quality","software","software quality workflows","review","tdd","workflow","commit","debugging","code","debugger","pre-commit","investigation","code simplification","user","simplification","for",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":215,"categories":216,"keywords":224,"publishedAt":31},"01M6JFCGD0M6CEATY01W7YN6DB","react-component-refactoring","Safely refactor large React components into smaller, maintainable pieces using proven patterns","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Freact-component-refactoring\u002FSKILL.md",[217,220,223],{"categoryNo":218,"categoryName":219,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":221,"categoryName":222,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":74,"categoryName":75,"taxonomyType":68,"taxonomyTypeDesc":69},[225,226,227,228,229,230,231,232,170,233,234,117,235,172,236,203,237,238,239,240],"react","component","refactoring","component refactoring","react component","react component refactoring","frontend","writing","safe","typescript","react components","modular","refactor","simplify","patterns","test-driven-development"]