Превратить текущую живую сессию в автономного фонового агента claude-control (handoff, кейс A). Сессия формулирует миссию с проверяемым критерием приемки, регистрирует агента через `claude-rc agent create --handoff-*` и после выхода пользователя из сессии продолжает миссию сама - под надзором reconciler'а, с видимостью с телефона и приемкой результата. Использовать когда пользователь говорит "/solo", "продолжи без меня", "доделай фоном", "преврати в агента". Требует установленный агентный сло...
11 stars
0 votes
0 copies
0 views
Added October 6, 2026
ai-agentsgobashnodegit
Security analysis
A100/100
Scanned October 6, 2026
$npx -y skills add dewil/ai-control --skill solo --agent claude-code
Installs into .claude/skills of the current project.
Are you the author of Solo?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dewil-solo-ai-control)
---
name: solo
description: Превратить текущую живую сессию в автономного фонового агента claude-control (handoff, кейс A). Сессия формулирует миссию с проверяемым критерием приемки, регистрирует агента через `claude-rc agent create --handoff-*` и после выхода пользователя из сессии продолжает миссию сама - под надзором reconciler'а, с видимостью с телефона и приемкой результата. Использовать когда пользователь говорит "/solo", "продолжи без меня", "доделай фоном", "преврати в агента". Требует установленный агентный слой claude-control (Linux/systemd) и git-проект. Контракт handoff - docs/design-2026-07-11-agent-state-machine.md (§9).
---
# solo
Передача текущей сессии в автономный полет. После handoff'а транскрипт сессии
адоптируется в приватный namespace агента, reconciler поднимает ее в выделенном
рантайме `agent-<name>` - с этой же памятью, тем же session_id, видимую с
телефона. Приемку результата ставит внешний контур (reconciler/человек), не сам
агент.
## Пре-флайт (все проверки ДО регистрации; отказ - честный, с причиной)
1. **Платформа**: `command -v claude-rc && systemctl --user is-active claude-agent-reconciler.service` - иначе "агентный слой не установлен".
2. **Git-проект**: cwd внутри git-репо (`git rev-parse --show-toplevel`); vault'ы и не-git каталоги не передаются.
3. **Чистота дерева**: `git status --porcelain` пуст. Иначе - предложи пользователю закоммитить/стэшнуть и остановись: worktree агента создается от HEAD, незакоммиченный WIP в миссию НЕ поедет - молча потерять его недопустимо.
4. **Проверяемый критерий приемки** - без него /solo отказывает (принцип "автоматизируем только проверяемое"). Если критерий можно выразить детерминированной командой (тесты, линт, сборка) - он станет `acceptance.check`; если нет - приемка уйдет человеку (needs-human), об этом честно скажи.
## Шаг 1: миссия
Собери из контекста разговора черновик миссии и покажи пользователю на
подтверждение (без подтверждения не регистрируй):
```markdown
# Миссия: <короткое имя>
## Цель
<что должно быть сделано, 1-3 предложения>
## Критерий приемки (проверяемый)
<команда или человекочитаемый критерий>
## Ограничения
<что нельзя трогать, лимиты>
## Стоп-условия
<когда остановиться и позвать человека>
```
Имя агента: kebab-case из цели, `^[a-z][a-z0-9-]{0,30}[a-z0-9]$`.
## Шаг 2: параметры handoff (механика, выполняй точно)
```bash
# session_id: nonce попадает в транскрипт немедленно (результат тула),
# grep по namespace-каталогу cwd находит НАШ файл
NONCE="solo-$RANDOM$RANDOM"; echo "$NONCE"
SLUG=$(pwd | sed 's|[^a-zA-Z0-9]|-|g')
SID=$(grep -l "$NONCE" "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/projects/$SLUG/"*.jsonl | head -1 | xargs -n1 basename | sed 's/\.jsonl$//')
# PID процесса claude этой сессии: подъем по дереву от шелла тула
P=$$; while [[ -n "$P" && "$P" != 1 ]]; do
case "$(ps -o comm= -p "$P")" in claude*|node*) CPID=$P; break;; esac
P=$(ps -o ppid= -p "$P" | tr -d " ")
done
CSTART=$(awk '{print $22}' "/proc/$CPID/stat")
```
`SID` пустой или `CPID` не найден -> handoff невозможен, предложи
**fresh-режим**: тот же create без `--handoff-*` + `claude-rc agent start` -
агент начнет с mission.md без наследования транскрипта.
## Шаг 3: регистрация
Сгенерируй `spec.yaml` СТРОГО по схеме design §19 (не изобретай поля):
```yaml
schema: 1
name: <name>
type: mission
role: <короткая роль>
project: <корень репо>
goal: "<одно предложение>"
autonomy: act # по умолчанию
memory_max_mb: 700
limits:
max_iterations: 50
max_hours: 8
max_iteration_minutes: 20
acceptance: # только если критерий реально детерминирован
check: "<команда>"
deterministic: true
timeout_s: 600
```
и mission.md во временные файлы, затем:
```bash
claude-rc agent create <name> --spec <spec> --mission <mission> \
--handoff-session "$SID" --handoff-pid "$CPID" \
--handoff-pid-start "$CSTART" --handoff-cwd "$(pwd)"
```
Регистрация транзакционна: агент создается в `desired=paused` с
handoff-блоком; никакой гонки со стартом нет - reconciler начнет адопцию
только после смерти этого процесса (commit-триада).
## Шаг 4: передача
Скажи пользователю ровно это:
- агент `<name>` зарегистрирован, окно handoff - 10 минут;
- **заверши эту сессию** (Ctrl+C дважды или /exit) - reconciler в течение
1-2 минут адоптирует транскрипт и поднимет агента;
- наблюдение: `claude-rc agent status <name>` / attach / с телефона -
сессия `agent-<name>`;
- если сессию не завершить за 10 минут - handoff истечет
(attention: handoff_expired), решение за оператором.
После этого сообщения НЕ выполняй других действий - каждый лишний ход
отодвигает выход из сессии.
## Чего не делать
- Не регистрируй без подтвержденной пользователем миссии.
- Не выдумывай критерий приемки за пользователя - спроси.
- Не пытайся сам завершить сессию или убить процесс claude - выход делает
пользователь; преждевременная смерть процесса до записи регистрации
оставит миссию незарегистрированной.
- Не передавай секреты в mission.md/spec.yaml (правило secrets-handling).