CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

entra-enum

Entra ID / M365 reconnaissance — unauthenticated tenant discovery via OpenID config, GetUserRealm, autodiscover; user enumeration via login response codes and OneDrive; federation/MFA/CA posture; authenticated enumeration with ROADtools (roadrecon), AADInternals, MSGraph.

Quality

80%

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/cloud/entra-enum/SKILL.md
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 lean, highly actionable body of copy-paste-ready commands organized into a clear phased workflow with a decision gate. Weaknesses are minor: duplicated endpoint fetches, silent handling of unmatched error codes, and no error-recovery loops around the batch enumeration.

Suggestions

Deduplicate the repeated openid-configuration and getuserrealm.srf fetches — derive TENANT and the Phase 2 federation fields from the Phase 0 responses.

Add a fallback branch in the enumeration loop for unmatched AADSTS codes so failed or throttled requests are not silently dropped as 'invalid user'.

Add a verification step before the OneDrive enumeration (e.g., confirm the tenant prefix resolves) since the prefix-derived-from-domain assumption can fail.

DimensionReasoningScore

Conciseness

Nearly all executable commands with terse load-bearing comments and no padding or concept explanations, but the openid-configuration and getuserrealm.srf endpoints are each fetched twice in duplicated blocks that could be trimmed.

4 / 5

Actionability

Copy-paste ready curl/PowerShell with concrete URLs, exact AADSTS error-code semantics, a working enumeration loop with randomized sleep, and explained parameter derivation — covering common cases across all phases.

5 / 5

Workflow Clarity

Clear phase 0-3 sequence with an explicit decision-gate checklist and per-item result validation in the enumeration loop, but no error-recovery feedback (unmatched AADSTS codes are silently dropped, the OneDrive TENANT_PREFIX assumption is unverified).

4 / 5

Progressive Disclosure

Well-organized sections in a single-file bundle with no external references needed for the core flow; the tool-specific deep dives (roadrecon, AADInternals) are at the edge of what could be split into separate reference files.

4 / 5

Total

17

/

20

Passed

Description

71%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 description that names concrete endpoints, techniques, and tools across unauthenticated and authenticated enumeration. Its main weakness is the complete absence of a 'Use when...' trigger clause, and it misses common legacy synonyms (Azure AD, Office 365) that users would naturally say.

Suggestions

Add an explicit 'Use when...' trigger clause (e.g., 'Use when performing reconnaissance or user enumeration against an Entra ID / Azure AD / Office 365 tenant').

Include legacy product synonyms users would naturally say — 'Azure AD', 'Office 365', 'O365', 'Azure' — alongside Entra ID and M365.

Narrow 'federation/MFA/CA posture' to enumeration scope (e.g., 'federation/MFA/CA posture discovery') to reduce overlap with sibling entra skills.

DimensionReasoningScore

Specificity

The description lists multiple specific concrete actions with named endpoints and tools — 'tenant discovery via OpenID config, GetUserRealm, autodiscover', 'user enumeration via login response codes and OneDrive', 'authenticated enumeration with ROADtools (roadrecon), AADInternals, MSGraph' — covering both unauthenticated and authenticated paths comprehensively.

5 / 5

Completeness

The 'what' is clear and detailed, but there is no 'Use when...' clause or equivalent explicit trigger guidance; per the judging guidelines a missing trigger clause caps completeness at 3.

3 / 5

Trigger Term Quality

Good keyword coverage ('Entra ID', 'M365', 'tenant discovery', 'user enumeration', 'OneDrive', 'federation', 'MFA', 'roadrecon', 'AADInternals'), but common natural variations users would say — 'Azure AD', 'Office 365'/'O365', 'Azure' — are missing.

4 / 5

Distinctiveness Conflict Risk

Clear niche (Entra ID enumeration/recon) with distinct triggers, but 'federation/MFA/CA posture' overlaps with closely related sibling skills (entra-conditional-access-bypass, entra-privesc) — minor overlap risk.

4 / 5

Total

16

/

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