CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

entra-device-code-phishing

Entra ID OAuth device-code phishing for token theft, illicit consent grant via malicious app registration with delegated Graph scopes, refresh-token replay, and primary-refresh-token (PRT) abuse concepts.

Quality

85%

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

90%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 body is an exemplar of lean, actionable skill content: real commands, real values, a working feedback loop, and a decision-gate checklist, with essentially no padding. The only real gaps are minor — no recovery guidance in the token-poll error branch and no token validation before replay — plus a tools/detection section that could optionally move to a reference file.

Suggestions

In the polling loop's error branch, add one line of recovery guidance, e.g. 'expired_token → re-request a device code; slow_down → increase sleep interval', to complete the error-recovery feedback loop.

Before Phase 3, add a quick validation step (e.g. decode the access token with jq and confirm scope/tenant) so exfil attempts against a bad or empty token fail fast with a clear cause.

Consider moving the tools catalog and detection-signature lists into a references/ file to keep SKILL.md a pure playbook overview.

DimensionReasoningScore

Conciseness

The body is lean and command-dense: nearly every section is executable code or one-line tactical notes, and the prose that exists (FOCI swap semantics, PRT/TPM binding, refresh-token TTLs, CA-policy workarounds) is non-obvious domain knowledge Claude cannot be assumed to know. Nothing explains concepts Claude already knows, so it fits the every-token-earns-its-place anchor rather than the minor-trimming anchor below.

5 / 5

Actionability

Phases 1-3 are fully copy-paste-ready: exact curl commands against real endpoints, real first-party client IDs, working jq extraction, a complete polling loop, and a concrete consent-URL construction. Placeholders like TENANT, APP_ID, and APP_SECRET are operator-supplied inputs rather than pseudocode, and Phase 4 is honestly labeled as concept-level with real tool commands (roadtx), so the minor-gaps anchor (4) does not apply better than the fully-executable anchor.

5 / 5

Workflow Clarity

The four phases are clearly sequenced, the token-polling loop is an explicit validation feedback loop (authorization_pending retries, success/error branches), and the closing decision gate is a checklist covering CA-policy and consent-disabled branches. It falls short of a 5 because the '*' error branch prints the error with no recovery guidance (e.g. expired_token should re-request a code), and there is no check that the access token is non-empty/scope-valid before Phase 3 replay — minor validation gaps matching the anchor 4.

4 / 5

Progressive Disclosure

No bundle files exist, and the ~150-line single-file body is well-sectioned with clear headers (phases, chains, tools, detection signatures, decision gate), with the one cross-skill pointer ('entra-privesc') a single level deep. The tools catalog and detection-signature lists are short inline line-items that could be externalized but cost little inline, matching the good-structure/minor-gaps anchor rather than the clear-overview-with-referenced-files anchor (5), which the actual file layout does not support.

4 / 5

Total

18

/

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, dense with concrete capability statements, and clearly distinct from other skills. Its main weakness is the complete absence of an explicit 'when to use' clause, which caps completeness and leaves triggering to inference from keywords alone. Adding a 'Use when...' sentence with natural trigger phrases would lift it substantially.

Suggestions

Append an explicit trigger clause, e.g. 'Use when conducting authorized red-team phishing against Entra ID/Azure AD tenants via device-code or OAuth consent flows, or when the user mentions device-code phishing, illicit consent, token theft, or PRT abuse.'

Include common synonyms users actually say ('Azure AD', 'consent phishing', 'OAuth phishing', 'token replay') so the skill matches natural phrasings beyond 'Entra ID' jargon.

Drop the hedging word 'concepts' after 'PRT abuse' so the final capability reads as an action like the others.

DimensionReasoningScore

Specificity

The description lists four concrete, specific capabilities ('device-code phishing for token theft', 'illicit consent grant via malicious app registration with delegated Graph scopes', 'refresh-token replay', 'primary-refresh-token (PRT) abuse'), comprehensively covering the skill's phases. The trailing 'concepts' hedge is the only softness, but the action list is complete, matching the anchor for multiple specific concrete actions with comprehensive coverage rather than the minor-gaps anchor below it.

5 / 5

Completeness

The 'what' is clearly and specifically stated, but there is no 'Use when...' clause or equivalent explicit trigger guidance anywhere in the description, which caps completeness at 3 per the judging guidelines. It is not a 4 because the 'when' is entirely absent rather than present-but-implicit; it is not a 2 because the 'what' half is fully concrete.

3 / 5

Trigger Term Quality

Good natural keyword coverage for the domain ('Entra ID', 'OAuth device-code phishing', 'token theft', 'illicit consent', 'app registration', 'Graph scopes', 'refresh-token replay', 'PRT'), but common synonyms a user might say are missing ('Azure AD', 'consent phishing', 'BEC', 'Azure'). This fits the good-coverage-with-a-few-missing-terms anchor, not the comprehensive synonyms-and-extensions anchor above it.

4 / 5

Distinctiveness Conflict Risk

The description carves out a clear niche (Entra ID token theft via device-code and illicit-consent phishing) with distinct trigger terms (device-code, illicit consent, PRT) that would not naturally collide with other skills. Minimal conflict risk, matching the clear-niche anchor; the anchor below (minor overlap with closely related skills) does not apply since the triggers are unambiguous.

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/cloud/entra-device-code-phishing/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.