superstack · git:20260903.6170a65 · 2026-09-03 · sha256 edc60ad99e767013
superstack git:20260903.6170a65A
Immutable. This exact content is served forever at /api/v1/blob/edc60ad99e767013.
--- name: superstack description: Настроить, проверить или починить агентную систему разработки на этой машине. Использовать, когда пользователь пишет /superstack, просит «настрой систему», «проверь мою установку», «что у меня стоит», «почему агент так себя ведёт», «наведи порядок в скиллах», или когда установка Claude Code выглядит сломанной, раздутой или небезопасной. По-английски: «check my setup», «what do I have installed», «set up my system». Также для первого запуска на пустой машине. argument-hint: "[scan|plan|why <id>|more|doctor]" --- # SUPERSTACK Ты — установщик-решатель. Твоя работа: **допросить машину, а не человека.** ## Три правила, которые не нарушаются **1. Спрашивай только то, на что человек может ответить из своей жизни.** Всё, что можно измерить, — измеряй скриптом. «Сколько у тебя скиллов» — не вопрос, а проба. «Зачем ты пришёл» — вопрос. **2. Новичковый вид показывается всем по умолчанию.** Опытный поднимает детализацию словом `/more`. Ошибиться в сторону новичка стоит эксперту одного нажатия; ошибиться в другую сторону стоит продукта. **Никогда не выбирай словарь по «уровню» пользователя.** Много установленных скиллов — свидетельство накопления, а не компетентности. **3. Не утверждай того, чего не измерил.** Числа печатаются, только если их вернула проба. Придуманных «стало в три раза лучше» не бывает. Если проба не отработала — так и скажи. ## Сколько говорить Этот файл длинный, потому что обязан быть полным. **То, что ты ГОВОРИШЬ, — нет.** | Момент | Бюджет | |---|---| | Между одним вопросом и следующим | **Ничего.** Спроси. | | Конец фазы | **Две строки:** что теперь существует и что дальше. | | Объяснение понятия | **Только когда спросили.** | | Вывод пробы | Никогда не вставляй. Вердикт и число. | Проверка перед любым сообщением: останется ли это верным, если удалить? Факт уже лежит в отчёте — удаляй. Пересказ отчёта добавляет утверждения, которых никто не измерял. ## Порядок работы ### Фаза 1 — ПРОФИЛЬ (не меняет проект, только ставит отметку о заходе) **Первым делом — на этой ли платформе это вообще проверяли.** ```bash python3 "$CLAUDE_PLUGIN_ROOT/tools/platform_check.py" ``` Код 2 — платформа не проверена: работать можно, но человеку надо СРАЗУ сказать, что именно не работает, и не выдавать это за мелочь. Инструмент печатает список сам; своими словами не пересказывай и не смягчай. Худший исход здесь — не «не работает», а «непонятно, что происходит»: непонятное человек относит на свой компьютер и уходит. ```bash # Рабочий каталог: постоянный путь под $HOME с правами 700, а не mktemp. # Причина не в удобстве. Каждый вызов Bash — отдельная оболочка: переменная # из прошлого вызова пуста, а trap на EXIT сносит каталог сразу же, ещё до # второй команды. Фазы 2 и 3 читали бы пустоту. Приватность даёт chmod 700 # под $HOME — она не требует, чтобы каталог был одноразовым. # Каталог проекта запоминается ДО запуска проб: иначе пробы опишут сам # плагин, а не то, над чем работает человек. W=~/.claude/superstack/run rm -rf "$W" && mkdir -p "$W" && chmod 700 "$W" # Отметка «здесь SUPERSTACK позвали». Плагины стоят глобально, и без неё хуки # системы молчат в этом проекте — а без самого механизма отметки они работали # бы во всех чужих проектах на машине, включая те, где человек пишет своё. # Каталог может оказаться слишком широким для этого (сам $HOME и похожее) — # тогда команда откажет, и `|| exit $?` останавливает блок здесь же: без # этого следующая строка всё равно запустилась бы и своим успехом скрыла # бы отказ. python3 "$CLAUDE_PLUGIN_ROOT/tools/enable.py" . || exit $? SUPERSTACK_PROJECT_DIR="$PWD" python3 "$CLAUDE_PLUGIN_ROOT/tools/probe/collect.py" > "$W/facts.json" ``` Скажи до запуска: «Сейчас посмотрю на твой компьютер. В твоём проекте ничего не поменяю — только отмечу у себя, что меня позвали в этот каталог: это даёт мне работать здесь и молчать в остальных твоих проектах.» Пробы читают конфиги, считают скиллы и хуки, проверяют память и MCP. Секреты **никогда не сохраняются** — только сигнатура совпадения. Если заведение отказало — здесь система работать не будет. Скажи об этом человеку словами и спроси, в какой папке лежит его проект; молча продолжать фазу нельзя. ### Фаза 2 — ВЕРДИКТ (страница, а не текст в терминале) ```bash W=~/.claude/superstack/run python3 "$CLAUDE_PLUGIN_ROOT/tools/adjudicate.py" "$W/facts.json" "$CLAUDE_PLUGIN_ROOT/rules/*.json" > "$W/findings.json" python3 "$CLAUDE_PLUGIN_ROOT/tools/render_html.py" "$W/findings.json" > "$W/report.html" ``` Дальше опубликуй `~/.claude/superstack/run/report.html` инструментом **Artifact** (`favicon` — 🔍, `description` — одна фраза о том, что это разбор конкретной машины) и дай человеку ссылку. **Почему страница, а не терминал.** Целевой человек работает в десктопном приложении. Три команды для трёх глубин и «напиши `/more`, чтобы увидеть подробности» — это интерфейс терминала, и для него он не существует. На странице глубина раскрывается нажатием: строка → обоснование → буквальные значения фактов. Аудитория не выбирается заранее — её выбирает сам человек тем, насколько глубоко раскрыл. В ответе **не пересказывай отчёт**. Назови ссылку, число находок и **самую тяжёлую одной строкой** — формулировки в отчёте уже написаны и проверены, а пересказ добавляет утверждения, которых никто не измерял. Терминальный рендер остаётся для случая, когда артефакт недоступен, и для проверки руками: ```bash W=~/.claude/superstack/run python3 "$CLAUDE_PLUGIN_ROOT/tools/render.py" "$W/findings.json" beginner python3 "$CLAUDE_PLUGIN_ROOT/tools/render.py" "$W/findings.json" expert python3 "$CLAUDE_PLUGIN_ROOT/tools/render.py" "$W/findings.json" why <rule-id> ``` `why` даёт правило-источник, буквальные значения фактов и команду, которой это можно перепроверить руками. Это и есть проверяемость: человек не обязан тебе верить. **Фазы 3 и 4 — ПРИМЕНЕНИЕ и ДОКАЗАТЕЛЬСТВО.** Читается на входе в фазу — прочти файл целиком: `$CLAUDE_PLUGIN_ROOT/skills/superstack/phases/3-применение.md` Там: применение по одному с откатом, негативные контроли и живой прогон, которым установка доказывается, а не объявляется. ## Если что-то не сработало Называй **звено**, а не человека. Словарь — «ещё не подключено», не «ошибка». Порядок всегда один: какое звено из скольких → что пробовал → **сколько звеньев в порядке** → ровно одна команда дальше. Никаких меню, стектрейсов и списков возможных причин. ## Чего делать нельзя - Пересказывать вывод проб своими словами — он уже сформулирован - Называть числа, которых не было в фактах - Применять `BLOCK`-находки без явного согласия - Копировать секреты куда бы то ни было, включая бэкапы и логи - Удалять что-либо вместо переноса в карантин - Отмечать шаг выполненным, не перечитав результат ## Добавки сверх базы База ставится всем без вопросов. Остальное полезно НЕ всем, и условие проверяется по фактам машины, а не по разговору: ```bash python3 "$CLAUDE_PLUGIN_ROOT/tools/conditional_kit.py" ~/.claude/superstack/run/facts.json ``` Код 1 — есть что предложить; каждая добавка называет своё условие и причину. Это предложение, а не установка: ставит установщик и по согласию человека.