# domain-iot

This skill turns IoT constraints into Rust design choices: the network drops, power is scarce, the device is physically reachable. It steers the agent toward buffering, retries and TLS.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2700 installs · ★ 1545
- Author: actionbook
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/actionbook/rust-skills/tree/HEAD/skills/domain-iot/SKILL.md
- Updated: 2026-08-23
- HTML: https://affpapa.org/en/nevibecode/skills/domain-iot

## What it does

The skill frames IoT as a set of constraints that drive design. An unreliable network pushes you to offline-first with a local queue; battery power pushes you to sleep modes and minimal allocations; tight resources push you to `no_std` where it fits. Security sits alongside: encrypted traffic and signed firmware, since someone can walk up to the device.

Inside are tables mapping a domain rule to a design constraint and then to a Rust practice, a list of common mistakes, and an MQTT client example built on `rumqttc` that subscribes to commands and publishes telemetry. Environments are compared too: a Linux gateway on `tokio` and `std`, an MCU on `embassy` and `no_std`, or a split hybrid. Crates for MQTT, embedded work, async and logging are named.

The skill is not user-invocable, so there is no slash command to type — it loads as context and kicks in when the agent writes device code. It points at related skills: `domain-embedded`, `m07-concurrency`, `m13-domain-error`, `m10-performance`. On a non-Rust project most of it goes unused, because every table and example is tied to Rust crates.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add actionbook/rust-skills --skill domain-iot -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/domain-iot/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/domain-iot/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add actionbook/rust-skills --skill domain-iot -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/domain-iot/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add actionbook/rust-skills --skill domain-iot -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/domain-iot/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install actionbook/rust-skills domain-iot
```

2. **Manually: put the files in place**
- File: `.github/skills/domain-iot/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add actionbook/rust-skills --skill domain-iot -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/actionbook/rust-skills --path skills/domain-iot
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/domain-iot/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add actionbook/rust-skills --skill domain-iot -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/actionbook/rust-skills/tree/HEAD/skills/domain-iot/SKILL.md

## When to use it
- map IoT constraints onto concrete code decisions
- pick between `std` and `no_std` for a gateway and an MCU
- add a local queue so telemetry survives a network outage
- choose crates for MQTT, async and logging
- spot mistakes like an always-on radio or plaintext MQTT

## Example prompts
- help me design an MQTT client with rumqttc for a battery-powered device
- how should store-and-forward work when the network drops for hours
- review my IoT code for retry, sleep modes and encryption issues

## Similar
- [iot-engineer](https://affpapa.org/en/nevibecode/agents/iot-engineer.md) — subagent · 238 installs
- [rust-no-std](https://affpapa.org/en/nevibecode/skills/rust-no-std.md) — skill · 474 installs
- [embedded-iot-mentor](https://affpapa.org/en/nevibecode/skills/embedded-iot-mentor.md) — skill · 22 installs
- [arduino-azure-iot-edge-integration](https://affpapa.org/en/nevibecode/skills/arduino-azure-iot-edge-integration.md) — skill · 100 installs
- [mqtt-development](https://affpapa.org/en/nevibecode/skills/mqtt-development.md) — skill · 1000 installs
- [rattles-terminal-spinners](https://affpapa.org/en/nevibecode/skills/rattles-terminal-spinners.md) — skill · 497 installs

From the same set: [actionbook/rust-skills](https://affpapa.org/en/nevibecode/by/actionbook/rust-skills.md) — 33 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
