CtrlK
BlogDocsLog inGet started
Tessl Logo

security-and-hardening

Hardens code against vulnerabilities. Use when auditing an input handler for vulnerabilities, when handling user input, authentication, data storage, or external integrations, or when checking a login flow is safe against the OWASP Top Ten. Use when building any feature that accepts untrusted data, manages user sessions, or interacts with third-party services. Use when auditing dependencies for known vulnerabilities, triaging package-manager audit findings, or assessing supply-chain risk in a new package. Use when personal data or privacy compliance (GDPR, CCPA) is involved.

70

Quality

85%

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

SKILL.md
Quality
Evals
Security

Quality

Content

75%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 well-engineered reference skill: prescriptive, information-dense rules with specific thresholds and commands, clearly sequenced mini-workflows with validation checkpoints, and exemplary one-level-deep linking into a real reference file. The main deductions are trimmable explanatory material (STRIDE and rationalizations tables), some policy-level directives lacking executable detail, and a dangling `../../references/security-checklist.md` reference that does not exist in the bundle.

Suggestions

Fix or inline the three references to `../../references/security-checklist.md` — the path leaves the skill bundle and does not resolve; either ship the checklist as `references/security-checklist.md` or fold its unique content (manager matrix, install-script gate, worked destructive-path code) into hardening-patterns.md.

Trim concept-review material Claude already knows — the STRIDE table can shrink to one line per threat, and the Common Rationalizations table can drop rows whose rebuttals are obvious (e.g., "It's just a prototype", "No one would try to exploit this").

Convert the remaining policy-level directives into concrete steps, e.g. specify what "pin the resolved IP" and "inspect the pending script source" look like in practice (commands or a short worked example), since the dependency and SSRF sections otherwise carry exact, actionable detail.

DimensionReasoningScore

Conciseness

The body is dense and prescriptive — specific values like "bcrypt (≥12 rounds)", "about 10 attempts per 15 minutes", "`169.254.169.254`", and non-obvious caveats like the DNS-rebinding TOCTOU gap and "in-memory counters silently become `max × instances`" earn their tokens. It sits at anchor 4 rather than 5 because some material assumes less competence than needed: the STRIDE table, the "Common Rationalizations" table (10 rows of rebuttals), and repeated trust-boundary explanations in two sections could be trimmed without losing guidance.

4 / 5

Actionability

Guidance is largely concrete and directive — named algorithms and parameters ("`sameSite: 'lax'` or `'strict'`", "`default-src 'self'`"), exact commands ("`npm audit signatures`"), and precise conditions ("resolve **all** DNS records and reject any private or reserved address"). Per the scoring note, absent code is not penalized in an instruction-only skill, but some directives remain policy-level without executable detail ("a documented fail-closed policy", "pin the resolved IP", "inspect the pending script source"), matching anchor 4's "concrete code or commands with minor gaps" rather than anchor 5's fully copy-paste-ready coverage.

4 / 5

Workflow Clarity

Multi-step processes are clearly sequenced with checkpoints: the four-step threat-model process with a stop condition ("If you can't name the trust boundaries... you're not ready"), the four-step dependency workflow with validation ("stop on disagreement", "verify with a clean frozen/immutable install"), the three-condition pre-check for destructive operations, and a full Verification checklist. It falls short of anchor 5 because error-recovery feedback loops are thin in the body — most stop-conditions ("log the rejected target and stop") halt rather than loop back, and full recovery guidance is deferred to references.

4 / 5

Progressive Disclosure

Structure is genuinely good: the body is an overview of rules, each control section links one level deep to real, verified anchors in references/hardening-patterns.md, and navigation is explicitly paced ("Open the section you need when you reach that code, not before"). It misses anchor 5 because the body references `../../references/security-checklist.md` three times — including as the centerpiece of the Review Checklist section — and that path escapes the bundle and does not resolve, leaving a dangling, unverifiable reference within otherwise clean navigation.

4 / 5

Total

16

/

20

Passed

Description

95%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 strong description: third-person 'what' plus four explicit, concrete 'Use when' clauses with comprehensive natural trigger terms and a clearly demarcated security niche. The only softness is that the headline capability statement is broad while some sub-capabilities are implied rather than named.

DimensionReasoningScore

Specificity

The description names concrete activities — "auditing an input handler for vulnerabilities", "checking a login flow is safe against the OWASP Top Ten", "triaging package-manager audit findings", "assessing supply-chain risk in a new package" — which is several specific actions with only minor gaps. It does not reach anchor 5 because the core 'what' ("Hardens code against vulnerabilities") is broad, and a few concrete sub-capabilities (headers/CORS, rate limiting, uploads) are only implied rather than named; it is clearly above anchor 3, which expects only 1-2 concrete actions.

4 / 5

Completeness

It explicitly answers 'what' ("Hardens code against vulnerabilities") and 'when' with four separate concrete "Use when..." clauses covering auditing, feature building, dependency/supply-chain work, and privacy compliance. This squarely matches anchor 5 (both what and when with concrete trigger phrases); anchor 4 would require the 'when' to be less explicit, which is not the case here.

5 / 5

Trigger Term Quality

It comprehensively covers natural phrases a user would actually say: "vulnerabilities", "user input", "authentication", "login flow", "OWASP Top Ten", "untrusted data", "user sessions", "third-party services", "supply-chain risk", "personal data", "GDPR", "CCPA", plus tool-adjacent terms like "audit findings". This matches anchor 5's standard of comprehensive natural-term coverage including synonyms; anchor 4 would require noticeable missing variations, and none are evident.

5 / 5

Distinctiveness Conflict Risk

The security-hardening niche is clearly staked out with distinctive triggers (OWASP Top Ten, supply-chain risk, GDPR/CCPA, audit findings) unlikely to fire for unrelated skills. It fits anchor 5's "clear niche with distinct triggers; minimal conflict risk"; there is only faint overlap risk with a generic code-review skill, which anchor 4 would describe as more than minor.

5 / 5

Total

19

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
addyosmani/agent-skills
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.