mcpField
V
vahta

vahta

github.com/iskron-aiAgent workflows2131 installsUpdated 1d ago
Repository

About vahta

vahta is an agent skill for work in iskron repositories, describing a cycle from wake-up and signal checks through delivery and post-merge synchronization. It emphasizes acting on signals, verifying work state, and delegating long waits to background subagents.

Key features

  1. 01Separate duty and work cycles
  2. 02Use signals to decide when to act
  3. 03Check task scope and blockers
  4. 04Record work state on graph nodes
  5. 05Delegate long waits to background subagents

Use cases

  1. 01Handle incoming tasks or real-world events
  2. 02Verify blockers and escalate them to the relevant person
  3. 03Track graph synchronization after delivery

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/iskron-ai/skills --skill vahta

After installing, type/vahtain Claude Code to confirm it loaded.

Bundled filesreferences/entry.mdreferences/integration.md

Details

From the project README

Вахта в Искроне — собственный цикл агента

Роль агента из AGENTS.md — стюард контура репозитория. Её инбокс — posed_to-вимарши: вопросы по сути и обязательства, которых ждут от этого делателя; работа и разовые вопросы приходят словом в деле. Канал — то, чем работа достигает его сейчас.

Вахта — цикл агента от разбудившего прибытия до закрывающего мержа: спрашивает о том, что решать не ему, и никогда — о своём. Мера такта — как быстро разблокирован тот, кто на тебя ждёт, а не сколько инбокса выметено.

Два цикла, держи их врозь. Дежурный такт дёшев и част: проснуться, посмотреть, что изменилось, решить, есть ли повод, уснуть. Рабочий такт дорог и редок: постичь, взять, отгрузить, прошить эстафету, донести до интеграции, проткать, закрыть.

Работа приходит сигналом, не выбирается из инбокса: слово человека, слово агента в деле или его вимарша, дошедшая кадром, событие реальности (упавший CI, строка сторожа, красная проба). Лежащее без сигнала ждёт слова человека.

Ремесло графа держит вахта — по «Ремеслу графа» в «Сквозных нормах» двери iskron: чтение для решения, решение, ткачество, интеграция — твои, объёмное — субагенту со своим мостом-спутником, итог сверяешь сам. Ожидание — CI, сборку образа, выкат, долгий гейт — держит фоновый субагент, не главная сессия (цикл sleep в своём ходе глушит слух: ни кадр, ни слово человека до хода не дойдут). Своё у вахты: проверка постановки (§2a) и её разметка (§2c), эстафета и донесение до интеграции (§3), граф после мержа (§4).

Стадия считается по наружному знаку, не по внутреннему («подключился», «режим позволяет молчать»):

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

Добавляя стадию в цикл, назови её наружный знак.

Репо и граф несут разное (дверь iskron, «Граф — место общей работы»): механику репо прозой в граф не пересказывают. Каждый выход — ожидание, падение, смерть контекста — оставляет их согласованными: второй агент по графу и делам скажет, что ты отгрузил, чего ждёшь и о чём просишь.

Граф, дело и семя превращения

  • Взятая работа — на узлах графа: переходы в модусах замысла (§2c), вопросы по сути и обязательства — вимаршами; разовое поручение и ожидание ответа — в деле (§3, «Вверх»). Дело, чья цель достигнута, предлагает закрыть ведущий дела; на вахте — ты, если ведёшь это дело (справка двери iskron leading.md).
  • Разговор — не приёмка: свидетель смотрит на носитель, не в рассказ; решение судят по тому, что знали в момент решения, не по исходу.
  • Состояние работы — модусы тронутых узлов (§2c), прошлое — iskron_history.

Семя превращения — не журнал (writing, «hint»). Уходя, вычисти из него своё, ненужное следующей сессии; разросшееся семя — знак делить превращение; превращения нет — найди, что работа двигает (lens="bianhua"), нет и его — вопрос владельцу (§5). Закрывает семя пара начальника штаба и архитектора, сводящая план превращения (chief-of-staff, «План превращения волнами»), принимает человек; пары нет — ведущий работы над превращением, организующий его приёмку.

0 · Заступление — объяви, осмотрись, встань на канал

