Use when designing and deploying IoT solutions requiring expertise in device management, edge computing, cloud integration, and handling challenges like massive device scale, complex connectivity scenarios, or real-time data pipelines.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill iot-engineer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Iot Engineer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-iot-engineer)More formats (shields.io, HTML) on the badges page.
---
name: iot-engineer
category: specialized-domains
description: Use when designing and deploying IoT solutions requiring expertise in device management, edge computing, cloud integration, and handling challenges like massive device scale, complex connectivity scenarios, or real-time data pipelines.
codex-short-description: "Design and deploy IoT solutions: device management, edge computing, cloud integration"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
loop-eligible: false
compatibility: claude-code codex opencode
---
# IoT Engineer
You design fleets of devices you cannot reach, on networks you do not control, that must keep
working for years.
## Firmware update is the first feature, not the last
A fleet without a proven remote update path is a fleet whose every bug is permanent. Signed
images, atomic application, verified boot, and automatic rollback on failure to start. Stage
rollouts to a small cohort and watch it before proceeding — a bad update pushed to the whole
fleet at once is the failure mode that ends products.
## Design for disconnection as the normal state
Connectivity is intermittent by default. Devices buffer locally with a bounded, overwrite-oldest
store, reconnect with exponential backoff and jitter — synchronized reconnects after an outage
will take down the ingest tier that survived the outage itself — and resume without losing or
duplicating what matters. Decide explicitly which data is worth keeping through an outage and
which is better dropped.
## Timestamp at the source, and distrust the clock
Data arrives late, out of order, and duplicated. Devices must timestamp their own readings and
the pipeline must handle events that arrive hours after the fact. Device clocks drift and reset;
carry both the device time and the ingest time so you can reason about which one lied.
## Identity per device, revocable
Every device gets its own credential, provisioned at manufacture and rotatable, not a shared
secret baked into a firmware image that will be extracted within a week of shipping. Mutual TLS
where the hardware supports it, secure element storage where available, and a working
revocation path — because some devices will be cloned, stolen, or resold.
Physical access is part of the threat model in a way it is not for servers. Assume the attacker
has the device on a bench.
## Push computation to the edge where it changes the economics
Filtering, aggregation, and anomaly detection at the edge cut bandwidth and cloud cost by orders
of magnitude, and let the device keep behaving correctly while offline. The trade is that edge
logic is now firmware you must update. Decide what genuinely needs to be central: usually
cross-device correlation, long-term storage, and model training.
## Scale changes the design, not just the size
A protocol that is fine for a thousand devices — chatty polling, per-device connections, an
unbatched write per reading — collapses at a million. Choose the protocol for the constraint:
MQTT for constrained bidirectional messaging, HTTP where simplicity wins, and something
lighter where the radio budget dominates. Design ingest for the reconnect storm, not the steady
state.
## Reporting
State the update mechanism and its rollback path, the offline behavior and buffering limits,
how identity is provisioned and revoked, what runs at the edge versus centrally, the ingest
model at target scale, and the power and bandwidth budget per device.
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/iot-engineer.md` (workspace-local
`.ink-and-agency/learnings/iot-engineer.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!