Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add hamzabellouch/agent-skills --skill smart-grid-telemetry-iotgit clone --depth 1 https://github.com/hamzabellouch/agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/hamzabellouch/agent-skills/smart-grid-telemetry-iot)<a href="https://agentmods.dev/skills/hamzabellouch/agent-skills/smart-grid-telemetry-iot"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/smart-grid-telemetry-iot/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/hamzabellouch/agent-skills/smart-grid-telemetry-iot"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/smart-grid-telemetry-iot.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00101 | $0.01274 |
| Opus 5.5 | $0.00040 | $0.00510 |
| Sonnet 5.5 | $0.00020 | $0.00255 |
| Haiku 4.5 | $0.00010 | $0.00127 |
Grade A, and why
smart-grid-telemetry-iot scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 18d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 135 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Smart Grid & Energy Telemetry IoT Skill Guide
This skill governs standard communication protocols, time-series telemetry parsing, and electrical metrics calculation for modern smart grids and renewable microgrid systems.
1. Smart Grid Telemetry Architecture
[ Substation Sensors / Inverters / BESS ]
|-- Modbus TCP (Port 502) / IEC 61850 / DNP3
|-- Electric Metrics: Voltage (V), Current (I), Active Power (kW), Frequency (Hz)
|
v
[ Edge IoT Gateway (Pymodbus / Edge Daemon) ]
|-- Register Polling (Holding Registers: IEEE 754 32-bit Float)
|-- Local Buffer & Network Fault Tolerance
|
v (MQTT / TLS / Kafka)
[ Real-Time Microgrid Energy Management System (EMS) ]
|-- State-of-Charge (SoC) Coulomb Counting
|-- Power Factor & Peak Shaving Automation
|-- Time-Series Storage (TimescaleDB / InfluxDB)
2. Production Code Implementations
A. Modbus TCP Energy Meter Ingestion (Python / pymodbus)
from pymodbus.client import ModbusTcpClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
from pydantic import BaseModel
import time
class MeterTelemetry(BaseModel):
timestamp_epoch: float
voltage_l1_volts: float
current_l1_amps: float
active_power_kw: float
power_factor: float
frequency_hz: float
class SmartMeterReader:
def __init__(self, host: str, port: int = 502, unit_id: int = 1):
self.client = ModbusTcpClient(host=host, port=port)
self.unit_id = unit_id
def connect(self) -> bool:
return self.client.connect()
def read_metrics(self) -> MeterTelemetry:
# Read 10 consecutive holding registers starting at 0x1000
result = self.client.read_holding_registers(address=0x1000, count=10, slave=self.unit_id)
if result.isError():
raise IOError(f"Modbus read error: {result}")
# Decode IEEE 754 32-bit floating point numbers (Big-Endian word order)
decoder = BinaryPayloadDecoder.fromRegisters(
result.registers,
byteorder=Endian.BIG,
wordorder=Endian.BIG,
)
voltage = decoder.decode_32bit_float()
current = decoder.decode_32bit_float()
active_power = decoder.decode_32bit_float()
power_factor = decoder.decode_32bit_float()
frequency = decoder.decode_32bit_float()
return MeterTelemetry(
timestamp_epoch=time.time(),
voltage_l1_volts=round(voltage, 2),
current_l1_amps=round(current, 2),
active_power_kw=round(active_power, 2),
power_factor=round(power_factor, 3),
frequency_hz=round(frequency, 2),
)
def close(self):
self.client.close()
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 18d ago First seen · 135 lines · 101 tokens per session scan A 90c8c406f2a7
smart-grid-telemetry-iot is a skill published in the GitHub repository hamzabellouch/agent-skills (8 stars, last pushed today), licensed MIT. It adds 101 tokens to every session and 1,274 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-29.
Other skills, from other repositories
aerospace-engineering-technician
Use when a task needs the judgment of an Aerospace Engineering and Operations Technologist/Technician — verifying an installed fastener's preload against a drawing's torque callout via the T=K·D·F relationship, reducing strain-gauge data from a structural proof-load test into stress and checking it against an…
automotive-engineering-technician
Use when a task needs the judgment of an Automotive Engineering Technician — setting up and instrumenting test equipment (strain-gauge bridges, thermocouples, load/torque sensors) to an engineer's written test plan, selecting DAQ sample rate and an SAE J211 CFC filter class for a vehicle test channel, verifying…
auto-glass-installer-repairer
Use when a task needs the judgment of an auto-glass installer/repairer — deciding whether a chip or crack qualifies for resin repair versus full replacement, calculating a safe drive-away time for the adhesive and conditions on a job, determining whether a windshield replacement triggers ADAS camera recalibration, or…
avionics-technician
Use when a task needs the judgment of an avionics technician — chasing an intermittent nav/comm or autopilot fault that "checks good" on the ground, deciding whether an avionics upgrade needs an STC or qualifies for field approval, verifying bonding resistance and wire-bundle separation on an install, cross-checking a…
biomass-power-plant-manager
Use when a task needs the judgment of a Biomass Power Plant Manager — running a biomass-fired power generation facility, managing fuel supply logistics and quality variability, evaluating combustion/efficiency problems, or balancing generation output against fuel cost and emissions constraints.
biomedical-engineer
Use when a task needs the judgment of a biomedical/bioengineering engineer — running a design control phase (inputs, outputs, verification, validation) for a medical device, scoring a Design FMEA and deciding whether a failure mode needs mitigation, planning a human factors/usability validation study, building a…