Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/pproenca/unifi-mcp/typescriptnpx skills add pproenca/unifi-mcp --skill typescriptgit clone --depth 1 https://github.com/pproenca/unifi-mcpWrote 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/pproenca/unifi-mcp/typescript)<a href="https://agentmods.dev/skills/pproenca/unifi-mcp/typescript"><img src="https://agentmods.dev/badge/skills/pproenca/unifi-mcp/typescript.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00102 | $0.02385 |
| Opus 5 | $0.00051 | $0.01192 |
| Sonnet 5 | $0.00020 | $0.00477 |
| Haiku 4.5 | $0.00010 | $0.00238 |
Grade A, and why
typescript 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 3d 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.
This is a copy
97% identical to typescript — 3 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
TypeScript Best Practices
Comprehensive performance optimization guide for TypeScript applications. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Configuring tsconfig.json for a new or existing project
- Writing complex type definitions or generics
- Optimizing async/await patterns and data fetching
- Organizing modules and managing imports
- Reviewing code for compilation or runtime performance
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Type System Performance | CRITICAL | type- |
| 2 | Compiler Configuration | CRITICAL | tscfg- |
| 3 | Async Patterns | HIGH | async- |
| 4 | Module Organization | HIGH | module- |
| 5 | Type Safety Patterns | MEDIUM-HIGH | safety- |
| 6 | Memory Management | MEDIUM | mem- |
| 7 | Runtime Optimization | LOW-MEDIUM | runtime- |
| 8 | Advanced Patterns | LOW | advanced- |
Table of Contents
- Type System Performance — CRITICAL
- 1.1 Add Explicit Return Types to Exported Functions — CRITICAL (30-50% faster declaration emit)
- 1.2 Avoid Deeply Nested Generic Types — CRITICAL (prevents exponential instantiation cost)
- 1.3 Avoid Large Union Types — CRITICAL (quadratic O(n²) comparison cost)
- 1.4 Extract Conditional Types to Named Aliases — CRITICAL (enables compiler caching, prevents re-evaluation)
- 1.5 Limit Type Recursion Depth — HIGH (prevents exponential type expansion when applicable)
- 1.6 Prefer Interfaces Over Type Intersections — CRITICAL (2-5× faster type resolution)
- 1.7 Simplify Complex Mapped Types — HIGH (reduces type computation by 50-80% when applicable)
- Compiler Configuration — CRITICAL
- 2.1 Configure Include and Exclude Properly — CRITICAL (prevents scanning thousands of unnecessary files)
- 2.2 Enable Incremental Compilation — CRITICAL (50-90% faster rebuilds)
- 2.3 Enable isolatedDeclarations for Parallel Declaration Emit — CRITICAL (enables parallel .d.ts generation without type-checker)
- 2.4 Enable skipLibCheck for Faster Builds — CRITICAL (20-40% faster compilation)
- 2.5 Enable strictFunctionTypes for Faster Variance Checks — CRITICAL (enables optimized variance checking)
- 2.6 Use erasableSyntaxOnly for Node.js Native TypeScript — HIGH (prevents 100% of Node.js type-stripping runtime errors)
- 2.7 Use isolatedModules for Single-File Transpilation — CRITICAL (80-90% faster transpilation with bundlers)
- 2.8 Use Project References for Large Codebases — CRITICAL (60-80% faster incremental builds)
- Async Patterns — HIGH
- 3.1 Annotate Async Function Return Types — HIGH (prevents runtime errors, improves inference)
- 3.2 Avoid await Inside Loops — HIGH (N× faster for N iterations, 10 users = 10× improvement)
- 3.3 Avoid Unnecessary async/await — HIGH (eliminates trivial Promise wrappers and improves stack traces)
- 3.4 Defer await Until Value Is Needed — HIGH (enables implicit parallelization)
- 3.5 Use Promise.all for Independent Operations — HIGH (2-10× improvement in I/O-bound code)
- Module Organization — HIGH
- 4.1 Avoid Barrel File Imports — HIGH (200-800ms import cost, 30-50% larger bundles)
- 4.2 Avoid Circular Dependencies — HIGH (prevents runtime undefined errors and slow compilation)
- 4.3 Control @types Package Inclusion — HIGH (prevents type conflicts and reduces memory usage)
- 4.4 Use Dynamic Imports for Large Modules — HIGH (reduces initial bundle by 30-70%)
- 4.5 Use Type-Only Imports for Types — HIGH (eliminates runtime imports for type information)
- Type Safety Patterns — MEDIUM-HIGH
- 5.1 Enable noUncheckedIndexedAccess — MEDIUM-HIGH (prevents 100% of unchecked index access errors at compile time)
- 5.2 Enable strictNullChecks — MEDIUM-HIGH (prevents null/undefined runtime errors)
- 5.3 Prefer unknown Over any — MEDIUM-HIGH (forces type narrowing, prevents runtime errors)
- 5.4 Use Assertion Functions for Validation — MEDIUM-HIGH (reduces validation boilerplate by 50-70%)
- 5.5 Use const Assertions for Literal Types — MEDIUM-HIGH (preserves literal types, enables better inference)
- 5.6 Use Exhaustive Checks for Union Types — MEDIUM-HIGH (prevents 100% of missing case errors at compile time)
- 5.7 Use Type Guards for Runtime Type Checking — MEDIUM-HIGH (eliminates type assertions, catches errors at boundaries)
- Memory Management — MEDIUM
- 6.1 Avoid Closure Memory Leaks — MEDIUM (prevents retained references in long-lived callbacks)
- 6.2 Avoid Global State Accumulation — MEDIUM (prevents unbounded memory growth)
- 6.3 Clean Up Event Listeners — MEDIUM (prevents unbounded memory growth)
- 6.4 Clear Timers and Intervals — MEDIUM (prevents callback retention and repeated execution)
- 6.5 Use WeakMap for Object Metadata — MEDIUM (prevents memory leaks, enables automatic cleanup)
- Runtime Optimization — LOW-MEDIUM
- 7.1 Avoid Object Spread in Hot Loops — LOW-MEDIUM (reduces object allocations by N×)
- 7.2 Cache Property Access in Loops — LOW-MEDIUM (reduces property lookups by N× in hot paths)
- 7.3 Prefer Native Array Methods Over Lodash — LOW-MEDIUM (eliminates library overhead, enables tree-shaking)
- 7.4 Use for-of for Simple Iteration — LOW-MEDIUM (reduces iteration boilerplate by 30-50%)
- 7.5 Use Modern String Methods — LOW-MEDIUM (2-5× faster than regex for simple patterns)
- 7.6 Use Set/Map for O(1) Lookups — LOW-MEDIUM (O(n) to O(1) per lookup)
- Advanced Patterns — LOW
- 8.1 Use Branded Types for Type-Safe IDs — LOW (prevents mixing incompatible ID types)
- 8.2 Use satisfies for Type Validation with Inference — LOW (prevents property access errors, enables 100% autocomplete accuracy)
- 8.3 Use Template Literal Types for String Patterns — LOW (prevents 100% of string format errors at compile time)
What ships with it
48 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.
- assets/templates/_template.md 612 B
- references/_sections.md 1.7 KB
- references/advanced-branded-types.md 2.4 KB
- references/advanced-satisfies-operator.md 2.6 KB
- references/advanced-template-literal-types.md 2.6 KB
- references/async-avoid-loop-await.md 2.1 KB
- references/async-avoid-unnecessary-async.md 2.1 KB
- references/async-defer-await.md 2.1 KB
- references/async-explicit-return-types.md 2.1 KB
- references/async-parallel-promises.md 2.1 KB
- references/mem-avoid-closure-leaks.md 2.9 KB
- references/mem-avoid-global-state.md 2.4 KB
- references/mem-cleanup-event-listeners.md 2.9 KB
- references/mem-clear-timers.md 2.5 KB
- references/mem-use-weakmap-for-metadata.md 2.2 KB
- references/module-avoid-barrel-imports.md 1.7 KB
- references/module-avoid-circular-dependencies.md 1.8 KB
- references/module-control-types-inclusion.md 1.8 KB
- references/module-dynamic-imports.md 2.1 KB
- references/module-use-type-imports.md 1.9 KB
- references/runtime-avoid-object-spread-in-loops.md 2.1 KB
- references/runtime-cache-property-access.md 2.0 KB
- references/runtime-prefer-array-methods.md 2.3 KB
- references/runtime-use-for-of-for-iteration.md 2.0 KB
- references/runtime-use-set-for-lookups.md 1.8 KB
- references/runtime-use-string-methods.md 2.2 KB
- references/safety-assertion-functions.md 2.5 KB
- references/safety-const-assertions.md 2.2 KB
- references/safety-exhaustive-checks.md 2.4 KB
- references/safety-no-unchecked-indexed-access.md 2.5 KB
- references/safety-prefer-unknown-over-any.md 2.0 KB
- references/safety-strict-null-checks.md 1.9 KB
- references/safety-use-type-guards.md 2.1 KB
- references/tscfg-enable-incremental.md 1.4 KB
- references/tscfg-erasable-syntax-only.md 2.3 KB
- references/tscfg-exclude-properly.md 1.8 KB
- references/tscfg-isolate-modules.md 2.0 KB
- references/tscfg-isolated-declarations.md 2.0 KB
- references/tscfg-project-references.md 2.1 KB
- references/tscfg-skip-lib-check.md 1.5 KB
- references/tscfg-strict-function-types.md 1.8 KB
- references/type-avoid-deep-generics.md 1.8 KB
- references/type-avoid-large-unions.md 2.0 KB
- references/type-explicit-return-types.md 2.0 KB
- references/type-extract-conditional-types.md 1.6 KB
- references/type-interfaces-over-intersections.md 1.3 KB
- references/type-limit-recursion-depth.md 1.7 KB
- references/type-simplify-mapped-types.md 1.8 KB
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.
- 3d ago First seen · 95 lines · 102 tokens per session scan A f87b4cfbfb34
typescript is a skill published in the GitHub repository pproenca/unifi-mcp (2 stars, last pushed 4mo ago), licensed MIT. It adds 102 tokens to every session and 2,385 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. It is 97% identical to typescript, differing in 3 lines, and is treated as a copy.
Other skills, from other repositories
fluent-development
This skill should be used when the user asks to "build a fluent app", "create a servicenow app in typescript", or mentions "servicenow sdk", "now-sdk", "fluent", "scoped app as code", or "pro-code development" — or when the working directory contains a now.config.json or .now.ts files.
kernelcad-authoring
Author or modify kernelCAD models in TypeScript. Scripts live in .kcad.ts files; the kernelCAD CLI (kernelcad evaluate and kernelcad export stl|step|dxf|3mf|glb -o ) executes them via an OpenCASCADE WASM kernel.
model-context
MCP (Model Context Protocol) - Build AI-native servers with tools, resources, and prompts. TypeScript/Python SDKs for Claude Desktop integration.
migrate-waniwani-sdk-0.19-to-0.20
Migrate a project from @waniwani/sdk 0.19.x to 0.20.x and auto-apply its breaking change: the entire legacy tier is deleted. The entry points @waniwani/sdk/legacy, /legacy/react, /legacy/next-js, /legacy/express-js, /next-js, /express-js and /chat/server no longer exist, ChatCard is gone from @waniwani/sdk/chat, and…
typescript-lsp
Search TypeScript SYMBOLS (functions, types, classes) - NOT text. Use Glob to find files, Grep for text search, LSP for symbol search. Provides type-aware results that understand imports, exports, and relationships.
migrate-waniwani-sdk-0.15-to-0.16
Migrate a project from @waniwani/sdk 0.15.x to 0.16.0 and auto-apply every breaking change of that release: the typed useWaniwani track surface (string track()/step()/conversion()/capture and DOM auto-capture removed), the waniwani/widget tool-response meta key, the track.lead() removal, and the V2-envelope…