Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/idavidov13/agentic-playwrightnpx agentmods add skills/idavidov13/agentic-playwright/type-safetyWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/idavidov13/agentic-playwright/type-safety)<a href="https://agentmods.dev/skills/idavidov13/agentic-playwright/type-safety"><img src="https://agentmods.dev/badge/skills/idavidov13/agentic-playwright/type-safety/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/idavidov13/agentic-playwright/type-safety"><img src="https://agentmods.dev/badge/skills/idavidov13/agentic-playwright/type-safety.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00208 | $0.03230 |
| Opus 5.5 | $0.00083 | $0.01292 |
| Sonnet 5.5 | $0.00042 | $0.00646 |
| Haiku 4.5 | $0.00021 | $0.00323 |
Grade A, and why
type-safety scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 28d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 264 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Type Safety
Critical
- NEVER use
any. Use explicit types, Zod-inferred types (zOutput<typeof ...>), orunknownat boundaries. - NEVER use
as Toras unknown as Tto silence the type-checker. If you genuinely need to cross a type boundary, validate first (Schema.parse(...)) and let Zod produce the typed result. - ALWAYS define API schemas with
z.strictObject().z.object()silently strips unknown keys and hides contract drift. - ALWAYS prefer Zod 4 top-level validators (
z.uuid(),z.email(),z.url(),z.int(),z.enum(E)) over the deprecated chained forms (z.string().uuid(),z.string().email(), etc.). - ALWAYS assert API responses with the exact pattern
expect(SchemaName.parse(body)).toBeTruthy();.Schema.parse(body)on its own is not enough. - ALWAYS specify explicit return types on exported and public functions (
Promise<void>,Promise<UserResponse>,Locator,string, etc.). - Access
process.env.*with!(guaranteed at runtime) or??(with a safe fallback). Never letstring | undefinedleak into downstream code. - Build response schemas directly from the documented contract. Define each field — including the response envelope (
success / message / data / errorsor whatever the API uses) — explicitly per endpoint, exactly as the OpenAPI / Swagger spec describes. Do not invent factories or helpers that hide the envelope. If an envelope is genuinely repeated across many endpoints in one domain, extract a per-domain sharedz.strictObjectdefinition (e.g.fixtures/api/schemas/{area}/_envelope.ts) and compose with.extend(...)— but only after the repetition is real and observed.
Schema Location
fixtures/api/schemas/
├── {area}/ ← App-specific schemas (user, product, etc.) — run `ls fixtures/api/schemas/` to find the real subdirectory
│ └── userSchema.ts
└── util/ ← Shared error response schemas
└── errorResponseSchema.ts
Instructions
Phase 1: Rule out any and unsafe casts
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 28d ago Changed · +3 lines 92cd086278e2
- 1mo ago First seen · 261 lines · 208 tokens per session scan A b80feb444f5d
type-safety is a skill published in the GitHub repository idavidov13/agentic-playwright (235 stars, last pushed 5d ago), licensed MIT. It adds 208 tokens to every session and 3,230 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
ultracite
Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects. Use when: (1) Setting up or initializing Ultracite in a project, or migrating its existing lint and format config onto Ultracite (ultracite init), (2) Running linting or formatting commands (check, fix, doctor), (3) Writing or…
freelance-gig-finder
Find fresh freelance and contract opportunities across multiple platforms for any skill set. Use this skill when a user asks "find me freelance React jobs", "Upwork gigs for Python developers", "freelance work posted this week", "contract jobs for designers", "find me remote freelance opportunities for [skill]", "I'm…
fetch
Default, free, and fastest way to read a URL's actual content — pulls clean, full page content (not a summary or a truncated snippet) as markdown, HTML, or structured JSON, including from JavaScript-heavy pages, in parallel across up to 10 URLs in one call. Zero setup, no CLI, no install — first use triggers an OAuth…
oss-bounty-finder
Find paid open-source work, OSS bounties, open source grants, or ways to get paid contributing to open source. Use when someone asks any of the following — "find me paid open source work", "show me OSS bounties for Rust", "how do I get paid for open source", "find GitHub bounties", "are there any open source grants I…
typescript-strict
TypeScript strict mode patterns with interfaces, type guards, generics, and utility types. Use when defining types, creating type-safe functions, handling nullable values, or implementing generic components.
jest-unit
Unit testing skill using Jest for TypeScript and JavaScript, covering mocking, spies, snapshots, coverage, async testing, and custom matchers.