mcpField
V
vahta

vahta

github.com/iskron-aiエージェントワークフロー2131 回インストール1 日前に更新
リポジトリ

vahta について

vahtaは、iskronリポジトリでの作業向けエージェントスキルです。起動とシグナル確認から、成果物の提出、マージ後の同期までのサイクルを定めています。シグナルに基づく着手、作業状態の確認、長時間の待機のバックグラウンドサブエージェントへの委任を重視します。

主な機能

  1. 01当番サイクルと作業サイクルの分離
  2. 02シグナルに基づく着手判断
  3. 03タスク範囲とブロッカーの確認
  4. 04グラフノードへの作業状態の記録
  5. 05長時間の待機をバックグラウンドサブエージェントに委任

活用シーン

  1. 01届いたタスクや現実のイベントへの対応
  2. 02ブロッカーの確認と担当者へのエスカレーション
  3. 03提出後のグラフ同期状況の追跡

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/vahtaを入力して読み込まれたか確認します。

同梱ファイルreferences/entry.mdreferences/integration.md

README(原文)English

プロジェクトの README より

この 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 — там, не в узле).
  • После — холодное пробуждение: перечитай, возьми дельту, верь графу и артефакту, не воспоминанию; утверждение без свидетельства — перегони проверку.

コメント