Agent skill

Typescript Coder

by LeoYeAI in LeoYeAI/openclaw-master-skills

Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices.

MITAuto-check passedDevelopment

Install Typescript Coder

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill typescript-coder -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills typescript-coder --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/typescript-coder .claude/skills/typescript-coder && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
typescript-coder
GitHub stars
2.2k
Token cost
~5.8k tokens
SKILL.md length
1,346 words
Files
66 (incl. scripts, references, assets)
Skills in repo
1,215
Repo updated
First seen
Licence
MIT

At a glance

Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices.

  • Works in 5 steps: Setup → Incremental Migration → Strengthen Types → …
  • Asked to add TypeScript
  • SKILL.md covers When to Use This Skill, Prerequisites, Shorthand Keywords and Role and Expertise, plus 7 more sections
  • Calls npm and npx

What it does

Typescript Coder is an agent skill from LeoYeAI/openclaw-master-skills. Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices. Use when asked to "add TypeScript", "migrate to TypeScript", "add type checking", "create TypeScript config", "fix TypeScript errors", or work with .ts/.tsx files. Supports JavaScript to TypeScript migration, JSDoc type annotations, tsconfig.json configuration, and type-safe code patterns.

Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 66 other files, including scripts, reference files and assets (for example `_meta.json`, `assets/select-from-the-type-menu.md` and `assets/typescript-algolia.md`).

It sits in Development, covering Type safety, Technical documentation and React components. It works with TypeScript and JavaScript. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • Asked to add TypeScript
  • Migrate to TypeScript
  • Add type checking
  • Create TypeScript config

Example prompts

  • “add TypeScript”
  • “migrate to TypeScript”
  • “add type checking”
  • “/typescript-coder”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Setup
  2. Incremental Migration
  3. Strengthen Types
  4. Full Strict Mode
  5. Maintenance

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    Shell commands in SKILL.md call:

    • npm
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • typescriptlang.org
    • basarat.gitbook.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Typescript Coder loads about 5.8k tokens when it runs, and up to ~137k if it reads all its reference files. Until then it costs about 106 tokens; SKILL.md has 1,346 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~106
When it runs · the whole SKILL.md, loaded when a task matches
~5.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~137k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,346 words, ~5,812 tokens.

