sota-javascript-typescript — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sota-javascript-typescript (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill encodes 2026 state-of-the-art for JS/TS so generated code is strict, secure, and fast by default — and so audits of existing code find the bug classes that actually bite: untyped boundaries, floating promises, XSS sinks, prototype pollution, supply-chain gaps, event-loop blocking, and leak-prone listeners. It has two operating modes; pick one explicitly at the start of a task.
Baseline assumptions (mid-2026): TypeScript ≥5.9 strict (6.0 is current and the last JS-based compiler; TS 7 "tsgo" native preview available), ESM-first, Node LTS ≥22 (24 = active LTS; Node 26 ships Temporal by default), ES2024+ available, React 19.2-era with Server Components and React Compiler 1.0 where relevant, vitest 4 + flat-config ESLint (v9/v10).
unknown over any, discriminated unions for state, zod/valibot parse at every untrusted boundary, ??/?. discipline, AbortController on cancellable ops, pino logging in services, Web APIs over deps.any-sprawl into new code. New code meets the bar even in old repos.as T on external data.tsc --noEmit, passes lint, and ships with behavior-level tests (rules/07). Handle the error path of every async call — no floating promises.Scope first (frontend? Node service? library?), then read the matching rules files and run their audit checklists — each ends with grep/eslint hunt patterns. Validate findings: confirm attacker-controlled data actually reaches the sink, confirm the perf issue is on a hot path. No speculative findings.
Severity conventions:
|| vs ?? on falsy-valid values, index keys on mutable lists, unbounded caches, missing supply-chain controls.hasOwnProperty, console.log in services, snapshot sprawl, missing memoization on profiled-hot paths.Finding format:
[SEVERITY] Title (CWE-xxx if security)
File: path/to/file.ts:42
Issue: what is wrong, in one or two sentences
Evidence: the offending snippet
Impact: what an attacker/user/operator experiences
Fix: concrete change (code if short)Order the report CRITICAL→LOW, deduplicate repeated patterns into one finding with a file list, and end with the top 3 systemic recommendations (e.g., "enable noUncheckedIndexedAccess", "adopt MSW", "add zod to route boundaries").
| File | Read this when... |
|---|---|
| rules/01-typescript-config-and-types.md | touching tsconfig; designing types/interfaces; seeing any/casts; modeling state; validating input shape; setting up a library or monorepo; deciding zod-vs-types questions |
| rules/02-language-idioms.md | writing any JS/TS logic: equality, ??/?., array methods, immutability, Map/Set, error classes and Result types, generators, dates (Temporal), money/number precision |
| rules/03-async-patterns.md | anything with promises/async: combinator choice, floating promises, AbortController/timeouts, event-loop ordering, top-level await, workers, streams, async race conditions |
| rules/04-node-backend.md | building/auditing Node services: runtime choice, dropping deps for built-ins, env config, HTTP hardening (timeouts/body limits), graceful shutdown, process error policy, pino |
| rules/05-security.md | any security-relevant code or audit: XSS sinks, CSP, prototype pollution, npm supply chain, ReDoS, token storage/JWT, postMessage, child_process injection, SSRF |
| rules/06-performance.md | bundle size, React re-renders/keys/RSC, virtualization, debounce/throttle, memory leaks, Node event-loop blocking, profiling before optimizing |
| rules/07-testing-and-tooling.md | writing tests or setting up tooling: vitest, testing-library behavior testing, MSW, Playwright, ESLint flat + typescript-eslint strict, knip, publint/attw, CI gates. *Test strategy — suite shape, TDD, doubles, test data, flake policy — lives in `sota-testing`; load it for any build that writes logic. This file owns JS/TS runner mechanics only.* |
For a full audit, read 01→07 in order; security-focused audits prioritize 05, 01, 03, 04.
any, no @ts-ignore — unknown + narrowing, @ts-expect-error with reason..catch-handled; @typescript-eslint/no-floating-promises as error. allSettled for independent work; bounded concurrency.switch with never default — no boolean-soup interfaces with optional data/error pairs.toSorted, structuredClone, spread) on shared data.innerHTML/dangerouslySetInnerHTML with non-constant input unless DOMPurify-sanitized at render; no eval family ever; CSP on HTML responses.execFile/spawn array-args, never exec with template strings; parameterized SQL.npm ci, install scripts disabled/allowlisted, update cooldown, minimal deps — prefer platform built-ins (fetch, node:test, crypto.randomUUID).*Sync in request paths); listeners and intervals always cleaned up.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.