CtrlK
BlogDocsLog inGet started
Tessl Logo

ics-modbus

Modbus TCP attack — port 502 enumeration, coil/holding-register read/write without auth, function-code abuse (FC8 diagnostic, FC43 read-device-id), Modbus-over-Serial via TCP gateway, write-with-no-confirm DoS, value tampering against PLCs.

65

Quality

79%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Critical

Do not install without reviewing

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/exploit/ics-ot/modbus/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

83%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable and concise attack skill with copy-paste-ready code across discovery, read, identify, write, and DoS, but its destructive operations lack embedded validation checkpoints, capping workflow clarity at 3.

Suggestions

Add explicit validation checkpoints to the write-attack workflow (e.g., 'Confirm written scope authorization in writing before any FC5/6/15/16', 'Read back the coil/register after write to confirm effect', 'Prefer read-only enumeration before any write'), so destructive steps are gated by explicit verification.

Consider splitting the write-attack variants and raw-socket FC8 DoS into a separate reference file (e.g., WRITE_ATTACKS.md) to improve progressive disclosure given the body is over 100 lines.

DimensionReasoningScore

Conciseness

The body is lean and assumes Claude's competence — a single terse opener ('Modbus has no authentication and no transport encryption. Port 502 → full PLC control if reachable.') followed by executable code and commands with no padding or explanation of basic concepts; every inline comment earns its place.

5 / 5

Actionability

Fully executable, copy-paste-ready guidance throughout: nmap NSE commands, pymodbus Python snippets, mbtget CLI invocations, and a raw-socket struct-packed FC8 packet, covering enumeration, read, identify, write, and DoS cases.

5 / 5

Workflow Clarity

There is a rough sequence (Discover → Read → Identify → Write) and a strong safety note, but the destructive write/DoS operations lack embedded validation checkpoints (e.g., confirm scope, verify read before write, confirm write took effect, rollback) — per the rubric, destructive/batch operations without validation cap workflow clarity at 3.

3 / 5

Progressive Disclosure

Well-organized single SKILL.md with clear section headers and a one-level-deep external References list (Langill, pymodbus, nmap NSE, IEC 62443); no bundle files exist, content is appropriately inline, though at ~117 lines a few write-attack variants could be split into a reference file.

4 / 5

Total

17

/

20

Passed

Description

75%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A highly specific, distinctive description that comprehensively lists concrete Modbus attack capabilities, but it omits an explicit 'Use when...' trigger clause, capping completeness at 3 despite strong trigger keywords living in metadata.

Suggestions

Add an explicit 'Use when...' clause to the description (e.g., 'Use when attacking Modbus TCP/Serial devices on port 502, or when the user mentions PLCs, SCADA, coils, or holding registers') so trigger guidance lives in the description itself.

Weave natural synonyms such as 'industrial control system', 'ICS', and 'OT' into the description text rather than only into tags, broadening the natural-language triggers.

DimensionReasoningScore

Specificity

The description enumerates many concrete actions — 'port 502 enumeration', 'coil/holding-register read/write without auth', 'function-code abuse (FC8 diagnostic, FC43 read-device-id)', 'Modbus-over-Serial via TCP gateway', 'write-with-no-confirm DoS', 'value tampering' — giving comprehensive coverage of specific capabilities.

5 / 5

Completeness

The 'what' is clear and comprehensive, but the description lacks an explicit 'Use when...' trigger clause — trigger guidance lives only in the separate metadata.when_to_use field — so per the rubric a missing explicit trigger clause caps completeness at 3.

3 / 5

Trigger Term Quality

The description and its metadata.when_to_use include strong natural keywords (modbus, tcp 502, plc, scada, coil, register, fc8, fc43, moxa), but a few natural synonyms a user might say (e.g. 'industrial control system', 'ICS', 'OT') appear only in tags and are not woven into the description's natural phrasing.

4 / 5

Distinctiveness Conflict Risk

The niche is sharply defined (Modbus TCP attacks against PLCs/SCADA) with distinct, domain-specific triggers and minimal risk of conflicting with other skills.

5 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository
PurpleAILAB/Decepticon
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.