CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

lorawan-otaa

LoRaWAN OTAA join-procedure analysis (DevEUI/AppEUI/AppKey extraction), frame-counter replay on ABP devices, downlink injection via rogue gateway, bit-flipping on unprotected FRMPayload, and network enumeration with ChirpStack and the LoRaWAN Auditing Framework.

Quality

77%

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

Quality

Content

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

The skill body is a well-sequenced, largely executable penetration-testing playbook with real verification steps (MIC checks, FCnt detection, evidence hashing) and appropriate OPSEC cautions for destructive operations. Its main weaknesses are the monolithic single-file layout with no reference files, a pseudocode-only final phase, and a trimmable background intro.

Suggestions

Move the frequency table, the AES session-key derivation and FRMPayload encryption recipes, and the ChirpStack rogue-gateway setup into references/ files (e.g., references/crypto-recipes.md, references/chirpstack-setup.md), keeping SKILL.md as a phase-by-phase overview with one key command per phase.

Make Phase 6 executable: provide a runnable script that takes the captured ciphertext, byte offset, and flip mask, recalculates the MIC with NwkSKey, and outputs the modified frame instead of placeholder pseudocode.

Add explicit validation checkpoints before destructive phases (e.g., confirm MIC verification passes and FCnt-check status is confirmed before running the replay, and verify the target DevEUI/AppKey pair resolves in ChirpStack before enqueueing the downlink).

Trim the introductory blockquote and paper citations down to one or two lines, since Claude already knows LoRaWAN's deployment context.

DimensionReasoningScore

Conciseness

The body is dense and command/code-forward with comments that earn their place, but contains trimmable background explanation Claude does not need: the opening blockquote ('LoRaWAN is deployed globally for smart meters, asset tracking, agriculture, and industrial sensors...') and asides like 'This is documented in Toothpick / LoRaWAN security analysis papers.' This matches the anchor 'Efficient; minor instances of over-explanation that could be trimmed' — the padding is real but localized, so it is not the level-3 'mostly efficient but includes some unnecessary explanation' profile.

4 / 5

Actionability

Most guidance is copy-paste executable: 'rtl_sdr -f 868100000 -s 1000000 -g 40', the gr-lora decode command, LAF scan/replay invocations, and complete Python for MIC verification, session-key derivation, and FRMPayload encryption. Gaps are minor: Phase 6 is placeholder pseudocode ('ciphertext[TARGET_BYTE] ^= FLIP_MASK' with undefined variables), and Phase 5 steps 2-3 ('Register a gateway...', 'Register the target device...') are comment-only directions. This fits 'Mostly executable guidance; concrete code or commands with minor gaps' rather than the fully-executable level 5.

4 / 5

Workflow Clarity

The six phases give a clear capture -> parse -> derive -> replay -> inject -> modify sequence, with verification steps present (MIC verification function in Phase 3, the FCnt-check detection procedure in Phase 4, and sha256 evidence hashing), plus OPSEC gating ('Gate replay tests on explicit operator authorization'). It falls short of level 5 because there are no explicit validate-before-proceeding checkpoints between the destructive phases and Phase 5's setup steps are vague, matching 'Clear sequence with most checkpoints present; minor validation gaps'. The destructive-operation cap at 3 does not apply since verification steps do exist.

4 / 5

Progressive Disclosure

The body is well-sectioned with clear headers, but it is a single ~250-line monolithic file with no bundle files: content that clearly belongs in separate references (the regional frequency table, the full AES session-key/encryption recipes, the ChirpStack setup steps) is inlined, and the References section points to external URLs rather than navigating any internal material. This matches the anchor 'Some structure but could be better organized; content that should be separate is inline' — it is not level 2 (structure is genuinely good) but not level 4 (nothing is split out or signaled as separable).

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

The description is specific, distinctive, and written in third person, naming each concrete capability of the skill with strong domain keywords. Its only material weakness is the absence of any 'when to use' guidance, which both caps completeness and limits its discoverability for users who describe their problem in situational rather than protocol terms.

Suggestions

Append an explicit trigger clause, e.g. 'Use when assessing LoRaWAN device or network security, when the user mentions OTAA/ABP activation, LoRa keys, or replaying LoRaWAN frames.'

Add a few natural synonyms users might say, such as 'LoRa', 'join request', 'sniffer', and 'SDR capture', to the trigger keywords.

Consider mentioning the hardware capture context (e.g., 'with SDR/LoRa sniffer hardware') so users with capture-only needs can self-select.

DimensionReasoningScore

Specificity

The description enumerates concrete, distinct capabilities: 'join-procedure analysis (DevEUI/AppEUI/AppKey extraction)', 'frame-counter replay on ABP devices', 'downlink injection via rogue gateway', 'bit-flipping on unprotected FRMPayload', and 'network enumeration with ChirpStack and the LoRaWAN Auditing Framework'. This matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage' — every phase of the skill body is named, so it is not the level-4 anchor, which requires minor coverage gaps.

5 / 5

Completeness

The 'what' is explicit and multi-part, but there is no 'Use when...' clause or any equivalent trigger guidance in the description — it ends after listing capabilities. This matches the anchor 'Has a clear what but when is missing', and per the judging guidelines a missing explicit trigger clause caps completeness at 3.

3 / 5

Trigger Term Quality

Strong natural domain terms are present: 'LoRaWAN', 'OTAA', 'AppKey', 'DevEUI', 'ABP', 'frame counter', 'replay', 'downlink', 'ChirpStack', 'LoRaWAN Auditing Framework'. A few natural terms users would plausibly say are missing (e.g., 'LoRa' alone, 'join request', 'sniffer/capture', 'SDR'), matching the anchor 'Good keyword coverage; a few natural terms missing' rather than the comprehensive-synonym coverage of level 5.

4 / 5

Distinctiveness Conflict Risk

The niche is clear and highly distinctive (LoRaWAN OTAA/ABP security testing), with triggers like 'AppKey', 'OTAA', 'FRMPayload', and 'ChirpStack' that would not plausibly fire a different skill. This matches the anchor 'Clear niche with distinct triggers; minimal conflict risk'; there is no meaningful overlap risk that would justify level 4.

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/iot/lorawan-otaa/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.