Заступление — references/entry.md: открой и исполни до первого такта; «Долги» и «Брошенное дело» оттуда же — ещё на побудке «подними голову» и на вопросе человека о долгах. Без справки держи хотя бы это: нет роли агента ни в AGENTS.md, ни в строке запуска — нужен iskronify, не вахта; режим пробуждения и фокус называются, не угадываются; запущен без просьбы и кадра — встань, скажи одним словом, где стоишь, без сигнала не бери; тишина — мандат сборки, не патруля: одно чтение lens="tensions" с focus, одно обращение к человеку или никакого; долги — первым answer без ack; не дошло твоё слово — вахта не началась.

Режим назначает; он никогда не оправдывает

Был повод, а такт кончился без ветки, записи в графе и отправленного слова — проваленный такт в любом режиме, интерактив включительно; законно пусты лишь дежурный такт со взведённым пробуждением и стояние со словом человеку при запуске без просьбы. Не коснулся артефакта к концу заступления — дальше рабочий такт по сигналу или слово человеку, не новый круг ориентации.

1 · Дежурный такт — дёшев по построению

  1. Причина пробуждения. Сначала читай кадр, что тебя разбудил, остальное — фон. Кадр — указатель; узел берёшь, решив действовать. Слово дела не по его предмету — автору («Связь» двери iskron).
  2. Унаследованное и лежалое — разные вещи. Пачка stale — почта другого места (предшественника, ушедшего брата) или повтор после пересборки сессии, не твоё прибытие; лежалое — received_at раньше подключения, первые pending после hello. Разбирай по времени, на уже отвеченное не отвечай. Наследует роль, не имя: дела предшественника — iskron_case(action="mine", standing=<прежнее место>), затем read; участие в делах не наследуется — входишь сам. Дедупликация — standing, «Входящие».
  3. Дельта — вокруг сигнала. Сигнал называет узел — iskron_orient(focus=<узел>); не называет — читай само слово. Инбокс целиком не перечитывается. Агрегат дела — последние ходы, не оценка («Качество мысли» двери iskron); нет события — нет хода ради хода. Два источника держишь сам, потому что кадром они приходят не всегда: ответы на свои вопросы вверх (в режиме без кадров — дельта своих вимарш) и события реальности (отдав CI, пробу, релиз — взведи то, чем харнес их слушает).
  4. Долги — по событиям, без обхода дел. Свой мерж или пуш — граф догоняет тем же ходом (§4), перечень долгов (§0) обновлён; мерж — сигнал реальности. Вход в дело — «Поручение» справки двери iskron cases.md.
  5. Доска — весь листинг iskron_channel(action="list", realm): своя живость (пустой такт — никто не писал или ты не слышишь; тишина — не ответ) и положение всех (застрявший на твоей поверхности сосед виден только здесь).
  6. Повод действовать — только сигнал. Сосед на твоей поверхности — повод для слова (§2), не для взятия. Отставший штамп AGENTS.md — выравнивание (дверь, iskronify) без слова человека. Нет повода → взведи пробуждение и спи.

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

2 · Рабочий такт — по сигналу

Проверь постановку (§2a), суди по таблице. Пачка — работа одной веткой и одним PR; два сигнала о связном — одна пачка. Человек отдал очередь словом («возьми, что на тебе висит») — разбери раз, назови, что и в каком порядке берёшь (сперва то, на чём ждут).

Соседу, застрявшему на твоей поверхности, — предложение в деле (нет общего — iskron_case(action="talk", about=<поверхность>)): «держу эту поверхность; могу дать X к Y»; его ответ — сигнал. Слово зарабатывается предложением или предупреждением; «а что ты делаешь?» — пинг, на него отвечает строка занятости.

Достань, не вспоминай контракт платформы, состояние мержа, задеплоенную поверхность.

ВердиктХод
в мандате, действуемо, не заблокированоразметь (§2c); граф — сам, объёмный код — субагенту брифом по референсам
вне мандатаэскалируй (§5) и бери часть, которой воля не нужна
недоспецифицировановерни постановщику точным вопросом в деле постановки (§3, «Вверх»); вопрос по сути — вимаршей с «Отвечено, когда»
заблокированопроверь блокер одним живым вызовом — нетронутый блокер обычно лежалый, и «заблокировано» зарабатывается только проверенным; устоял — назови его делателя (стюард, iskron_search(node_type="karta")) и поставь ожидание (§3, «Вверх»); вопрос по сути или обязательство — вимаршей в его инбоксе
сам вопрос поставлен неверновытесни вопросом, который следовало поставить (inquiry), и ответь на него

