{"id":"a0018cd7-a4e8-4c52-a3ef-1233ca76760e","shortId":"rYLMKU","kind":"skill","title":"industrial","tagline":"Industrial communication protocols for Zephyr RTOS. Covers Modbus RTU (serial), Modbus TCP (Ethernet/Wi-Fi), and CANopen basics. Trigger when building factory automation controllers, industrial sensors, or medical equipment interfaces.","description":"# Zephyr Industrial Protocols\n\nBuild robust, industry-standard communication systems using Zephyr's modular industrial protocol stacks.\n\n## Core Workflows\n\n### 1. Modbus RTU (Serial)\nImplement serial-based industrial communication for meters, PLCs, and sensors.\n- **Reference**: **[modbus_rtu.md](references/modbus_rtu.md)**\n- **Key Tools**: `CONFIG_MODBUS`, RS-485 DE/RE handling, Register Mapping.\n\n### 2. Modbus TCP\nBridge industrial data over standard Ethernet or Wi-Fi networks.\n- **Reference**: **[modbus_tcp.md](references/modbus_tcp.md)**\n- **Key Tools**: Port 502, TCP/IP networking, Client/Server patterns.\n\n### 3. CANopen Basics\nIntegrate with complex automation networks using the CANopenNode stack.\n- **Reference**: **[canopen_basics.md](references/canopen_basics.md)**\n- **Key Tools**: Object Dictionary (OD), PDO/SDO, Network Management (NMT).\n\n## Quick Start (Modbus RTU Server)\n```kconfig\n# prj.conf\nCONFIG_MODBUS=y\nCONFIG_MODBUS_SERIAL=y\n```\n```c\n// Initialize a server on a serial device\nconst struct device *dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_modbus_serial));\nstruct modbus_iface_param param = {\n    .mode = MODBUS_MODE_RTU,\n    .server = { .node_addr = 1, .cb = &my_callbacks },\n    .serial = { .baud = 115200, .parity = UART_CFG_PARITY_NONE },\n};\nmodbus_init_server(dev, param);\n```\n\n## Professional Patterns (Reliability & Safety)\n- **RS-485 Hardware Handling**: Always use the devicetree `uart-rs485` property to handle transceiver direction signals automatically at the driver level.\n- **Isolated Communication**: Use galvanically isolated transceivers for both serial and CAN lines in factory environments to prevent damage from ground loops.\n- **Watchdog Integration**: In industrial control, always pair your communication loops with the **watchdog_reliability** pattern (see **specialized** skill) to ensure the system enters a fail-safe state on protocol lockup.\n\n## Automation Tools\n- **[modbus_register_lint.py](scripts/modbus_register_lint.py)**: Validate register map CSV files for duplicate addresses and overlaps.\n\n## Examples & Templates\n- **[modbus_register_map_template.csv](assets/modbus_register_map_template.csv)**: Starter register allocation sheet for Modbus projects.\n\n## Validation Checklist\n- [ ] Modbus RTU request/response exchange succeeds against a known test slave/master.\n- [ ] Modbus TCP endpoint responds on port 502 with correct register mappings.\n- [ ] CANopen node transitions through expected NMT states during startup.\n- [ ] Communication faults trigger safe retry or watchdog-protected recovery behavior.\n\n## Resources\n\n- **[References](references/)**:\n  - `modbus_rtu.md`: Serial Modbus master/slave setup.\n  - `modbus_tcp.md`: Ethernet Modbus client/server patterns.\n  - `canopen_basics.md`: Object Dictionary and PDO mapping.\n- **[Scripts](scripts/)**:\n  - `modbus_register_lint.py`: Register-map consistency checker.\n- **[Assets](assets/)**:\n  - `modbus_register_map_template.csv`: Register planning template.","tags":["industrial","zephyr","agent","skills","beriberikix","agent-skills","agentic-coding","zephyr-rtos"],"capabilities":["skill","source-beriberikix","skill-industrial","topic-agent-skills","topic-agentic-coding","topic-zephyr-rtos"],"categories":["zephyr-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/beriberikix/zephyr-agent-skills/industrial","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add beriberikix/zephyr-agent-skills","source_repo":"https://github.com/beriberikix/zephyr-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.462","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 25 github stars · SKILL.md body (2,976 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T07:01:42.067Z","embedding":null,"createdAt":"2026-04-18T23:04:56.069Z","updatedAt":"2026-04-24T07:01:42.067Z","lastSeenAt":"2026-04-24T07:01:42.067Z","tsv":"'-485':72,194 '1':49,172 '115200':178 '2':77 '3':102 '502':97,310 'addr':171 'address':278 'alloc':287 'alway':197,241 'asset':362,363 'assets/modbus_register_map_template.csv':284 'autom':22,108,267 'automat':210 'base':56 'basic':17,104 'baud':177 'behavior':334 'bridg':80 'build':20,33 'c':140 'callback':175 'canopen':16,103,315 'canopen_basics.md':115,348 'canopennod':112 'cb':173 'cfg':181 'checker':361 'checklist':293 'chosen':156 'client/server':100,346 'communic':3,38,58,216,244,324 'complex':107 'config':69,133,136 'consist':360 'const':148 'control':23,240 'core':47 'correct':312 'cover':8 'csv':274 'damag':232 'data':82 'de/re':73 'dev':151,187 'devic':147,150,152 'devicetre':200 'dictionari':120,350 'direct':208 'driver':213 'dt':153,155 'duplic':277 'endpoint':306 'ensur':255 'enter':258 'environ':229 'equip':28 'ethernet':85,344 'ethernet/wi-fi':14 'exampl':281 'exchang':297 'expect':319 'factori':21,228 'fail':261 'fail-saf':260 'fault':325 'fi':89 'file':275 'galvan':218 'get':154 'ground':234 'handl':74,196,206 'hardwar':195 'ifac':162 'implement':53 'industri':1,2,24,31,36,44,57,81,239 'industry-standard':35 'init':185 'initi':141 'integr':105,237 'interfac':29 'isol':215,219 'kconfig':131 'key':67,94,117 'known':301 'level':214 'line':226 'lockup':266 'loop':235,245 'manag':124 'map':76,273,314,353,359 'master/slave':341 'medic':27 'meter':60 'modbus':9,12,50,70,78,128,134,137,158,161,166,184,290,294,304,340,345 'modbus_register_lint.py':269,356 'modbus_register_map_template.csv':283,364 'modbus_rtu.md':65,338 'modbus_tcp.md':92,343 'mode':165,167 'modular':43 'network':90,99,109,123 'nmt':125,320 'node':170,316 'none':183 'object':119,349 'od':121 'overlap':280 'pair':242 'param':163,164,188 'pariti':179,182 'pattern':101,190,250,347 'pdo':352 'pdo/sdo':122 'plan':366 'plcs':61 'port':96,309 'prevent':231 'prj.conf':132 'profession':189 'project':291 'properti':204 'protect':332 'protocol':4,32,45,265 'quick':126 'recoveri':333 'refer':64,91,114,336,337 'references/canopen_basics.md':116 'references/modbus_rtu.md':66 'references/modbus_tcp.md':93 'regist':75,272,286,313,358,365 'register-map':357 'reliabl':191,249 'request/response':296 'resourc':335 'respond':307 'retri':328 'robust':34 'rs':71,193 'rs485':203 'rtos':7 'rtu':10,51,129,168,295 'safe':262,327 'safeti':192 'script':354,355 'scripts/modbus_register_lint.py':270 'see':251 'sensor':25,63 'serial':11,52,55,138,146,159,176,223,339 'serial-bas':54 'server':130,143,169,186 'setup':342 'sheet':288 'signal':209 'skill':253 'skill-industrial' 'slave/master':303 'source-beriberikix' 'special':252 'stack':46,113 'standard':37,84 'start':127 'starter':285 'startup':323 'state':263,321 'struct':149,160 'succeed':298 'system':39,257 'tcp':13,79,305 'tcp/ip':98 'templat':282,367 'test':302 'tool':68,95,118,268 'topic-agent-skills' 'topic-agentic-coding' 'topic-zephyr-rtos' 'transceiv':207,220 'transit':317 'trigger':18,326 'uart':180,202 'uart-rs485':201 'use':40,110,198,217 'valid':271,292 'watchdog':236,248,331 'watchdog-protect':330 'wi':88 'wi-fi':87 'workflow':48 'y':135,139 'zephyr':6,30,41,157","prices":[{"id":"6a3fb22c-3627-4a24-ae4c-14333c606998","listingId":"a0018cd7-a4e8-4c52-a3ef-1233ca76760e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"beriberikix","category":"zephyr-agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:04:56.069Z"}],"sources":[{"listingId":"a0018cd7-a4e8-4c52-a3ef-1233ca76760e","source":"github","sourceId":"beriberikix/zephyr-agent-skills/industrial","sourceUrl":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/industrial","isPrimary":false,"firstSeenAt":"2026-04-18T23:04:56.069Z","lastSeenAt":"2026-04-24T07:01:42.067Z"}],"details":{"listingId":"a0018cd7-a4e8-4c52-a3ef-1233ca76760e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"beriberikix","slug":"industrial","github":{"repo":"beriberikix/zephyr-agent-skills","stars":25,"topics":["agent-skills","agentic-coding","zephyr-rtos"],"license":"apache-2.0","html_url":"https://github.com/beriberikix/zephyr-agent-skills","pushed_at":"2026-04-20T21:40:18Z","description":"A complete catalog of Agent Skills (agentskills.io) for Zephyr RTOS development.","skill_md_sha":"5d71eb1d2b759f1d40872a2e3d8995274e72c528","skill_md_path":"skills/industrial/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/industrial"},"layout":"multi","source":"github","category":"zephyr-agent-skills","frontmatter":{"name":"industrial","description":"Industrial communication protocols for Zephyr RTOS. Covers Modbus RTU (serial), Modbus TCP (Ethernet/Wi-Fi), and CANopen basics. Trigger when building factory automation controllers, industrial sensors, or medical equipment interfaces."},"skills_sh_url":"https://skills.sh/beriberikix/zephyr-agent-skills/industrial"},"updatedAt":"2026-04-24T07:01:42.067Z"}}