handoff-to-jarvis
Передать запущенные прогоны серверному агенту jarvis4shkodnik под мониторинг — он подтвердит в Telegram, сверит с сервером и поднимет вахтёра.
Skill by Vepricov
Chalk Labs
Need help deploying handoff-to-jarvis?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/vepricov-handoff-to-jarvis
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/handoff-to-jarvis
What's inside
- Skill name
handoff-to-jarvis- Description
- Передать запущенные прогоны серверному агенту jarvis4shkodnik под мониторинг — он подтвердит в Telegram, сверит с сервером и поднимет вахтёра. Use when the user says "передай Джарвису", "поставь под мониторинг", "отдай на сервер", "hand off to jarvis", or after launching runs he intends to leave unattended.
- License
- MIT
- Instructions
- 171 lines in SKILL.md · view on GitHub
Before installing
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Files (1)
- SKILL.md
SKILL.md (first lines)
# handoff-to-jarvis: отдать прогоны круглосуточному агенту на do-vpn
Джарвис живёт на VPS `do-vpn` и говорит с пользователем в Telegram. Мак засыпает, VPS нет,
поэтому долгие прогоны стережёт он. Канал передачи — **файл JSON в
`/root/jarvis4shkodnik/state/inbox/`**, а не HTTP: на боксе 443/8443 заняты xray, а Мак→do-vpn
рвётся с RST, и файл либо доезжает целиком, либо видно, что не доехал. Схема — единственный
источник истины: `~/brainlab/agents/hermes/jarvis/inbox.py` (`TEMPLATE` внизу — канонический
пример, `RunSpec` — поля прогона, `Handoff.validation_problems()` — за что отклонят). Не
изобретай имена полей, читай файл.
Главное: **передача — это ЗАЯВЛЕНИЕ, а не факт.** Джарвис сверит каждую строку с сервером и поднимет
вахтёра только на то, что реально живо. Соврёшь — опубликует как «заявлено, но не найдено».
## 1. Когда применять и когда НЕ применять
Применять: прогоны запущены (тобой или пользователем), проверены, ноутбук закрывается; либо
пользователь прямо сказал «передай Джарвису / поставь под мониторинг».
НЕ применять:
- **Ничего ещё не запущено.** Джарвис проверяет заявленное и отклонит непроверяемое: получишь
`rejected/` и сообщение о дырке вместо мониторинга.
- **Ты сам добьёшь эту серию в этой же сессии.** Два наблюдателя за одними логами дают два
разных числа в Telegram и двойную запись в `Experiments/`.
- **Серия уже передана** — сначала проверь дубль (см. ЗАПРЕТЫ).
## 2. Собрать факты ДО записи файла, а не по памяти
Правило: **в передачу идёт только то, что ты реально прочитал в этой сессии.** Поле, которого не
знаешь, лучше оставить пустым, чем заполнить догадкой: Джарвис строит по нему `spec.md`, и
выдуманный путь лога даст вахтёра, который месяцами стережёт пустоту.
```bash
ssh vv_h200 "tmux ls" # какие сессии реально есть
ssh vv_h200 "tmux capture-pane -t lip_f30:0 -p | tail -15" # живая панель: Iter= или traceback
L=/data/users/shkodnik1917/llm-baselines-warmup/logs_583/lip_f30.txt
ssh vv_h200 "ls -l --time-style='+%d-%m %H:%M' $L; grep '>Eval: Iter=' $L | tail -2"
ssh vv_h200 "nvidia-smi --query-gpu=index,memory.used,memory.free,utilization.gpu --format=csv,noheader"
```
В руках на каждый прогон обязаны быть: имя tmux-сессии, **абсолютный** путь лога, mtime и
размер лога (растёт ли), свежая строка `>Eval: Iter=… val_loss=…`, номер GPU, `target_iter`.
Запускал сам — соблюди ordering из `personal/Knowledge/autonomous-experiment-loop.md`
(`new-session -d` → `pipe-pane` → `send-keys`; порядок не сворачивается, иначе `pipe-pane`
проигрывает гонку первому выводу и лог пуст) и **дождись 60–90 с, пока в панели появится
`Iter=`**: прогон, где видно только инициализацию оптимизатора, скорее всего уже застрял.
Хост — из `general/servers.md`, не из головы: `vv_h200` достаётся через `ProxyJump do-vpn` и жив,
пока жив `vvh200-tunnel.service`; на `shkodnik_opt` нужен `CUDA_DEVICE_ORDER=PCI_BUS_ID`, `/` всего
133 G, данные на `/home`; на `brain_lab` системный `anaconda3/bin/python` падает на import. Пути
обязаны быть верны с точки зрения сервера, а не Мака: Джарвис ходит на GPU-хост со своего do-vpn.
## 2а. ОБЯЗАТЕЛЬНЫЙ ОПРОС: спросить то, что решает пользователь
Факты ты читаешь с сервера. Но пять полей — это не факты, а **решения пользователя**, и молчаливый
дефолт по ним обходится дорого: пустая `queue` означает, что освободившийся ночью GPU простоит до
утра, а отсутствие `ЦЕЛЬ` означает вахтёра, который не понимает, где финал, и не скажет о нём.
Поэтому: **если пользователь не назвал их сам — спроси, ОДНИМ блоком, до записи файла.** Не по
одному вопросу за раз (это превращает передачу в допрос) и не после доставки (спек уже собран).
Варианты ответов предлагай КОНКРЕТНЫЕ, выведенные из того, что ты только что прочитал: `target_iter`
обычно виден в команде запуска или в конфиге, кандидаты в очередь — в той же папке `scripts_*/` и в
существующей заметке `Experiments/<series>.md`, порог сдвига — из разброса значений в прошлых
прогонах. Спрашивать «а какой порог?» без вариантов бесполезно, пользователь этого не помнит.
| Спросить | Куда уйдёт | Не спрашивать, если |
|---|---|---|
| до какого `iter` считаем и что считается успехом | `ЦЕЛЬ`, `runs[].target_iter` | значение однозначно в команде запуска или конфиге |
| какие конфиги можно запускать следующими и какими именно командами | `queue` (поимённо, `cmd` дословно) | пользователь прямо сказал «только наблюдать» |
| порог значимого сдвига метрики | `thresholds.shift_val_delta` | он сказал «пиши только финалы и падения» |
| что делать нельзя | `forbidden` | — всегда предлагай минимум и дай дополнить |
| когда будить, а когда молчать | `ЭСКАЛАЦИЯ` | он уже перечислил, о чём писать |
**Если он не отвечает или говорит «решай сам»** — не выдумывай очередь и не расширяй права. Ставь
безопасные дефолты: пустая `queue` (режим только-наблюдение), уведомления по финалам и авариям,
`operator_allowed` ровно `["launch_from_queue"]`. И **напиши выбранные дефолты в `comments`
дословно** — тогда Джарвис назовёт их в докладе, и пользователь увидит, на чём вахтёр встал, из
Telegram, а не из файлов на сервере.
Про очередь спрашивай особенно внятно, потому что это единственное, что отличает вахтёра-наблюдателя
от вахтёра, продолжающего работу без пользователя. Формулировка вида «GPU освободится примерно
через N часов, запускать ли следующий конфиг сам и какой» понятнее, чем «заполнить ли queue».
## 3. Собрать JSON по схеме `inbox.py::TEMPLATE`
Обязательный минимум, без него `validation_problems()` отклонит передачу машинно, ещё до похода на
сервер: непустой `project`; непустой список `runs`; у **каждого** прогона заполнен `tmux` или `log`
(`RunSpec.identifiable`) — иначе его нечем проверить. Плюс `created_ts` — текущее unix-время
(`date +%s`): при `age_sec > 24 ч` передача протухла, прогоны суточной давности уже не те.
`version` = 1.
- `id`: `hf-YYYYMMDD-HHMM-<project>-<series>` — по нему пользователь ищет передачу в Telegram и в
`processed/`. `watcher_name`: короткое `<project>-<series>`, станет папкой `state/watchers/<name>/`.
- `summary` — одна строка, что запущено; `comments` — дословные пожелания пользователя, они уедут
в `ЦЕЛЬ` и `ЭСКАЛАЦИЯ` спека вахтёра.
- `checks`: `{"iter_grep": ">Eval: Iter=", "val_grep": "val_loss="}` — те самые паттерны, которыми
ты сам только что грепал; тик не должен изобретать парсинг заново.
- `queue`: только поимённо названные пользователем следующие конфиги с дословными `cmd`.
Свободная GPU и очевидная польза разрешением на запуск не являются.
- `thresholds`: `shift_val_delta` и `stall_ticks` числами. Триггеры те же, что в
autonomous-experiment-loop: `final` = `iter >= target_iter` плюс чистый выход в панели,
`crash` = traceback / OOM / диск / оборванный туннель, `stall` = тот же `iter` два тика подряд при
живом процессе, `shift` = `|Δval|` больше порога или обгон базлайна. Порог словами («заметно
упало») делает каждый тик спором с самим собой.
- `notes_paths`: `experiments`, `results`, `plot_cmd` — куда писать и чем обновлять график. Этот
список заодно определяет, что аудит считает записью «вне объявленного».
- `operator_allowed`: по умолчанию **ровно** `["launch_from_queue"]`. Более широкие права через
файл выдать нельзя — на них Джарвис всё равно потребует подтверждения в Telegram.
- `forbidden`: минимум «не убивать прогоны без подтверждения» и «не трогать чужие процессы на
общих серверах», плюс всё, что сказал пользователь.
## 4. Доставка по ssh с ретраями
Файл писать локально в `/tmp/<id>.json`, ключи сверять с `TEMPLATE` глазами. Одиночная попытка
доставки не годится: ТСПУ периодически отдаёт RST, и `scp` умеет молча не доехать. `Host do-vpn` в
`~/.ssh/config` слушает **порт 2222** (22 режется egress-VPN), это уже в конфиге.
```bash
ID=hf-20260803-1612-warmup-583m
INBOX=/root/jarvis4shkodnik/state/inboxFrom Vepricov/claude-brainlab, MIT.
More from Vepricov/claude-brainlab
- 0.657score
obsidian-project-memory
Vepricov
Maintains canonical project context and durable research decisions in the mapped Obsidian knowledge base.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-markdown
Vepricov
Writes and edits Obsidian Flavored Markdown with valid wikilinks, embeds, properties, callouts, comments, and tables.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-project-bootstrap
Vepricov
Creates or repairs the Obsidian knowledge base and folder mappings for an existing research repository.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-bases
Vepricov
Creates and edits Obsidian Bases (.base) files with filters, formulas, views, and summaries in valid YAML.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
obsidian-literature-workflow
Vepricov
Develops project-linked reading notes and literature synthesis from papers stored in the Obsidian knowledge base or Zotero.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
doc-coauthoring
Vepricov
Co-authors a technical document, proposal, or specification through context gathering, targeted drafting, and reader-testing review.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
bug-detective
Vepricov
Investigates software failures, exceptions, and errors by tracing execution, reproducing the problem, and testing the suspected cause.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
json-canvas
Vepricov
Creates and edits Obsidian Canvas (.canvas) files with nodes, edges, groups, and layout following JSON Canvas Spec 1.0.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
git-workflow
Vepricov
Prepares commits, branches and pull requests following the repository's existing Git conventions, including Conventional Commits messages and merge strategy.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
kaggle-learner
Vepricov
Extracts reusable ML techniques, code patterns, and feature engineering ideas from Kaggle competition winning solutions and maps where they apply.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
diagnose
Vepricov
Diagnoses hard bugs and performance regressions by building a reproducible feedback loop and testing competing causal hypotheses.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
operon-obsidian-setup
Vepricov
Installs or repairs the laboratory's Operon task boards and project views in an Obsidian vault.
SkillAFreshness: A★ 33Claude Code +9
Signals
- Stars
- 33
- Forks
- 5
- Open issues
- 1
- Last commit (this folder)
- Oct 16, 2026 (18 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Vepricov/claude-brainlab
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Vepricov
- 0.657score
json-canvas
Vepricov
Creates and edits Obsidian Canvas (.canvas) files with nodes, edges, groups, and layout following JSON Canvas Spec 1.0.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
git-workflow
Vepricov
Prepares commits, branches and pull requests following the repository's existing Git conventions, including Conventional Commits messages and merge strategy.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
bug-detective
Vepricov
Investigates software failures, exceptions, and errors by tracing execution, reproducing the problem, and testing the suspected cause.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
diagnose
Vepricov
Diagnoses hard bugs and performance regressions by building a reproducible feedback loop and testing competing causal hypotheses.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
doc-coauthoring
Vepricov
Co-authors a technical document, proposal, or specification through context gathering, targeted drafting, and reader-testing review.
SkillAFreshness: A★ 33Claude Code +9 - 0.657score
kaggle-learner
Vepricov
Extracts reusable ML techniques, code patterns, and feature engineering ideas from Kaggle competition winning solutions and maps where they apply.
SkillAFreshness: A★ 33Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get handoff-to-jarvis running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
handoff-to-jarvis skill. Agent Mart. https://agentmart.dev/skills/vepricov-handoff-to-jarvis (last updated 2026-10-24)