CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

enip-cip

EtherNet/IP + CIP (TCP 44818 / UDP 2222) attack playbook — List Identity broadcast, pylogix tag-database dump, tag read/write on Allen-Bradley ControlLogix/CompactLogix, CIP Forward Open, PLC mode change (Stop/Run), and historical Rockwell auth-bypass CVEs. North American ICS dominant protocol.

Quality

76%

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/enip-cip/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 dense, execution-focused playbook: nearly every phase delivers runnable commands or code with concrete tooling, statuses, and OPSEC caveats, and the safety gating of write-class operations is commendable. The principal weakness is validation in the destructive phases — write and mode-change steps lack inline verify/read-back checkpoints, capping workflow clarity. Splitting the CVE table and reference links into a one-level-deep reference file would also improve progressive disclosure.

Suggestions

Add an inline verification step to Phase 4 (read the tag back after Write and compare values) and to Phase 5 (re-read controller state or GetPLCTime/identity to confirm the mode change took effect), turning the ZFP read-back requirement into an actual workflow checkpoint.

Move the historical CVE table and external reference links into a one-level-deep reference file (e.g., references/cves.md) and link it from Phase 6, trimming SKILL.md to the patch-check procedure that matters during engagement.

Delete or firm up the speculative Phase 5 pylogix alternative block ('Some pylogix versions expose...') — either verify the exact API/tag for a pinned pylogix version or remove it, since hedged non-executable guidance adds tokens without actionability.

DimensionReasoningScore

Conciseness

The body is command- and code-first with minimal conceptual padding: install commands, discovery commands, and executable pylogix/cpppo snippets dominate, and tables (CVEs, findings) are compact. Minor over-explanation remains — the speculative 'Some pylogix versions expose' alternative block in Phase 5 and commented-out calls add tokens without actionable value — matching the score-4 anchor 'efficient; minor instances that could be trimmed'. Not 5 because those hedged filler blocks prevent every token from earning its place.

4 / 5

Actionability

Most guidance is copy-paste ready: pip installs, nmap invocations, cpppo list_identity commands, complete pylogix enumeration/read/write scripts, and a firmware patch-check snippet. Minor gaps keep it at 4 rather than 5: the Phase 5 cpppo mode-change path is given but never demonstrated end-to-end, and the pylogix 'alternative' is explicitly speculative ('Some pylogix versions expose... verify tag exists first') rather than executable guidance.

4 / 5

Workflow Clarity

The phase sequence (Discover → Enumerate → Read → Write → Mode change → CVEs) is clear and gated by safety warnings, and write status codes are explained. However, this is a destructive-operation skill and inline validation is missing: Phase 4 never instructs a read-back to confirm the write, Phase 5 only prints 'Mode change sent' without verifying controller state, and the read-back confirmation appears only in the ZFP evidence section, not as a workflow step. Per the judging guideline capping destructive workflows without validation at 3, this is the right anchor — not 4, because checkpoints are absent from the workflow itself rather than merely implicit.

3 / 5

Progressive Disclosure

The skill has no bundle files (no references/, scripts/, assets/) and is a single coherent playbook with clear section headers, phased structure, and a references list, making it easy to navigate — matching the score-4 anchor of good structure with minor organization gaps. Not 5 because at ~270 lines, content that could live one level deep (the CVE table detail, Shodan/reference links, the evidence kg_add_node schema) is inlined, and not 3 because nothing is buried and the structure is consistently well-signaled.

4 / 5

Total

15

/

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, well-scoped description that clearly communicates what the skill does across discovery, enumeration, read/write, mode-change, and CVE capabilities. Its main weakness is the absence of any explicit 'when to use' trigger clause, which caps completeness. Adding a 'Use when...' sentence with the natural trigger terms already present in metadata.when_to_use would lift it to the top band.

Suggestions

Add an explicit trigger clause, e.g., 'Use when targeting EtherNet/IP, CIP, port 44818/2222, Allen-Bradley/Rockwell PLCs, or when pylogix/cpppo tools apply.'

Include the natural abbreviation variants ('ENIP', 'EthernetIP') in the description text itself, not only in metadata.when_to_use, so the description alone carries the full trigger coverage.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete, specific actions — 'List Identity broadcast', 'pylogix tag-database dump', 'tag read/write', 'CIP Forward Open', 'PLC mode change (Stop/Run)', and named CVEs — against specific products (Allen-Bradley ControlLogix/CompactLogix) and ports (TCP 44818 / UDP 2222). This is comprehensive coverage of the skill's capabilities with no vague language, matching the score-5 anchor; score 4 would require notable gaps in coverage, which are absent.

5 / 5

Completeness

The 'what' is clearly and comprehensively answered (attack playbook with enumerated capabilities), but there is no 'Use when...' clause or equivalent explicit trigger guidance; the closing 'North American ICS dominant protocol' is a domain fact, not usage guidance. Per the judging guideline, a missing explicit trigger clause caps completeness at 3. Not 4 because 'when' is not weakly present — it is entirely absent.

3 / 5

Trigger Term Quality

Strong natural keyword coverage: 'EtherNet/IP', 'CIP', '44818', '2222', 'Allen-Bradley', 'ControlLogix/CompactLogix', 'pylogix', 'Rockwell', 'PLC'. However, common user phrasings like 'ENIP'/'ethernetip' and tool/protocol synonyms appear only in metadata.when_to_use, not the description itself, so a few natural terms are missing — the score-4 anchor. Not 5 because the abbreviation variants a user would type ('enip', 'ethernetip') are not in the description text.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche — EtherNet/IP + CIP on named ports against named Rockwell products — with trigger terms (44818, pylogix, ControlLogix) that no sibling ICS skill (e.g., Modbus, DNP3, S7comm) would share. Minimal conflict risk matches the score-5 anchor; score 4 would require overlap with closely related skills, which is not the case.

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/enip-cip/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.