mcpbeat

Typescript Language

hoangnguyen0403/agent-skills-standard-typescript-typescript-language

Apply modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings.

This is a copy. The original lives at hoangnguyen0403/typescript-language.

2k tokens
context cost
the whole folder, loaded on every use
3
files
instructions only
0
copies elsewhere
how many repositories repackaged it
536
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/HoangNguyen0403/agent-skills-standard --skill typescript-language

What comes with it

3 650 bytes besides the instruction
references/REFERENCE.md
references/TESTING.md

The instruction itself

9 sections, as written by the author

TypeScript Language Patterns

Priority: P0 (CRITICAL)

Implementation Guidelines

  • Type Annotations: Explicit params/returns. Infer locals.
  • Interfaces vs Types: interface for APIs (supports declaration merging). type for unions, intersection types, mapped/conditional types.
  • Strict Mode: strict: true. Null Safety: ?. and ?? — Use narrowing instead. Avoid non-null assertion (!) operator.
  • Enums: Literal unions or as const. No runtime enum.
  • Generics: Reusable, type-safe code.
  • Type Guards: typeof, instanceof, predicates.
  • Utility Types: Partial, Pick, Omit, Record.
  • Immutability: readonly arrays/objects. Const Assertions: as const, satisfies.
  • Template Literals: on${Capitalize<string>}.
  • Discriminated Unions: Literal kind property to narrow type safely. Switch on discriminant.
  • Advanced: Mapped, Conditional, Indexed types.
  • Access: Default public. Use private/protected or #private.
  • Branded Types: string & { __brand: 'Id' }.

Anti-Patterns

  • NEVER use any: Use unknown or specific interface instead.
  • No Function: Use signature () => void.
  • No enum: Runtime cost.
  • No !: Avoid non-null assertion (!). Use narrowing (typeof, instanceof, if-checks).
  • No Lint Disable: Fix root cause; never suppress.

Testing

  • Mocking: Use jest.Mocked<T> or as unknown as T.
  • Checklist: Check method existence, match error constants, satisfy required properties.
  • References: See references/TESTING.md for common issues/solutions.

Code

// Branded Type
type UserId = string & { __brand: 'Id' };

// Satisfies (Validate + Infer)
const cfg = { port: 3000 } satisfies Record<string, number>;

// Discriminated Union
type Result<T> = { kind: 'ok'; data: T } | { kind: 'err'; error: Error };

Verification

After any type change that crosses module boundaries or involves generics, unions, conditional types, or branded types: call getDiagnostics (typescript-lsp MCP tool) to confirm no type errors before finalizing.

References

For advanced type patterns and utility types:

See references/REFERENCE.md.

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • Discriminated Union
  • kind

How to use it

Copy the folder

Take hoangnguyen0403/agent-skills-standard-typescript-typescript-language from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.