{"id":"4eda55f3-c9d7-4b90-aee9-117055d331af","shortId":"GP9srs","kind":"skill","title":"arduino-azure-iot-edge-integration","tagline":"Design and implement Arduino integration with Azure IoT Hub and IoT Edge, including secure provisioning, resilient telemetry, command handling, and production guardrails.","description":"# Arduino Azure IoT Edge Integration\n\nUse this skill when the user needs to connect Arduino-class devices to Azure IoT, especially in edge-heavy scenarios (gateways, intermittent networks, offline buffering, and local actuation).\n\n## When to use it\n\nUse this skill for requests such as:\n\n- \"I want to connect Arduino sensors to Azure\"\n- \"How do I send MQTT telemetry to IoT Hub?\"\n- \"I need an edge gateway for field devices\"\n- \"I want cloud-to-device commands and OTA configuration updates\"\n\n## Mandatory documentation review\n\nBefore recommending an IoT Edge topology or runtime behavior, review:\n\n- https://learn.microsoft.com/azure/iot-edge/\n\nIf documentation cannot be consulted, proceed with explicit assumptions and highlight them in a dedicated section.\n\n## Official Arduino references and best practices (required)\n\nBefore proposing firmware, wiring, or communication implementation details, consult official Arduino sources first:\n\n- https://www.arduino.cc/en/Guide\n- https://docs.arduino.cc/\n- https://docs.arduino.cc/language-reference/\n- references/arduino-official-best-practices.md\n\nWhen choosing between implementation alternatives, prioritize official Arduino guidance over community snippets unless there is a clear technical reason to deviate.\n\n## Objectives\n\n- Produce a secure end-to-end reference path from the Arduino device to cloud insights.\n- Handle unstable links (store-and-forward, retries, idempotency).\n- Define an actionable device and cloud backlog.\n\n## Integration patterns\n\n### Pattern A: Arduino direct to IoT Hub\n\nUse when connectivity is stable and cloud latency is acceptable.\n\n- Protocol: MQTT over TLS.\n- Identity: per-device credentials (SAS or X.509).\n- Telemetry payload: compact JSON with timestamp, device ID, metrics, and optional quality flags.\n\n### Pattern B: Arduino to local gateway, then IoT Edge\n\nUse when links are constrained, local control is required, or batching improves cost/reliability.\n\n- Arduino communicates with a local gateway (serial, BLE, local MQTT, RS-485, Modbus bridge).\n- The gateway publishes upstream through the IoT Edge runtime and routes data to IoT Hub.\n- Local modules can filter, aggregate, and trigger actions even during cloud outages.\n\n## Design flow\n\n### 1) Device contract\n\nDefine:\n\n- Sensor catalog and units.\n- Sampling frequency and expected throughput.\n- Message schema versioning strategy.\n- Desired/reported device twin properties to control runtime behavior.\n\n### 2) Security baseline\n\nRequire:\n\n- Unique identity per device.\n- No hardcoded secrets in source code or firmware artifacts.\n- Credential rotation strategy.\n- Signed firmware and a controlled update process when possible.\n\n### 3) Reliability and offline behavior\n\nPlan and document:\n\n- Backoff with jitter.\n- Local queue/buffer strategy with bounded size.\n- Duplicate suppression or downstream idempotent processing.\n- Fallback to last-known-good configuration.\n\n### 4) Cloud and edge routing\n\nDefine routes for:\n\n- Raw telemetry to cold storage.\n- Curated telemetry to hot analytics.\n- Alerts to operations channels.\n- Commands and configuration back to edge/device.\n\n### 5) Observability\n\nSpecify minimum operations telemetry:\n\n- Device heartbeat and firmware version.\n- Connectivity state transitions.\n- Message send success/error counters.\n- Gateway module health and restart reasons.\n\n## Reuse other skills\n\nWhen relevant, combine with:\n\n- `azure-smart-city-iot-solution-builder` for city-wide architecture and phased rollout.\n- `azure-resource-visualizer` for relationship diagrams.\n- `appinsights-instrumentation` for app and service telemetry patterns.\n\nAlso use `references/arduino-official-best-practices.md` as a quality baseline for firmware and hardware recommendations.\n\n## Required output\n\nAlways provide:\n\n1. Chosen connectivity pattern and rationale.\n2. Message contract (fields, units, sample payload).\n3. Security checklist for identity/credentials/updates.\n4. Reliability plan (retry, buffering, dedupe).\n5. Implementation backlog (firmware, gateway, cloud).\n\n## Output template\n\n1. Scenario and assumptions\n2. Recommended architecture\n3. Device and gateway contract\n4. Security and reliability controls\n5. Deployment plan and validation tests\n\n## Guidelines\n\n- Do not propose production deployments with shared credentials across devices.\n- Do not assume always-on connectivity in field deployments.\n- Do not omit command authorization and auditing in actuator scenarios.","tags":["arduino","azure","iot","edge","integration","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot"],"capabilities":["skill","source-github","skill-arduino-azure-iot-edge-integration","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/arduino-azure-iot-edge-integration","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (4,445 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-05-18T18:52:04.591Z","embedding":null,"createdAt":"2026-04-29T06:51:55.657Z","updatedAt":"2026-05-18T18:52:04.591Z","lastSeenAt":"2026-05-18T18:52:04.591Z","tsv":"'-485':302 '/azure/iot-edge/':126 '/en/guide':165 '/language-reference/':169 '1':334,524,556 '2':359,530,560 '3':388,537,563 '4':418,542,568 '5':446,548,573 'accept':243 'across':588 'action':220,327 'actuat':63,608 'aggreg':324 'alert':436 'also':508 'altern':175 'alway':522,594 'always-on':593 'analyt':435 'app':503 'appinsight':500 'appinsights-instrument':499 'architectur':488,562 'arduino':2,10,29,44,79,144,160,178,204,229,271,291 'arduino-azure-iot-edge-integr':1 'arduino-class':43 'artifact':375 'assum':592 'assumpt':135,559 'audit':606 'author':604 'azur':3,13,30,48,82,478,493 'azure-resource-visu':492 'azure-smart-city-iot-solution-build':477 'b':270 'back':443 'backlog':224,550 'backoff':396 'baselin':361,514 'batch':288 'behavior':122,358,392 'best':147 'ble':298 'bound':403 'bridg':304 'buffer':60,546 'builder':483 'cannot':129 'catalog':339 'channel':439 'checklist':539 'choos':172 'chosen':525 'citi':480,486 'city-wid':485 'class':45 'clear':187 'cloud':103,207,223,240,330,419,553 'cloud-to-devic':102 'code':372 'cold':429 'combin':475 'command':24,106,440,603 'communic':155,292 'communiti':181 'compact':258 'configur':109,417,442 'connect':42,78,236,457,526,596 'constrain':282 'consult':131,158 'contract':336,532,567 'control':284,356,383,572 'cost/reliability':290 'counter':463 'credenti':252,376,587 'curat':431 'data':316 'dedic':141 'dedup':547 'defin':218,337,423 'deploy':574,584,599 'design':7,332 'desired/reported':351 'detail':157 'deviat':191 'devic':46,99,105,205,221,251,262,335,352,366,452,564,589 'diagram':498 'direct':230 'docs.arduino.cc':166,168 'docs.arduino.cc/language-reference/':167 'document':112,128,395 'downstream':408 'duplic':405 'edg':5,18,32,53,95,118,277,312,421 'edge-heavi':52 'edge/device':445 'end':197,199 'end-to-end':196 'especi':50 'even':328 'expect':345 'explicit':134 'fallback':411 'field':98,533,598 'filter':323 'firmwar':152,374,380,455,516,551 'first':162 'flag':268 'flow':333 'forward':215 'frequenc':343 'gateway':56,96,274,296,306,464,552,566 'good':416 'guardrail':28 'guidanc':179 'guidelin':579 'handl':25,209 'hardcod':368 'hardwar':518 'health':466 'heartbeat':453 'heavi':54 'highlight':137 'hot':434 'hub':15,91,233,319 'id':263 'idempot':217,409 'ident':248,364 'identity/credentials/updates':541 'implement':9,156,174,549 'improv':289 'includ':19 'insight':208 'instrument':501 'integr':6,11,33,225 'intermitt':57 'iot':4,14,17,31,49,90,117,232,276,311,318,481 'jitter':398 'json':259 'known':415 'last':414 'last-known-good':413 'latenc':241 'learn.microsoft.com':125 'learn.microsoft.com/azure/iot-edge/':124 'link':211,280 'local':62,273,283,295,299,320,399 'mandatori':111 'messag':347,460,531 'metric':264 'minimum':449 'modbus':303 'modul':321,465 'mqtt':87,245,300 'need':40,93 'network':58 'object':192 'observ':447 'offici':143,159,177 'offlin':59,391 'omit':602 'oper':438,450 'option':266 'ota':108 'outag':331 'output':521,554 'path':201 'pattern':226,227,269,507,527 'payload':257,536 'per':250,365 'per-devic':249 'phase':490 'plan':393,544,575 'possibl':387 'practic':148 'priorit':176 'proceed':132 'process':385,410 'produc':193 'product':27,583 'properti':354 'propos':151,582 'protocol':244 'provid':523 'provis':21 'publish':307 'qualiti':267,513 'queue/buffer':400 'rational':529 'raw':426 'reason':189,469 'recommend':115,519,561 'refer':145,200 'references/arduino-official-best-practices.md':170,510 'relationship':497 'relev':474 'reliabl':389,543,571 'request':72 'requir':149,286,362,520 'resili':22 'resourc':494 'restart':468 'retri':216,545 'reus':470 'review':113,123 'rollout':491 'rotat':377 'rout':315,422,424 'rs':301 'runtim':121,313,357 'sampl':342,535 'sas':253 'scenario':55,557,609 'schema':348 'secret':369 'section':142 'secur':20,195,360,538,569 'send':86,461 'sensor':80,338 'serial':297 'servic':505 'share':586 'sign':379 'size':404 'skill':36,70,472 'skill-arduino-azure-iot-edge-integration' 'smart':479 'snippet':182 'solut':482 'sourc':161,371 'source-github' 'specifi':448 'stabl':238 'state':458 'storag':430 'store':213 'store-and-forward':212 'strategi':350,378,401 'success/error':462 'suppress':406 'technic':188 'telemetri':23,88,256,427,432,451,506 'templat':555 'test':578 'throughput':346 'timestamp':261 'tls':247 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'topolog':119 'transit':459 'trigger':326 'twin':353 'uniqu':363 'unit':341,534 'unless':183 'unstabl':210 'updat':110,384 'upstream':308 'use':34,66,68,234,278,509 'user':39 'valid':577 'version':349,456 'visual':495 'want':76,101 'wide':487 'wire':153 'www.arduino.cc':164 'www.arduino.cc/en/guide':163 'x.509':255","prices":[{"id":"3d942be2-3f3b-44f5-aa20-4ec0d14e0842","listingId":"4eda55f3-c9d7-4b90-aee9-117055d331af","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-29T06:51:55.657Z"}],"sources":[{"listingId":"4eda55f3-c9d7-4b90-aee9-117055d331af","source":"github","sourceId":"github/awesome-copilot/arduino-azure-iot-edge-integration","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/arduino-azure-iot-edge-integration","isPrimary":false,"firstSeenAt":"2026-04-29T06:51:55.657Z","lastSeenAt":"2026-05-18T18:52:04.591Z"}],"details":{"listingId":"4eda55f3-c9d7-4b90-aee9-117055d331af","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"arduino-azure-iot-edge-integration","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"0cf58568622295a5b373a78d4ad36b4be8434252","skill_md_path":"skills/arduino-azure-iot-edge-integration/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/arduino-azure-iot-edge-integration"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"arduino-azure-iot-edge-integration","description":"Design and implement Arduino integration with Azure IoT Hub and IoT Edge, including secure provisioning, resilient telemetry, command handling, and production guardrails."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/arduino-azure-iot-edge-integration"},"updatedAt":"2026-05-18T18:52:04.591Z"}}