Download SKILL.mdSave it as .claude/skills/typescript-coder/SKILL.md (or your agent's skills folder). This skill also uses 65 other files; get the full folder from GitHub.
name
typescript-coder
description
Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices. Use when asked to "add TypeScript", "migrate to TypeScript", "add type checking", "create TypeScript config", "fix TypeScript errors", or work with .ts/.tsx files. Supports JavaScript to TypeScript migration, JSDoc type annotations, tsconfig.json configuration, and type-safe code patterns.

TypeScript Coder Skill

Master TypeScript development with expert-level knowledge of type systems, migration strategies, and modern JavaScript/TypeScript patterns. This skill transforms you into a 10x engineer capable of writing type-safe, maintainable code and migrating existing JavaScript projects to TypeScript with confidence.

When to Use This Skill

  • User asks to "add TypeScript", "migrate to TypeScript", or "convert to TypeScript"
  • Need to "add type checking" or "fix TypeScript errors" in a project
  • Creating or configuring tsconfig.json for a project
  • Working with .ts, .tsx, .mts, or .d.ts files
  • Adding JSDoc type annotations to JavaScript files
  • Debugging type errors or improving type safety
  • Setting up TypeScript in a Node.js or JavaScript project
  • Creating type definitions or ambient declarations
  • Implementing advanced TypeScript patterns (generics, conditional types, mapped types)

Prerequisites

  • Basic understanding of JavaScript (ES6+)
  • Node.js and npm/yarn installed (for TypeScript compilation)
  • Familiarity with the project structure and build tools
  • Access to the typescript package (can be installed if needed)

Shorthand Keywords

Keywords to trigger this skill as if using a command-line tool:

javascript
openPrompt = ["typescript-coder", "ts-coder"]

Use these shorthand commands to quickly invoke TypeScript expertise without lengthy explanations. For example:

  • typescript-coder --check "this code"
  • typescript-coder check this type guard
  • ts-coder migrate this file
  • ts-coder --migrate project-to-typescript

Role and Expertise

As a TypeScript expert, you operate with:

  • Deep Type System Knowledge: Understanding of TypeScript's structural type system, generics, and advanced types
  • Migration Expertise: Proven strategies for incremental JavaScript to TypeScript migration
  • Best Practices: Knowledge of TypeScript patterns, conventions, and anti-patterns
  • Tooling Mastery: Configuration of TypeScript compiler, build tools, and IDE integration
  • Problem Solving: Ability to resolve complex type errors and design type-safe architectures

Core TypeScript Concepts

The TypeScript Type System

TypeScript uses structural typing (duck typing) rather than nominal typing:

typescript
interface Point {
  x: number;
  y: number;
}

// This works because the object has the right structure
const point: Point = { x: 10, y: 20 };

// This also works - structural compatibility
const point3D = { x: 1, y: 2, z: 3 };
const point2D: Point = point3D;  // OK - has x and y
Type Inference

TypeScript infers types when possible, reducing boilerplate:

typescript
// Type inferred as string
const message = "Hello, TypeScript!";

// Type inferred as number
const count = 42;

// Type inferred as string[]
const names = ["Alice", "Bob", "Charlie"];

// Return type inferred as number
function add(a: number, b: number) {
  return a + b;  // Returns number
}
Key TypeScript Features
FeaturePurposeWhen to Use
InterfacesDefine object shapesDefining data structures, API contracts
Type AliasesCreate custom typesUnion types, complex types, type utilities
GenericsType-safe reusable componentsFunctions/classes that work with multiple types
EnumsNamed constantsFixed set of related values
Type GuardsRuntime type checkingNarrowing union types safely
Utility TypesTransform typesPartial<T>, Pick<T, K>, Omit<T, K>, etc.

Step-by-Step Workflows

Task 1: Install and Configure TypeScript

For a new or existing JavaScript project:

  1. Install TypeScript as a dev dependency:

    bash
    npm install --save-dev typescript
  2. Install type definitions for Node.js (if using Node.js):

    bash
    npm install --save-dev @types/node
  3. Initialize TypeScript configuration:

    bash
    npx tsc --init
  4. Configure tsconfig.json for your project:

    json
    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "commonjs",
        "lib": ["ES2020"],
        "outDir": "./dist",
        "rootDir": "./src",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "resolveJsonModule": true,
        "declaration": true,
        "declarationMap": true,
        "sourceMap": true
      },
      "include": ["src/**/*"],
      "exclude": ["node_modules", "dist"]
    }
  5. Add build script to package.json:

    json
    {
      "scripts": {
        "build": "tsc",
        "dev": "tsc --watch",
        "check": "tsc --noEmit"
      }
    }
Task 2: Migrate JavaScript to TypeScript (Incremental Approach)

Safe, incremental migration strategy:

  1. Enable TypeScript to process JavaScript files:

    json
    {
      "compilerOptions": {
        "allowJs": true,
        "checkJs": false,
        "noEmit": true
      }
    }
  2. Add JSDoc type annotations to JavaScript files (optional intermediate step):

    javascript
    // @ts-check
    
    /**
     * Calculates the sum of two numbers
     * @param {number} a - First number
     * @param {number} b - Second number
     * @returns {number} The sum
     */
    function add(a, b) {
      return a + b;
    }
    
    /** @type {string[]} */
    const names = ["Alice", "Bob"];
    
    /** @typedef {{ id: number, name: string, email?: string }} User */
    
    /** @type {User} */
    const user = {
      id: 1,
      name: "Alice"
    };
  3. Rename files incrementally from .js to .ts:

    bash
    # Start with utility files and leaf modules
    mv src/utils/helpers.js src/utils/helpers.ts
  4. Fix TypeScript errors in converted files:

    • Add explicit type annotations where inference fails
    • Define interfaces for complex objects
    • Handle any types appropriately
    • Add type guards for runtime checks
  5. Gradually convert remaining files:

    • Start with utilities and shared modules
    • Move to leaf components (no dependencies)
    • Finally convert orchestration/entry files
  6. Enable strict mode progressively:

    json
    {
      "compilerOptions": {
        "strict": false,
        "noImplicitAny": true,
        "strictNullChecks": true
        // Enable other strict flags one at a time
      }
    }
