CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

security

MUST be used whenever fixing security issues in a Flows app, or before shipping any feature that handles credentials, user input, or external data. This skill finds AND fixes security problems — it does not just report them. Do NOT skip this when the user asks for a security fix, security hardening, or vulnerability remediation — run every step in order. Triggers: security, security fix, security hardening, vulnerability, XSS, injection, credentials, secrets, auth, authentication, authorization, token, sensitive data, input validation, CORS, CSP, dependency audit.

1.07x
Quality

80%

Does it follow best practices?

Impact

97%

1.07x

1 of 3 eval scenarios. Add 2 more for a full score.

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/security/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

76%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.

An unusually actionable single-file workflow: every step pairs a concrete search with concrete, executable fixes, and closes with a fixed-vs-remaining report. The two real gaps are the missing verification loop after batch edits, and a monolithic length that could be slimmed via a reference file.

Suggestions

Add a verification step after the fixes: re-run the Step 2–6 greps expecting zero hits, re-run `pnpm audit --audit-level=high`, and confirm the app builds — with an instruction to loop back and fix anything still found.

Move the per-pattern fix recipes (DOMPurify, Zod, setTimeout, header config details) into a `references/fixes.md` and keep SKILL.md as the step-by-step search-and-decide workflow, which would improve both conciseness and progressive disclosure.

Tighten Step 5: the Atlas/agent bullet list is terse to the point of being decodable only with outside context ('5 / max 50, cached') — either expand these into concrete checks or drop them.

DimensionReasoningScore

Conciseness

The body is largely lean — grep commands, a pattern/action table, before/after code snippets, and terse fix instructions with no padding about what XSS or CSP are. A few tokens could be trimmed (the repeated '### How to fix' scaffolding, and reminders of things Claude already knows like 'Never pass user-controlled strings to code evaluation'), which keeps it at 4 rather than 5.

4 / 5

Actionability

Every step ships copy-paste-ready material: three complete grep command blocks, a DOMPurify before/after JSX example, a setTimeout string-to-arrow rewrite, a full Zod schema with safeParse, a literal `server.headers` config block, and exact pnpm commands. Together these cover the common cases for each step with no pseudocode.

5 / 5

Workflow Clarity

Steps 1–9 are clearly numbered and sequenced with an attack-surface map up front and a fixed/remaining report at the end, which is above the level-2 anchor. However this is a batch operation that rewrites code across the whole app, and there is no verification loop — the skill never instructs re-running the greps or `pnpm audit` to confirm zero remaining findings, or building/testing after the edits, so the batch-operation cap of 3 applies.

3 / 5

Progressive Disclosure

A single-file skill with clean section structure, well-anchored headers, and no external references — and the bundle has no reference files to navigate, so no references are buried or nested. It stays at 4 rather than 5 because the ~240-line body could split its per-pattern fix recipes (Steps 2–7) into a reference file, keeping SKILL.md as the workflow skeleton.

4 / 5

Total

16

/

20

Passed

Description

77%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 trigger-focused description with excellent keyword coverage and an explicit use-when clause, written in third person. Its main weakness is that the 'what' is asserted with emphasis rather than demonstrated — the concrete capabilities the skill performs are not named.

Suggestions

Replace emphasis ('finds AND fixes', 'Do NOT skip') with a compact enumeration of what the skill actually does, e.g. 'Migrates raw CDF calls to the Cognite SDK, replaces hardcoded secrets with env vars, sanitizes dangerous DOM APIs, adds auth guards and Zod input validation, hardens Vite config headers, and remediates dependency CVEs.'

Scope the broadest trigger terms to reduce conflict risk, e.g. 'auth', 'token', and 'injection' could be qualified ('auth gaps in Flows routes', 'CDF token handling') so a generic security question elsewhere doesn't fire this skill.

DimensionReasoningScore

Specificity

The description names the domain ('fixing security issues in a Flows app') and one action pair ('finds AND fixes security problems'), but never enumerates the concrete capabilities the body actually delivers (SDK migration, secret hygiene, DOM sanitization, auth guards, Zod validation, headers, dependency audit) — emphasis markup ('AND', 'Do NOT skip') substitutes for specifics. It is above score 2 (which would be a domain name with no actions) but below score 4, which requires several specific listed actions.

3 / 5

Completeness

Both parts are present: 'what' — 'This skill finds AND fixes security problems — it does not just report them', and 'when' — 'MUST be used whenever fixing security issues in a Flows app, or before shipping any feature that handles credentials...' plus an explicit trigger list. Falls just short of the 5 anchor because the 'what' is a single coarse sentence rather than concrete trigger phrases tied to enumerated capabilities.

4 / 5

Trigger Term Quality

'Triggers: security, security fix, security hardening, vulnerability, XSS, injection, credentials, secrets, auth, authentication, authorization, token, sensitive data, input validation, CORS, CSP, dependency audit' is a comprehensive, natural-phrase list including synonyms and abbreviations (auth/authentication/authorization, credentials/secrets/token, XSS/injection). File extensions don't apply to this skill type, so nothing is missing.

5 / 5

Distinctiveness Conflict Risk

The 'Flows app' scoping and pairing with a specific trigger list give it a mostly distinct niche. Minor overlap risk remains: extremely generic trigger terms ('security', 'auth', 'token', 'injection') would also fire on general secure-coding or secret-scanning skills, keeping it below the 'clear niche with minimal conflict risk' anchor.

4 / 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

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_version

'metadata.version' is missing

Warning

Total

14

/

16

Passed

Repository

cognitedata/builder-skills

Path

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