Начать работу

«42» хранит спецификацию дизайн-системы для людей и ИИ-агентов. Ниже идут три маршрута для менеджера, дизайнера и разработчика.

Что получает продукт

Внешний продукт получает канон, примеры и токены, затем реализует их в своём стеке.

Публичный скин хранится в «42». Он меняет компонентные токены поверх Blueprint и доступен всем потребителям.

Обзор канона и список сущностей

Менеджеру

Спецификация фиксирует выбор компонентов, их поведение и границы. Бренды меняют только визуальный слой скинами.

  1. Что даёт канон Канон уже определяет, какой контрол выбрать и как он работает. Команды быстрее собирают интерфейс и меньше расходятся в базовых сценариях.
  2. Как принимаются решения Открытые критерии отделяют канон от продуктовых деталей. Каждое решение хранит основание и следующий шаг.
  3. Как считается покрытие Матрица покрытия строится по токенам юнитов, компонентов и скинов. Таблица обновляется автоматически.

Куда дальше

  • Обзор - принципы и состав канона
  • Решения - что входит в канон и почему
  • Скоуп - покрытие юнитов и компонентов скинами
  • Скины - публичные бренды поверх общего канона

Дизайнеру

Добавляйте скин в «42» для бренда, доступного всем потребителям.

  1. Сравните макет с Blueprint Сравните Blueprint с макетом и выпишите отличающиеся компонентные токены. Поведение, API и сетка --sp-* остаются общими.
  2. Храните только отличия В src/styles/skins/<id>.css оставьте переопределения [data-skin='<id>']. Не добавляйте новые токены или отдельную шкалу отступов.
  3. Зарегистрируйте скин Импортируйте CSS-дельту в src/app.css и добавьте id, название, краткое описание и источник в src/lib/spec/skins.js.
  4. Проверьте скин Проверьте скин в селекте, на /skins и в /scope.json. Затем запустите контракт, контраст и сборку.

Куда дальше

  • Скины - живое сравнение существующих productScope
  • Скоуп - фактическое покрытие юнитов и компонентов каждым скином
  • Архитектура скинов - границы Blueprint, дельт и автоматических проверок

Разработчику

Готового пакета нет. Продукт адаптирует контракт и хранит состояние синхронизации в 42.consumer.json и 42.lock.json.

  1. Опишите покрытие Создайте 42.consumer.json. Укажите фреймворк, canonical id реализованных компонентов, локальные пути, соответствие пропсов и осознанные отступления.
  2. Зафиксируйте релиз Сохраните версию и ревизии из release.json в 42.lock.json. При обновлении читайте changes.json только для сущностей из manifest.
  3. Найдите сущность по задаче Найдите сущность по useCases и прочитайте её правила, состояния и невозможные комбинации. Если канон не покрывает задачу, зафиксируйте пробел и не придумывайте API.
  4. Возьмите примеры и токены Сценарии лежат в examples.json, значения в tokens.json, покрытие скинами в scope.json.

Куда дальше

Подключить к проекту

Добавьте удалённый MCP в конфигурацию агента. Затем сохраните consumer и lock в корне продуктового репозитория.

Через один адрес агент читает канон, ищет правила, сравнивает релизы и проверяет consumer-файлы.

Streamable HTTP MCP
https://mcp.42s.ru/mcp

Codex

Добавьте блок в .codex/config.toml доверенного репозитория и перезапустите Codex.

.codex/config.toml
[mcp_servers.ds42]
url = "https://mcp.42s.ru/mcp"
enabled = true
required = false

Claude Code

Добавьте блок в .mcp.json в корне репозитория. При первом запуске подтвердите сервер проекта.

.mcp.json
{
	"mcpServers": {
		"ds42": {
			"type": "http",
			"url": "https://mcp.42s.ru/mcp"
		}
	}
}

Файлы потребителя

Скопируйте оба файла в корень продуктового репозитория. В manifest укажите фреймворк, пути и покрытие. Lock уже соответствует опубликованному релизу.

Карта локальных реализаций с canonical id, путями, пропсами и осознанными отступлениями.

42.consumer.json
{
	"$schema": "https://42s.ru/consumer.schema.json",
	"format": "42-consumer/1",
	"framework": "your-framework",
	"components": {
		"button": {
			"status": "partial",
			"implementation": "src/path/to/Button",
			"coverage": "Замените пример фактическим покрытием компонента.",
			"tests": [],
			"propMap": {},
			"departures": []
		}
	}
}

Текущая версия и SHA-256-ревизии опубликованных артефактов и выбранных сущностей.

42.lock.json
{
	"$schema": "https://42s.ru/lock.schema.json",
	"format": "42-lock/2",
	"version": "0.85.0",
	"specFormat": "42-spec/7",
	"contractRevision": "sha256:6caef0c4ad828b01b25f9ddc2a67fa1529fbee67630083b0ae003bb6f06fb93f",
	"tokensRevision": "sha256:dde021031c5f79de10fdab1f2addb4f1726c167475bea27e4ac326666d940835",
	"screenSchemaRevision": "sha256:dbc97f737f0264f2f2c641387f50cf6e0dd4c920bf6ca951b7a9e42643c94694",
	"entities": {
		"button": "sha256:5cbba9101ae1a86f5258733ee2560c370ff04d3734b65f72bd7b45da82f9ffdf"
	}
}

Что остаётся за границей

  • Локальная реализация остаётся в репозитории продукта. Не регистрируйте её как скин «42».
  • «42» публикует контракт и проверочные примеры. Репозиторий потребителя остаётся недоступен системе.
  • Публичный скин меняет productScope и сохраняет поведение канона.
  • Устанавливаемая библиотека компонентов была бы отдельным продуктом. Эта спецификация подключается иначе.