CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

opcua

OPC-UA (TCP 4840) attack playbook — endpoint enumeration, SecurityPolicy mapping, anonymous/weak-auth abuse, address-space browsing and tag read, HistoryRead exfiltration, Method call for control actions, session-exhaustion DoS. Modern IT/OT DMZ convergence protocol replacing legacy fieldbus.

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

Quality

Content

75%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 strong, phase-structured attack playbook with genuinely executable asyncua code, sensible safety gates on write-class and DoS operations, and dense OPSEC detail. The main weaknesses are minor: a few snippets have small correctness gaps (credential timing, undefined variables), a touch of intro padding, and some long material that could be split into reference files.

DimensionReasoningScore

Conciseness

The body is code-dominant and lean, with prose that adds non-obvious intel (SecurityMode/token enum values, audit NodeIds like ns=0;i=2994, NDR detection notes). Minor over-explanation remains — the vendor-listing intro sentence and a couple of asides like 'GetEndpoints is always available without a session' restate knowledge Claude already has or could be trimmed.

4 / 5

Actionability

Real asyncua idioms throughout — correct exception types (uaerrors.BadUserAccessDenied, BadIdentityTokenRejected), enum decoding, and per-phase runnable scripts. Minor gaps: the brute-force snippet sets credentials inside 'async with Client(...)' where asyncua connects at __aenter__, so the credentials apply after the session is already open, and the Phase 4 fingerprint and Phase 6 method-enumeration snippets reference an undefined 'url' variable.

4 / 5

Workflow Clarity

A clear Phase 1–7 sequence with authorization safety gates ('STOP. Write-class authorization required before executing this phase') and version-check verification before DoS testing, plus exception branches that interpret results ('server may be saturated'). Not fully a 5 because there are no explicit validate→fix→retry feedback loops and some checkpoints exist only as prose gates rather than in-workflow steps.

4 / 5

Progressive Disclosure

Single-file skill with no bundle; sections are well-organized (phases, findings table, evidence, OPSEC, references), navigation is flat, and no references are nested or buried. At ~360 lines, extended material such as the browse-recursion code, credential list, and CVE details could arguably live in reference files, which keeps this below a 5.

4 / 5

Total

16

/

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 enumerates the playbook's capabilities, undermined only by the absence of any explicit 'when to use this' trigger clause and a few missing natural synonyms (SCADA, ICS) in the description field itself.

Suggestions

Append an explicit trigger clause, e.g. 'Use when attacking OPC-UA endpoints (port 4840), enumerating ICS/SCADA services, or when the user mentions opcua, asyncua, SCADA tag reads, or OT protocol assessment.'

Fold a few natural synonyms users actually say — 'SCADA', 'ICS', 'PLC', 'unified architecture' — into the description body rather than keeping them only in metadata.when_to_use.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'endpoint enumeration, SecurityPolicy mapping, anonymous/weak-auth abuse, address-space browsing and tag read, HistoryRead exfiltration, Method call for control actions, session-exhaustion DoS' — giving comprehensive coverage of the playbook's phases with no real gaps.

5 / 5

Completeness

The 'what' is clearly and fully specified, but there is no 'Use when...' clause or equivalent explicit trigger guidance — the closing sentence 'Modern IT/OT DMZ convergence protocol replacing legacy fieldbus' is protocol context, not usage guidance. Per the judging guideline, a missing 'Use when' clause caps completeness at 3.

3 / 5

Trigger Term Quality

Good keyword coverage: 'OPC-UA', 'TCP 4840', 'SecurityPolicy', 'HistoryRead', 'anonymous', 'address-space'. However, common natural terms a user would say — 'SCADA', 'ICS', 'PLC', 'unified architecture' — appear only in metadata.when_to_use, not in the description field itself, so a few natural synonyms are missing.

4 / 5

Distinctiveness Conflict Risk

'OPC-UA (TCP 4840) attack playbook' carves a clear niche with distinct protocol- and port-specific triggers; overlap with any other skill is minimal.

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.

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/opcua/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.