
Typescript Expert
Configure and enforce strict TypeScript 5.x compiler settings so agent-generated code stays type-safe in modern ESM projects.
Overview
Typescript-expert is an agent skill most often used in Build (also Ship review) that supplies a strict TypeScript 5.x tsconfig template for maximum compile-time safety.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill typescript-expertWhat is this skill?
- Strict TypeScript 5.x tsconfig baseline with maximum safety flags enabled
- Includes noUncheckedIndexedAccess, exactOptionalPropertyTypes, and noImplicitOverride
- Modern ESM moduleResolution bundler with verbatimModuleSyntax and isolatedModules
- ES2022 target with DOM libs, declarations, declaration maps, and source maps
- Opinionated defaults for consistent casing and switch fallthrough guards
- Strict TypeScript 5.x display profile
- Multiple strictness flags enumerated in compilerOptions blocks
Adoption & trust: 9k installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent keeps adding permissive TypeScript settings and you lose catch-at-compile guarantees on optional fields and index signatures.
Who is it for?
Solo builders starting or hardening a TypeScript repo who want agents to inherit one strict compiler profile instead of debating flags per session.
Skip if: Pure JavaScript codebases with no migration plan, or teams that intentionally run with strict disabled for legacy debt.
When should I use this skill?
Starting or refactoring a TypeScript project when you need agents to apply a known strict tsconfig rather than inventing compiler options.
What do I get? / Deliverables
You get a single strict tsconfig baseline agents can apply so new code compiles under modern ESM rules with fewer hidden any widening surprises.
- Strict tsconfig.json baseline
- Aligned compilerOptions for CI typecheck
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
TypeScript strictness is applied while authoring and structuring the product codebase—the canonical shelf is Build. The exposed artifact is a strict tsconfig pattern aimed at app and UI layers, with the same rules usable on shared TS modules.
Where it fits
Bootstrap a React or Vue app with strict DOM libs and declaration emit for a component library.
Align shared API types in a Node or Bun service with the same strict indexed-access rules as the web client.
Before tagging a release, verify CI tsc uses the expert baseline instead of a loosened local override.
How it compares
Use as a typed baseline template instead of asking the agent to improvise tsconfig flags chat-by-chat.
Common Questions / FAQ
Who is typescript-expert for?
Indie and solo developers using Claude Code, Cursor, or Codex on TypeScript apps, libraries, or full-stack monorepos who need consistent strict compiler settings.
When should I use typescript-expert?
During Build when scaffolding or tightening a frontend or shared TS package; during Ship review when aligning CI typecheck with the same strict profile before release.
Is typescript-expert safe to install?
It is configuration guidance only—review the Security Audits panel on this Prism page and inspect the skill repo before letting an agent modify your tsconfig in production branches.
SKILL.md
READMESKILL.md - Typescript Expert
{ "$schema": "https://json.schemastore.org/tsconfig", "display": "Strict TypeScript 5.x", "compilerOptions": { // ========================================================================= // STRICTNESS (Maximum Type Safety) // ========================================================================= "strict": true, "noUncheckedIndexedAccess": true, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "exactOptionalPropertyTypes": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true, // ========================================================================= // MODULE SYSTEM (Modern ESM) // ========================================================================= "module": "ESNext", "moduleResolution": "bundler", "resolveJsonModule": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "isolatedModules": true, "verbatimModuleSyntax": true, // ========================================================================= // OUTPUT // ========================================================================= "target": "ES2022", "lib": [ "ES2022", "DOM", "DOM.Iterable" ], "declaration": true, "declarationMap": true, "sourceMap": true, // ========================================================================= // PERFORMANCE // ========================================================================= "skipLibCheck": true, "incremental": true, // ========================================================================= // PATH ALIASES // ========================================================================= "baseUrl": ".", "paths": { "@/*": [ "./src/*" ], "@/components/*": [ "./src/components/*" ], "@/lib/*": [ "./src/lib/*" ], "@/types/*": [ "./src/types/*" ], "@/utils/*": [ "./src/utils/*" ] }, // ========================================================================= // JSX (for React projects) // ========================================================================= // "jsx": "react-jsx", // ========================================================================= // EMIT // ========================================================================= "noEmit": true, // Let bundler handle emit // "outDir": "./dist", // "rootDir": "./src", // ========================================================================= // DECORATORS (if needed) // ========================================================================= // "experimentalDecorators": true, // "emitDecoratorMetadata": true }, "include": [ "src/**/*.ts", "src/**/*.tsx", "src/**/*.d.ts" ], "exclude": [ "node_modules", "dist", "build", "coverage", "**/*.test.ts", "**/*.spec.ts" ] } # TypeScript Cheatsheet ## Type Basics ```typescript // Primitives const name: string = 'John' const age: number = 30 const isActive: boolean = true const nothing: null = null const notDefined: undefined = undefined // Arrays const numbers: number[] = [1, 2, 3] const strings: Array<string> = ['a', 'b', 'c'] // Tuple const tuple: [string, number] = ['hello', 42] // Object const user: { name: string; age: number } = { name: 'John', age: 30 } // Union const value: string | number = 'hello' // Literal const direction: 'up' | 'down' | 'left' | 'right' = 'up' // A