CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

perl-security

Comprehensive Perl security covering taint mode, input validation, safe process execution, DBI parameterized queries, web security (XSS/SQLi/CSRF), and perlcritic security policies.

Quality

72%

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 ./skills/perl-security/SKILL.md

The canonical home for this skill is perl-security in affaan-m/ECC

SKILL.md
Quality
Evals
Security

Quality

Content

63%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 strong, code-first reference skill: nearly every section gives executable good/bad Perl pairs, a clear top-level sequencing principle, and a verification checklist. It is held back by redundancy (Anti-Patterns and Output Encoding repeat earlier content), explanations of concepts Claude already knows, a monolithic single-file structure with no progressive disclosure, and a couple of prose-only gaps (notably CSRF verification).

Suggestions

Remove the duplicated "Output Encoding" section and the Anti-Patterns entries that repeat inline "Bad:" examples (two-arg open, string-form system, SQL interpolation, raw HTML output), or move the full anti-pattern catalogue into a references/ file.

Split the perlcritic configuration and CI commands into a one-level-deep reference file (e.g., references/perlcritic.md) and keep a brief pointer plus the core checklist in SKILL.md.

Add executable code for CSRF token verification with constant-time comparison to close the main actionability gap, and trim known-concept explanations (taint mode, ReDoS mechanics) to one-line reminders.

DimensionReasoningScore

Conciseness

Mostly code-driven and efficient, but it includes explanations of concepts Claude already knows ("Perl's taint mode (-T) tracks data from external sources...", "Catastrophic backtracking occurs with nested quantifiers"), a redundant "Output Encoding" section that restates the XSS section's encode_entities/uri_escape/encode_json guidance, and an "Anti-Patterns" section where items 1, 2, 3, and 7 duplicate the inline "Bad:" examples — matching 'mostly efficient but includes some unnecessary explanation or could be tightened' rather than the minor-trimming of anchor 4.

3 / 5

Actionability

The body is dominated by concrete, executable Perl (three-arg open, sysopen with O_EXCL, list-form system with IPC::Run3, DBI placeholders, realpath traversal check, perlcritic config and CLI commands) with paired good/bad examples — but there are minor gaps: CSRF token verification is described only in prose ("Use constant-time comparison when verifying tokens") while only generation is coded, the Mojolicious session snippet assumes an existing $app, and the DBIx::Class fragment lacks setup context, so it sits at anchor 4 rather than fully copy-paste-complete 5.

4 / 5

Workflow Clarity

The "How It Works" section gives an explicit sequence ("Start with taint-aware input boundaries, then move outward: validate and untaint inputs, keep filesystem and process execution constrained, and use parameterized DBI queries everywhere") and the 12-row "Quick Security Checklist" provides concrete verification checkpoints, matching anchor 4's 'clear sequence with most checkpoints present'. It is not a 5 because there are no feedback-loop/recovery steps (e.g., what to do when a check fails) and no perlcritic-failure remediation guidance, though the reference nature of the skill keeps it above 3.

4 / 5

Progressive Disclosure

There are no bundle files (no references/, scripts/, or assets/ directories) and no references at all; the entire ~500-line skill — including the full perlcriticrc configuration, perlcritic CI commands, DBIx::Class ORM guidance, and a partly duplicative anti-patterns list — is inlined in a single SKILL.md. Section headers make it navigable (better than anchor 2's structure-less wall), but content that would naturally live in one-level-deep reference files (e.g., a perlcritic reference, an anti-patterns catalogue) is inline, matching anchor 3.

3 / 5

Total

14

/

20

Passed

Description

70%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 specific, well-scoped description with strong domain keywords and a clear Perl-security niche. Its main weakness is the absence of any 'Use when...' trigger clause, which caps completeness and limits discoverability despite the otherwise concrete capability list.

Suggestions

Append an explicit trigger clause, e.g.: "Use when writing or reviewing Perl code that handles user input, executes system commands, performs DBI database queries, or serves web requests (CGI, Mojolicious, Dancer2, Catalyst)."

Include the body's other covered areas — safe file operations/path traversal, ReDoS-safe regexes, output encoding — so the description's coverage matches the skill's actual scope.

Add natural framework and vulnerability synonyms users would say ("command injection", "shell injection", "SQLi") to strengthen trigger-term coverage.

DimensionReasoningScore

Specificity

The description lists several specific capability areas — "taint mode, input validation, safe process execution, DBI parameterized queries, web security (XSS/SQLi/CSRF), and perlcritic security policies" — but frames them as topics "covering" rather than concrete actions performed, and omits areas present in the body (regex/ReDoS safety, file operations, path traversal), so it falls between the 'several specific actions' (4) and 'comprehensive' (5) anchors.

4 / 5

Completeness

The 'what' is clearly and concretely stated (the enumerated security areas), but there is no 'Use when...' clause or equivalent explicit trigger guidance; per the judging guidelines a missing 'when' caps completeness at 3, and it is not merely weakly implied — it is absent, so 4 is not warranted.

3 / 5

Trigger Term Quality

Good natural keyword coverage: users would plausibly say "Perl security", "taint mode", "DBI", "XSS", "SQL injection", "CSRF", "perlcritic". A few natural terms are missing — framework names (Mojolicious, Dancer2, Catalyst, CGI), "command injection", "regex/ReDoS", "file operations" — so it matches anchor 4 rather than the comprehensive synonym/extension coverage of 5.

4 / 5

Distinctiveness Conflict Risk

"Comprehensive Perl security" carves out a clear niche anchored by Perl-specific triggers ("taint mode", "DBI", "perlcritic"), making it unlikely to fire for non-Perl security or general security skills — a clear niche with minimal conflict risk, matching anchor 5; the generic "web security (XSS/SQLi/CSRF)" fragment alone would only justify 4.

5 / 5

Total

16

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (504 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

14

/

16

Passed

Repository

valeriibeck-star/claude-skills

Path

skills/perl-security/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.