{"id":"87e1c9a9-9fad-4e1e-a7d7-e1842717efbb","shortId":"s6FFz2","kind":"skill","title":"hardware-io","tagline":"Hardware interfacing and peripheral management for Zephyr RTOS. Covers the sensor subsystem (channels, triggers, fetch/get), pin control (Pinctrl) and multiplexing, GPIO management using Devicetree specs, and SoC-level hardware configurations. Trigger when adding new hardware com","description":"# Zephyr Hardware I/O\n\nInterface with the physical world using Zephyr's standardized driver models and hardware abstraction layers.\n\n## Core Workflows\n\n### 1. Sensor Subsystem\nInteract with various sensors using a uniform API for data fetching and decoding.\n- **Reference**: **[sensors.md](references/sensors.md)**\n- **Key Tools**: `sensor_sample_fetch`, `sensor_channel_get`, `struct sensor_value`.\n\n### 2. Pinctrl & GPIO\nManage pin multiplexing, electrical configuration, and basic digital input/output.\n- **Reference**: **[pinctrl_gpio.md](references/pinctrl_gpio.md)**\n- **Key Tools**: `pinctrl`, `gpio_dt_spec`, `GPIO_DT_SPEC_GET`.\n\n### 3. SoC Configuration\nTune chip-level parameters and manage hardware across multiple board variants.\n- **Reference**: **[soc_config.md](references/soc_config.md)**\n- **Key Tools**: `Kconfig`, `soc_common.dtsi`, SoC-level overlays.\n\n## Quick Start (Sensor Polling)\n```c\n#include <zephyr/drivers/sensor.h>\n\nconst struct device *temp_sensor = DEVICE_DT_GET(DT_ALIAS(ambient_temp0));\nstruct sensor_value val;\n\nvoid poll_sensor(void) {\n    if (sensor_sample_fetch(temp_sensor) == 0) {\n        sensor_channel_get(temp_sensor, SENSOR_CHAN_AMBIENT_TEMP, &val);\n    }\n}\n```\n\n## Professional Patterns (Hardware Engineering)\n- **Safe GPIO**: Always use `gpio_dt_spec` to ensure polarity and pin number are automatically handled by the driver.\n- **Background Sampling**: Never poll sensors in high-priority threads; use a background work queue. See **[kernel-services](../kernel-services/SKILL.md)** for work-queue patterns.\n- **Deferred Pinctrl**: Define pin states in a shared `.dtsi` to simplify multi-revision hardware support.\n\n## Automation Tools\n- **[gpio_alias_check.py](scripts/gpio_alias_check.py)**: Detect duplicate alias entries across DTS/overlay files.\n\n## Examples & Templates\n- **[sensor_poll_template.c](assets/sensor_poll_template.c)**: Starter polling function with readiness/error checks.\n\n## Validation Checklist\n- [ ] Sensor device nodes resolve correctly and `DEVICE_DT_GET(...)` targets are ready at runtime.\n- [ ] GPIO and pinctrl states match the intended board schematic and polarity rules.\n- [ ] Sensor sampling path returns stable values with expected units/scaling.\n- [ ] Background acquisition does not block high-priority or interrupt-critical code paths.\n\n## Resources\n\n- **[References](references/)**:\n  - `sensors.md`: Reading data, channels, and triggers.\n  - `pinctrl_gpio.md`: Pin multiplexing and GPIO specs.\n  - `soc_config.md`: Multi-variant SoC configuration.\n- **[Scripts](scripts/)**:\n    - `gpio_alias_check.py`: Alias duplication checker for DTS/overlay sets.\n- **[Assets](assets/)**:\n    - `sensor_poll_template.c`: Polling loop starter template.","tags":["hardware","zephyr","agent","skills","beriberikix","agent-skills","agentic-coding","zephyr-rtos"],"capabilities":["skill","source-beriberikix","skill-hardware-io","topic-agent-skills","topic-agentic-coding","topic-zephyr-rtos"],"categories":["zephyr-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/beriberikix/zephyr-agent-skills/hardware-io","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,723 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:41.981Z","embedding":null,"createdAt":"2026-04-18T23:04:55.313Z","updatedAt":"2026-04-24T07:01:41.981Z","lastSeenAt":"2026-04-24T07:01:41.981Z","tsv":"'/kernel-services/skill.md':228 '0':175 '1':61 '2':91 '3':116 'abstract':57 'acquisit':311 'across':127,258 'ad':37 'alia':158,256,348 'alway':192 'ambient':159,183 'api':71 'asset':354,355 'assets/sensor_poll_template.c':266 'autom':250 'automat':204 'background':209,221,310 'basic':100 'block':314 'board':129,296 'c':146 'chan':182 'channel':16,86,177,330 'check':272 'checker':350 'checklist':274 'chip':121 'chip-level':120 'code':322 'com':40 'configur':34,98,118,344 'const':149 'control':20 'core':59 'correct':279 'cover':12 'critic':321 'data':73,329 'decod':76 'defer':234 'defin':236 'detect':254 'devic':151,154,276,281 'devicetre':27 'digit':101 'driver':53,208 'dt':110,113,155,157,195,282 'dts/overlay':259,352 'dtsi':242 'duplic':255,349 'electr':97 'engin':189 'ensur':198 'entri':257 'exampl':261 'expect':308 'fetch':74,84,172 'fetch/get':18 'file':260 'function':269 'get':87,115,156,178,283 'gpio':24,93,109,112,191,194,289,337 'gpio_alias_check.py':252,347 'handl':205 'hardwar':2,4,33,39,42,56,126,188,248 'hardware-io':1 'high':216,316 'high-prior':215,315 'i/o':43 'includ':147 'input/output':102 'intend':295 'interact':64 'interfac':5,44 'interrupt':320 'interrupt-crit':319 'io':3 'kconfig':136 'kernel':226 'kernel-servic':225 'key':80,106,134 'layer':58 'level':32,122,140 'loop':360 'manag':8,25,94,125 'match':293 'model':54 'multi':246,341 'multi-revis':245 'multi-vari':340 'multipl':128 'multiplex':23,96,335 'never':211 'new':38 'node':277 'number':202 'overlay':141 'paramet':123 'path':303,323 'pattern':187,233 'peripher':7 'physic':47 'pin':19,95,201,237,334 'pinctrl':21,92,108,235,291 'pinctrl_gpio.md':104,333 'polar':199,299 'poll':145,166,212,264,268,357,359 'prioriti':217,317 'profession':186 'queue':223,232 'quick':142 'read':328 'readi':286 'readiness/error':271 'refer':77,103,131,325,326 'references/pinctrl_gpio.md':105 'references/sensors.md':79 'references/soc_config.md':133 'resolv':278 'resourc':324 'return':304 'revis':247 'rtos':11 'rule':300 'runtim':288 'safe':190 'sampl':83,171,210,302 'schemat':297 'script':345,346 'scripts/gpio_alias_check.py':253 'see':224 'sensor':14,62,67,82,85,89,144,153,162,167,170,174,176,180,181,213,263,275,301,356 'sensors.md':78,327 'servic':227 'set':353 'share':241 'simplifi':244 'skill' 'skill-hardware-io' 'soc':31,117,139,343 'soc-level':30,138 'soc_common.dtsi':137 'soc_config.md':132,339 'source-beriberikix' 'spec':28,111,114,196,338 'stabl':305 'standard':52 'start':143 'starter':267,361 'state':238,292 'struct':88,150,161 'subsystem':15,63 'support':249 'target':284 'temp':152,173,179,184 'temp0':160 'templat':262,362 'template.c':265,358 'thread':218 'tool':81,107,135,251 'topic-agent-skills' 'topic-agentic-coding' 'topic-zephyr-rtos' 'trigger':17,35,332 'tune':119 'uniform':70 'units/scaling':309 'use':26,49,68,193,219 'val':164,185 'valid':273 'valu':90,163,306 'variant':130,342 'various':66 'void':165,168 'work':222,231 'work-queu':230 'workflow':60 'world':48 'zephyr':10,41,50 'zephyr/drivers/sensor.h':148","prices":[{"id":"7e9a763a-81a6-4bfe-a8a3-558da763241b","listingId":"87e1c9a9-9fad-4e1e-a7d7-e1842717efbb","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:55.313Z"}],"sources":[{"listingId":"87e1c9a9-9fad-4e1e-a7d7-e1842717efbb","source":"github","sourceId":"beriberikix/zephyr-agent-skills/hardware-io","sourceUrl":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/hardware-io","isPrimary":false,"firstSeenAt":"2026-04-18T23:04:55.313Z","lastSeenAt":"2026-04-24T07:01:41.981Z"}],"details":{"listingId":"87e1c9a9-9fad-4e1e-a7d7-e1842717efbb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"beriberikix","slug":"hardware-io","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":"5251a81ef5fddc25e4d96a74e033eb1d0af2bb53","skill_md_path":"skills/hardware-io/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/beriberikix/zephyr-agent-skills/tree/main/skills/hardware-io"},"layout":"multi","source":"github","category":"zephyr-agent-skills","frontmatter":{"name":"hardware-io","description":"Hardware interfacing and peripheral management for Zephyr RTOS. Covers the sensor subsystem (channels, triggers, fetch/get), pin control (Pinctrl) and multiplexing, GPIO management using Devicetree specs, and SoC-level hardware configurations. Trigger when adding new hardware components, configuring pinmux, or developing sensor-based applications."},"skills_sh_url":"https://skills.sh/beriberikix/zephyr-agent-skills/hardware-io"},"updatedAt":"2026-04-24T07:01:41.981Z"}}