CtrlK
BlogDocsLog inGet started
Tessl Logo

unconstrained-file-reader

Read a caller-selected path without confining it to a safe root

36

Quality

45%

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 ./evals/skills/path-traversal/file-reader/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

26%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 terse but contains essentially no usable content: it describes a helper script that is never called, provides no invocation guidance, and its only reference points to a file that does not exist in the bundle. As written, the skill does not tell Claude how to do anything.

Suggestions

Add concrete, executable guidance for the helper — e.g., how to invoke read.py, its arguments, and what it returns — or remove the helper mention entirely if the skill has no operational purpose.

Fix the broken [read.py](read.py) reference: either ship the file in the bundle (e.g., scripts/read.py) or delete the link, since the referenced path currently resolves to nothing.

If the unconstrained read is ever intended to run, document an explicit workflow with validation/safety checkpoints (e.g., confirming the caller-supplied path is expected) given the operation reads outside a safe root.

DimensionReasoningScore

Conciseness

The body is only two sentences with no padding or explanation of concepts Claude already knows, so it is largely efficient. It drops to 4 rather than 5 because meta-commentary like 'preserves the historical unconstrained path read' and 'The evaluation never calls it' adds no operational value and could be trimmed.

4 / 5

Actionability

The body only describes ('The inert helper read.py preserves the historical unconstrained path read') without any instruction, invocation example, arguments, or expected output — matching 'only describes rather than instructs'. It cannot score 2 because there are not even high-level steps to execute, and the referenced read.py does not exist in the bundle, leaving nothing actionable at all.

1 / 5

Workflow Clarity

No sequence or steps are present and the one implied action (invoking read.py) is left completely undefined, matching 'steps missing or incoherent; no sequence; no validation for risky operations'. The simple-skill exception does not apply because the single action is ambiguous (the body even states the helper is never called), and a risky unconstrained read has no validation or safety checkpoint.

1 / 5

Progressive Disclosure

The sole reference [read.py](read.py) points to a file that does not exist in the bundle (no references/, scripts/, or assets/ directories), so navigation to the referenced content is impossible — 'minimal structure; references are buried' is the closest fit. Although the skill is small enough to score higher with well-organized sections, the dangling reference to a nonexistent file blocks that.

2 / 5

Total

8

/

20

Passed

Description

38%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 states a single, clear capability but omits any usage triggers, uses only generic keywords, and is highly conflatable with ordinary file-reading skills. It reads more like an internal implementation note than a user-facing trigger description.

Suggestions

Add an explicit 'Use when...' clause stating the situations in which this skill should be invoked (and equally important, when a sandboxed reader should be used instead).

Include natural trigger terms a user would actually say (e.g., 'read file', 'file contents', 'arbitrary path', file extensions) instead of only the generic words 'read' and 'path'.

Clarify what the skill concretely does — e.g., which helper performs the read, what arguments it takes, and what it returns — so it is distinguishable from built-in file reading.

DimensionReasoningScore

Specificity

The description names one concrete action — 'Read a caller-selected path' — plus a qualifier 'without confining it to a safe root', matching the anchor 'names domain and 1-2 concrete actions, but not comprehensive'. It is not generic filler (rules out 2), but a single action with no detail on how the read is performed or what output is produced keeps it below 4.

3 / 5

Completeness

The 'what' is clear (read a caller-selected path without confinement), but there is no 'when'/trigger guidance at all, which per the judging guidelines caps completeness at 3 ('clear what but when is missing or only weakly implied'). It cannot score 4 without an explicit 'Use when...' clause.

3 / 5

Trigger Term Quality

Only the generic keywords 'read' and 'path' appear; there are no natural phrases or synonyms a user would say. This fits 'one or two generic keywords; missing the natural phrases users say' and falls short of 3, which requires some relevant domain keywords.

2 / 5

Distinctiveness Conflict Risk

'Read a caller-selected path' is very broad and would overlap with virtually any file-reading skill; the qualifier 'without confining it to a safe root' adds some specificity but not enough to reduce the high overlap risk. It sits between the 'very broad; high overlap risk' (2) and 'somewhat specific but could still overlap' (3) anchors, and the trigger surface ('read this file') is broad enough to land at 2.

2 / 5

Total

10

/

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

relative_links

Relative link issues: 1 missing

Warning

Total

15

/

16

Passed

Repository
cisco-ai-defense/skill-scanner
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.