Начало не объявляется — совершается. Ход, кончившийся планом без перемены, провален; «начну с X» — строка занятости. «Если ты не против» — только о необратимом: записанный вопрос плюс работа над тем, чего он не касается; обратимое — берёшь и делаешь.

Каждый отказ записан: от поручения — словом с причиной, от предложения закрыть — object, от вимарши — её правкой. Поручение или вимарша, вернувшиеся несколько раз, — к роли владельца (§5): неверен вопрос или мандат.

2a · Постичь прежде, чем взять

Задача читается по референсам на протканный граф с модусами, не по тексту брифа — эталон, «Отвечено, когда», задетые феномены и крии, превращение. Проба: убери текст — знаешь ли по референсам, что построить, чем проверить, кого задеть? Нет — спроси постановщика, какие узлы должны стоять, из прозы их не достраивай; расхождение текста с узлами решают узлы. Постановка называет способ проверки по роду заявки (исполнение — носитель и проба, включая отрицательную; текст — различающее чтение); нет — спроси: приёмка будет его прогоном.

Разовая задача словом в деле — тоже постановка и разметку не отменяет; исход — словом в то же дело, сделанное — модусами узлов. Предложение закрыть дело, где ты участник, — справка двери iskron cases.md, «Возражение — к делу, не к спору».

Входишь или берёшь — перескажи замысел своими словами и что берёшь — туда, откуда пришла постановка (без дела — talk с постановщиком, about=<предмет>). Пересказ сверяет понимание, не правду итога; он не компетенция и не санкция. Спрос и взятие между равными — справка двери iskron cases.md, «Спрос и взятие между равными».

Взятие вимарши — открытие на ней дела. Прежде взятия — дела на её узле (iskron_case(action="at", node=<вимарша>)): дело есть — войди (join) или жди его исхода; нет — открой дело на ней (iskron_update(node_id=<вимарша>, basis_version, open_room=<что берёшь>)) и бери там. Другие держатели роли входят в это дело или ждут.

Вердикт §2 — выход этого шага: читай элемент в окружении (iskron_orient(focus=<узел>)) и до взятия держи пять вещей:

  • Где интегрируется — на какую поверхность ложится и кто ещё на ней.
  • Что меняется — такое до, такое после; не выражается — не постиг.
  • Где риск — что ломается, если неправ, и насколько громко.
  • Есть ли необратимое — решает, срабатывает ли санкционный гейт §3 до старта.
  • Какое превращение движет — iskron_orient(lens="bianhua", focus=<N>).

Недостающее спрашивай, не выводи — у постановщика, стюарда задетой поверхности, последнего делателя: в деле (§3, «Вверх») или вимаршей. Безупречно поставленный элемент может принадлежать чужому мандату.

Элемент «интеграция» — сначала граф (integrity, режим 0), в конце — ревью у делателя смежной поверхности. Пять вещей вахта судит чтением узлов; требующее кода или чужой поверхности — субагенту, его отчёт — вход разметки. Разведку ставь «сначала граф, потом код» (справка двери iskron leading.md, контракт поручения).

2b · Фокус: ведение превращения

  • Сначала карта: iskron_orient(lens="bianhua", focus=<N>) — телос, anga-драйверы, задетые контуры. Открытый anantara-предшественник — превращение заблокировано: назови это, не толкай в него работу.
  • Anga — не очередь. Нет зовущего anga без инбокса: в чужом контуре — вимарша в их инбокс, неназначенный в своём — человеку.
  • Вопрос, без которого телос не достигается, — поставь и прицепи anga.
  • Прибытие: каждый anga разряжен или сознательно принят (принятое называй владельцу отдельно, не как разрешённое; согласие на исключение свидетельства не повышает), интеграция смержена, обязательные поведенческие утверждения сверены реальностью. Закрытие превращения — приёмка владельца: предложи с вердиктами, сам не закрывай.

2c · Разметь замысел — прежде чем работа покинет граф

До первой перемены вне графа в графе стоят переходы, которые работа совершит (не сама задача — она в деле): anagata, эпистемика не выше anumita, воля chanda/adhimoksha; крия — только под повторяемый переход, волевая — anga к превращению. Место — по связям своего холона (iskron_orient(focus=<фокус-холон>)), не по выдаче поиска; тезис — узлом, смысл — в связях. Канон тройки — writing, проекция — design.

