CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

hardcoded-creds

Systematic hunt for hardcoded credentials, API keys, certificates, and default passwords in extracted IoT firmware. Covers /etc/shadow and passwd parsing, busybox httpd configs, telnet/dropbear stanzas, MQTT/cloud API key extraction, and cross-referencing against known default-credential databases.

Quality

82%

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

SKILL.md
Quality
Evals
Security

Quality

Content

82%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, highly actionable playbook: every phase delivers executable commands with concrete paths, hash modes, and detection patterns, sequenced logically with useful OPSEC framing and evidence-capture guidance. The main improvement opportunities are trimming small pockets of restated knowledge and moving the inline vendor default-credential lookup table into a references file.

Suggestions

Move the vendor default-credential matrix (Phase 6) into a references/ file (e.g., references/default-creds.md), keeping only the cross-reference commands inline — it is lookup data that duplicates the linked SecLists resource and inflates the SKILL.md body.

Trim minor over-explanations such as the hash-prefix legend comment in Phase 1; Claude already knows $1$/$5$/$6$ hash identifiers.

Add a brief fallback path for Phase 1 when cracking fails (e.g., try john's incremental mode or move on to Phase 4 strings sweep) to complete the workflow's feedback loop.

DimensionReasoningScore

Conciseness

The body is dominated by lean, comment-terse command blocks ("ROOT=/tmp/squashfs_root # set once; referenced throughout") with no padded prose or tool tutorials. Minor over-explanation remains: the hash-type legend comment ("# $1$ = MD5, $5$ = SHA-256, $6$ = SHA-512, $y$ = yescrypt, no-$ = DES") restates knowledge Claude already has, and the 10-row vendor default-credential table duplicates SecLists content already linked in References. This fits anchor 4 (efficient with minor trimmable instances), not 5.

4 / 5

Actionability

Every phase consists of copy-paste-ready, fully executable commands with concrete paths and arguments: "hashcat -m 1800 \"$ROOT/etc/shadow\" /usr/share/wordlists/rockyou.txt", "unshadow ... | john ... --wordlist=", "trufflehog filesystem \"$ROOT\" --only-verified", plus specific detection regexes ("AKIA[0-9A-Z]{16}", "eyJ[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=]+\.[A-Za-z0-9+/=_-]+") and a fill-in evidence-capture block. This matches the anchor-5 standard of executable commands covering the common cases.

5 / 5

Workflow Clarity

A clear phased sequence (Phase 1 account databases → 2 SSH/dropbear keys → 3 web creds → 4 strings sweep → 5 MQTT/cloud tokens → 6 default-cred cross-reference → 7 TLS keys) with prerequisites up front and evidence capture at the end. Verification checkpoints exist ("|| echo 'shadow not present'" fallback, the Phase 7 modulus-MD5 key/certificate match check "Matching MD5 = key pair is valid and present on device"), but feedback loops are incomplete — e.g., no guidance on what to try when hashcat/john fail to crack or when a tool is missing. This is anchor 4 (clear sequence, most checkpoints, minor gaps); the destructive/batch cap does not apply since the workflow is read-only against an extracted image.

4 / 5

Progressive Disclosure

The skill is a well-organized single file: numbered phase headers, prerequisites, OPSEC notes, and a References section of one-level-deep external URLs — nothing is buried or nested. No bundle files (references/, scripts/, assets/) exist, so nothing is misfiled. However, the ~30-line vendor default-credential matrix in Phase 6 is inline lookup data that could live in a references/ file, which keeps this at anchor 4 (good structure, minor organization gaps) rather than 5 for a 240-line document.

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, third-person description that comprehensively enumerates the skill's concrete capabilities for the IoT firmware credential-hunting niche. Its only structural weakness is that the explicit 'when to use' trigger guidance is relegated to metadata.when_to_use rather than being included in the description field itself.

Suggestions

Append a 'Use when...' clause to the description itself (e.g., 'Use when auditing extracted firmware images for embedded credentials, default logins, or baked-in keys'), since the explicit trigger guidance currently lives only in metadata.when_to_use.

Fold the most natural user phrasings from metadata.when_to_use into the description — e.g., 'SSH keys', 'default login', 'hardcoded secret' — to broaden trigger-term coverage within the description field.

DimensionReasoningScore

Specificity

"Systematic hunt for hardcoded credentials, API keys, certificates, and default passwords in extracted IoT firmware. Covers /etc/shadow and passwd parsing, busybox httpd configs, telnet/dropbear stanzas, MQTT/cloud API key extraction, and cross-referencing against known default-credential databases" lists multiple specific concrete actions with comprehensive coverage of the firmware-credential niche. It matches the anchor-5 example rather than 4 because no sub-area of the domain is left uncovered, and it uses third-person voice ("hunt", "Covers") so no voice penalty applies.

5 / 5

Completeness

The description clearly answers "what" ("Systematic hunt for... Covers /etc/shadow and passwd parsing, busybox httpd configs..."), but contains no "Use when..." clause or equivalent explicit trigger guidance — the trigger terms live only in metadata.when_to_use, a separate frontmatter field outside the description. Per the guideline that a missing 'Use when...' clause caps completeness at 3, this is the anchor-3 case (clear what, when absent), not 4 where 'when' is present but imprecise.

3 / 5

Trigger Term Quality

Natural phrases are present ("hardcoded credentials", "API keys", "default passwords", "IoT firmware") alongside file/technology-specific terms (/etc/shadow, busybox, telnet, dropbear, MQTT). Good coverage overall, but a few common user phrasings ("SSH key", "default login", "hardcoded secret", "firmware password audit") appear only in the separate metadata.when_to_use field, not in the description itself — fits the anchor-4 example ("PDF files, forms, document extraction") rather than the comprehensive synonym coverage of 5.

4 / 5

Distinctiveness Conflict Risk

"extracted IoT firmware", "busybox httpd configs", "telnet/dropbear stanzas", "MQTT/cloud API key extraction" define a clear niche with distinct triggers that would not collide with generic secrets-scanning or web-creds skills. This matches the anchor-5 pattern of a well-bounded domain with specific trigger vocabulary.

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/hardcoded-creds/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.