CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ics-ot-overview

ICS / OT attack category — Modbus, BACnet, S7Comm, DNP3. Routing skill: fingerprint the industrial protocol by port + Wireshark dissector, then load the matching sub-skill. SAFETY-CRITICAL: always confirm written scope before any write/control class action.

Quality

74%

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/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

68%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.

A tight, actionable router with an executable fingerprint sweep and a concrete port/fingerprint routing table, plus a prominent safety gate. Weaknesses are the implicit workflow checkpoints (no validation after the sweep, no scope-confirmation procedure despite write/control-class operations) and the unspecified mechanism for loading the referenced sub-skills.

Suggestions

Make the workflow explicit with verification checkpoints: after the sweep, confirm the port and Wireshark dissector fingerprint agree before loading the sub-skill, and state a concrete scope-confirmation procedure (e.g., ask the user and record authorization) before any write/control action.

Specify how sub-skills are loaded — a path, skill name, or invocation command — since the routing table's Sub-skill column is currently bare names with no resolvable reference.

Trim the duplicated opening line and the tangential closing sentence about detection thresholds to tighten the token budget.

DimensionReasoningScore

Conciseness

The body is mostly lean tables plus one executable command, with no padding explaining concepts Claude already knows. Minor instances could be trimmed: the opening line ("This is a routing skill for industrial protocol engagements. Identify the protocol by port + wire format...") duplicates the frontmatter description, and the closing sentence "Understanding what defenders see helps you stay below detection thresholds" is tangential to routing. Anchor 4 fits; not 5 because some tokens do not earn their place, not 3 because there is no unnecessary explanation.

4 / 5

Actionability

The fingerprint sweep is copy-paste ready with real nmap script names, and the routing table gives concrete ports and wire fingerprints ("MBAP header, function codes 1-127", "Start bytes 0x05 0x64"). Minor gaps keep it at anchor 4: "load the matching sub-skill" states no mechanism or path for loading, and the tooling table lists tool names without any usage example. It is well above anchor 3 since nothing is pseudocode and the main command is executable as written.

4 / 5

Workflow Clarity

A rough sequence is present (fingerprint sweep → match port + wire fingerprint → load sub-skill) and the safety rule "Confirm written scope authorization for any write/control class operation... If unsure, default to read-only" is stated, but checkpoints are implicit: there is no procedure for confirming scope, no verification step after the batch /24 sweep (e.g., confirming the dissector/port match before routing), and no feedback loop. Because the workflow spans batch network scanning and write/control-class operations on physical equipment without validation steps, the cap at 3 applies; not 4 because the validation gaps are not minor.

3 / 5

Progressive Disclosure

The body is a single-file skill under 50 lines with well-organized sections (SAFETY FIRST, Protocol routing, Quick fingerprint sweep, Useful tooling, Defender baseline), and the sub-skill references sit one level deep in a clearly labeled table column. It is held to anchor 4 rather than 5 because the sub-skill references are name-only with no paths or links and cannot be resolved against any bundle (no references/ directory exists), and the Defender baseline section is tangential to the routing purpose; it exceeds anchor 3 because structure and signaling are otherwise clear.

4 / 5

Total

15

/

20

Passed

Description

70%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 specific, distinctive routing description that names concrete actions and the exact protocol triggers, with a well-placed safety gate. Its main weakness is the absence of an explicit "Use when..." clause and of common synonyms like SCADA and PLC, leaving the "when" only weakly implied.

Suggestions

Add an explicit trigger clause, e.g. "Use when engaging ICS/OT, SCADA, PLC, or industrial environments, or when Modbus, BACnet, S7Comm, DNP3, EtherNet/IP, or OPC UA traffic is in scope."

Include the missing natural synonyms (SCADA, PLC, industrial) in the description itself, since users often say those before naming a protocol.

Name the remaining routed protocols (EtherNet/IP, PROFINET, OPC UA) so the stated coverage matches the routing table in the body.

DimensionReasoningScore

Specificity

The description lists several concrete actions — "fingerprint the industrial protocol by port + Wireshark dissector, then load the matching sub-skill" plus "always confirm written scope before any write/control class action" — but coverage has minor gaps (only Modbus, BACnet, S7Comm, DNP3 of seven routed protocols are named). It fits anchor 4 ("lists several specific actions; minor gaps") better than 3 because it names more than 1-2 actions, and not 5 because the action list is not comprehensive.

4 / 5

Completeness

The "what" is clear ("Routing skill: fingerprint the industrial protocol by port + Wireshark dissector, then load the matching sub-skill"), but there is no "Use when..." clause or equivalent explicit trigger guidance — the protocol names only weakly imply when to use it. Per the judging guideline, a missing explicit trigger clause caps completeness at 3; not 4 because the "when" is never stated explicitly.

3 / 5

Trigger Term Quality

"ICS", "OT", "Modbus", "BACnet", "S7Comm", "DNP3" are natural terms users would say when needing this skill, giving good keyword coverage. It falls short of anchor 5 because common variations are missing — "SCADA", "PLC", "industrial", "EtherNet/IP", "OPC UA" — but it exceeds anchor 3 since the protocol names are exactly the natural phrases, not just jargon.

4 / 5

Distinctiveness Conflict Risk

"ICS / OT attack category — Modbus, BACnet, S7Comm, DNP3" carves out a clear niche with distinct protocol-level triggers, so it is unlikely to fire for the wrong skill. It matches anchor 5 (clear niche with distinct triggers; minimal conflict risk) rather than 4, since generic network or web skills would not share these triggers.

5 / 5

Total

16

/

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.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

PurpleAILAB/Decepticon

Path

packages/decepticon/decepticon/skills/standard/exploit/ics-ot/SKILL.md

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.