Task 3: Define Types and Interfaces

Creating robust type definitions:

  1. Define interfaces for data structures:

    typescript
    // User data model
    interface User {
      id: number;
      name: string;
      email: string;
      age?: number;  // Optional property
      readonly createdAt: Date;  // Read-only property
    }
    
    // API response structure
    interface ApiResponse<T> {
      success: boolean;
      data?: T;
      error?: {
        code: string;
        message: string;
      };
    }
  2. Use type aliases for complex types:

    typescript
    // Union type
    type Status = 'pending' | 'active' | 'completed' | 'failed';
    
    // Intersection type
    type Employee = User & {
      employeeId: string;
      department: string;
      salary: number;
    };
    
    // Function type
    type TransformFn<T, U> = (input: T) => U;
    
    // Conditional type
    type NonNullable<T> = T extends null | undefined ? never : T;
  3. Create type definitions in .d.ts files for external modules:

    typescript
    // types/custom-module.d.ts
    declare module 'custom-module' {
      export interface Config {
        apiKey: string;
        timeout?: number;
      }
    
      export function initialize(config: Config): Promise<void>;
      export function fetchData<T>(endpoint: string): Promise<T>;
    }
Task 4: Work with Generics

Type-safe reusable components:

  1. Generic functions:

    typescript
    // Basic generic function
    function identity<T>(value: T): T {
      return value;
    }
    
    const num = identity(42);        // Type: number
    const str = identity("hello");   // Type: string
    
    // Generic with constraints
    function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
      return obj[key];
    }
    
    const user = { name: "Alice", age: 30 };
    const name = getProperty(user, "name");  // Type: string
    const age = getProperty(user, "age");    // Type: number
  2. Generic classes:

    typescript
    class DataStore<T> {
      private items: T[] = [];
    
      add(item: T): void {
        this.items.push(item);
      }
    
      get(index: number): T | undefined {
        return this.items[index];
      }
    
      filter(predicate: (item: T) => boolean): T[] {
        return this.items.filter(predicate);
      }
    }
    
    const numberStore = new DataStore<number>();
    numberStore.add(42);
    
    const userStore = new DataStore<User>();
    userStore.add({ id: 1, name: "Alice", email: "alice@example.com" });
  3. Generic interfaces:

    typescript
    interface Repository<T> {
      findById(id: string): Promise<T | null>;
      findAll(): Promise<T[]>;
      create(item: Omit<T, 'id'>): Promise<T>;
      update(id: string, item: Partial<T>): Promise<T>;
      delete(id: string): Promise<boolean>;
    }
    
    class UserRepository implements Repository<User> {
      async findById(id: string): Promise<User | null> {
        // Implementation
        return null;
      }
      // ... other methods
    }
Task 5: Handle Type Errors

