К основному содержанию
скилл CX Codex

typescript · gentleman-programming — скилл для Claude Code: строгие паттерны TypeScript

Скилл задаёт агенту правила строгого TypeScript: const-объекты вместо union-типов, плоские интерфейсы, отказ от any. Пригодится, когда код пишет ИИ и хочется единый стиль.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Gentleman-Programming/Gentleman-Skills --skill typescript -a claude-code
Открыть на GitHub

Что делает typescript

Скилл описывает набор обязательных паттернов. Вместо прямого union-типа агент создаёт const-объект с as const и выводит тип через (typeof STATUS)[keyof typeof STATUS]. Интерфейсы держит плоскими: вложенный объект выносится в отдельный интерфейс и подключается ссылкой, а не пишется инлайн.

any запрещён. Для по-настоящему неизвестных значений используется unknown с проверкой через type guard вида value is User, для гибкости — дженерики. Внутри есть справочник по utility-типам: Pick, Omit, Partial, Required, Readonly, Record, Extract, Exclude, NonNullable, ReturnType, Parameters. Импорт типов идёт через import type.

Скилл ставится через npx skills add в Claude, Codex, Cursor, Gemini CLI и OpenCode, для GitHub Copilot есть отдельная команда gh skill install. Файл скилла ложится в папку платформы, например ~/.claude/skills/typescript/SKILL.md. Если в проекте уже принят другой стиль типизации, эти правила будут ему противоречить — это повод проверить, кто в команде задаёт стандарт.

Какие задачи решает

  • заменить union-типы на const-объекты с выводом типа
  • вынести вложенные объекты в отдельные интерфейсы
  • убрать any из кода, написанного агентом
  • подобрать подходящий utility-тип вместо ручного описания
  • добавить type guard для проверки неизвестных данных

Примеры запросов агенту

  • напиши тип Status по паттерну const-объекта
  • перепиши этот интерфейс без вложенных объектов
  • замени any на unknown и добавь type guard

Как установить typescript

1Через Skills CLI (Vercel)

npx skills add Gentleman-Programming/Gentleman-Skills --skill typescript -a claude-code

2Вручную: положить файлы

~/.claude/skills/typescript/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/typescript/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора4

Другие версии typescript

Похожие

typescript-magician mcollina Устраняет ошибки TypeScript, заменяет any на строгие типы и строит типобезопасные дженерики. Помогает навести порядок в типах кодовой базы. CX Codex +1 2 800установок typescript-advanced-types sickn33 Помогает агенту писать дженерики, условные и mapped-типы в TypeScript и честно говорит, где проверка типов заканчивается. CX Codex +1 1 300установок typescript-discriminated-unions mkosir Скилл учит ИИ-агента применять дискриминированные объединения в TypeScript для взаимоисключающих состояний и проверять исчерпывающий switch через ESLint. CX Codex +1 3 800установок typescript-pro https://github.com/Jeffallan Настраивает строгую типизацию TypeScript, генерирует брендированные типы и связывает tRPC. Пригодится при проектировании надёжных API и сложных generic-структур. CX Codex +1 14 200установок go-interfaces cxuu Направляет агента при проектировании интерфейсов в Go, композиции типов и проверке контрактов. Помогает избежать преждевременных абстракций в публичном API. CX Codex +1 1 200установок langgraph-typescript-quickstart langchain-ai Разворачивает минимального локального агента LangGraph на TypeScript по официальному руководству. Пригодится для быстрой сборки и проверки графов без ручной настройки проекта. CX Codex +1 5 000установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о typescript

Как установить typescript в Claude?

Выполните npx skills add Gentleman-Programming/Gentleman-Skills --skill typescript -a claude-code. Файл появится по пути ~/.claude/skills/typescript/SKILL.md.

Что делает скилл typescript?

Задаёт агенту правила строгого TypeScript: const-объекты вместо union-типов, плоские интерфейсы, unknown и дженерики вместо any, импорт типов через import type.

Для каких платформ подходит скилл?

Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Для каждой платформы своя команда установки, а файл кладётся в её папку скиллов.

Исходный текст

SKILL.md · Apache-2.0
---
name: typescript
description: >
  TypeScript strict patterns and best practices.
  Trigger: When writing TypeScript code - types, interfaces, generics.
license: Apache-2.0
metadata:
  author: gentleman-programming
  version: "1.0"
---

## Const Types Pattern (REQUIRED)

```typescript
// ✅ ALWAYS: Create const object first, then extract type
const STATUS = {
  ACTIVE: "active",
  INACTIVE: "inactive",
  PENDING: "pending",
} as const;

type Status = (typeof STATUS)[keyof typeof STATUS];

// ❌ NEVER: Direct union types
type Status = "active" | "inactive" | "pending";
```

**Why?** Single source of truth, runtime values, autocomplete, easier refactoring.

## Flat Interfaces (REQUIRED)

```typescript
// ✅ ALWAYS: One level depth, nested objects → dedicated interface
interface UserAddress {
  street: string;
  city: string;
}

interface User {
  id: string;
  name: string;
  address: UserAddress;  // Reference, not inline
}

interface Admin extends User {
  permissions: string[];
}

// ❌ NEVER: Inline nested objects
interface User {
  address: { street: string; city: string };  // NO!
}
```

## Never Use `any`

```typescript
// ✅ Use unknown for truly unknown types
function parse(input: unknown): User {
  if (isUser(input)) return input;
  throw new Error("Invalid input");
}

// ✅ Use generics for flexible types
function first<T>(arr: T[]): T | undefined {
  return arr[0];
}

// ❌ NEVER
function parse(input: any): any { }
```

## Utility Types

```typescript
Pick<User, "id" | "name">     // Select fields
Omit<User, "id">              // Exclude fields
Partial<User>                 // All optional
Required<User>                // All required
Readonly<User>                // All readonly
Record<string, User>          // Object type
Extract<Union, "a" | "b">     // Extract from union
Exclude<Union, "a">           // Exclude from union
NonNullable<T | null>         // Remove null/undefined
ReturnType<typeof fn>         // Function return type
Parameters<typeof fn>         // Function params tuple
```

## Type Guards

```typescript
function isUser(value: unknown): value is User {
  return (
    typeof value === "object" &&
    value !== null &&
    "id" in value &&
    "name" in value
  );
}
```

## Import Types

```typescript
import type { User } from "./types";
import { createUser, type Config } from "./utils";
```

## Keywords
typescript, ts, types, interfaces, generics, strict mode, utility types

© gentleman-programming · Apache-2.0 · Gentleman-Programming/Gentleman-Skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой