Impeccable

Русское руководство по дизайн-скиллу impeccable для Claude Code и других агентных сред: как устроен конвейер, в каком порядке идут шаги, что делает каждая из команд, что ставят хуки и на чём скилл спотыкается.

Дата снятия информации: 14 августа 2026.

Версии. У проекта три независимые линии версий: скилл 4.1.0 (поле version в SKILL.md — по нему и написано руководство), CLI 3.6.0 (npm-пакет impeccable), браузерное расширение 1.3.2. Теги в репозитории соответственно skill-v*, cli-v*, ext-v*releases/latest на GitHub отдаёт расширение, а не CLI, не путайте.

Требование: Node. Сайт пишет 22.12+, package.json пакета — >= 22.18.0. Ориентируйтесь на второе.

Источники: локально установленный скилл (источник правды о поведении) · impeccable.style (58 страниц) · github.com/pbakaus/impeccable · npm-пакет impeccable. Автор — Paul Bakaus. Лицензия Apache 2.0 на скиллы, команды, CLI и движок детектора.

Как читать: под каждым разделом указан первоисточник. Где сайт и код расходятся — описано поведение кода, а расхождение вынесено в последний раздел.

Что это и зачем

impeccable — это скилл (набор инструкций плюс вспомогательные node-скрипты), который подключается к агентной среде и меняет то, как агент делает фронтенд-дизайн. Это не библиотека компонентов, не генератор макетов и не плагин к Figma. Внутри нет ни одного пикселя готового дизайна.

Он решает одну конкретную проблему: модель по умолчанию делает «безопасный» дизайн — усреднённый, узнаваемо-нейросетевой, без точки зрения. Скилл добавляет три вещи, которых у модели нет самой по себе:

Чем он не является

Как он попадает в работу

Три канала внутри агента, все три реальны:

  1. По имени команды: /impeccable audit src/app.
  2. По смыслу запроса: описание скилла в SKILL.md перечисляет десятки триггеров («сделай смелее», «поправь типографику», «проверь доступность»), и среда подхватывает скилл автоматически.
  3. Через хук: после каждой правки UI-файла запускается детектор и подкидывает агенту находки — даже если про скилл никто не вспоминал.

Плюс два канала вне чата, где работает тот же детектор:

Где работает

Поддерживаемые среды (по сайту, 14.08.2026): Claude Code, Codex CLI, GitHub Copilot, Cursor, Gemini CLI, Grok Build, Antigravity, OpenCode, Pi. CLI принимает имена провайдеров claude, codex, copilot, cursor, gemini, agents, antigravity, grok, hermes, kiro, opencode, pi, qoder, rovo-dev, trae, trae-cn, vibe и их алиасы.

Тонкости, о которых стоит знать заранее: Cursor требует канал Nightly и включённые Agent Skills в Settings → Rules. Gemini CLI@google/gemini-cli@preview и скиллы, включённые через /settings. Codex не показывает скиллы в обычном /-пикере: нужен /skills или $, плюс отдельное одобрение хука через /hooks. GitHub Copilot подхватывает .github/hooks/impeccable.json только после коммита в дефолтную ветку.

Не запускайте impeccable вместе с anthropic-скиллом frontend-design. Формулировка авторов: два скилла с разными дизайн-словарями сталкиваются и взаимно гасятся. Выберите один.

Источник: .claude/skills/impeccable/SKILL.md (frontmatter description, разделы Core principles, Commands, Routing), reference/routing.md; impeccable.style/designing, /faq. Снято 14.08.2026.

Установка

npm-пакет impeccable — это только CLI. Сами скиллы он не содержит: при установке он скачивает бандл с impeccable.style, собранный под вашу конкретную среду и модель, и раскладывает по папкам провайдеров.

Правильный вызов

# в папке рабочего проекта
npx impeccable@latest install --providers=claude --project -y

⚠️ Не запускайте инсталлер голым. Команда npx impeccable@latest install без флагов интерактивна. В неинтерактивной сессии (агент, stdin=/dev/null, CI) промпт читает пустую строку и молча принимает дефолт. А дефолт может оказаться глобальным.

Поймано живьём на проекте Kupol 14 августа 2026: скилл уехал в ~/.claude, следы в ~/.agents/skills и ~/.cursor/agents пришлось убирать руками.

Ещё: install --help пакетом не поддерживается — функция установки вообще не проверяет этот флаг, он молча игнорируется и запускается настоящая установка. Не пробуйте «посмотреть справку» этим способом. Справка есть только у корневого impeccable --help и у detect --help.

Точный механизм: когда дефолт становится глобальным

Функция выбора scope в CLI (defaultInstallScope) работает так:

  1. Если среди выбранных провайдеров есть папка харнесса в самом проектеproject.
  2. Иначе если есть глобальная папка харнесса, в которой уже лежат реальные скиллыuser, то есть глобально.
  3. Иначе → project.

То есть ловушка срабатывает в конкретной конфигурации: в проекте ещё нет .claude/, а в ~/.claude/skills/ уже лежат ваши скиллы. Это ровно ситуация на машине, где глобально живут consilium, generate, skill-scout. Отсюда и вердикт: без флагов не запускать никогда, потому что заранее вы этого не проверите.

Флаг -y жёстко форсит project — это, помимо --providers, вторая страховка в рекомендованной строке.

Побочный эффект глобальной установки: хук всё равно пишется в проект. В CLI корень для хука всегда равен корню проекта. То есть можно получить скилл в ~/.claude/skills/ и одновременно <проект>/.claude/settings.local.json с хуком — состояние, из которого неочевидно, что установка вообще ушла глобально.

И ещё: в неинтерактивной сессии хук ставится по умолчанию, без вопроса. Отключается только флагом --no-hooks.

Баг, на который можно наступить. Если харнессов не найдено вообще — ни в проекте, ни в домашней папке — и сессия неинтерактивная без -y и без --providers, CLI уходит в бесконечный цикл, повторяя «Select harnesses… / Choose at least one provider.». Воспроизведено 14.08.2026. Лечится теми же явными флагами.

Проверка после установки

# в проекте должен появиться скилл
ls .claude/skills/impeccable/

# глобально ничего лишнего появиться не должно
ls ~/.claude/skills

Все команды CLI

Список снят из кода пакета impeccable@3.6.0, не из README. Других подкоманд нет.

КомандаФлаги и назначение
install--providers=<список> · --scope=project|global (алиас --install-scope) · --project/--local · --global/--user/--home · -y/--yes · --force · --no-hooks
updateТе же scope-флаги, -y, --force, --no-hooks. Скачивает свежие скиллы и убирает устаревшие файлы. PRODUCT.md и DESIGN.md никогда не перезаписываются
checkБез флагов. Сравнивает установленное с последним релизом — «отстал я или нет»
detect [файл/папка/URL…]Детектор, см. отдельный раздел. Флаги --fast, --gpt, --gemini устарели и игнорируются
ignores (алиас ignore)CRUD по игнорам детектора: list/status/ls, add-rule (--all-values), add-file, add-value, remove-rule, remove-file, remove-value, clear. Scope: --shared (по умолчанию), --local, --all. Дополнительно --file <glob>, --reason <текст>
link--source=<path> (по умолчанию .impeccable), --providers=, -y, --force
helpТянет список команд с impeccable.style/api/commandsтребует сети
skills <cmd>Легаси-неймспейс, всё ещё поддерживается
--help/-h, --version/-vГлобальные

pin, hooks, doctor, uninstall — это НЕ команды CLI. Их в пакете нет вовсе. Это команды внутри агента: /impeccable pin <cmd>, /impeccable hooks <action>, /impeccable doctor.

init в CLI намеренно заблокирован с внятной ошибкой: «init» is not a CLI command. Type /impeccable init in your AI coding agent's chat.

Альтернативные способы установки

Проектная установка имеет приоритет над глобальной и позволяет держать скиллы под контролем версий.

Что инсталлер кладёт в проект

ПутьЧто это
.claude/skills/impeccable/SKILL.mdГлавный файл скилла: принципы, таблица команд, маршрутизация
.claude/skills/impeccable/reference/*.md39 справочников — по одному на команду плюс общие (new-work, craft-floor, routing, hooks, doctor, ios, android)
.claude/skills/impeccable/scripts/*.mjsИсполняемая часть: загрузчик контекста, детектор, хуки, live-режим, генерация картинок, страница выбора концепции
.claude/settings.local.jsonХуки Claude Code (см. Хуки). Файл в .gitignore — остаётся локальным

Артефакты, которые появятся потом — уже в ходе работы

ПутьКто пишетЧто внутри
PRODUCT.mdinitПравда о продукте: пользователи, задача, позиционирование, ограничения, платформа, стек
DESIGN.mddocument или финиш новой работыВизуальная система: токены во frontmatter + проза. Формат совместим с Google Stitch
.impeccable/config.jsonhooks, initОбщий конфиг: настройки хука, игноры детектора, buildPath
.impeccable/config.local.jsonинсталлер, разработчикПерсональные переопределения, включая согласие на хук. В .gitignore
.impeccable/design.jsondocumentМашинный «сайдкар» к DESIGN.md — его читает детектор дизайн-системы. Руками не править, обновлять через document
.impeccable/surfaces/*.mdсама работаБриф поверхности: режим, задача, последовательность доказательств, выбранное направление для одной страницы
.impeccable/critique/critiqueСнимки критики: отчёт + метаданные оценок, чтобы polish взял их как бэклог
.impeccable/review/финиш новой работыСкриншоты для ревьюера: desktop.png, mobile.png
.impeccable/mocks/decision/раунд направленийКомп-картинки карточек концепций
.impeccable/live/liveКонфиг live-режима, журнал сессий, манифест корней

Клиентский репозиторий? Добавьте .claude/ в .gitignore проекта — иначе мегабайты скиллов уедут клиенту. А вот PRODUCT.md, DESIGN.md и .impeccable/config.json имеет смысл коммитить: это знание о проекте, а не инструмент. .impeccable/config.local.json impeccable сам держит вне git.

Обновление

npx impeccable check     # отстал ли я от последнего релиза
npx impeccable update    # обновить скиллы, убрать устаревшие файлы
npx impeccable install --force   # переустановить начисто

При обновлении PRODUCT.md и DESIGN.md не трогаются. Если установленная версия старше опубликованной, загрузчик контекста сам скажет об этом директивой UPDATE_AVAILABLE при старте сессии (запрос к impeccable.style троттлится раз в сутки, повторное уведомление о той же версии — не чаще раза в неделю).

Источник: живая установка в проекте Kupol (14.08.2026), код CLI impeccable@3.6.0 (cli/bin/cli.js, cli/bin/commands/skills.mjs) с эмпирическими прогонами в изолированных окружениях, impeccable.style/faq, reference/hooks.md, reference/init.md, reference/document.md, scripts/context.mjs.

Порядок работы

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

Шаг 0: загрузка контекста (каждая сессия)

Первое, что скилл делает один раз за сессию — запускает загрузчик контекста:

node .claude/skills/impeccable/scripts/context.mjs
# при работе по конкретному файлу или маршруту:
node .claude/skills/impeccable/scripts/context.mjs --target src/routes/pricing.astro

Скрипт находит PRODUCT.md, DESIGN.md, бриф поверхности и — на нативных платформах — платформенный справочник, а потом печатает набор директив заглавными буквами. Агент обязан им следовать и повторно скрипт не запускать.

Вот реальный вывод на проекте без PRODUCT.md, но с готовым интерфейсом (снято 14.08.2026):

NO_PRODUCT_MD: This project has no PRODUCT.md yet, but it does have an
incumbent visual implementation...

BUILD_INIT_REQUIRED: Before shape or any new-surface/redesign flow, init must
capture PRODUCT.md with the human...

SCOPED_EXISTING_ALLOWED: Narrow refinement commands may use the incumbent
implementation as authority without blocking on context setup...

EXISTING_VISUAL_SYSTEM: For refinement or extension, code and assets are
incumbent design authority...

RESOLVED_CONTEXT: { "projectRoot": "...", "productPath": null, ... }

AUTONOMY_DIRECTIVE_CHECK / SUBAGENT_AUTHORIZATION / IMAGE_TOOLS: ...

Что означают ключевые директивы:

ДирективаСмысл
NO_PRODUCT_MDБрифа нет. Новая поверхность или редизайн — только через init. Узкие доработки могут идти без него
BUILD_INIT_REQUIREDПрямой запрет: до shape и любой новой работы init обязан записать PRODUCT.md
SCOPED_EXISTING_ALLOWEDРазрешение: точечные команды доработки не блокируются отсутствием контекста
EXISTING_VISUAL_SYSTEMКод и ассеты — действующая дизайн-власть. Отсутствие DESIGN.md — это пробел в документации, а не «чистый лист»
RESOLVED_CONTEXTJSON: какие пути реально разрешились (корень проекта, пути к файлам, платформа)
CONTEXT_STALEДешёвая версия отчёта doctor: артефакты разошлись со схемой. Только сообщается, чинится только по просьбе
UPDATE_AVAILABLEУстановлена версия старше опубликованной; лечится npx impeccable update
MANUAL_DETECTOR_REQUIREDАвтоматического хука в сессии нет — прогнать детектор вручную один раз в конце
IMAGE_GEN_AVAILABLE / IMAGE_TOOLSДоступна генерация картинок и какие конвертеры есть на машине
BUILD_PATH_DEFAULTЗаписанный режим сборки: comp (сначала картинка-эталон) или code (сразу в код)

Источник: scripts/context.mjs + живой запуск в проекте Kupol. Снято 14.08.2026.

Файлы контекста: что где лежит и кто главнее

ФайлНа какой вопрос отвечаетКогда обновлять
PRODUCT.md
стратегия
Какая платформа? Для кого? Что продукт делает и какое утверждение сосед не может честно скопировать? Какие реальные доказательства и обязательства бренда существуют?Меняются платформа, аудитория, позиционирование, назначение, ограничения, доказательства или обязательства бренда → /impeccable init
DESIGN.md
визуальная система
Какие цвета, шрифтовые стеки, трактовки компонентов, радиусы, высоты и визуальные правила допустимы?Меняются палитра, типографика, компоненты, токены, шкалы отступов и радиусов → /impeccable document
.impeccable/surfaces/*.md
одна поверхность
Какой режим у этой страницы, какую работу она делает, какие доказательства показывает, какое направление выбрано?Пишется самой работой. Править, когда меняется стратегия страницы
.impeccable/design.json
генерируется
Структурированные данные для автоматики: детектор, хуки, live-режимРуками не править. Обновляется прогоном document

Кто побеждает в конфликте:

Где скилл ищет файлы: сначала корень проекта, затем .agents/context/, затем docs/. В монорепо каждый воркспейс сначала разрешает свои PRODUCT.md и DESIGN.md, потом пофайлово падает на корень репозитория. Границы проектов берутся из деклараций пакетного менеджера (workspaces в package.json, pnpm-workspace.yaml, lerna.json) либо из глобов projectRoots в .impeccable/config.json:

{ "projectRoots": ["docs/design/skins/*"] }

Платформа

PRODUCT.md несёт строку ## Platform. Отсутствие поля означает web.

ЗначениеЧто означает
webСайт или веб-приложение, включая адаптивный мобильный веб. Значение по умолчанию
iosНативное iOS/iPadOS-приложение. Подгружает руководство по Apple HIG
androidНативное Android-приложение. Подгружает Material Design 3
adaptiveОдна кодовая база (Flutter, React Native, KMP), которая действительно адаптирует язык дизайна под ОС. Подгружает оба

Нативная поддержка в статусе alpha. Live-режим, детектор и хук читают браузер или парсят HTML — на нативном проекте они не работают. Мобильный веб остаётся web, а нативная обёртка вокруг сайта не делает его язык дизайна нативным.

Правила детектора, которые включаются только при наличии DESIGN.md: design-system-font (шрифты, не объявленные в типографике), design-system-color (литеральные цвета вне задокументированной палитры), design-system-radius (радиусы вне шкалы), design-system-font-size (размеры вне рампы). Без DESIGN.md, при designSystem.enabled: false или с флагом --no-design-system они молчат. Это, пожалуй, лучший практический аргумент за то, чтобы довести document до конца.

Источник: impeccable.style/docs/context, /docs/config; подтверждено кодом scripts/context.mjs (константа FALLBACK_DIRS = ['.agents/context', 'docs'], разрешение монорепо). Снято 14.08.2026.

Маршрут A: новая поверхность или редизайн

Именно здесь работает правило «сначала PRODUCT.md». Пять шагов, каждый со своим артефактом.

1init — собрать PRODUCT.md

Скилл сначала сам изучает репозиторий (доки, копирайт, конфиги, маршруты, роли, логотипы, юридические ассеты), чтобы не заставлять вас пересказывать то, что уже есть в коде. Потом задаёт вопросы — не больше трёх за раунд, максимум три раунда — и только про существенные пробелы.

Вопросы строго про продукт: кто пользователь и в какой ситуации; что продукт делает и чем механически отличается; какие факты, ассеты и ограничения нельзя нарушить. На пустом проекте отдельно спрашивается стек (чистый HTML/CSS, конкретный фреймворк или «на ваше усмотрение») — это решение пользователя, не агента.

Про эстетику на этом шаге не спрашивают вообще. Ни цветов, ни шрифтов, ни настроения, ни референсов. Если вы сами назвали жёсткое визуальное ограничение — его запишут как есть, без расширения. Это ответ на главный вопрос «почему сначала бриф»: init собирает правду, а не вкус.

Результат: PRODUCT.md в корне проекта с секциями Platform, Stack, Users, Product Purpose, Positioning, Operating Context, Capabilities and Constraints, Brand Commitments, Evidence on Hand, Product Principles, Accessibility & Inclusion. Пустые секции опускаются, а не заполняются водой.

Гейт: перед переходом дальше скилл обязан проверить, что файл реально существует по разрешённому пути. Заметки интервью или «планировочный пакет» вместо файла не считаются.

2Раунд вопросов, меняющих работу

Один раунд из двух-трёх связанных вопросов, уже про поверхность: кто должен действовать и во что поверить (Persuade), какая задача и состояния (Operate), какой вопрос у читателя (Read), что ведёт и как разворачивается исследование (Experience).

3Выбор направления через «бросок кубика»

Это ключевой и самый неочевидный механизм. Скилл выводит семь визуальных систем из культурного мира аудитории, а потом запускает:

node .claude/skills/impeccable/scripts/concept-seed.mjs --scope direction --mode <mode>

Скрипт сам назначает, какое направление собирать, и раздаёт «челленджеров» из своего каталога. Смысл — сломать колею: без броска каждый прогон сходится к категорийному дефолту.

Проверено на живом запуске: без PRODUCT.md скрипт отказывается работать и печатает: «the dice stay in the cup until product truth exists» — «кубики остаются в стакане, пока не появится правда о продукте». То есть порядок «бриф → концепция» не рекомендация, а механическая блокировка.

Челленджеры раздаются из отрецензированного человеком каталога 188 одобренных «визуальных миров» (демо на главной сайта сдаёт из 177 самых высокорейтинговых). Это не шаблоны: мир соревнуется с направлениями, выведенными моделью из вашего продукта, и берёт сборку только если побеждает по двум осям — узнаваемость для аудитории и ясность продукта.

Дальше пользователю показывают страницу решения в браузере (её поднимает serve-question.mjs): карточки направлений одинакового размера, у каждой тезис, палитра, материалы, первый экран, честный риск. Плюс всегда есть «тихая дверь» — standing exit, категорийный стандарт, сыгранный честно, и кнопка перебросить (re-roll) с регистрами safer / bolder.

Кто и на каких основаниях может перебрасывать. Вы — свободно и по любой причине, включая вкус; после двух перебросов подряд скилл спросит, какого качества не хватает, вместо того чтобы гадать на третьем. Агент — только по названным фактическим основаниям (назначенное направление не может нести правду продукта или задачу); его собственный вкус основанием не считается, в этом весь смысл броска извне его ранжирования. Направление, закреплённое пользователем или брифом, всегда бьёт бросок.

Seed key из вывода скрипта стоит сохранить: он воспроизводит весь бросок, включая все раунды перебросов.

Важно про слова «смелее» и «тише». Пока открыт раунд направлений, «bolder» и «quieter» — это регистры переброса, а не команды bolder/quieter. Команды применяются к уже выпущенной поверхности.

4Фиксация решения и сборка

Перед кодом выбранное направление записывается контрактом в комментарий в начале артефакта — пять коротких блоков, не длиннее 150 слов: THESIS, OWN-WORLD, STORY, FIRST VIEWPORT, FORM, плюс строка FINISH. Комментарий должен пережить продакшн-сборку (HTML-комментарий в разметке, не frontmatter).

Дальше — режим сборки, он записан в .impeccable/config.json как buildPath:

  • comp (comp-led) — сначала генерируется картинка-эталон, потом код воспроизводит её почти попиксельно, и только после этого добавляются анимация, интерактив и адаптив.
  • code (code-led) — сразу в код; амбиция живёт в блоке FIRST VIEWPORT контракта, ревьюер проверяет её по поведению.

Если генерации картинок нет вовсе, выбора нет: только code-led.

Откуда берутся картинки. Скилл зовёт тот инструмент, который даёт ваша среда, а не конкретную модель. Если встроенного инструмента генерации нет — можно задать OPENAI_API_KEY, и рендер пойдёт через gpt-image-2. Скилл обязан предупредить об этом до первой картинки, потому что тратит ваши деньги: примерно 5–25 центов за изображение.

5Финиш: осмотр, ревью, документация

Жёсткое правило скилла — проверять пакетами, а не циклом: собрать целиком, снять один batch скриншотов (десктоп + мобильный вместе), починить всё найденное одной пачкой, подтвердить максимум ещё одним раундом и остановиться. Потолок — два раунда.

Потом запускаются два поставляемых субагента:

  • impeccable-finish-reviewer — свежий контекст, без истории сборки (чтобы не унаследовать оптимизм автора). Получает исходный запрос, путь к артефакту, скриншоты, контракт направления, находки хука.
  • impeccable-documenter — пишет DESIGN.md и сайдкар по факту собранного мира, а не по намерению.

Финиш определён так: «контракт соблюдён, комп выдержан, ревью закрыто, система записана». Чистый прогон детектора — не финиш.

Маршрут B: доработка существующего

Здесь PRODUCT.md не обязателен — и это специально.

  1. Загрузка контекста печатает SCOPED_EXISTING_ALLOWED: узкие команды доработки идут без блокировки.
  2. Действующая визуальная власть — это код. Токены, тема, CSS, компоненты и ассеты. Отсутствие DESIGN.md само по себе не делает проект «чистым листом».
  3. Скилл читает цель и хотя бы один репрезентативный источник визуальной правды, прежде чем править.
  4. Дальше — нужная команда: polish, typeset, layout, adapt, harden и т. д.
  5. После работы предлагается init — не как условие, а как следующий шаг.

Граница между доработкой и редизайном. Скилл формулирует так: «Refinement preserves; redesign replaces». Доработка сохраняет идентичность, поведение, копирайт и всё вне области задачи. Редизайн сохраняет правду о продукте, содержание и функции, но со старым внешним видом обращается как с уликой и антиреференсом — и обязан пройти маршрут A с заменой DESIGN.md. Промежуточного варианта «полирнём то, что и так решили выбросить» — нет.

Без аргумента

Команда /impeccable без аргумента не запускает ничего. Скилл собирает сигналы контекста:

node .claude/skills/impeccable/scripts/context-signals.mjs

и выдаёт 2–3 обоснованные рекомендации плюс полное меню. Логика рекомендаций: есть код без DESIGN.mddocument; критики ещё не было → critique; в последней критике низкий счёт или есть P0/P1 → polish; правки сосредоточены в одном месте → audit/polish с точным скоупом; запущен dev-сервер → доступен live.

Источник: SKILL.md (Setup, How to design, Routing), reference/init.md, reference/new-work.md, reference/routing.md, живые запуски context.mjs и concept-seed.mjs. Снято 14.08.2026.

Все команды

23 команды, сгруппированные по категориям. Список сверен с реально установленным скиллом: pin.mjs без аргументов печатает точно этот перечень.

Сайт считает «23» иначе. В документации на impeccable.style тоже 23 команды, но набор другой: там есть сам impeccable (вызов без аргумента — меню и свободная дизайн-работа) и нет устаревшего craft. И группы другие: CREATE · EVALUATE · REFINE · SIMPLIFY · HARDEN · SYSTEM вместо Build · Evaluate · Refine · Enhance · Fix · Iterate из SKILL.md. Ниже — группировка по коду, потому что это то, что реально исполняется.

КомандаКатегорияЧто делает
shape [feature]BuildСпланировать UX/UI до кода
initBuildЗаписать PRODUCT.md
documentBuildСгенерировать DESIGN.md из существующего кода
extract [target]BuildВынести токены и компоненты в дизайн-систему
craft [feature]BuildУстаревший алиас обычного запроса на новую работу
critique [target]EvaluateUX-ревью с эвристиками Нильсена и оценкой
audit [target]EvaluateТехнические проверки: a11y, перф, тема, адаптив
polish [target]RefineФинальный проход качества перед выкаткой
bolder [target]RefineУсилить безопасный или пресный дизайн
quieter [target]RefineПриглушить агрессивный или перегруженный
distill [target]RefineСнять до сути, убрать сложность
harden [target]RefineПродакшн-готовность: ошибки, i18n, крайние случаи
onboard [target]RefineПервый запуск, пустые состояния, активация
animate [target]EnhanceОсмысленная анимация и движение
colorize [target]EnhanceСтратегический цвет в монохромный UI
typeset [target]EnhanceТипографика: иерархия и шрифты
layout [target]EnhanceОтступы, ритм, визуальная иерархия
delight [target]EnhanceХарактер и запоминающиеся детали
overdrive [target]EnhanceЗа пределы обычных ограничений
clarify [target]FixUX-копирайт, подписи, сообщения об ошибках
adapt [target]FixАдаптация под устройства и размеры экрана
optimize [target]FixДиагностика и починка производительности UI
liveIterateВизуальные варианты прямо в браузере

Плюс три служебных подкоманды, которых нет в этой таблице: hooks, doctor и pin/unpin.

Build — создание

init Build

Что делает
Настраивает проект под impeccable: изучает репозиторий, проводит интервью (когда контекста не хватает) и пишет PRODUCT.md — стратегический документ: пользователи, бренд, принципы. Предлагает DESIGN.md, когда код уже есть. Преднастраивает live-режим. В конце рекомендует следующие команды.
Когда звать
Один раз на проект. Перед любой новой поверхностью или редизайном — обязателен.
Вход
Аргументов нет. Репозиторий + ответы человека.
Выход
PRODUCT.md в корне проекта; при необходимости .impeccable/config.json с buildPath и .impeccable/live/config.json.
Пример
/impeccable init
Ошибки
Файл не создан, а интервью прошло — это незавершённый init, гейт должен отловить. Про эстетику здесь не спрашивают: если агент спросил про цвета и шрифты — он вышел за рамки шага. teach — алиас init.
⚠ Расхождение
Сайт и метаданные команд, поставляемые с самим скиллом, утверждают, что init предлагает DESIGN.md, когда в проекте есть код (сайт прямо советует «согласиться, когда предложит запустить document»). Действующий справочник reference/init.md это запрещает: «Never … offer DESIGN.md during init» и «Do not offer DESIGN.md merely because it is missing». Ориентируйтесь на справочник, а document зовите отдельным шагом. Подробнее — в разделе расхождений.

shape [feature] Build

Что делает
Планирует UX и UI до кода. Обязательное многораундовое интервью, визуальные пробы где доступны, на выходе — подтверждённый пользователем бриф.
Когда звать
Когда нужен согласованный бриф без реализации; когда задача крупная и лучше договориться на берегу.
Вход
Описание фичи или поверхности.
Выход
Бриф в чате. Кода не пишет. В new-work заходит только за решениями про визуальный мир и концепцию поверхности и там останавливается.
Пример
/impeccable shape экран настроек уведомлений
Ошибки
Требует PRODUCT.md — директива BUILD_INIT_REQUIRED блокирует. Разреженный запрос требует минимум одного раунда ответов: «просто сделай» здесь не сработает.

document Build

Что делает
Генерирует DESIGN.md, фиксирующий текущую визуальную систему. Автоматически вытаскивает цвета, типографику, отступы, радиусы и паттерны компонентов из кода, потом спрашивает пользователя про описательный язык — атмосферу и характер цвета.
Когда звать
Есть связный интерфейс, но нет спецификации, по которой агент сможет держаться бренда.
Вход
Аргументов нет. Читает код проекта.
Выход
DESIGN.md в корне: YAML-frontmatter с машинными токенами + до восьми markdown-секций в фиксированном порядке. Формат — официальная спека DESIGN.md (Google Stitch), так что файл переносим между инструментами. Плюс сайдкар .impeccable/design.json, который читает детектор дизайн-системы.
Пример
/impeccable document
Ошибки
Токены нормативны, проза — контекст. Не пытайтесь заменить токены описаниями. На новом мире DESIGN.md пишется на финише, а не до сборки — иначе получается свод правил, который потом защищают от реальности.

extract [target] Build

Что делает
Находит повторяющиеся паттерны, компоненты и значения, выносит их в дизайн-систему и мигрирует существующие места использования на общие версии.
Когда звать
По коду разъехались вариации одного и того же, хочется вернуть к системе.
Вход
Область: папка, фича, страница.
Выход
Новые компоненты и токены, переписанные места использования, удалённый мёртвый код, обновлённая документация системы.
Пример
/impeccable extract src/features/billing
Ошибки
Порог — три и более использования с одинаковым намерением. Преждевременная абстракция хуже дублирования. Если дизайн-системы нет вообще — команда обязана остановиться и спросить, где её заводить, а не создавать самовольно.

craft [feature] Build

Статус
Устаревший алиас. Ничего не добавляет.
Что делает
То же, что обычный запрос «сделай лендинг» / «построй эту фичу» / «переделай экран»: маршрут через init (если нет PRODUCT.md) и дальше new-work.
Ошибки
Не говорите пользователям, что им «нужно вызвать craft». Естественная формулировка работает так же.

Evaluate — оценка

critique [target] Evaluate

Что делает
UX-ревью с количественной оценкой. Формально: одна цель, две независимые оценки, синтез, снимок в архив, вопросы пользователю.
Как устроено
Assessment A — дизайн-ревью глазами арт-директора: специфичность дизайна, иерархия, ИА, когнитивная нагрузка, эмоциональный путь, 10 эвристик Нильсена по шкале 0–4. Assessment B — детерминированные улики: прогон детектора плюс браузерный оверлей. Оба обязаны идти изолированными субагентами, чтобы B не «заякорил» суждение A.
Вход
Конкретный файл, компонент или URL. Путь предпочтительнее URL дев-сервера: порты плывут, пути нет.
Выход
Полный отчёт в чате (это и есть результат) + снимок в .impeccable/critique/. В отчёте: таблица эвристик с итогом вида 28/40, вердикт специфичности, что работает, 3–5 приоритетных проблем с тегами P0–P3 и предложенной командой, «красные флаги» по 2–3 персонам, линия тренда по прошлым прогонам.
Пример
/impeccable critique src/pages/pricing.astro
Ошибки
Три типовых провала, все описаны в самом справочнике: (1) прогнали в одном контексте без субагентов и не поставили баннер ⚠️ DEGRADED: single-context; (2) отчёт написали только в файл, а в чат не выдали — «если отчёт существует только в .impeccable/critique/, прогон не дал ничего»; (3) закончили отчётом и не задали финальные вопросы. Пропущенный детектор — тоже провал прогона, кроме случая, когда detect.mjs отсутствует или падает после реальной попытки.

audit [target] Evaluate

Что делает
Систематические технические проверки. Ничего не чинит — документирует, чтобы чинили другие команды.
Пять измерений
Accessibility · Performance · Theming · Responsive Design · Implementation Integrity. Каждое 0–4, итог из 20.
Вход
Область: фича, страница, компонент.
Выход
Таблица оценок с итогом ??/20 и полосой рейтинга, вердикт целостности реализации, executive summary, находки по severity P0–P3 с локацией и стандартом (WCAG), системные паттерны, что сделано хорошо, план команд в порядке приоритета.
Пример
/impeccable audit src/app/dashboard
Ошибки
Только веб. На ios/android/adaptive маршрут уходит в audit.native.md. Гора P3-находок создаёт шум — фокус на том, что реально важно. Находки без объяснения влияния на пользователя не считаются.

Refine — доводка

polish [target] Refine

Что делает
Финальный проход качества: выравнивание, отступы, консистентность, микродетали, состояния. Проходит весь путь, а не один экран.
Когда звать
Перед выкаткой; после critique/audit как исполнитель их бэклога.
Вход
Цель + планка качества и ограничения по срокам. Автоматически подтягивает прошлую критику: critique-storage.mjs latest "<target>".
Выход
Правки в коде. Порядок починки жёсткий: сломанные задачи и потеря данных → отсутствующие состояния (loading, empty, error, success, disabled, permission) → поток, иерархия, адаптив, дрейф системы → визуальные и моушн-несоответствия → чистка кода.
Пример
/impeccable polish поток оформления заказа
Ошибки
Polish — не замаскированный редизайн. Если сама концепция неверна, команда обязана сказать это вслух и порекомендовать редизайн или bolder, а не протаскивать замену. И: чистый прогон детектора — не доказательство качества, нужно смотреть на отрендеренный результат.

bolder [target] Refine

Что делает
Поднимает одну часть поверхности до убедительности, которую остальная страница уже подразумевает. Работает в существующем словаре системы.
Вход
Какой участок целевой и что трогать нельзя.
Ошибки
Скоуп суверенен: «всё остальное остаётся» — это буквальная инструкция. Нельзя перекрашивать соседей, добавлять цвета, шрифты, радиусы, тени или примитивы, которых у поверхности нет. Если система не может выразить направление — остановиться и спросить, назвав конкретное добавление и его работу. Рефлекс «добавить больше эффектов» — противоположность смелости и отвергается первым. Плюс важное: слово «bolder», сказанное при открытом раунде направлений, означает регистр переброса, а не эту команду.

quieter [target] Refine

Что делает
Снижает визуальную интенсивность без потери личности и без скатывания в дженерик. «Тихий дизайн сложнее смелого: сдержанность требует точности».
Как зависит от режима
Persuade/Experience: сдержаннее палитра, больше воздуха, драма уменьшается, но точка зрения остаётся. Operate/Read: меньше фоновых акцентов, площе карточки, меньше цвета и движения — инструмент должен полнее исчезать в задаче.

distill [target] Refine

Что делает
Снимает всё, что не заслуживает места: дублирующие элементы, повторённую информацию, декоративный шум, косметическую сложность.
Когда звать
«Упростить», «разгрузить», «убрать лишнее», «сделать чище и сфокусированнее».

harden [target] Refine

Что делает
Готовит интерфейс к реальным данным: обработка ошибок, i18n, переполнение текста, крайние случаи, устойчивость к сети.
Что проверяет
Очень длинный и очень короткий текст, спецсимволы, эмодзи, RTL, большие числа, 1000+ элементов в списке, пустые состояния.
Пример
/impeccable harden форма профиля

onboard [target] Refine

Что делает
Проектирует первый запуск, пустые состояния и активацию: приветственные экраны, настройку аккаунта, прогрессивное раскрытие, контекстные подсказки, «момент ага».
Что нужно на вход
Какой «момент ага» вы хотите и каков уровень опытности пользователей.
Принцип
«Задача онбординга — не научить продукту, а как можно быстрее довести до момента, доказывающего, что продукт стоит времени».

Enhance — усиление

animate [target] Enhance

Что делает
Движение объясняет состояние, связь и иерархию — либо создаёт один поставленный момент, который поверхность заслужила. «Декорация без цели — это анимационный долг».
По режимам
Persuade/Experience: одна отрепетированная фокусная последовательность лучше повторяющихся ревилов секций. Operate/Read: движение служит обратной связи и непрерывности, рутинные переходы быстрые, пользователя не заставляют ждать хореографию загрузки.
Ошибки
На нативных платформах веб-инструментарий не применяется — идти в секцию Motion соответствующего платформенного справочника, включая поведение Reduce Motion.

colorize [target] Enhance

Что делает
Вводит цвет как иерархию, смысл и атмосферу. Сохраняет подтверждённые бренд-цвета и семантические конвенции.
Ошибки
Нельзя под видом «добавим цвета» подменять визуальный мир. Для Operate/Read цвет прежде всего кодирует действие, выбор, статус и навигацию — редкость даёт акценту силу.

typeset [target] Enhance

Что делает
Чинит шрифты, иерархию, размеры, насыщенность и читаемость, чтобы текст выглядел намеренно. Работает внутри установленного визуального мира.
Ошибки
Если замена типографики создаёт новую идентичность — это маршрут new-work с обновлением DESIGN.md, а не typeset.

layout [target] Enhance

Что делает
Превращает приоритет продукта в порядок чтения, группировку, ритм и полезное пространство. Сначала диагностирует структурную проблему, потом двигает блоки.
Ошибки
Меняет структуру внутри существующего мира. Замена идентичности — снова new-work.

delight [target] Enhance

Что делает
Добавляет характер в моменты, которые этого заслуживают. «Восторг — это не слой универсальной игривости, а характер продукта, проявленный через полезное взаимодействие, человечный ответ или неожиданно продуманную деталь».
Что нужно на вход
Эмоциональный диапазон бренда.
По режимам
Operate/Read: концентрировать восторг в осмысленных моментах — первое использование, завершение, восстановление, мастерство. Всё остальное держит надёжность.

overdrive [target] Enhance

Что делает
Толкает интерфейс за пределы обычного, используя полную мощь браузера: таблица на миллион строк, диалог, вырастающий из своего триггера, форма с потоковой валидацией, кинематографичный переход страниц.
Ошибки
Самая рискованная команда. Справочник помечен «EXTRA IMPORTANT»: контекст определяет, что значит «экстраординарно». Система частиц на креативном портфолио — впечатляет; она же на странице настроек — позор. Команда обязана сначала предложить, а не сразу реализовывать. Ответ начинается с баннера ⚡ OVERDRIVE.

Fix — починка

clarify [target] Fix

Что делает
Переписывает непонятный текст интерфейса: подписи, ошибки, микрокопию, инструкции. Сохраняет фактический смысл, терминологию продукта и голос бренда.
Как работает
Читает весь путь взаимодействия, а не отдельные строки: неоднозначные существительные и глаголы, внутренний жаргон, размытые подписи, отсутствующие последствия и способы восстановления, несогласованную терминологию, лишние заголовки и подтверждения.
Что нужно на вход
Что аудитория знает и в каком эмоциональном состоянии находится.

adapt [target] Fix

Что делает
Адаптирует существующий дизайн к другому контексту: размер экрана, устройство, платформа, сценарий использования. Брейкпоинты, текучие раскладки, размеры зон касания.
Вход
Целевые платформы/устройства и контексты использования: /impeccable adapt таблица заказов mobile.
Ошибки
Главная ловушка — считать адаптацию масштабированием. Задача — переосмыслить опыт под новый контекст. Только веб (включая мобильный веб); нативные платформы уходят в adapt.native.md.

optimize [target] Fix

Что делает
Диагностирует и чинит производительность UI: скорость загрузки, рендеринг, анимации, картинки, размер бандла.
Как
Сначала измерить (Core Web Vitals: LCP, INP, CLS; время до интерактивности; размеры бандла; частота кадров; сетевой водопад), потом найти узкое место, потом чинить, потом измерить снова.
Принцип
«Производительность — это фича. Не оптимизируйте то, что не тормозит».

Iterate — итерации

live Iterate

Что делает
Интерактивный режим вариантов. Вы выбираете элемент прямо в браузере, выбираете дизайн-действие — и получаете сгенерированные варианты HTML+CSS, подменяемые на лету через HMR.
Требования
Запущенный dev-сервер с HMR (Vite, Next.js, Bun и т. д.) или статический HTML-файл, открытый в браузере.
Как запускается
node .claude/skills/impeccable/scripts/live.mjs (или с --target <path> в монорепо). Скрипт поднимает вспомогательный HTTP-сервер (по умолчанию порт 8400) и внедряет пикер в страницу. Дальше агент крутит цикл опроса live-poll.mjs и реагирует на события: generate, steer, accept, discard, manual_edit_apply, exit.
Первичная настройка
Разовая: .impeccable/live/config.json с полями files (какие HTML реально грузит браузер), insertBefore, commentSyntax. Для Next.js, Nuxt, SvelteKit, TanStack, Astro в справочнике есть готовая таблица значений.
Приоритет источников
При генерации: DESIGN.md побеждает в визуальных решениях, PRODUCT.md — в продуктовых и в голосе, бриф поверхности — в стратегии этой поверхности.
Ошибки
CSP. Если в проекте есть Content Security Policy, она заблокирует http://localhost:8400, и пикер не загрузится. Скилл детектит это через detect-csp.mjs и обязан спросить согласия перед патчем конфига (патч завёрнут в NODE_ENV === "development"). Отказались — live не заработает, пока не добавите разрешение вручную. Только веб. Ещё: если дефолтный порт dev-сервера занят — приложение почти наверняка уже запущено, надо пробить URL, а не поднимать второй сервер.

Служебные подкоманды

/impeccable hooks <on|off|status|ignore-rule|ignore-file|ignore-value|reset>

Что делает
Управляет хуком детектора для текущего проекта. Подробности — в разделе Хуки.
Как исполняется
Через админ-скрипт, вывод отдаётся пользователю дословно:
node .claude/skills/impeccable/scripts/hook-admin.mjs <action> [args...]
Ошибки
Править .impeccable/config.json руками из этого потока нельзя — только через hook-admin.mjs, чтобы записи оставались валидированными. Единственное исключение — поле detector.extensions, у которого нет админ-действия.

/impeccable doctor

Что делает
Находит и чинит расхождения между артефактами проекта (PRODUCT.md, DESIGN.md + сайдкар, .impeccable/config.json, брифы поверхностей, хук) и тем, что читает установленная версия.
Вызов
node .claude/skills/impeccable/scripts/doctor.mjs --json · --fix применяет только механические миграции · --target <path> выбирает воркспейс в монорепо.
Три вида «устарело»
Версия инструмента — лечится npx impeccable update, это не задача doctor. Дрейф схемы — артефакт написан старой версией; это doctor чинит. Дрейф правды — код ушёл вперёд, документ больше не описывает его; тут doctor только называет конкретный пробел и передаёт его document или init.
Severity
auto — применить --fix без спроса. mention — сообщить, решение не требуется. route — назвать команду; запускать только если пользователь попросил в этом же ходе.
Ошибки
Никогда не чинить дрейф как побочный эффект дизайн-задачи. Находка design-md-drift считает коммиты в визуальные директории с момента последней правки DESIGN.md — это счётчик, а не доказательство противоречия; утверждать «DESIGN.md устарел» только на основании большого числа нельзя.

pin / unpin

Что делает
Создаёт или убирает отдельный ярлык /<command>, чтобы звать команду напрямую, без префикса.
Вызов
В чате: /impeccable pin critique · /impeccable unpin critique.
Под капотом: node .claude/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>
Как устроено
Записывает лёгкий скилл-редирект, который делегирует в /impeccable <command> — поэтому обновления родительского скилла подхватываются автоматически. Проверить текущие пины: посмотреть в папке скиллов среды (.claude/skills/, .cursor/skills/…) папки с именами команд, например .claude/skills/critique/.
Пример
/impeccable pin audit → дальше работает /audit
Ошибки
Скрипт без аргументов печатает список доступных команд — это самый быстрый способ проверить, что реально установлено. Не закрепляйте всё подряд: авторы прямо предупреждают, что пин всех команд заново взрывает /-меню, которое консолидация версии 3.0 как раз и вычистила. Закрепите две-три, которыми пользуетесь ежедневно.

Источник: SKILL.md (таблица Commands), scripts/command-metadata.json, reference/*.md по каждой команде, живой вывод pin.mjs. Снято 14.08.2026.

Хуки

Хуки — автоматический прогон детектора без участия человека. Именно они делают скилл страховочной сеткой, а не инструментом, который надо вспомнить и позвать.

Что реально ставится в проект

Инсталлер пишет в .claude/settings.local.json (файл в .gitignore, поэтому хук остаётся машинно-локальным):

{
  "description": "Impeccable design detector: immediate-tier checks after
                  Edit/Write/MultiEdit on UI files, full-rule deep pass on Stop.",
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit|Write|MultiEdit",
        "hooks": [{ "type": "command",
          "command": "[ ! -f \"${CLAUDE_PROJECT_DIR}/.claude/skills/impeccable/scripts/hook.mjs\" ] || node \"${CLAUDE_PROJECT_DIR}/.claude/skills/impeccable/scripts/hook.mjs\"",
          "timeout": 5,
          "statusMessage": "Checking UI changes" }] }
    ],
    "Stop": [
      { "hooks": [{ "type": "command",
          "command": "... hook.mjs",
          "timeout": 30,
          "statusMessage": "Design deep pass" }] }
    ]
  }
}

Обратите внимание на конструкцию [ ! -f ... ] || node ...: если скилл удалить, хук молча ничего не делает и не ломает сессию.

Два уровня проверок

PostToolUse (после каждой правки)Stop (в конце хода)
КогдаПосле Edit/Write/MultiEdit по дизайн-релевантному файлуОдин раз, когда агент останавливается
Какие правилаImmediate-уровень: 14 правилПолный набор по всем файлам, тронутым за сессию
Таймаут5 секунд30 секунд
ПоведениеНаходки → корректирующая подсказка; уже известные → напоминание; чистый UI-файл → короткое «ок» (если не включён quiet)Оставшиеся находки один раз, с дедупликацией против того, что уже сказал per-edit проход. Нечего сказать — молчит

Immediate-уровень — это то, ради чего стоит прерывать правку: механическое, однозначное и дешёвое в починке на месте.

ГруппаПравила
Сломанный выводbroken-image, text-overflow, clipped-overflow-container, body-text-viewport-edge
Объективная нечитаемостьlow-contrast, gray-on-color, tiny-text
Механическая халтура в одно свойствоgradient-text, dark-glow
Дрейф дизайн-системыdesign-system-font, design-system-color, design-system-radius, design-system-font-size

Почему так разделили. В комментарии кода прямо написано измеренное обоснование: поток per-edit срабатывал в основном на правилах уровня копирайта, и этот постоянный назойливый фон делал модель консервативнее, тогда как один полный проход в конце чинит контраст, отступы и свечения не хуже. Вернуть старое поведение можно так: .impeccable/config.json{ "hook": { "perEditRules": "all" } }.

Какие файлы попадают под хук

.tsx, .jsx, .html, .vue, .svelte, .astro, .css, .scss, .sass, .less, .ts, .js. Обычные .ts и .js сканируются, но молчат, если детектор ничего не нашёл.

Серверные шаблоны (Blade, Twig, ERB, Handlebars) в базовый список не входят — их надо объявить руками:

// .impeccable/config.json
{ "detector": { "extensions": [ { "ext": ".blade.php", "engine": "html" } ] } }

Как управлять

ДействиеЧто делает
statusТекущее состояние, пути конфигов, игноры, env-переопределения (значение по умолчанию, если аргумент не дан)
onenabled: true, записать локальное согласие, установить/починить манифесты хуков провайдеров
offenabled: false в .impeccable/config.json
ignore-value <id> <value>Точечное подавление правила для конкретного значения. Самый узкий вариант
ignore-value <id> "*" --file <glob>Выключить одно правило только в указанных файлах
ignore-file <glob>Выключить все правила для файлов. Молчит и про правила, которые ещё не написаны
ignore-rule <id>Выключить правило по всему проекту
resetУдалить конфиг проекта, кэш дедупликации и очередь Cursor
# самый узкий игнор — конкретное значение, с причиной
node .claude/skills/impeccable/scripts/hook-admin.mjs \
  ignore-value overused-font Inter --shared \
  --reason "User confirmed Inter is intentional"

# одно правило в одном файле
node .claude/skills/impeccable/scripts/hook-admin.mjs \
  ignore-value design-system-font-size "*" --file "src/overlay/widget.js" \
  --reason "Виджет строит свою шкалу; рампа DESIGN.md описывает сайт"

Правило триажа из справочника: реальная проблема — чинить, никогда не глушить игнором. Уверенное ложное срабатывание или санкционированное исключение — поставить самый узкий игнор и раскрыть это в ответе, с доказательством в --reason. Не уверены — оставить находку и спросить одной строкой. Самообслуживание агента заканчивается на ignore-value: ignore-file и ignore-rule глушат слишком много, их только с разрешения человека.

Есть и встроенные комментарии-игноры

<!-- impeccable-disable overused-font -- exported brand doc -->
.brand { font-family: Inter } /* impeccable-disable-line overused-font */
// impeccable-disable-next-line bounce-easing: intentional bounce

Но справочник советует по умолчанию использовать конфиг-игноры: они держат все подавления в одном просматриваемом месте. Инлайн — только когда исключение должно уехать вместе с файлом (экспортированный standalone-документ, HTML для рассылки).

Когда оставлять, когда убирать

СитуацияРешение
Дизайн-проект, вы им реально пользуетесьОставить. Ради этого всё и ставится
Скилл поставили в не-дизайн-проект (бэкенд, скрипты, аналитика)Убрать .claude/settings.local.json — фон без пользы
Мешают короткие «ок» на чистых файлахНе выключать хук, а поставить hook.quiet: true
Постоянно ловит одно ложное срабатываниеignore-value с причиной, а не выключение хука
Нужно разово отключить в текущей оболочкеIMPECCABLE_HOOK_DISABLED=1 — legacy-переменная, но работает и переопределяет конфиг
Хочется постоянно, но выключить в проекте/impeccable hooks offhook.enabled: false

Разница между хуком и ручным прогоном. hook.enabled управляет только автоматическим запуском. Ручные сканы npx impeccable detect продолжают работать и используют тот же конфиг фильтров. Для «сырого» прогона мимо конфига и контекста: npx impeccable detect --no-config ....

Другие среды

СредаФайл манифестаМеханика
Claude Code.claude/settings.local.jsonPostToolUse (не блокирует) + Stop deep pass
Codex.codex/hooks.jsonТо же; хук нужно один раз одобрить через /hooks
Cursor.cursor/hooks.jsonpreToolUse: блокирует плохую правку до записи. Deep pass нет — полный набор правил на каждой правке
GitHub Copilot.github/hooks/impeccable.jsonКомандный коммитируемый файл; CLI подхватывает после коммита в дефолтную ветку. Полный набор на каждой правке

Источник: reference/hooks.md, scripts/hook.mjs, scripts/hook-lib.mjs (константа IMMEDIATE_TIER_RULES и комментарии к ней), реальный .claude/settings.local.json проекта Kupol. Снято 14.08.2026.

Детектор

Детерминированный сканер по файлам и URL. Это самая «твёрдая» часть скилла: не мнение модели, а правила.

# локально установленной копией
node .claude/skills/impeccable/scripts/detect.mjs --json src/

# или через npm-пакет
npx impeccable detect src/
npx impeccable detect index.html
npx impeccable detect https://example.com
ФлагЧто делает
--jsonВывод в JSON
--quietВ текстовом режиме — только итоговый счёт находок
--scope <name>Только правила указанного домена: type, layout. Через запятую
--viewport <WxH>Вьюпорт для сканов URL, по умолчанию 1280x800. Мобильный проход: --viewport 390x844
--no-configНе применять конфиг проекта, игноры, инлайн-комментарии и DESIGN.md
--no-inline-ignoresИгнорировать внутрифайловые комментарии-игноры
--no-design-systemНе грузить DESIGN.md / .impeccable/design.json
--no-advisoryПолностью скрыть «совещательные» находки (например, злоупотребление тире)

Коды возврата: 0 — находок нет · 2 — находки есть · 1 — команда упала. Это делает использование в CI прямолинейным: валить job на двойке, дальше решать, чинить или добавить узкий игнор.

Три режима работы

Управление игнорами из CLI

Тот же конфиг, что читает хук, — им можно управлять и без агента:

npx impeccable ignores list
npx impeccable ignores add-value overused-font Inter --reason "Brand font"
npx impeccable ignores add-value design-system-color "#ff00aa" --reason "Campaign accent"
npx impeccable ignores add-file "src/legacy/**"
npx impeccable ignores add-rule side-tab
npx impeccable ignores remove-value design-system-color "#ff00aa"
npx impeccable ignores add-file "src/private-experiment/**" --local

Правило приоритета: предпочитайте игнор по значению. Шрифты, цвета, радиусы и параметры движения обычно надо подавлять поточечно, а не правилом целиком — так правило остаётся полезным во всех остальных местах. Игнор по значению с "*" разрешён только в связке с --file, иначе один намеренно экспериментальный файл научит весь проект, что любой недокументированный цвет допустим.

Конфиг ломается тихо. Опечатка в ключе просто никогда не читается; идентификатор правила, которого больше нет, ничего не подавляет; глоб projectRoots, не совпавший ни с одной папкой, оставляет корень репозитория подменять то приложение, которое вы имели в виду. Все три случая ловит /impeccable doctor.

59 правил

Полный список идентификаторов на 14.08.2026 (пригодится, чтобы точечно ставить игноры):

ai-color-palette · all-caps-body · aphoristic-cadence · blinking-cursor · body-text-viewport-edge · border-accent-on-rounded · bounce-easing · broken-image · clipped-overflow-container · codex-grid-background · content-hidden-at-rest · cramped-padding · cream-palette · dark-glow · design-system-color · design-system-font · design-system-font-size · design-system-radius · edge-flush-cards · em-dash-overuse · extreme-negative-tracking · first-viewport-column-overflow · flat-type-hierarchy · gpt-thin-border-wide-shadow · gradient-text · gray-on-color · heading-rhythm · hero-eyebrow-chip · icon-tile-stack · image-hover-transform · italic-serif-display · justified-text · kicker-above-heading · layout-transition · line-length · low-contrast · marketing-buzzword · marquee · monotonous-spacing · nested-cards · numbered-section-labels · oversized-h1 · overused-font · pulsing-dot · radial-halo · radial-spotlight-glow · repeated-container-text · repeating-stripes-gradient · script-error · shape-assembled-illustration · side-tab · skipped-heading · text-occlusion · theater-slop-phrase · tight-leading · tiny-text · undersized-ui-text · wide-tracking

Названия говорят сами за себя: cream-palette и ai-color-palette ловят фирменные нейросетевые палитры, gpt-thin-border-wide-shadow и codex-grid-background — узнаваемые машинные приёмы, kicker-above-heading — «надзаголовок», который в скилле помечен как безусловный бан.

⚠️ Детектор может отработать неполно, и на счёт нельзя опираться как на полную картину.

Статический HTML-анализ грузит четыре внешних модуля: htmlparser2, css-select, css-tree, domutils. Если их в окружении нет (обычная ситуация, когда скилл лежит в проекте отдельно, без своих node_modules), детектор не падает, а тихо откатывается на регулярные выражения и печатает в stderr:

impeccable detect: DEGRADED - HTML parser modules unavailable
(htmlparser2, css-select, css-tree, domutils).
Falling back to regex matching. Custom properties, selector matching and
computed contrast are NOT evaluated; findings are an undercount, not a
clean bill of health.

В деградированном режиме не проверяются: CSS-переменные, сопоставление селекторов и вычисленный контраст. То есть ровно те проверки, ради которых чаще всего запускают. Счёт занижен — «ноль находок» здесь не означает «чисто».

Воспроизведено живьём в проекте Kupol 14.08.2026: сообщение выводится в stderr, поэтому легко потерять в логах, а код возврата остаётся штатным. Если детектор важен — прогоняйте через npx impeccable detect (пакет тянет свои зависимости) или ставьте эти четыре модуля в проект, и всегда проверяйте, нет ли строки DEGRADED в stderr.

Advisory-правила

Часть правил «совещательные»: детектируются и показываются отдельной секцией, но никогда не считаются провалом и не меняют код возврата, чтобы не блокировать автоматику. Хук по умолчанию пропускает их полностью — модель не должна получать нагоняй за вкусовое решение, которое человек мог принять сознательно. Вернуть: .impeccable/config.json{ "detector": { "advisoryRules": "include" } }. На 14.08.2026 в advisory один пункт: em-dash-overuse.

Источник: node detect.mjs --help, scripts/detector/registry/antipatterns.mjs, scripts/detector/engines/static-html/detect-html.mjs, scripts/hook-lib.mjs, живой прогон в проекте Kupol; impeccable.style/docs/detector, /docs/config. Снято 14.08.2026.

Практические сценарии

Сценарий 1. Аудит чужого интерфейса

Задача: пришёл клиентский сайт или чужой репозиторий, надо быстро понять, насколько там плохо, и получить список работ.

  1. Ничего не инициализируем. PRODUCT.md для оценки не нужен: директива SCOPED_EXISTING_ALLOWED разрешает узкие команды без него.
  2. Механика: /impeccable audit <путь или область> — пять измерений, итог из 20, находки P0–P3 с локациями и стандартами WCAG. Ничего не чинит.
  3. Дизайн: /impeccable critique <путь> — эвристики Нильсена, специфичность дизайна, когнитивная нагрузка, персоны. Отчёт сохранится в .impeccable/critique/.
  4. Проверьте, что критика прошла честно: в шапке отчёта должно быть Method: dual-agent. Если стоит ⚠️ DEGRADED: single-context — обе оценки крутились в одном контексте и B «заякорила» A.
  5. Живой сайт вместо кода: npx impeccable detect https://example.com и второй проход мобильным вьюпортом: --viewport 390x844.
  6. На выходе обе команды дают план: список команд в порядке приоритета, заканчивающийся polish.

Сценарий 2. Сделать концепцию с нуля

Задача: новый лендинг или новый продукт, дизайна ещё нет.

  1. /impeccable init — интервью и PRODUCT.md. Приготовьтесь отвечать про пользователя, механизм продукта и что нельзя нарушать. Про цвета не спросят — это нормально.
  2. Опционально /impeccable shape <поверхность>, если нужен согласованный бриф до кода.
  3. Дальше — обычный запрос: «сделай главную страницу». Скилл сам зайдёт в new-work: выведет семь визуальных систем из мира аудитории, бросит кубик concept-seed.mjs, раздаст челленджеров.
  4. Откроется страница выбора в браузере. Ваша работа — выбрать карточку. Есть «тихая дверь» (категорийный стандарт, честно сыгранный) и переброс с регистрами safer/bolder. Пользователь может перебрасывать свободно; агент — только по названной фактической причине, вкус причиной не считается.
  5. Сборка. При buildPath: comp сначала генерируется картинка-эталон, потом код воспроизводит её почти попиксельно; допускаются ровно три послабления — шрифты (ближайшее доступное начертание), иконки и настоящие дефекты самой картинки (например, опечатки).
  6. Финиш. Один батч скриншотов (десктоп + мобильный), одна пачка правок, максимум ещё один раунд. Потом impeccable-finish-reviewer и impeccable-documenter, который запишет DESIGN.md по факту собранного.

Полезно знать заранее: если PRODUCT.md нет, concept-seed.mjs просто откажется бросать кубик. Это не баг — это тот самый порядок «сначала бриф».

Сценарий 3. Довести существующий экран

Задача: экран собран, работает, но выглядит недоделанным.

  1. Если есть свежая критикаpolish сам подтянет её как бэклог: critique-storage.mjs latest "<target>". Если нет, начните с /impeccable critique <экран>, чтобы у доводки был список.
  2. /impeccable polish <экран>. Команда попросит два уточнения: планка качества и ограничения по срокам.
  3. Порядок починки задан и его стоит знать, чтобы не удивляться: сначала сломанные задачи и потеря данных, потом отсутствующие состояния (loading, empty, error, success, disabled, permission), потом поток/иерархия/адаптив/дрейф системы, потом визуал и моушн, потом чистка кода.
  4. Если проблема узкая — берите точечную команду вместо polish: typeset (типографика), layout (структура и ритм), colorize (цвет), clarify (текст), adapt (мобильный), harden (реальные данные и i18n).
  5. Проверка на подмену: если polish начал предлагать «а давайте вообще переделаем» — он обязан сказать это прямо и порекомендовать редизайн, а не протаскивать замену под видом доводки. Это в справочнике зафиксировано.

Сценарий 4. Сделать смелее / тише

Задача: секция выглядит пресно, либо наоборот — кричит.

  1. Сначала проверьте, где вы находитесь. Если прямо сейчас открыт раунд выбора направления, слова «смелее»/«тише» означают регистр переброса, а не команду. Если поверхность уже выпущена — это команда.
  2. /impeccable bolder <секция> или /impeccable quieter <секция>.
  3. Назовите скоуп буквально. «Только героический блок, остальное не трогать» — это исполняемая инструкция, а не пожелание.
  4. Чего ожидать от bolder: не новых эффектов, а подтягивания секции до выразительности, которую соседние блоки уже используют — в словаре существующей системы. Если системе реально не хватает средств, команда обязана остановиться и спросить, назвав конкретное добавление.
  5. Чего ожидать от quieter: для Persuade/Experience — сдержаннее палитра, больше воздуха, драма уменьшается, но точка зрения остаётся. Для Operate/Read — меньше фоновых акцентов, площе карточки, меньше цвета и движения.
  6. Если хочется «вау» — это не bolder, а overdrive. Но помните: overdrive обязан сначала предложить, а не сразу делать.

Сценарий 5. Итерации прямо в браузере

Задача: хочется покрутить варианты одного блока вживую, а не описывать словами.

  1. Поднимите dev-сервер проекта. Если дефолтный порт занят — приложение, скорее всего, уже запущено; пробейте URL, а не поднимайте второй сервер.
  2. /impeccable live. Первый раз пройдёт разовая настройка: .impeccable/live/config.json и проверка CSP.
  3. Если в проекте есть CSP — скилл покажет точный диф и спросит разрешение пропатчить конфиг (патч под NODE_ENV === "development"). Откажетесь — пикер не загрузится, пока не добавите http://localhost:8400 в script-src и connect-src вручную.
  4. В браузере выберите элемент, выберите действие, нажмите Go. Можно рисовать аннотации поверх элемента — тогда агент получит скриншот с ними.
  5. Варианты подменяются через HMR. Принимаете один — он записывается в настоящий исходник.
  6. Прервалось? Не гадайте: live-status.mjs и live-resume.mjs. Журнал в .impeccable/live/sessions/ — канонический, он переигрывает неподтверждённую работу после перезапуска.

Источник: сведение reference/audit.md, critique.md, polish.md, bolder.md, quieter.md, new-work.md, live.md, live-setup.md. Снято 14.08.2026.

Ограничения и грабли

Что скилл не умеет

Где деградирует

1. Детектор без HTML-парсеров

Главная и самая тихая проблема — подробно разобрана в разделе Детектор. Коротко: без htmlparser2, css-select, css-tree, domutils сканер молча падает на регулярки, не проверяет CSS-переменные, селекторы и вычисленный контраст, и занижает счёт. Сообщение уходит в stderr. На такой результат нельзя опираться как на полную картину.

2. Критика без субагентов

Если в среде нет инструмента субагентов, обе оценки идут в одном контексте, и детерминированные находки «якорят» дизайнерское суждение. Формально это допустимо, но отчёт обязан начинаться с баннера ⚠️ DEGRADED: single-context (<причина>). Молчаливо деградировавшая критика в справочнике названа проваленной критикой.

3. Финишное ревью без субагентов

Финиш-ревьюер должен запускаться с чистым контекстом. Ревьюер, унаследовавший переписку сборки, наследует и её рамку, и её оптимизм. Подмена на внутрипоточный проход допустима только когда субагентов нет вообще, и она должна быть раскрыта одной строкой.

Проверьте у себя: в проекте Kupol после установки --providers=claude --project папки .claude/agents/ не появилось — то есть поставляемые субагенты impeccable-finish-reviewer и impeccable-documenter в проект не установились. Справочники на них рассчитывают. Если у вас так же, финиш пойдёт по деградированному маршруту (reference/degraded/finish-reviewer.md, degraded/documenter.md) — рабочему, но более слабому. Стоит проверить ls .claude/agents/ перед тем, как рассчитывать на полноценный финиш.

4. Страница выбора направления в песочнице

serve-question.mjs поднимает локальный HTTP-сервер. Среда с песочницей шелла не сможет забиндить порт, и первая попытка сгорит впустую. Скилл советует запускать страницу через наименее ограниченный доступный путь. Если страница закрылась без ответа (exit 4), решение один раз переспрашивается структурированным вопросом; нет ответа и там — работа идёт с назначенным направлением, а сделанные допущения проговариваются.

5. Дрейф артефактов

Файлы, написанные старой версией скилла, могут содержать поля, которые уже никто не читает, или не иметь полей, которые теперь ожидаются. Диагностика — /impeccable doctor. Проверка при загрузке дешёвая и троттлится раз в неделю на проект; отключается через "stalenessCheck": false в .impeccable/config.json или IMPECCABLE_NO_STALENESS_CHECK=1.

Организационные грабли

ГрабляКак не наступить
Голая установка уходит глобальноВсегда --providers=claude --project -y. Поймано 14.08.2026
install --help выполняет установкуНе пытаться так смотреть справку
Инсталлер оставляет мусор в .agents/ и .codex/Снести, если провайдеры не нужны
.claude/ уезжает клиентуВ клиентском репозитории — в .gitignore
Скилл зовётся сам, когда не звалиОписание скилла триггерится на десятки формулировок про дизайн. Если это мешает — держите скилл только в дизайн-проектах
Отчёт критики оказался только в файлеТребуйте полный отчёт в чате; это прямое требование справочника
Бесконечная самопроверка жжёт бюджетПотолок — два раунда скриншотов. «Open-ended self-QA burns the user's money»
Дрейф чинится сам собой посреди дизайн-задачиЗапрещено: CONTEXT_STALE сообщается, но не чинится без просьбы (кроме находок auto)
«Bolder» понято как команда во время выбора направленияУточняйте контекст: открыт раунд направлений или нет

Четыре ошибки применения — от самих авторов

На сайте есть раздел «чего избегать», и он честный:

  1. Запускать impeccable вместе со скиллом frontend-design от Anthropic. Причина не в том, что второй реже обновляется. Два скилла с разными дизайн-словарями сталкиваются и взаимно гасятся. Выбрать один.
  2. Закреплять все команды. Пин возвращает /audit, /polish, /critique как ярлыки. Закрепите всё — и заново взорвёте /-меню, которое консолидация версии 3.0 вычистила. Две-три ежедневные — норма.
  3. Пропускать init. Команды работают и без PRODUCT.md/DESIGN.md, но сваливаются к дженерик-SaaS-паттернам. Формулировка авторов: если impeccable даёт общие советы, дизайн-контекст обычно отсутствует, слишком расплывчат или устарел.
  4. Относиться к нему как к линтеру. Это не валидатор, а мнящий партнёр. Возражайте с аргументом — он пойдёт навстречу. Игнорируйте мнение без аргумента — результат станет хуже, а не лучше.

Философские ограничения, о которых стоит знать

Скилл довольно жёстко предписывает вкус, и это иногда конфликтует с брифом. Правило разрешения конфликта: бриф побеждает. Закреплённые эстетики, эпохи, материалы, шрифты и палитры соблюдаются, даже если противоречат предупреждению о «затасканном паттерне». Перенаправление внятного брифа в сторону собственного вкуса модели названо провалом.

При этом список «дефолтов, которые означают, что вы перестали искать» существует и включает популярные шрифты (Fraunces, Playfair Display, Cormorant, Space Grotesk, IBM Plex, Inter-as-display, DM Sans, Outfit, Plus Jakarta Sans и другие). Назвать один из них можно, но нужна причина, которую не удовлетворит никакой другой шрифт — и «книжному сайту нужна антиква» такой причиной не считается.

Источник: SKILL.md, reference/critique.md, new-work.md, doctor.md, audit.md, adapt.md, scripts/detector/engines/static-html/detect-html.mjs, проверка структуры проекта Kupol. Снято 14.08.2026.

Словарь терминов

skill
Скилл — папка с SKILL.md и вспомогательными файлами, которую агентная среда подгружает по имени или по смыслу запроса.
PRODUCT.md
Правда о продукте: пользователи, задача, позиционирование, ограничения, платформа. Пишется командой init. Не содержит визуальных решений.
DESIGN.md
Визуальная система: токены во frontmatter плюс проза. Пишется document или на финише новой работы. Формат совместим с Google Stitch.
surface
Поверхность — конкретный экран, маршрут или артефакт. Стратегия, относящаяся только к одной поверхности, живёт в «брифе поверхности», а не в общих файлах.
surface brief
Бриф поверхности — маленький файл со стратегией одного маршрута: скоуп, режим посетителя, аудитория, задача, доказательства, выбранное направление, нерешённые вопросы.
mode
Режим посетителя. Что означает успех на этой поверхности. Четыре: Persuade, Operate, Read, Experience. Выбирается по поверхности, а не по продукту: лендинг инструмента — всё равно Persuade, документация модного дома — всё равно Read.
Persuade
Посетитель решает и действует, дизайн — это и есть продукт. Лендинги, маркетинг, прайсинг.
Operate
Посетитель выполняет задачу. Приложения, дашборды, редакторы, админки, настройки. Сканируемость и привычные аффордансы важнее самовыражения.
Read
Посетитель что-то понимает. Документация, статьи, гайды, чейнджлоги.
Experience
Посетитель внутри самой работы. Портфолио, галереи, витрины. Интерфейс отступает.
new-work
Справочник и процедура создания новой поверхности или замены визуального мира. Ключевой файл всего конвейера.
craft floor
«Пол ремесла» — минимальная планка качества: контраст, глубина, отступы, типографика, движение, состояния, оформление браузерных поверхностей (выделение текста, каретка, скроллбары, фокусные кольца). Грузится непосредственно перед правкой UI.
refinement / redesign
Доводка сохраняет идентичность; редизайн заменяет её. Промежуточного «полирнём то, что решили выбросить» не существует.
incumbent
Действующий, унаследованный. «Incumbent visual system» — визуальная система, которая уже живёт в коде и является дизайн-властью.
direction round
Раунд направлений — момент выбора концепции. Показывается страница с карточками; пользователь фиксирует одну.
the roll
«Бросок» — concept-seed.mjs случайно назначает, какое направление собирать. Механизм против схождения всех прогонов к категорийному дефолту.
world / deck
«Мир» — полная графическая система со своими законами, отрецензированная человеком. «Колода» — каталог таких миров, на 14.08.2026 одобрено 188.
challenger
Челленджер — мир из колоды, который соревнуется с назначенным направлением. Вердикты: wins (побеждает по обеим осям и забирает сборку), competitive (держит одну ось, остаётся полноценной альтернативой), declined (проигрывает обе, но его дисциплина всё равно донорски поднимает назначенное направление).
seed key
Ключ броска. Печатается скриптом и записывается в контракт направления; воспроизводит весь бросок, включая все раунды перебросов.
standing exit
«Тихая дверь» — постоянно доступная альтернатива: категорийный стандарт, сыгранный честно, без иронии. Дверь пользователя, не агента; рекомендовать её нельзя.
re-roll
Переброс. Регистры: plain (свежая раздача), safer (привычный регистр), bolder (только чужие формы, с полной отдачей).
comp
Комп — сгенерированная картинка-эталон первого экрана. При buildPath: comp код обязан воспроизвести её почти попиксельно.
comp-led / code-led
Режим сборки: от картинки-эталона или сразу в код. Записывается как buildPath в .impeccable/config.json.
direction contract
Контракт направления — комментарий в начале артефакта из блоков THESIS, OWN-WORLD, STORY, FIRST VIEWPORT, FORM, FINISH. Должен пережить продакшн-сборку.
finish review
Финишное ревью субагентом impeccable-finish-reviewer со свежим контекстом.
detector
Детектор — детерминированный сканер на 59 правил.
anti-pattern
Антипаттерн — то, что ловит детектор.
immediate tier
Немедленный уровень — 14 правил, ради которых стоит прерывать правку. Остальное откладывается на глубокий проход.
deep pass
Глубокий проход — полный набор правил по всем тронутым за сессию файлам, один раз на событии Stop.
advisory
Совещательное правило: показывается отдельно, никогда не считается провалом, не меняет код возврата.
slop
Халтура, машинный шлак. В скилле — узнаваемые признаки, что интерфейс не собран, а «сложен из кусков».
drift
Дрейф. Дизайн-системный: код разошёлся с токенами. Схемы: артефакт написан старой версией. Правды: документ больше не описывает код.
P0–P3
Severity: P0 блокирует задачу — чинить немедленно; P1 серьёзно мешает — до релиза; P2 раздражает, но обходится; P3 полировка. Подсказка: «обратился бы пользователь в поддержку?» Да — минимум P1.
heuristics
10 эвристик юзабилити Нильсена, каждая 0–4. Честная оценка: большинство реальных интерфейсов набирают 20–32 из 40.
harness
Среда исполнения агента: Claude Code, Codex, Cursor, GitHub Copilot. Поведение хуков и субагентов зависит от неё.
hook
Хук — команда, которую среда запускает на событии (после правки файла, при остановке).
degraded
Деградированный режим: часть механизма недоступна, работа продолжается ослабленной. Должно быть объявлено, а не замолчано.
live mode
Live-режим — выбор элементов в браузере и генерация вариантов с горячей подменой.
pin
Закрепление — создание ярлыка /<command>, чтобы звать команду без префикса.

Источники и расхождения

Что использовалось

ИсточникРольСнято
Локально установленный скилл .claude/skills/impeccable/, версия 4.1.0Источник правды о поведении. Прочитаны SKILL.md, все 39 справочников, ключевые скрипты; выполнены живые запуски context.mjs, detect.mjs, pin.mjs, hook-admin.mjs, doctor.mjs, concept-seed.mjs14.08.2026
impeccable.styleОфициальный сайт: 58 страниц (главная, /designing, /docs и 23 страницы команд, 6 страниц концепций, 3 туториала, /slop, /detector, /research, /changelog, /faq). Он же точка обновления — context.mjs опрашивает его для UPDATE_AVAILABLE14.08.2026
github.com/pbakaus/impeccableREADME (446 строк), docs/DEVELOP.md, docs/HARNESSES.md, docs/STYLE.md, NOTICE.md, LICENSE. Лицензия Apache 2.0 подтверждена и в package.json, и полным текстом14.08.2026
npm-пакет impeccable@3.6.0Разобран код CLI: роутер команд, разрешение провайдеров и scope, установка хуков. Пакет содержит только CLI (30 файлов), скиллы качаются с сайта14.08.2026

Где сайт разошёлся с кодом

Во всех случаях в руководстве описано поведение кода — сайт может отставать от релизов.

ЧтоСайтКод / пакетЧему верить
init и DESIGN.md «В конце согласитесь, когда impeccable предложит запустить /impeccable document». То же в command-metadata.json, который едет вместе со скиллом: init «offers DESIGN.md when code exists» reference/init.md запрещает дважды: «Never silently overwrite an existing file or offer DESIGN.md during init» и «Do not offer DESIGN.md merely because it is missing» Справочнику. Это операционная инструкция, метаданные — витрина. Зовите document отдельным шагом
Состав 23 команд Включает impeccable (вызов без аргумента), не включает craft. Группы CREATE · EVALUATE · REFINE · SIMPLIFY · HARDEN · SYSTEM SKILL.md и pin.mjs: включают craft (помечен deprecated), не включают impeccable. Группы Build · Evaluate · Refine · Enhance · Fix · Iterate Коду. Обе версии дают 23, но исполняется то, что в SKILL.md
Версия Node 22.12+ package.json: engines.node >= 22.18.0 Пакету. Ставьте от 22.18
Размер колоды миров «188 одобренных миров» в /docs/new-work и changelog · «177 самых высокорейтинговых» на главной Оба верны: 188 одобрено всего, демо на главной сдаёт из 177 лучших
Коды возврата детектора 0 / 2 / 1 (ошибка) detect --help упоминает только 0 и 2 Сайту. Полнее
Номер версии «v4.1.0, 14 августа 2026 (CURRENT)» Скилл 4.1.0, CLI 3.6.0, расширение 1.3.2 — три независимые линии Разделять. «Версия impeccable» без уточнения — это почти всегда версия скилла
Установка «npx impeccable install … спрашивает, ставить в проект или глобально» В неинтерактивной сессии не спрашивает, а молча берёт вычисленный дефолт, который может быть глобальным Коду. См. Установку
install --help Не описан Флаг не проверяется вовсе — запускается настоящая установка Коду. Проверено эмпирически

Что проверено живьём

Чего достать не удалось