Common type errors and solutions:

  1. "Property does not exist" errors:

    typescript
    // ❌ Error: Property 'name' does not exist on type '{}'
    const user = {};
    user.name = "Alice";
    
    // ✅ Solution 1: Define interface
    interface User {
      name: string;
    }
    const user: User = { name: "Alice" };
    
    // ✅ Solution 2: Type assertion (use cautiously)
    const user = {} as User;
    user.name = "Alice";
    
    // ✅ Solution 3: Index signature
    interface DynamicObject {
      [key: string]: any;
    }
    const user: DynamicObject = {};
    user.name = "Alice";
  2. "Cannot find name" errors:

    typescript
    // ❌ Error: Cannot find name 'process'
    const env = process.env.NODE_ENV;
    
    // ✅ Solution: Install type definitions
    // npm install --save-dev @types/node
    const env = process.env.NODE_ENV;  // Now works
  3. any type issues:

    typescript
    // ❌ Implicit any (with noImplicitAny: true)
    function process(data) {
      return data.value;
    }
    
    // ✅ Solution: Add explicit types
    function process(data: { value: number }): number {
      return data.value;
    }
    
    // ✅ Or use generic
    function process<T>(data: T): T {
      return data;
    }
  4. Union type narrowing:

    typescript
    function processValue(value: string | number) {
      // ❌ Error: Property 'toUpperCase' does not exist on type 'string | number'
      return value.toUpperCase();
    
      // ✅ Solution: Type guard
      if (typeof value === "string") {
        return value.toUpperCase();  // TypeScript knows it's string here
      }
      return value.toString();
    }
Task 6: Configure for Specific Environments

Environment-specific configurations:

Node.js Project
json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020"],
    "types": ["node"],
    "moduleResolution": "node",
    "esModuleInterop": true
  }
}
Browser/DOM Project
json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "esnext",
    "lib": ["ES2020", "DOM", "DOM.Iterable"],
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "noEmit": true
  }
}
Library/Package
json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "esnext",
    "declaration": true,
    "declarationMap": true,
    "outDir": "./dist",
    "rootDir": "./src"
  }
}

TypeScript Best Practices

Show full SKILL.md (757 more words)Show less
Do's
  • ✅ Enable strict mode ("strict": true) for maximum type safety
  • ✅ Use type inference - let TypeScript infer types when it's obvious
  • ✅ Prefer interfaces over type aliases for object shapes (better error messages)
  • ✅ Use unknown instead of any - forces type checking before use
  • ✅ Create utility types for common transformations
  • ✅ Use const assertions (as const) for literal types
  • ✅ Leverage type guards for runtime type checking
  • ✅ Document complex types with JSDoc comments
  • ✅ Use discriminated unions for type-safe state management
  • ✅ Keep types DRY - extract and reuse type definitions
Don'ts
  • ❌ Don't use any everywhere - defeats the purpose of TypeScript
  • ❌ Don't ignore TypeScript errors with @ts-ignore without good reason
  • ❌ Don't over-complicate types - balance safety with readability
  • ❌ Don't use type assertions excessively - indicates design issues
  • ❌ Don't duplicate type definitions - use shared types
  • ❌ Don't forget null/undefined checks - enable strictNullChecks
  • ❌ Don't use enums for everything - consider union types instead
  • ❌ Don't skip type definitions for external libraries - install @types/*
  • ❌ Don't disable strict flags without justification
  • ❌ Don't mix JavaScript and TypeScript in production - complete the migration

Common Patterns

Pattern 1: Discriminated Unions

Type-safe state management:

typescript
type LoadingState = { status: 'loading' };
type SuccessState<T> = { status: 'success'; data: T };
type ErrorState = { status: 'error'; error: Error };

type AsyncState<T> = LoadingState | SuccessState<T> | ErrorState;

function handleState<T>(state: AsyncState<T>) {
  switch (state.status) {
    case 'loading':
      console.log('Loading...');
      break;
    case 'success':
      console.log('Data:', state.data);  // TypeScript knows state.data exists
      break;
    case 'error':
      console.log('Error:', state.error.message);  // TypeScript knows state.error exists
      break;
  }
}
Pattern 2: Builder Pattern

Type-safe fluent API:

typescript
class QueryBuilder<T> {
  private filters: Array<(item: T) => boolean> = [];
  private sortFn?: (a: T, b: T) => number;
  private limitCount?: number;

  where(predicate: (item: T) => boolean): this {
    this.filters.push(predicate);
    return this;
  }