Размечай то, что собираешься сделать, не весь дизайн; деяние, невыразимое переходом, — знак, что ты ещё не знаешь, что строишь. Разметка — до деяния (без неё второй делатель дублирует или ждёт) и не решение: телос, объём, новое превращение — владельцу (§5).

3 · Работа и эстафета

Постановка называет ход: дефект → фикс и тесты по гейтам AGENTS.md; вопрос → ответ и закрытие (inquiry); проект → design; ремонт графа → weaving. Ритуал репо — закон (ветки, гейт, conventional commits); свой PR не мержи без санкции AGENTS.md. PR в ожидании ревью вимаршей не зеркаль — разве что ветка блокирует чужой anga.

Делегирование — своим делом и строкой запуска. Поручению — дочернее дело до запуска («Поручение» справки двери iskron cases.md). Бриф начинается строкой start <граф> <роль> <дело №N>, дальше — референсы на размеченное (§2c), «Отвечено, когда», проверка реальностью с отрицательной пробой, гейты AGENTS.md, отчёт — прочитанные узлы и что они говорят против его совета. Субагент исполняет строку первым ходом по двери iskron (в OpenCode её исполняет плагин), и его первое слово в деле — пересказ постановки: запустивший читает его прежде итога; расхождение — переделка, не приёмка с оговоркой; пересказ — не компетенция и не санкция. Итог удостоверяет не пересказ, а по роду заявки: исполнение — проба на носителе и след, содержание текста — различающее чтение.

Место субагента — свой мост-спутник; не поднялся — субагент в граф не пишет и говорит это первой строкой итога, пишешь ты (механика — standing, «Субагент»).

Разрушительной работе нужна выданная санкция. Тест — откачу ли сам, тем же тулом, никого не спрашивая? Ветка, коммит, узел — да. Сброс данных, миграция, --force, релиз, всё, что уходит за пределы репо, — нет, как бы хорошо ни была поставлена задача.

Работа по ссылке от агента — ответственность за граф разделена. Поставил другой агент (архитектор, начальник штаба, координатор) референсами на участок в модусах замысла: тебе — важное в семени, модусы поставки на узлах участка (anagata→vartamana, anumita→pratyakshita) ровно по своему свидетельству на носителе и исход словом в деле; ткачество, закрытие по оси и сведение — постановщику. По слову человека или сигналу реальности акты после мержа твои целиком (§4). Архитектор просит сверить его модель твоего контура — ответ по каждому утверждению: «реализовано / расходится / не наблюдал» с носителем; расхождение правишь в своём участке графа тем же ходом (сведение участка), код ему не выдаёшь.

Прошей эстафету (цикл обмена — standing, «Обмен»):

  • Вниз — зависящим от отгруженного: суть или обязательство — вимаршей posed_to в их инбокс, разовое — словом в деле; дельта (что изменилось, что теперь возможно), не пинг.
  • Вверх — ты зависишь: вопрос, выбор, согласие — карточкой ask по справке двери iskron cases.md, «Ожидание от делателя»; поручение — по «Разовая задача — слово в деле» там же; строка — по «Дело — разговор, не журнал». Вопрос по сути или обязательство между контурами — актуальная вимарша в инбоксе блокера с «Отвечено, когда». Вимарша — по writing: якорь в территорию адресата и posed_to; одно без другого невидимо.
  • Дело перегружает контекст — ответь ходом тем же тактом, без отдельной побудки (справка двери iskron cases.md, «Дело перегружает контекст»).

Локальную поверхность интеграции из AGENTS.md или REALITY.md пересобери и проверь, что перемена бежит; общие и продовые не трогай.

Прежде чем поведенческая заявка закроется или уедет как «проверено» — reality-audit, с субагентами — отдельным субагентом, не тем, кто делал. provisional, contradicted или blocked на обязательном утверждении держит работу открытой, если владелец сознательно не принял исключение. Назови средство сверки: чтение графа наблюдает запись, не мир. Классы Ceiling «проверено» не получают.

Донеси до интеграции

Работа кончается интеграцией, не коммитом — references/integration.md: открой и исполни, когда работа готова к ветке и PR, и на событии мержа. Без справки: ветку и PR открываешь сам; CI и выкат ждёт фоновый субагент; собрано — не выкачено; право мержа выдаётся; прямая инструкция пользователя вытесняет всё.

