CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

web-api-enumeration

REST API discovery, GraphQL detection, parameter fuzzing.

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./packages/decepticon/decepticon/skills/standard/recon/web-recon/api-enumeration/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

80%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 command reference: nearly every section is copy-runnable ffuf/curl code with no wasted tokens. The weaknesses are the missing validation layer for batch fuzzing operations and a few executable-detail gaps (the <default_size> placeholder and the prose-only API key pattern list).

Suggestions

Add validation steps after each fuzzing phase, e.g. manually confirm discovered endpoints/parameters, filter ffuf false positives by -fs/-mr, and re-test parameters with different values to distinguish real ones from noise.

Replace the "-fs <default_size>" placeholder with a concrete calibration step, e.g. capture the default response size first (curl the unparameterized page and use its byte count) or use ffuf's -fs auto-filtering workflow.

Turn the "API Key/Token Patterns" prose list into a command, e.g. a grep/regex one-liner for api_key|apiKey|access_token|bearer|jwt over captured responses, and fix the inconsistent wordlist paths (api-wordlist.txt vs /usr/share/wordlists/...).

DimensionReasoningScore

Conciseness

The body is lean and command-first with zero concept explanation: the only prose is the scoping sentence "This sub-skill covers everything between 'the directory tree is mapped' and 'I know what to fuzz'" and terse comments like "# Common API paths", all of which earn their place. Not 4 because there is no over-explanation anywhere that could be trimmed.

5 / 5

Actionability

Concrete executable commands dominate (ffuf with -mc/-fs flags, curl loops for swagger docs, a GraphQL introspection POST with a real query body). Not 5 because "-fs <default_size>" is an undefined placeholder with no calibration step, wordlist paths are inconsistent ("api-wordlist.txt" vs "/usr/share/wordlists/params.txt"), and the "API Key/Token Patterns" section is a prose list ("Look for in responses: api_key, apiKey...") with no command; not 3 because the commands are genuinely executable rather than pseudocode.

4 / 5

Workflow Clarity

Numbered sections give a rough sequence ("## 1. API Endpoint Enumeration" then "## 2. Parameter Discovery") but the workflow ends at running the tools with no validation checkpoints. Fuzzing is a batch operation (thousands of requests via ffuf), and the batch-operation cap applies: there is no false-positive filtering, no confirmation of discovered endpoints, and no verification of parameter findings, capping workflow clarity at 3 regardless of the simple-skill exception.

3 / 5

Progressive Disclosure

The body is a compact ~55 lines organized into clearly numbered sections and subsections, with everything appropriately inline and nothing that belongs in a separate file. No bundle files exist and none are needed, so per the simple-skill guidance well-organized sections alone merit the top score.

5 / 5

Total

17

/

20

Passed

Description

66%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 concise and specific, naming three concrete capabilities with good natural trigger terms and a distinct reconnaissance niche. Its main weakness is the missing 'when to use' guidance, which caps completeness and leaves common synonyms (swagger, openapi) out of the trigger surface.

Suggestions

Add an explicit 'Use when...' clause to the description, e.g. "Use when enumerating web APIs, checking for GraphQL endpoints, or fuzzing parameters on known endpoints".

Fold the strongest trigger synonyms from metadata.when_to_use (swagger, openapi, introspection, REST endpoints) into the description itself so the description field alone carries full trigger coverage.

Consider naming the output of the skill (a mapped endpoint/parameter surface) so the 'what' states the deliverable, not just the actions.

DimensionReasoningScore

Specificity

"REST API discovery", "GraphQL detection", and "parameter fuzzing" list three concrete domain-specific actions, matching the anchor for several specific actions with minor coverage gaps. Not 5 because coverage is not comprehensive (no mention of OpenAPI/Swagger doc discovery or authentication-token analysis); not 3 because three specific actions exceed the 1-2 of that anchor.

4 / 5

Completeness

The 'what' is clear (discovers REST APIs, detects GraphQL, fuzzes parameters) but the description contains no "Use when..." clause or equivalent trigger guidance, which caps completeness at 3 per the judging guidelines. Not 2 because the 'what' is concrete rather than vague; not 4 because the 'when' is entirely absent, not merely implicit.

3 / 5

Trigger Term Quality

Natural terms a user would say — "REST API", "GraphQL", "parameter fuzzing" — are present, giving good keyword coverage. Not 5 because common synonyms and variations like "swagger", "openapi", "endpoint", or "API enumeration" are missing from the description field; not 3 because the core natural trigger terms are all present.

4 / 5

Distinctiveness Conflict Risk

"REST API discovery, GraphQL detection, parameter fuzzing" carves out a distinct API-reconnaissance niche with its own trigger terms, so it is mostly distinct from sibling skills. Not 5 because "parameter fuzzing" and API discovery carry minor overlap risk with closely related skills such as directory brute-forcing and general vulnerability scanning.

4 / 5

Total

15

/

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/recon/web-recon/api-enumeration/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.