  sortBy(compareFn: (a: T, b: T) => number): this {
    this.sortFn = compareFn;
    return this;
  }

  limit(count: number): this {
    this.limitCount = count;
    return this;
  }

  execute(data: T[]): T[] {
    let result = data.filter(item =>
      this.filters.every(filter => filter(item))
    );

    if (this.sortFn) {
      result = result.sort(this.sortFn);
    }

    if (this.limitCount) {
      result = result.slice(0, this.limitCount);
    }

    return result;
  }
}

// Usage
const users = [/* ... */];
const result = new QueryBuilder<User>()
  .where(u => u.age > 18)
  .where(u => u.email.includes('@example.com'))
  .sortBy((a, b) => a.name.localeCompare(b.name))
  .limit(10)
  .execute(users);
Pattern 3: Type-Safe Event Emitter
typescript
type EventMap = {
  'user:created': { id: string; name: string };
  'user:updated': { id: string; changes: Partial<User> };
  'user:deleted': { id: string };
};

class TypedEventEmitter<T extends Record<string, any>> {
  private listeners: { [K in keyof T]?: Array<(data: T[K]) => void> } = {};

  on<K extends keyof T>(event: K, listener: (data: T[K]) => void): void {
    if (!this.listeners[event]) {
      this.listeners[event] = [];
    }
    this.listeners[event]!.push(listener);
  }

  emit<K extends keyof T>(event: K, data: T[K]): void {
    const eventListeners = this.listeners[event];
    if (eventListeners) {
      eventListeners.forEach(listener => listener(data));
    }
  }
}

// Usage with type safety
const emitter = new TypedEventEmitter<EventMap>();

emitter.on('user:created', (data) => {
  console.log(data.id, data.name);  // TypeScript knows the shape
});

emitter.emit('user:created', { id: '123', name: 'Alice' });  // Type-checked

Troubleshooting

IssueCauseSolution
Module not foundMissing type definitionsInstall @types/[package-name] or add declare module
Implicit any errorsnoImplicitAny enabledAdd explicit type annotations
Cannot find global typesMissing lib in compilerOptionsAdd to lib: ["ES2020", "DOM"]
Type errors in node_modulesThird-party library typesAdd skipLibCheck: true to tsconfig.json
Import errors with .ts extensionImport resolving issuesUse imports without extensions
Build takes too longCompiling too many filesUse incremental: true and tsBuildInfoFile
Type inference not workingComplex inferred typesAdd explicit type annotations
Circular dependency errorsImport cyclesRefactor to break cycles, use interfaces

Advanced TypeScript Features

Mapped Types

Transform existing types:

typescript
type Readonly<T> = {
  readonly [P in keyof T]: T[P];
};

type Partial<T> = {
  [P in keyof T]?: T[P];
};

type Pick<T, K extends keyof T> = {
  [P in K]: T[P];
};

// Usage
interface User {
  id: number;
  name: string;
  email: string;
}

type ReadonlyUser = Readonly<User>;  // All properties readonly
type PartialUser = Partial<User>;    // All properties optional
type UserNameEmail = Pick<User, 'name' | 'email'>;  // Only name and email
Conditional Types

Types that depend on conditions:

typescript
type IsString<T> = T extends string ? true : false;

type A = IsString<string>;   // true
type B = IsString<number>;   // false

// Practical example: Extract function return type
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never;

function getUser() {
  return { id: 1, name: "Alice" };
}

type User = ReturnType<typeof getUser>;  // { id: number; name: string }
Template Literal Types

String manipulation at type level:

typescript
type Greeting<T extends string> = `Hello, ${T}!`;

type WelcomeMessage = Greeting<"World">;  // "Hello, World!"

// Practical: Create event names
type EventName<T extends string> = `on${Capitalize<T>}`;

type ClickEvent = EventName<"click">;  // "onClick"
type HoverEvent = EventName<"hover">;  // "onHover"

TypeScript Configuration Reference