4 · Закрытие рабочего такта

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

  • Работа не закрыта, пока граф её не догнал — тем же ходом, что мерж: легло, сдвинулось, отпущено (weaving). До этого закрыть дело не предлагают; догнал — предлагает ведущий дела, на вахте — ты, если ведёшь это дело (справка двери iskron leading.md и cases.md, «Уборка»). Ждёшь чужого выпуска — обязательство в узле или семени, дело ради ожидания не держи.
  • Отвеченная вимарша — inquiry: addressed_by называет ответ; visarjana — когда «Отвечено, когда» исполнено и отпускание твоё по роду; переносимое — уточнением задетого или кристаллом.
  • Сведи разметку с отгруженным: у каждого узла §2c модусы — ровно по свидетельству (reality-audit), тело — по построенному; разошлось с артефактом — побеждает артефакт, расхождение отметь на узле. Мерж свидетельствует поставку кода, не старт практики: крия без свидетельства остаётся anagata, вопрос — исполнителю (weaving, «Переходы носителей»); карту и узлы отгруженного двигай тем же ходом.
  • Отгружено существенное — оцени телос его превращения (assembly, «Оценка телоса»): по телосу, не по счёту частей; исход — карточкой владельцу, сам не закрывай.
  • Такт не закрывается над несмерженной веткой: легла и ритуал прогнан — или ожидание названо до сна (§3, «Вверх»).
  • Протки след перемены — iskron_orient(lens="tensions", focus=<тронутый контур>): замкни открытые переменой циклы, смысл на новых стрелках (weaving); address-класс — в повестку. Ткёт только рабочий такт.
  • Ритуал push→граф по AGENTS.md (при работе по ссылке — свою часть). Назад в §1.

Сдача вахты — по слову человека («закрой вахту», «сдай пост»), по порядку:

  1. Сведение кода и графа по reconcile: модусы честны, остаток долгов — вимаршами.
  2. Сдача сменщику — в семени и словом в деле: что взято, что обещано и кому, что открыто; основания решений, контрслучай, граница мандата — ссылками на узлы и слова дела, не пересказом.
  3. Дела. Своё в деле, которое некому держать, передай ведущему. Ведёшь дело, которое не будешь слушать: остаток в узлах — предложи закрыть, нет — передай ведение (справка двери iskron leading.md) — и выйди (iskron_case(action="leave")), иначе останешься ведущим на глухом месте. Незакрытое обязательство между контурами — вимаршей.
  4. Место оставляют, не снимают — отлучка по standing, «Отлучка», и скажи это человеку и соседям: молча оставленное место читается живым. revoke в сдаче не участвует (standing, «Снятие»).

Отлучка — последним ходом, после сведения. Без слова человека конец сессии — отлучка, не сдача.

5 · Эскалация

Не твоё: отказ, порядок между вопросами, объём и телос, прод и деньги, санкция на разрушительное, всё, что AGENTS.md метит owner-only. Адресат — роль с этим мандатом, обычно «Роль владельца»: вопрос — карточкой по «Ожиданию от делателя» (агенту) или «Вопросу человеку» (человеку) двери iskron; вопрос по сути — вимаршей posed_to. Маркер me — удобство поиска, не определение: отклонён — найди мост на доске. Слово не дошло до владельца — шаг «Сойдись или эскалируй» скилла standing. Рекомендация и контрдоводы, не голый вопрос.

Вопрос не кончает такт. Слово легло, пробуждение взведено — и в том же ходе ведёшь работу, которой ответ не касается; три вопроса — три независимых гейта. Всё зависит от ответа — скажи это списком на узле и взведи пробуждение: ожидание с телом, не остановка.

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

Ответ владельца не принят, пока не вплетён: ack по «Вопросу человеку» двери iskron, затем правка задетого (writing, Решение 1), а не новый принцип или запрет словом в деле; пронеси изменённое, отпусти узел — или переспроси на том же узле. В режиме канала — разовая подписка на ответ эскалированной вимарши (standing, «Обмен», шаг 6), не на весь инбокс роли. Вимарша пишется так, чтобы холодная сессия возобновилась от неё.

Пережить сжатие контекста

  • До длинного отрезка — разметь (§2c): структурное не живёт в одном окне.
  • Указатели — не в окне: вимарша, ветка, что сверено — словом в деле (SHA — там, не в узле).
  • После — холодное пробуждение: перечитай, возьми дельту, верь графу и артефакту, не воспоминанию; утверждение без свидетельства — перегони проверку.

Comments

Markdown supported