Repo-boost
Приведи
текущий репозиторий к агентскому стандарту iskron: плотный
(читается каждую сессию каждым харнессом),
рядом (таблица носителей реальности, читается по поводу — при поведенческой заявке и в брифе
/
),
-указатель, ритуалы сессии хуками и гейт качества. Конфиг ты
генерируешь из скелетов — пользователь шаблонов не вставляет.
Деливерабл —
интерфейс доверия.
и
—
производные виды: проекция источников (код,
, CI, файловая система, граф) плюс тонкий слой авторского суждения, который больше нигде не живёт. Контракт двуглав:
плотность (каждая строка меняет поведение) и
точность (каждая производная строка перепроверена против источника
в этом прогоне). Плотная ложная строка хуже многословной.
Скелеты:
references/agents-template.md
(
: YAML-фронтматтер и тело) и
references/reality-template.md
(
) — слоты
и заметки
. Заполни слоты, выброси неприменимые опциональные строки, вычисти каждую заметку и угловую скобку. Скелеты —
что произвести; этот файл —
как.
Контракт: . Шаг 7 штампует это число в каждый
. Увеличивай на единицу, только когда перемена здесь или в скелетах делает уже сгенерированный файл
неверным (секция или файл добавлены, переименованы, изъяты; ритуал изменён; имя тула выпало), никогда ради формулировок. То же число стоит первым словом в
— нарочно: триггер срабатывает по описанию, а в контексте сессии сходятся только описания скиллов и штамп
; расхождение копий ловит
. Конфиг со штампом-датой или без штампа — ниже любого числа: прогони полную дугу (правило запуска держит шаг «Выравнивание» двери
) и назови контракт, из которого пришёл конфиг.
Строка расходится со скиллом — назови вслух, молча не выбирай: в деле постановщику, без дела — человеку. Штамп ниже контракта установленного
— прав скилл, прогони; равен — дефект шаблона, фидбэк стюарду поставки скиллов (
feedback). Правило стоит и в скелете («Держи этот файл честным») — для агента, этот скилл не загрузившего.
Редакция установленной поставки сверяется здесь. Всякий прогон — и всякий вывод «инструкция скилла неверна» (туда шлют feedback и entry) — начинается сверкой бегущего с выпущенным:
cat ~/.claude/plugins/cache/*/*/*/.claude-plugin/plugin.json # что у тебя бежит
gh release view --repo <репозиторий плагина> --json tagName # что существует
node ~/.iskron-bridge/iskron-bridge.mjs --version # какую сборку несёт копия моста
Отстал больше чем на патч — обнови поставку, перезапусти сессии харнесса и только потом гони дугу: конфиг из протухшего скилла наследует его дефекты. Число контракта этого не заменяет: оно движется с формой конфига, версия — с каждой отгрузкой.
Скелет
инлайнит граф-агностичную дисциплину (Рабочие принципы, «Жизненный цикл сессии») в каждый
— сжато, по строке на правило, но
инлайн, не указателем в граф или скилл: есть харнессы без хука старта, и файл обязан стоять сам.
Аудит → классификация → действие
Репозиторий — спектр, не «свежий или настроенный»; ловушка — «файл есть, значит, его факты верны». Аудируй каждую заботу против её источника и классифицируй:
- absent — выведи из источника; авторский слот без проверяемого источника — в дело выравнивания, никогда не выдумывай.
- stale — ре-спроецируй, перезаписав; записанное не тащи вперёд.
- correct — оставь.
Опаснее всего почти-верный конфиг: устаревшие строки среди доверенных — проверочный проход идёт по всему артефакту (Шаг 7).
Источник истины по заботам
| Забота | Источник истины | Как проверить |
|---|
| Версии, зависимости | / / / + lockfile | прочитать |
| Команды build/test/lint/dev | scripts, /, CI-workflow | прочитать; /dry-run, где дёшево |
| Гейт качества | конфиг линтера, , CI-yaml | прочитать |
| Раскладка: карта кода, ловушки среды | слот обложки «Раскладка» | слота нет — умолчание: один , навигация по файлам — компактно в README компонента, готчи в графе; прогон README компонентов не пишет: пока README компонента нет, его карта — в «Структуре проекта» , и первый, кто тронет компонент, переносит её в README. Отступление — раздел «Структура проекта» вместо README — только там, где README рядом с выходами запрещён (выходы уезжают потребителю); запрет действует на такие выходы, не на весь репо, и выводится из него самого. в репо — чья-то раскладка: разреши по Шагу 1; пока источники её не разрешили — слот пустой, источник , файлы нетронуты |
| Структура проекта, path-алиасы | файловая система + конфиг бандлера; при раскладке «README компонента» — сами README | glob / list; таблица «компонент → README» сверяется существованием файлов |
| Nature, production statement, послабления | граф, код репо, слово агентов; принятые владельцем ограничения сохраняются | разрешить по порядку Шага 1; смена мандата или цены поломки без основания — принципиальный вопрос |
| Носители реальности () | граф, наблюдаемый кодом путь поставки, слово агентов | проверить достижимость канонического носителя; неизвестное — Ceiling, не выдуманный носитель |
| Проектные решения, why-клаузы, открытые вопросы | граф | / |
| Состояние веток | git + форжа | / ; CLI форжи |
| Готчи | авторское; дом — по слоту «Раскладка» | только sanity-check — не автовыводить, не переносить между домами |
| Блоки канонов графа | узел-правило с | iskron_search(realm=<граф>, q="", attrs_filter="prose_for_repos:**")
; блок кладётся байт-в-байт на место из , ниже — только хвост репо; применимость — по , иначе по смыслу, сомнение — порядком Шага 1 |
Производные факты (верхние строки, блоки канонов) ре-проецируются каждый прогон; авторское суждение (готчи, why-клаузы, nature, носители) сохраняется, лишь сверяясь на здравость с кодом.
Контракт выхода — плотность и точность
- Императив агенту: «ориентируйся до кода», не «агенту следует».
- Каждая строка меняет то, что агент делает; иначе удали. Чек-лист, не эссе.
- Без проектных обоснований и пересказа графа — линкуй. — только для инварианта, который агент иначе нарушит.
- Таблицы и буллеты, одна директива на буллет.
- Секция, растёкшаяся в абзацы, несёт обоснование — перенеси в граф.
Вне объёма — механика оркестрации (цепочки гейтов, суб-агентная проверка пушей, model-routing, многополосная координация): её дом — скилл оркестрации или граф; срез делегирования проецируется ролевыми файлами (Шаг 6), не прозой.
Пример: ❌ «Мы стараемся аккуратно обращаться с состоянием, потому что стор — единственное место данных, иначе демо может выглядеть сломанным.» ✅ «Persona-scoped UI читает роль через
; перепроверь рендер при смене персоны. (why: устаревшее чтение показывает данные чужой роли.)»
Процедура
Идемпотентна: в зрелом репо прогоняй каждый self-check и действуй только по провалам; докладывай, что осталось.
Два такта
Кто исполняет прогон. Граф прогона — контур, роль, атрибуты, дело выравнивания — ведёт сам агент: это ремесло графа («Сквозные нормы» двери
). Объёмную проекцию файлов (
, ролевые файлы, хуки) он может отдать субагенту роли
— у того свой мост-спутник; нет субагентов, ролевого файла
ещё нет (первый контакт, такт 1 до проекции, роли старше контракта) или спутник не поднялся — проецирует сам. Прогон обновляет
и производные сам, не ждёт присутствия или подтверждения человека. Дело выравнивания ведёт позвавший (ведущий);
работает в своём дочернем деле из строки запуска и дела выравнивания не ведёт (п. 5). Человека будит и ожидание держит ведущий, не
, и только по принципиальному вопросу, не разрешённому графом, кодом и коллегами:
возвращает его вопросом в итоге. Вопросы прогона — порядком Шага 1 («Человек обычно не в треде»).
Такт 1 «встать» — без вопросов, до минуты, в любом репозитории. Первый такт при первом контакте, по слову «iskronify» или при найденном отставании конфига. Быстро разрешаемое — в файл с источником, остальное — дыркой в дело; затем такт 2 без ожидания человека.
- Адреса. Граф и роль — из слова человека, строки окна с адресом места или существующего . Граф не назван —
iskron_realm(action="list")
, сверь с записанным о репо и спроси коллег; не разрешилось, какой граф выбрать или создать, — принципиальный вопрос о границе проекта по Шагу 1, не угадывай имя. Создание — iskron_realm(action="create")
по принятому выбору. Роль владельца — 主-роль человека твоих ключей (iskron_me(action="kartas")
); перечень, где стоишь ты сам, — знак сбитой привязки: слот дыркой, вопрос — в деле выравнивания. видит только привязанные роли: прежде чем заводить svatantra-роль (Шаг 2), ищи её в графе — iskron_search(q="", node_type="karta", manifested_as="svatantra")
. Он отдаёт все 主-роли графа: роль владельца — та, чей в атрибутах совпал с handle из iskron_me(action="whoami")
; такая есть — не заводи, не выбирается — один вопрос человеку сессии, какая из найденных его. Привязку роли владельца проверь по шагу «Сойдись или эскалируй» скилла standing.
- Контур репозитория. → →
iskron_search(q="", node_type="holon", attrs_filter="repository:<значение>")
. Нет — ( от корня графа или контура репозиториев) с и дела выравнивания. Один репозиторий — один контур.
- Роль на репо.
iskron_search(q="", node_type="karta", steward_of=<контур>)
; нет — (, мотивация — дистиллят того, что репо шипит) и к контуру. Одна роль на репозиторий.
- Обложка и файлы. Слоты — YAML-фронтматтер в начале по скелету и Шагу 7. Из графа и кода — «выведено»; из записанного ответа — «согласовано: кто», в том числе агент соседнего контура. Не разрешённое — пустое значение и источник «не согласовано — дело №N»; авторский слот не становится дыркой только потому, что человек отсутствует. «Жизненный цикл сессии» инлайнится из скелета. — таблицей разрешённых носителей; пока их нет, заголовок скелета и строка: «Носители ещё не установлены; дело выравнивания №N. До их установления поведенческие заявки не принимаются.» Таблица Reality в уже есть — переносится в по Шагу 7.
- Дело выравнивания на контуре из п. 2 ведёт позвавший (ведущий): открытое уже есть (
iskron_case(action="at", node=<контур>)
) — ведёт его; нет — открывает у записи контура или существующего, зачином до 64 знаков: «Выравнивание <репо> под контракт N». Прежде первой записи — назовись и войди (iskron_case(action="join")
); стояние на вахту не нужно. Исполняешь сам — ведущий ты: назовись iskron_channel(action="register", realm, karta=<роль на репо>, name=<выведенное имя>)
. Проекцию файлов исполняет субагент — ведущий заводит ему дочернее дело ( с — дело выравнивания) и ставит его №N в строку запуска; встаёт спутником ( с места позвавшего, как в ), под выведенным именем не зовёт (имя — позвавшего), вопросы слотов говорит словом в дочернем деле, в граф не пишет, дела выравнивания не ведёт и выходит концом поручения (iskron_case(action="leave")
). Неразрешённый, ждущий слот можно держать строкой «слот: <имя>» ( — на ком, чего ждёт) — по желанию; разрешённый — значение и источник во фронтматтер, без строки; вопрос — словом в деле. Вопросы прогона — порядком Шага 1 («Человек обычно не в треде»). Первое слово: «есть вопросы по проекту, за который я отвечаю, — ответьте или скажите, кто может ответить». Анкету, вопросы прогона, план и ход выравнивания в граф не пиши; в граф такт пишет только структуру (контур с , роль) и готчи правилами (Шаг 7).
- Хук старта и сторож памяти — из Шага 4 только и memory-guard; стаб (Шаг 5) — только над пустой или отсутствующей директорией памяти. Непустая — эвакуация по Шагу 5 в такте 2; до неё строка скелета о заморозке не утверждает завершения, а ссылается на строку дела выравнивания. Остальные хуки — такт 2. Указатель — Шаг 7.
- Стояние — не здесь: его занимает старт двери , только на вахту.
Отчёт — слово в деле выравнивания: что разрешено, что открыто; такт по слову другого дела — слово-отчёт там, называющее дело выравнивания; затем эстафета Шага 7. Такт по слову дела — поручение, и его исход по наблюдённому говоришь словом в том деле.
Такт 2 «доделать» — сам, не блокируя. Продолжи после такта 1; каждый следующий старт (шаг «Выравнивание» двери
) читает сводку дела из ключа «Согласование» фронтматтера —
iskron_case(action="read")
; писать — назвавшись и войдя, как в п. 5. Слоты разрешай графом, кодом и словом коллег по Шагу 1. Впиши значение и источник во фронтматтер без переспроса; строка ожидания «слот: …», если слот её держал, снимается тем же ходом (
), разрешённому без ожидания строка не заводится. Ответ агента подписывается его именем, не именем владельца; повторного подтверждения человеком не требует. Полная дуга (Шаги 1, 3, 4, 6, гейт, хуки, ролевые агенты) идёт без человека; неразрешённый слот держит только зависимую часть. Все слоты разрешены — «Согласование» = «пусто», предложи закрыть (
, свидетельство — слоты фронтматтера со значениями и источниками), если ведущий ты; иначе слово ведущему.
Шаг 1 — Разреши слоты (такт 2)
Не выбирай дефолты молча. Прочти граф, код репо и старый конфиг; чего они не разрешили — спроси у агентов соседних контуров в деле выравнивания. Запиши во фронтматтер значение и источник:
Nature (не
— что ослаблено и почему),
имя графа, «Стек»,
гейт (Шаг 3). Принятые авторские ограничения сохраняй; переспрос человеку нужен только для принципиального остатка.
Переход со старой анкеты. «Согласование» или дырка называет узел (
), не дело, — форма прежнего контракта. Прочти узел (
): ответы с именем ответившего — в слоты «согласовано: кто»; открытые — строками «слот: <имя>» в дело выравнивания, пустое значение и источник
во фронтматтер; узел-анкету отпусти (
, reasoning «перенесён в дело №N»), чужой — слово автору.
Также согласуй:
- Кто владеет направлением — svatantra-роль владельца (主), создаётся в Шаге 2; принципиальные вопросы слотов — ей через ведущего в деле выравнивания, не анкетой в графе.
- Общее изменяемое состояние build/test (база, фиксированный порт, dev-сервер, глобальный кэш, облачная песочница): есть — зафиксируй по-полосную изоляцию готчей (агенты гоняют ветки конкурентно в отдельных worktree).
- Реальность → . Установи из графа, кода и ответов коллег: куда приземляется изменение, какие эффекты производит, какие наблюдаемы и какой командой / URL / запросом, что агент достаёт сам, что требует пользователя. Дожимай до канонического носителя каждого класса: собранный артефакт, не исходники; живой эндпоинт, не хендлер; чистая установка, не тёплый кэш. Класс без достижимого наблюдения — в Ceiling с причиной; вывод о носителе не равен наблюдению поведения. Датированные замеры (сроки, версии, «наблюдено тогда-то») — узлами в граф, в — только нужное для наблюдения. В — раздел «Reality» указателем: прочти прежде поведенческой заявки, первая строка таблицы названа, Ceiling — там. (Как таблица работает при закрытиях — скилл vahta, §3 «Работа и эстафета», абзац о перед закрытием.)
- Кросс-проектная память — умолчание шаблона: значение из скелета, источник
выведено: умолчание шаблона
, без вопроса человеку. Личный граф есть у каждого, о нём не спрашивай: нет — заведи граф и роль по minding; маршрутизация и сообщение memory-guard всегда несут его ветку. Поведение агента настраивают только коммитящиеся файлы рабочего дерева (AGENTS.md, файл хуков) и граф проекта — никогда глобальный файл инструкций (, ~/.config/opencode/AGENTS.md
…), память харнесса, пользовательские хуки; о глобальном файле не спрашивай и не заводи. Установка поставки — доставка, не настройка. Предпочтение, влияющее на процесс и результат, — в AGENTS.md или граф проекта; личное — в .
- Фидбэк-рефлексия — рефлексировать ли опыт о методе в конце сессии или на мерже и записывать стоящее в граф работы (контур инструмента, адресом стюарду, после проверки на дубли, случаем). Умолчание шаблона — да, источник
выведено: умолчание шаблона
, без вопроса человеку: регион feedback-reflection скелета остаётся, хук мержа несёт такт. Нет — только по записанному слову (): удали регион целиком.
- Сосуществование с workflow-набором — только когда найден коэрсивный набор (его скиллы в списке или его директория в кэше плагинов; сегодня superpowers): (1) полный interop (рекомендуется) — подсекция из
references/superpowers-interop.md
+ spec-write-хук; (2) только проза; (3) пропустить — назови риск: дизайн-сессии набора не осядут в граф.
Человек обычно не в треде. Прогон сам обновляет
и производные; присутствие человека не условие. Везде выше и ниже «согласуй», «спроси», «подтверди» для слота означают этот порядок:
- Сделай всё, что от ответа не зависит: аудит, выводимое, гейт, хуки.
- Сперва граф и код, затем братья — агенты соседних контуров. Неразрешённое — в одном деле выравнивания, вопросом по двери iskron, «Ожидание от делателя»; строка «слот: <имя>» — по желанию, на отдельном от карточки ключе («Ключ вопроса не перекрывай строкой работы» там же), не узел и не дело на слот. Позови знающих коллег
iskron_case(action="invite")
; поручение — с на место по «Разовая задача — слово в деле» двери. Их прими , ответ — в слот с их именем. Факт из графа или кода впиши как «выведено», без строки дела; неочевидное основание — словом в деле.
- Только принципиальный остаток — человеку через ведущего дела. Смена мандата, принятого ограничения, цены поломки, выбор или создание графа (граница проекта, такт 1, п. 1) либо неразрешимый конфликт источников — принципиальное; отсутствие ответа или сведений само по себе — нет. Прежде эскалации назови, что проверено в графе и коде, кого спросил и почему это требует решения владельца. возвращает такой вопрос в отчёте; ведущий говорит его словом в деле (строка «слот: …» — по желанию). Позвавший будит человека и держит ожидание: его места; места нет — его роли с контуром (, ). Нет доступного места — вопрос остаётся в деле у ведущего; остальная работа продолжается.
- Дырка, не догадка: значение слота , его источник
'не согласовано — дело №N'
; называет это дело. Непринципиальное неизвестное ждёт знающего агента или ведущего — словом в деле, строка по желанию. Старт двери найдёт ответ и впишет без переспроса.
Отвеченное пишется сразу; один слот не держит остальные.
Шаг 2 — Бутстрап графа
- Графа нет — согласуй имя,
iskron_realm(action="create")
.
- Фокус-контур (граница проекта, от корня) — спроектируй , создай ; — в обложку. Контур несёт атрибут — из
git remote get-url origin
, без протокола и (например github.com/iskron-ai/skills
); по нему работает attrs_filter="repository:…"
, и старт двери сверяет его с origin. Ставь при заведении и на рефреше; один контур — один репозиторий.
- Делатель — стюард. Роль агента (, , мотивация — дистиллят Production statement) проведи к фокус-контуру — эта роль, не старшая, иначе ориентация на контур не найдёт делателя. Нет svatantra-роли владельца и поиск такта 1, п. 1 её не нашёл — создай; привязка — по тому же шагу standing. Оба seq — в обложку.
- Холон + стюард — корень поля интеграции; обход держит . Об «общих поверхностях» не спрашивай и списка в AGENTS.md не пиши; не найденная зависимость — дефект модели (, ).
Шаг 3 — Гейт качества (строжайший в принятом мандате)
По каждому пункту: строжайший вариант для стека, трейд-офф одной строкой, источник по Шагу 1. Послабления — из принятого ограничения, откалиброванного ценой поломки, во фронтматтер по-инструментно; нового основания нет — принципиальный вопрос. Ужесточение уже-ослабленного гейта — обязательство рефакторинга: сперва измерь (прогон на предлагаемой строгости, число провалов); смена принятого ограничения без основания — тем же порядком владельцу, возможно отдельной веткой. Прочие части прогона её не ждут.
- Линтер максимально строгий (
@typescript-eslint/strict
; Ruff ; широкий; clippy -- -D clippy::pedantic
).
- Форматтер, auto-fix on save + pre-commit (Prettier, , , ).
- Тайпчекер strict, если есть (, / ).
- Pre-commit-хук: линтер + форматтер + тайпчек по staged-файлам.
- Тесты + дисциплина (unit для библиотек; +integration для сервисов; +e2e для UI; порог покрытия для production) — в «Конвенции кода».
- CI: lint + typecheck + tests на каждый пуш, падает на предупреждениях; обязателен для .
- Гейт — ВЫЗЫВАЕМЫЙ: один вызов, чья цепочка и есть правило (, , ); в — его имя, не список шагов; CI зовёт тот же вызов. Собранный руками гейт теряет шаг молча и кончается зелёным. Цепочку вынужденно собирают руками — запиши почему и чем проверяется полнота.
- CI-паритет: всякая проверка, способная упасть, гейтит PR, не только post-merge (кодоген, генерация схем и доков, сборка образа, миграции) — дотяни до PR; неустранимый зазор — готчей.
Команды — в «Команды», дисциплина — в «Конвенции кода».
Шаг 4 — Хуки
Деливерабл — ритуалы, не файл. Определи харнессы репо и прошей поверхность
каждого в рабочем дереве (hooks-файл Claude Code, plugin-директория OpenCode проекта; хуки Codex живут в CODEX_HOME, вне worktree, и не прошиваются) по
references/harness-surfaces.md
. Где поверхности нет — скажи, какой ритуал не автоматизирован: его держит проза «Жизненного цикла сессии». Конфиг формата, о котором гадаешь, не пиши.
Хук меряется ценой в контексте и тем, чему учит: одна строка и указатель на раздел AGENTS.md, не пересказ ритуала; срабатывание — на самом событии; не ставится, если та же строка приходит другим путём (описание тула, дверь скилла); не учит обратному правилу (не наказывает законный вопрос человеку). Блокирует только хук с однозначным путём (memory-guard).
Claude Code: хуки в
(коммитится).
Мержи, никогда не перезаписывай — записи других наборов остаются рядом в тех же массивах. Конверт:
"<Событие>": [ { "matcher"?: …, "hooks": [ { "type": "command", "command": "… echo '{\"hookSpecificOutput\":{\"hookEventName\":\"<Событие>\",\"additionalContext\":\"<строка>\"}}' || true" } ] } ]
— вложенность
легко перепутать.
Открой и спроецируй фильтры пуша и мержа оттуда байт-в-байт, с образцами проверки. Проецируя фильтр в JSON,
удваивай каждую обратную косую (
→
) и экранируй кавычки
: иначе фильтр не компилируется, хук молчит навсегда, а
это прячет. Хуки прогон пишет сам, как всю дугу такта 2. Харнесс, спрашивающий разрешение на запись
как на самомодификацию, — его ограничение, не норма: назови его словом в отчёте и проверь чтением, что запись легла. Хуки:
- → прочитать раздел «Старт» двери до действий; адреса репо (граф, фокус-контур, seq ролей агента и владельца); стояние только на вахту (слово «вахта», , адрес места из окна, кадр), одним ;
start <граф> <роль> <дело №N>
входит в дело; у субагента свой мост-спутник ( с , , — на нём), на мосту запустившего он в граф не пишет. Протокол старта не пересказывай.
- /Bash — пуш: отработал (по исходу, справка не будит) → пуш не отгрузил ничего: самопроверка диффа, словарный проход по тексту PR, холодное ревью этапа (раздел о ревью AGENTS.md); отгрузка — мерж.
- /Bash — мерж: мерж форжи слил PR (по исходу) либо подтяжка ствола (
git checkout main && git pull
) → акты после мержа из «Жизненного цикла сессии» (протки, продвинуть карту, модусы по свидетельству, закрыть по оси, reconcile, фидбэк-рефлексия, если согласована, словарный проход; у работы по ссылке от агента — только семя превращения и модусы поставки). Сообщение хука называет и исключение — тем же списком, что раздел , иначе ритуал и хук расходятся.
-
Write|Edit|MultiEdit|NotebookEdit
— memory-guard: путь внутри локальной директории проектной памяти → блок (exit 2, маршрутизирующее сообщение в stderr). Маршрут — из слотов сообщения : граф проекта по имени из «Граф» фронтматтера, раздел персистентности — заголовком, как он стоит в , на языке файла, и личный граф .
- — spec-write (только полный interop, по interop-штампу AGENTS.md): путь похож на design/spec-док → напоминание, что запись дизайна — граф.
- Свежесть ветки — предложи pre-push-хук ().
OpenCode: плагин в
по образцу
references/harness-surfaces.md
.
Поток событий один на сервер OpenCode машины: плагин проекта видит
и прочие события сессий всех каталогов, и приветствие с адресами этого репо, легшее в чужую сессию, ставит её под чужую роль. Подписчик пишет только в сессию своего каталога: каталог события (
события или его
) сверяется с
канонизированными (realpath, при ошибке — строка, без завершающего разделителя) — одна папка приходит то
, то
, и сырое сравнение теряет свою сессию; чужая — пропуск. Хуки
будит только вызов в каталоге экземпляра; от них требуется одно — исполняться как написаны, без неопределённых имён и бросков, кроме guard на пути памяти. Приветствие несёт те же адреса, что
, отказ guard'а — тот же маршрут, что memory-guard Claude Code: слоты шаблона образца (
,
,
,
) заполняются из фронтматтера AGENTS.md,
— его заголовком, как он стоит в файле, — в плагине репо угловых скобок не остаётся. Проверка — из корня репо
node ~/.iskron-bridge/iskron-bridge.mjs check-rituals
, на прогоне и на рефреше: код 1 — дыра или поломка (строка называет плагин, что случилось, и починку), перепиши по образцу, прогони снова, назови в отчёте. Нет
в
домашнего моста (мост старше) или нет самого моста (файла нет,
отвечает
) — прочти каждый
глазами по этому правилу и назови в отчёте, что ревизор не гонялся.
Self-check: четыре базовых хука на месте (старт, пуш, мерж, memory-guard); хуков, снятых прежними контрактами (сторож незастывания на
, указатель момента writing на пишущих тулах), нет — на рефреше убери свои, не трогая чужих; spec-write есть
тогда и только тогда, когда interop-штамп говорит
;
зовёт «Старт» двери
(не
) с реальными адресами; фильтры пуша и мержа — байт-в-байт из
и проверены на образцах оттуда; отказ memory-guard — в хуке и в плагине OpenCode — называет граф репо, раздел персистентности заголовком из
и
, без угловых скобок; голый запрет без маршрута (контракт до 24) — перепиши;
(или чтение по правилу) не нашёл в
дыры и поломки; ни одна чужая запись не выпала.
Шаг 5 — Гигиена репозитория
- Закоммить , заигнорь
.claude/settings.local.json
; широкий игнор — добавь . Проверь git check-ignore -v .claude/settings.json .claude/settings.local.json
.
- Трекаемые secret/env:
git ls-files '.env*' '*secret*' '*local*'
; трекается реальный (не ) — в «Конвенции кода»: локальные правки не стейджить (git update-index --skip-worktree <file>
), никогда / .
- Директория проектной памяти (
~/.claude/projects/<encoded-path>/memory/
): эвакуируй, затем заморозь. Решения и ограничения → граф; ритуалы → AGENTS.md; готчи → дом по «Раскладке»; состояние ветки → git и PR; серверы и датированные долги → граф проекта; собственное пользователя → его личный граф (minding); предпочтения — по Шагу 1. Затем — однострочный стаб-запрет («состояние живёт в репо или графе — см. AGENTS.md, раздел <заголовок раздела о персистентности, как он стоит в файле>»), memory-guard блокирует дальше. Стаб поверх непрочитанного уничтожает то, что должен был переселить.
- Форжа и CLI — выведи, не предполагай GitHub: → (GitHub), (Forgejo/Codeberg), (GitLab), (Gitea); проверь установку и вход, назови в «Git-воркфлоу» с командой наблюдения. Неопознанный хост — спроси.
- «Стек», «Команды», «Структура проекта», «Конвенции кода» — реальное содержимое по зрелости; пусто в первый день — нормально, — нет.
- не заводится, и AGENTS.md говорит почему (раздел скелета). Файл есть — эвакуируй по домам (git, PR с номером дела, дело, модусы узлов) и удали.
- корня — короткий, человеку, AGENTS.md не дублирует. README компонента по «Раскладке» — карта кода делателя, компактно; прогон их не пишет.
Шаг 6 — Ролевые суб-агенты делегирования
Доктрина и шаблоны файлов —
; прозой AGENTS.md не проецируется.
- Claude Code, всегда: и (средний тир), , , и (верхний: исполнение, суждение, ревью и приёмка) — алиасы /; — ни одной роли. и — даже без рантайма: они делают и ритуал ревью исполнимыми; — только чтение, поиск кандидатов «что граф знает о X» вне окна сессии: находки — зацепки, позвавший принимает их сверкой с окрестностью. Ни одна роль в граф не пишет; ткачество ведёт сам ведущий.
- OpenCode ( / или слово пользователя): те же шесть, , модель пришпилена в каждом файле из настройки пользователя (спроси или прочти ); из референса id не копируй; верхний тир — только Claude Opus или GPT-6.1 Sol.
- Запись моста-спутника — одна форма на все ОС (, «Форма записи одна на все ОС»): , — с кодом, собирающим путь к домашнему мосту из , затем и ; копируй блок из референса дословно. Проверена живьём на macOS (Claude Code 2.1.285); на Windows не сверена. Машинного пути в файле нет — он коммитится как есть. Прежняя проекция (, контракт до 18; абсолютный путь) — перепиши этим блоком.
- — канал маршрутизации: триггер-образно — когда звать, что вернётся, чему не доверять.
- Объёмное суждение без записи в граф (проекция файлов прогона , разбор слотов против кода) идёт роли ; проектирование в графе, запись, ткачество, решения владельца и диалог остаются ведущему; приёмное (ревью диффа, приёмка утверждения) идёт холодному — ролевой файл законен; поиск по вопросу, только чтение, — тоже.
- Мержи: одноимённый агент другого набора — вложи своё или переименуй свой (). Своя прежняя проекция (тело прошлого контракта) — перепиши текущим телом; хвост репо (, «Хвост репо») — перенеси как есть; чужое тело — не трогай.
- Self-check: файлы парсятся; каждый файл Claude Code несёт свою запись моста-спутника — общей записи (контракт до 17) ни в одном нет; форма записи — из референса, и машинного пути нет ни в одном; из корня репо показывает файлы проекта в разделе «субагенты» без строк (на английской поверхности — ; есть — исполни их до отчёта); тела , , , несут вход в дело строкой запуска и на общем мосту не зовут , , ( и в дело не пишут); ни одно тело не разрешает запись в граф; файлов и нет или пришпилен к (контракт до 18) — допиши и перепиши; пришпилен к (контракт до 23) — перепиши на ; своя прежняя проекция (контракт до 22) — удали; и читают репо; пришпиленные модели существуют; AGENTS.md не несёт доктрины делегирования (максимум указатель); хвост репо не потерян — по диффу каждого ролевого файла строки под и ключи фронтматтера сверх блока те же до и после прогона; у прежней проекции без заголовка каждая снятая строка, называющая предмет репо, стоит в хвосте, а снятые родовые названы в отчёте; чужие файлы не перезаписаны, свои прежние не оставлены.
- Роль, спроецированная прогоном, в той же сессии может не зваться по имени (каталог ролей читается на старте) — скажи это в отчёте; холодное ревью этого прогона тогда идёт общим суб-агентом с телом роли в брифе, модель — только верхнего тира (Claude Opus или GPT-6.1 Sol): параметром вызова, где харнесс его даёт; где не даёт — моделью сессии, только если она из них, и отчёт это говорит; иначе ревью этим ходом не идёт — отчёт говорит и это.
Шаг 7 — Финализация
- Тело — в (Codex и OpenCode читают нативно), таблица носителей — в корня. Указатель — только для Claude Code; форма по и платформе:
- симлинки работают:
ln -s AGENTS.md CLAUDE.md
;
- не работают (Windows): копия байт-в-байт — её читает буквально любой тул, но это второй источник истины: перегенерируется каждым прогоном, числится в «Что обновлять когда», правки — только в ; либо однострочный с (без бэктиков: код-спан глушит импорт) — там, где копия хуже импорта, понятного одному Claude Code.
Работающий указатель любой формы не переделывай. Пер-харнессные детали (merge root→cwd у Codex, ) —
references/harness-surfaces.md
.
- Легаси-конфиг: скелеты — рама; производные факты ре-спроецируй, авторское сохрани, сверив с кодом; проектное без слота — в «Конвенции кода» или новую секцию. Таблица Reality внутри (контракт до 16) — переезжает в строками целиком, датированные наблюдения из неё — узлами в граф (не удаляются), в остаётся указатель. Содержательный — влей в , замени указателем. Файлы «Раскладки» не вливаются — только сверяются ссылки. Один источник на заботу.
- Interop full / prose-only: подсекция
### Workflow-suite interop (superpowers)
в конце «Жизненного цикла сессии» из references/superpowers-interop.md
(только деплоируемая часть) со штампом *(interop: <full|prose-only> — verified against superpowers@<version> — re-check on suite upgrade)*
; на рефрешах аудируй её как любую заботу.
- Проверочный проход (на равных с плотностью): каждая производная строка обоих файлов против источника — весь артефакт, не только тронутое. Не привязывается к источнику — авторское суждение (сохрани) или догадка (вырежи).
- Проход плотности: «меняет ли строка то, что агент делает?» — режь нарратив и обоснования (в граф). Блоки канонов не трогаются — сверяются с узлом байт-в-байт.
- Автоматический чекер «заявленное vs фактическое» — согласованный не-дефолт; строить — только узкий пер-репо по именованным строкам, обобщённый — никогда. Дисциплина — пере-прогон.
- Штамп: хвостовая строка —
*(iskronify: контракт <число из шапки>, штамп <YYYY-MM-DD> — прогони заново, когда описание установленного iskronify называет контракт выше или когда источники, из которых выведен этот файл, сдвинулись после этой даты.)*
. На рефреше перезапиши; двух не оставляй.
- Обложка — YAML-фронтматтер, от первой строки до закрывающей , не раздел тела. Плоские пары ключей:
'Граф': '@owner/slug (rN)'
и 'Граф — источник': 'выведено'
; имена слотов — как в скелете, у каждого свой ключ со значением / / . Все значения — строки в одинарных кавычках; одинарную кавычку внутри удвой. Дырка — пустая строка значения и источник с делом; «Согласование» — дело либо . Старую таблицу перенеси без потери значений и источников, убери раздел «Обложка»; тело оставь ритуалам. Не добавляй служебные ключи харнесса (например, ): это метаданные проекта, не фильтр загрузки инструкций. -симлинк продолжает указывать на тот же файл. Проверь YAML-парсером плоскость и строковые значения, а указатель — чтением против .
- Готчи в не живут: при по «Раскладке» — строкой там, узел не обязателен (ловушка — знание о коде; узел, если есть, — ссылкой); иначе узел графа на контуре, в файле и коде — . Строк в граф не переносить.
- проверен: носители опираются на граф, код или названный ответ, их достижимость проверена либо ограничена Ceiling; ни одного датированного замера; раздел «Reality» в — указатель без строк таблицы.
- Во фронтматтере ни одного пустого значения при источнике «не согласовано» без №дела и ни одного плейсхолдера скелета в значении; ни одна заметка не пережила в обоих файлах.
- Каждое имя скилла в проецируемых файлах (, , хуки, ролевые файлы) разрешается как записано на канале установки репо — сверь с живым реестром, не по памяти; невызываемое имя не падает, а молчит. Механической сверки в прокачиваемом репо может не быть — тогда вручную, как имена тулов по живой поверхности сервера. Тело, едущее в несколько харнессов (ролевой файл), формы вызова не несёт вовсе — называй вызовы тулов.
- На бутстрап-пуше граф отражает перемену структурой (контур, роль, готчи, карта); выравнивание — словом в деле, ждущий слот — строкой «слот: …».
- Передай эстафету: закончи тизером роадмапа (скилл , quick-режим) по свежему репо, названным по имени. Назови обновлённые файлы и открытые слоты фронтматтера — дело №N, на ком и чего ждут; продолжение такта 2 не требует слова человека. Принципиальные вопросы владельцу — отдельно, с проверенными источниками; нет их — так и скажи. По поручению отчёт и остаток получает ведущий дела.