Key tsconfig.json Options
OptionPurposeRecommended
strictEnable all strict type checkingtrue
targetECMAScript target versionES2020 or higher
moduleModule systemcommonjs (Node) or esnext (bundlers)
libInclude type definitions["ES2020"] + DOM if browser
outDirOutput directory./dist
rootDirRoot source directory./src
sourceMapGenerate source mapstrue for debugging
declarationGenerate .d.ts filestrue for libraries
esModuleInteropEnable interop between CommonJS and ES modulestrue
skipLibCheckSkip type checking of .d.ts filestrue for performance
forceConsistentCasingInFileNamesEnforce consistent file casingtrue
resolveJsonModuleAllow importing JSON filestrue if needed
allowJsAllow JavaScript filestrue during migration
checkJsType check JavaScript filesfalse during migration
noEmitDon't emit files (use external bundler)true with bundlers
incrementalEnable incremental compilationtrue for faster builds

Migration Checklist

When migrating a JavaScript project to TypeScript:

Phase 1: Setup
  • Install TypeScript and @types packages
  • Create tsconfig.json with permissive settings
  • Configure build scripts
  • Set up IDE/editor TypeScript support
Phase 2: Incremental Migration
  • Enable allowJs: true and checkJs: false
  • Rename utility files to .ts
  • Add type annotations to function signatures
  • Create interfaces for data structures
  • Fix TypeScript errors in converted files
Phase 3: Strengthen Types
  • Enable noImplicitAny: true
  • Enable strictNullChecks: true
  • Remove any types where possible
  • Add type guards for union types
  • Create type definitions for external modules
Phase 4: Full Strict Mode
  • Enable strict: true
  • Fix all remaining type errors
  • Remove JSDoc annotations (now redundant)
  • Optimize type definitions
  • Document complex types
Phase 5: Maintenance
  • Set up pre-commit type checking
  • Configure CI/CD type checking
  • Establish code review standards for types
  • Keep TypeScript and @types packages updated

References

This skill includes bundled reference documentation for TypeScript essentials.

Reference Documentation (references/)
Core Concepts & Fundamentals
  • basics.md - TypeScript fundamentals, simple types, type inference, and special types
  • essentials.md - Core TypeScript concepts every developer should know
  • cheatsheet.md - Quick reference for control flow, classes, interfaces, types, and common patterns
Type System & Language Features
  • types.md - Advanced types, conditional types, mapped types, type guards, and recursive types
  • classes.md - Class syntax, inheritance, generics, and utility types
  • elements.md - Arrays, tuples, objects, enums, functions, and casting
  • keywords.md - keyof, null handling, optional chaining, and template literal types
  • miscellaneous.md - Async programming, promises, decorators, and JSDoc integration
External Resources

Summary

The TypeScript Coder skill empowers you to write type-safe, maintainable code with expert-level TypeScript knowledge. Whether migrating existing JavaScript projects or starting new TypeScript projects, apply these proven patterns, workflows, and best practices to deliver production-quality code with confidence.

Remember: TypeScript is a tool for developer productivity and code quality. Use it to catch errors early, improve code documentation, and enable better tooling—but don't let perfect types prevent shipping working code.

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 65 other files (scripts, references, assets) in skills/typescript-coder of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • _meta.json
  • assets/select-from-the-type-menu.md
  • assets/typescript-algolia.md
  • assets/typescript-angular-basic.md
  • assets/typescript-aurelia.md
  • assets/typescript-backbone.md
  • assets/typescript-bitloops.md
  • assets/typescript-bscotch-template-modern.md
  • assets/typescript-ego.md
  • assets/typescript-express-no-stress.md
  • assets/typescript-gulp-angular.md
  • assets/typescript-kodly-react.md
  • assets/typescript-lit-element.md
  • assets/typescript-nestjs-boilerplate.md
  • assets/typescript-ngx-rocket.md
  • assets/typescript-node-boilerplate.md
  • assets/typescript-node-module.md
  • assets/typescript-node-tsnext.md
  • assets/typescript-package.md
  • … and 46 more

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Typescript Coder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Typescript Coder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Typescript Coder this skillLeoYeAI/openclaw-master-skills2.2k—~5.8kAutomated safety check: PassMIT
Convert Internal Package to TypeScriptTryGhost/Ghost55k—~1.2kAutomated safety check: PassMIT
Typescript Expertcin12211/orca-q22311 repos~3.7kAutomated safety check: PassMIT
Typescripttahabasri/snippets170—~968Automated safety check: PassMIT
Cb Code QualityBlkLeg/CircuitBreaker201—~1.9kAutomated safety check: PassMIT
Typescript Styletjx666/vscode-mcp106—~961Automated safety check: PassCustom licence

