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

principle-type-system-discipline — скилл для Claude Code

Задаёт правила строгой типизации: брендирование примитивов, парсинг данных на границах и генерация типов из схем.

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

Что делает principle-type-system-discipline

Скилл учит агента отсекать невозможные состояния на этапе компиляции, а не плодить проверки в глубине кода. Он требует разделять одинаковые по структуре данные через брендирование (например, UserId и OrderId как брендированные типы или newtype), валидируя значения один раз при создании.

Любые входящие данные — JSON или строки баз данных — считаются нетипизированными, пока не пройдут функцию парсинга на границе системы. Параллельные типы вручную не пишутся: структуры выводятся напрямую из спецификаций OpenAPI или GraphQL.

В метаданных скилла включён флаг disable-model-invocation: true, поэтому агент не вызывает его самостоятельно в фоне. Правила нужно подключать к контексту вручную или через связанные скиллы. Для синтаксиса TypeScript автор отсылает к отдельному скиллу typescript-best-practices.

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

  • запретить смешивание одинаковых базовых типов вроде идентификаторов заказа и пользователя
  • настроить обязательный парсинг входящего JSON на границах системы
  • связать типы в коде со спецификациями OpenAPI или GraphQL без ручного дублирования
  • исключить невозможные состояния моделей данных ещё на уровне компилятора

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

  • Проверь сигнатуры функций в модуле заказов по правилам principle-type-system-discipline
  • Спроектируй брендированные типы для идентификаторов пользователей и сессий
  • Напиши парсер для входящего JSON с валидацией на границе контроллера

Как установить principle-type-system-discipline

1Через Skills CLI (Vercel)

npx skills add backnotprop/pstack --skill principle-type-system-discipline -a claude-code

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

~/.claude/skills/principle-type-system-discipline/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/principle-type-system-discipline/

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

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

poteto-mode Задаёт агенту стиль poteto: короткие ответы с деталями, осознанные субагенты, простой код и проверенная работа. CX Codex +1 5 400установок principle-prove-it-works Заставляет ИИ-агента проверять результат работы на реальных артефактах перед закрытием задачи. Пригодится, чтобы модель не отчитывалась об успехе только потому, что код скомпилировался. CX Codex +1 5 200установок swarm Разворачивает N параллельных воркеров на одну задачу, собирает результаты и возвращает один сводный отчёт. Пригодится для покрытия кода, гонок моделей и разведки. CX Codex +1 5 200установок setup-pstack Прописывает pstack, какая модель идёт на каждую роль и с каким бюджетом рассуждений, а потом кладёт это в правило-файл, который перекрывает умолчания скиллов. CX Codex +1 5 300установок show-me-your-work Ведёт проверяемый журнал решений для долгих и автономных запусков. Нужен, когда результат будет изучать другой человек. CX Codex +1 5 300установок figure-it-out Скилл для задач без готового рецепта: сначала проектирует план работ и критерий готовности, потом идёт по гипотезам и пишет журнал решений для проверяющего. CX Codex +1 5 300установок reflect Запускает трёх субагентов для анализа текущей сессии, вытягивает опыт решения задач и готовит правки для локальных скиллов. CX Codex +1 5 300установок recall Собирает из истории чатов, живого состояния репозитория и общего следа краткую сводку: где вы остановились и что делать дальше. CX Codex +1 5 000установок

Похожие

python-type-safety Seth Hobson Помогает добавлять типы в Python-код, писать дженерики и протоколы, а также настраивать строгую проверку через mypy или pyright. CX Codex 12 643установок code-quality zernie Скилл для рефакторинга TypeScript и JavaScript: приводит типы в порядок, убирает невозможные состояния и разделяет логику с вводом-выводом. CX Codex +1 391установок typescript-variables mkosir Применяет соглашения TypeScript для переменных: const assertions, замена enum на литеральные типы, union вместо флагов, различение null и undefined. CX Codex +1 3 800установок typescript-magician mcollina Устраняет ошибки TypeScript, заменяет any на строгие типы и строит типобезопасные дженерики. Помогает навести порядок в типах кодовой базы. CX Codex +1 2 800установок typescript-advanced-types sickn33 Помогает агенту писать дженерики, условные и mapped-типы в TypeScript и честно говорит, где проверка типов заканчивается. CX Codex +1 1 300установок typescript-refactor pproenca Скилл с 47 правилами по рефакторингу TypeScript и React/TSX: типы, сужение, дженерики, современные фичи TS 6.0 и React 19. CX Codex +1 788установок

Рядом в теме «Код-ревью и рефакторинг»

Всё по теме «Код-ревью и рефакторинг» →

Вопросы о principle-type-system-discipline

Как установить principle-type-system-discipline в Claude Code?

Выполните команду npx skills add backnotprop/pstack --skill principle-type-system-discipline -a claude-code.

Зачем нужно брендирование примитивов в этом скилле?

Оно защищает от случайной подмены аргументов с одинаковым базовым типом вроде строк. Вы валидируете идентификатор один раз при создании и дальше опираетесь на проверку компилятора.

Откуда брать типы данных согласно правилам скилла?

Их нужно генерировать из первоисточников: спецификаций OpenAPI, Protobuf, GraphQL или файлов миграций базы данных. Ручное дублирование таких структур запрещено.

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

SKILL.md · MIT
---
name: principle-type-system-discipline
description: "Apply when designing types, reviewing a function signature, or writing code in any statically-typed language. Make illegal states unrepresentable, brand semantic primitives, parse external data at boundaries, exhaust variants, derive from authoritative schemas."
disable-model-invocation: true
---

# Type System Discipline

Make the compiler reject impossible states, mismatched primitives, and unhandled variants. Prefer defining errors and special cases out of existence over proliferating handlers. For TypeScript syntax, see the `typescript-best-practices` skill.

- **Brand semantic primitives.** `UserId` and `OrderId` are strings underneath but should not be interchangeable. Give each its own type, such as a branded intersection in TypeScript or a newtype elsewhere. Validate once at creation, trust the type downstream. If two arguments share a primitive type but mean different things, brand them.
- **External data is untyped until parsed.** RPC payloads, JSON, IPC messages, CLI args, config files, environment variables, database rows. Have a parse function at every boundary that turns unstructured input into the typed model. The **boundary-discipline** principle skill says where to put validation.
- **Derive types from authoritative schemas.** When a protocol buffer, OpenAPI spec, GraphQL schema, database migration, design-token file, or another file owns a shape, derive from it instead of hand-rolling a parallel type. See the **encode-lessons-in-structure** principle skill.

© backnotprop · MIT · backnotprop/pstack

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

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

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