Similar skills

  • Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.

    55k GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Typescript Expert

    cin12211/orca-q

    TypeScript and JavaScript expert with deep knowledge of type-level programming, performance optimization, monorepo management, migration strategies, and modern tooling.

    223 GitHub starsUsed in 11 repos~3.7k tokens
    DevelopmentAuto-check passed
  • Typescript

    tahabasri/snippets

    LobeHub TypeScript style and type-safety guide. An agent skill from tahabasri/snippets.

    170 GitHub stars~968 tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Cb Code Quality

    BlkLeg/CircuitBreaker

    Circuit Breaker code conventions and the quality gates that actually block a push — ruff, mypy, eslint, the pytest coverage ratchet, and the make verify tiers.

    201 GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Typescript Style

    tjx666/vscode-mcp

    TypeScript code style and repo conventions for VSCode MCP — inference vs explicit types, ESM import suffixes, zod schema contracts, async VSCode/Node APIs, JSON-safe IPC results, JSDoc for public…

    106 GitHub stars~961 tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Fallow Setup

    fallow-rs/fallow-skills

    Set up or modernize code-quality tooling for JavaScript and TypeScript projects.

    129 GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,215 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Typescript Coder

What does Typescript Coder do?

Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices. Typescript Coder is an agent skill from LeoYeAI/openclaw-master-skills. Expert 10x engineer with extensive knowledge of TypeScript fundamentals, migration strategies, and best practices.

When should I use Typescript Coder?

Typescript Coder fits situations like: asked to add TypeScript; migrate to TypeScript; add type checking; create TypeScript config.

How do I install Typescript Coder in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill typescript-coder -a claude-code`. Or copy the skill folder (skills/typescript-coder in LeoYeAI/openclaw-master-skills) into .claude/skills/typescript-coder in your project. Claude Code loads it when a task matches its description.

How do I install Typescript Coder in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill typescript-coder -a codex`. Or copy the skill folder (skills/typescript-coder in LeoYeAI/openclaw-master-skills) into .agents/skills/typescript-coder in your project. Codex loads it when a task matches its description.

Can I use Typescript Coder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill typescript-coder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/typescript-coder, .gemini/skills/typescript-coder, .github/skills/typescript-coder and .opencode/skills/typescript-coder in your project.

What does Typescript Coder need to run?

Going by SKILL.md and its folder, Typescript Coder needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.

Does Typescript Coder access the network?

SKILL.md names 2 domains. As links in the text: typescriptlang.org and basarat.gitbook.io. This is read from the text; nothing was executed.

Is Typescript Coder safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Typescript Coder use?

Typescript Coder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Typescript Coder use?

About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 131k tokens, read only when the agent opens those files.

What are the alternatives to Typescript Coder?

Skills that share tags, products or a category with Typescript Coder: Convert Internal Package to TypeScript (TryGhost/Ghost, 55k stars), Typescript Expert (cin12211/orca-q, 223 stars), Typescript (tahabasri/snippets, 170 stars) and Cb Code Quality (BlkLeg/CircuitBreaker, 201 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Typescript Coder?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,158 GitHub stars. The repository holds 1,215 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.